diff --git a/.github/CHANGELOG.rst b/.github/CHANGELOG.rst index e3d012f6eb6..4bfa4b0f2bb 100644 --- a/.github/CHANGELOG.rst +++ b/.github/CHANGELOG.rst @@ -2,6 +2,29 @@ Change Log ========== +2.8.0 (Quokka) +--------- +*Release date: 28 November 2023* + +- The term "iron person" is now used throughout the platform for consistency and inclusivity. Thanks to @dcorks for the pull request! + - The number of times a team has had an iron-speaker is now tracked as a team metric. +- Added new emoji from Unicode 12 and 13. Thank you to Daan Koning for the pull request! (`#2143 `_) +- Info Slides can now use rich-text formatting (e.g. bold, links, etc). Thanks to Trần Trang Linh for adding this feature! +- Speaker and break category forms have better validation and fewer fields. +- Tournaments can be created specifying private URL use directly. Thanks to Sébastien Dunne Fulmer! +- Implemented support for APDA-style tournaments with: + - Avoidance for a team to repeatedly meet pulled-up teams, + - A new two-team draw generator to minimize penalties globally within brackets, + - Team seeding for the first round, + - The ability to give ranks to speeches in addition to speaker scores, and + - A preset to enable these options. +- API Updates: + - Documentation is now automatically generated and available under the ``/api/schema/redoc/`` path on all sites. + - Preformed panels are now accessible using the API. + - Team and speaker scores by round has a new endpoint. Thanks to Ido Wolf for the feature! + - The site's timezone is shown in the root endpoint. Thanks to Daan Koning! +- \+ so many more little improvements and fixes! + 2.7.8 ----- @@ -9,11 +32,12 @@ Change Log - Fixed some issues with Docker-based deployments. + 2.7.7 ----- *Release date: 23 April 2023* -- Removed expired ad campaign. +- Removed expired ad campaign 2.7.6 diff --git a/.github/CONTRIBUTING.rst b/.github/CONTRIBUTING.rst index bdd0c4c07b1..91659751672 100644 --- a/.github/CONTRIBUTING.rst +++ b/.github/CONTRIBUTING.rst @@ -35,10 +35,6 @@ Development - A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed. -- A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with:: - - $ pip install -r 'config/requirements_development.txt' - - We use `pre-commit `_ to run code style checks (linters). To have them run as a git hook automatically before every commit:: $ pre-commit install @@ -80,11 +76,15 @@ For python code, we use `flake8 `_ to check for a For stylesheets, we use `stylelint `_. The relevant code can be checked by using:: - $ npm run lint-sass + $ pre-commit run stylelint --all-files For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using:: - $ npm run lint-vue + $ pre-commit run eslint --all-files + +You can also run all of the above style checkers, as well as a style checker for yaml and some non-language specific style checkers provided by `pre-commit-hooks `_, by using:: + + $ pre-commit run --all-files Project organization ==================== @@ -135,15 +135,15 @@ The `gettext `_ The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py):: - $ dj makemessages -l es + $ dj makemessages -len --no-wrap --no-obsolete --add-location file -To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``. +Then our `Crowdin `_ project will find the updated strings and mark them for translation. These can then be compiled using:: $ dj compilemessages -l es -As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_. +As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files need not be compiled; their sole purpose is to provide a source language for `Crowdin `_. Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using:: @@ -157,8 +157,8 @@ Release checklist 1. Check that all migrations have been generated and committed into Git 2. Merge translations from the Crowdin pull request and compile messages -3. Bump version number in ``docs/conf.py`` and ``docs/api-schema.yml`` (if applicable) -4. Bump version number and (if applicable) codename in ``tabbycat/settings/core.py`` +3. Bump version number in ``docs/conf.py`` +4. Bump version number, API version number and (if applicable) codename in ``tabbycat/settings/core.py`` 5. Update the main ``CHANGELOG.rst`` file (including release date) 6. Check the major current deployment options, including: 1. The ``deploy_heroku.py`` script @@ -170,7 +170,6 @@ Release checklist 8. Shift remaining issues from the Github Milestone 9. Create and finish the release branch as per git-flow 10. Ensure the tag is correct (``vX.Y.Z``) and published to GitHub -11. Back-merge ``master`` to the ``kitten`` branch -12. Back-merge ``develop`` to the in-progress feature branches -13. Issue a formal release with change notes on GitHub -14. Post change notes on the Facebook page/group +11. Back-merge ``develop`` to the in-progress feature branches +12. Issue a formal release with change notes on GitHub +13. Post change notes on the Facebook page/group diff --git a/.github/README.md b/.github/README.md index 1b2f9034988..875c5f853da 100644 --- a/.github/README.md +++ b/.github/README.md @@ -13,7 +13,7 @@ -Tabbycat is a draw tabulation system for British Parliamentary and a variety of two-team formats. It was used at Australs 2010 and 2012–2019, EUDC 2018, WUDC 2019–2020 and many other tournaments of all sizes and formats. To see an example of a post-tournament website, have a look at the [WUDC 2020 tab website](https://wudc2020.herokuapp.com). +Tabbycat is a draw tabulation system for British Parliamentary and a variety of two-team formats. It was used at Australs 2010 and 2012–2019, EUDC 2018, WUDC 2019–2022 and many other tournaments of all sizes and formats. To see an example of a post-tournament website, have a look at the [WUDC 2022 tab website](https://wudc2022.calicotab.com/wudc/). **Want to try it out?** The best way to trial Tabbycat is just to launch a new site, as described [below](#%EF%B8%8F-installation)). It takes just a few clicks, requires no technical background, and you can always deploy a fresh copy when you're ready to run your tournament. @@ -50,11 +50,13 @@ If you have any feedback or would like to request support, we'd love to hear fro Contributions are welcome, and are greatly appreciated! Details about how to contribute [are also outlined in our documentation](http://tabbycat.readthedocs.io/en/latest/about/contributing.html). -We also invite new translations of the interface through [Crowdin](https://crowdin.com/project/tabbycat)! Get in touch for access to our translation platform. +Monetary donations are much appreciated and help us to continue the development and maintenance of Tabbycat. We suggest that tournaments donate at the level of C$1 (1 Canadian dollar) per team; especially if your tournament is run for profit or fundraising purposes. More details [are available in our documentation](http://tabbycat.readthedocs.io/en/latest/about/licence.html). ## ©️ Licence -We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament. However, if your tournament is run as a for-profit or for-fundraising activity a donation to Tabbycat's maintainers is required. More details [are available in our licence information](http://tabbycat.readthedocs.io/en/latest/about/licence.html). +Tabbycat is licensed under the terms of the [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/). You may copy, distribute, and modify this software; however note that this licence requires (amongst other provisions) that any modifications you make to Tabbycat be made public. + +If you wish to modify Tabbycat in a proprietary fashion we (the developers) are open to negotiating a dual licence for this purpose. Please [contact us](http://tabbycat.readthedocs.io/en/latest/authors.html#authors) if this is the case for you. ## ✏️ Authors diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index 3ef88d93c2d..4167a19d7d2 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -3,8 +3,8 @@ name: Django CI on: push: branches: - - '**' - - '!l10n_develop' + - 'develop' + - 'master' pull_request: branches: - '**' @@ -17,7 +17,7 @@ jobs: services: postgres: - image: postgres:11 + image: postgres:12 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres @@ -34,13 +34,13 @@ jobs: - name: Set up Python # The actions/cache step below uses this id to get the exact python version id: setup-python - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: - python-version: 3.9 + python-version-file: '.python-version' # Read python version from a file .python-version - name: Set up Node.js uses: actions/setup-node@v3 with: - node-version: 12.x + node-version-file: '.nvmrc' - name: Cache node modules uses: actions/cache@v3 env: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index acebc1104be..6109c35fda9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,8 +12,8 @@ repos: - svg - id: check-yaml - id: check-added-large-files -- repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.9 +- repo: https://github.com/PyCQA/flake8 + rev: 5.0.4 hooks: - id: flake8 additional_dependencies: diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000000..cba6f6a15a4 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,660 @@ +### GNU AFFERO GENERAL PUBLIC LICENSE + +Version 3, 19 November 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +### Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains +free software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing +under this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +### TERMS AND CONDITIONS + +#### 0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public +License. + +"Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a "modified version" of +the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays "Appropriate Legal Notices" to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +#### 1. Source Code. + +The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +#### 2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes +it unnecessary. + +#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +#### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +#### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +- a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. +- b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section 4 + to "keep intact all notices". +- c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +- d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +#### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +- a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +- b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. +- c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +- d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +- e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the general + public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +#### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +- a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +- b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +- c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +- d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or +- e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +- f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +#### 8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +#### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +#### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +#### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +#### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree to +terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +#### 13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your +version supports such interaction) an opportunity to receive the +Corresponding Source of your version by providing access to the +Corresponding Source from a network server at no charge, through some +standard or customary means of facilitating copying of software. This +Corresponding Source shall include the Corresponding Source for any +work covered by version 3 of the GNU General Public License that is +incorporated pursuant to the following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +#### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Affero General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +#### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +#### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +#### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +### How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively state +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for +the specific requirements. + +You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU AGPL, see . diff --git a/LICENSE.rst b/LICENSE.rst deleted file mode 100644 index 70c415ac53b..00000000000 --- a/LICENSE.rst +++ /dev/null @@ -1,31 +0,0 @@ -=================== -Licence Information -=================== - -We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of C$1 (Canadian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.) - -Use at for-profit or fundraising tournaments -============================================ - -If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a payment of C$1 (Canadian dollar) per team to the Tabbycat Debate Association, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit. - -While we suggest that non-profit, non-fundraising tournaments budget for a donation of C$1 per team, it is not required in order for such tournaments to use Tabbycat. - -Modifications to and redistributions of Tabbycat -================================================ - -We grant you permission to modify and/or redistribute Tabbycat, provided that - -- you do not receive any payment for this modification and/or redistribution, -- if you modify Tabbycat, you add prominent notices stating that you modified it, -- all references and functionality relating to donations are kept intact, and -- this licence page and all attributions of authorship are included as-is. - -Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission. - -If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required. - -Disclaimer of warranty and liability -==================================== - -We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided "as is", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.** diff --git a/Pipfile b/Pipfile index 2311d8374f9..2b411cce45c 100644 --- a/Pipfile +++ b/Pipfile @@ -36,6 +36,10 @@ honcho = "*" gunicorn = "*" sentry-sdk = "*" whitenoise = "*" +drf-spectacular = "*" +daphne = "*" +drf-link-header-pagination = "*" +networkx = "*" # Avoid its dependencies (SciPy) [dev-packages] pre-commit = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 2613332de96..7de712ca7db 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "036dee7b6d16c12031d427302f220e2a9cf4a7063a879e5128b371febc97cf36" + "sha256": "ed77cfd488f49a5f8d7dc88cca9ba162c39a55425e0335847cf91ff7c43cb51a" }, "pipfile-spec": 6, "requires": { @@ -16,13 +16,6 @@ ] }, "default": { - "aioredis": { - "hashes": [ - "sha256:15f8af30b044c771aee6787e5ec24694c048184c7b9e54c3b60c750a4b93273a", - "sha256:b61808d7e97b7cd5a92ed574937a079c9387fdadd22bfbfa7ad2fd319ecc26e3" - ], - "version": "==1.3.1" - }, "appnope": { "hashes": [ "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24", @@ -33,11 +26,11 @@ }, "asgiref": { "hashes": [ - "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0", - "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9" + "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac", + "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506" ], "index": "pypi", - "version": "==3.5.0" + "version": "==3.6.0" }, "async-timeout": { "hashes": [ @@ -49,25 +42,25 @@ }, "attrs": { "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", + "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" + "markers": "python_version >= '3.6'", + "version": "==22.2.0" }, "autobahn": { "hashes": [ - "sha256:58a887c7a196bb08d8b6624cb3695f493a9e5c9f00fd350d8d6f829b47ff9036" + "sha256:c5ef8ca7422015a1af774a883b8aef73d4954c9fcd182c9b5244e08e973f7c3a" ], "markers": "python_version >= '3.7'", - "version": "==22.3.2" + "version": "==23.1.2" }, "automat": { "hashes": [ - "sha256:7979803c74610e11ef0c0d68a2942b152df52da55336e0c9d58daf1831cbdf33", - "sha256:b6feb6455337df834f6c9962d6ccf771515b7d939bca142b29c20c2376bc6111" + "sha256:c3164f8742b9dc440f3682482d32aaff7bb53f71740dd018533f9de286b64180", + "sha256:e56beb84edad19dcc11d30e8d9b895f75deeb5ef5e96b84a467066b3b84bb04e" ], - "version": "==20.2.0" + "version": "==22.10.0" }, "backcall": { "hashes": [ @@ -78,89 +71,104 @@ }, "bleach": { "hashes": [ - "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1", - "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565" + "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414", + "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4" ], "markers": "python_version >= '3.7'", - "version": "==5.0.0" + "version": "==6.0.0" }, "certifi": { "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], - "version": "==2021.10.8" + "markers": "python_version >= '3.6'", + "version": "==2022.12.7" }, "cffi": { "hashes": [ - "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3", - "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2", - "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636", - "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20", - "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728", - "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27", - "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66", - "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443", - "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0", - "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7", - "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39", - "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605", - "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a", - "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37", - "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029", - "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139", - "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc", - "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df", - "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14", - "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880", - "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2", - "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a", - "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e", - "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474", - "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024", - "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8", - "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0", - "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e", - "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a", - "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e", - "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032", - "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6", - "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e", - "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b", - "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e", - "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954", - "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962", - "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c", - "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4", - "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55", - "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962", - "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023", - "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c", - "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6", - "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8", - "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382", - "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7", - "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc", - "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997", - "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796" - ], - "version": "==1.15.0" + "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", + "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", + "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", + "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", + "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", + "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", + "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", + "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", + "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", + "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", + "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", + "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", + "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", + "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", + "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", + "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", + "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", + "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", + "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", + "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", + "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", + "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", + "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", + "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", + "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", + "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", + "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", + "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", + "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", + "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", + "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", + "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", + "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", + "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", + "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", + "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", + "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", + "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", + "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", + "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", + "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", + "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", + "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", + "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", + "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", + "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", + "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", + "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", + "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", + "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", + "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", + "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", + "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", + "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", + "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", + "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", + "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", + "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", + "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", + "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", + "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", + "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", + "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", + "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + ], + "version": "==1.15.1" }, "channels": { "hashes": [ - "sha256:0ff0422b4224d10efac76e451575517f155fe7c97d369b5973b116f22eeaf86c", - "sha256:fdd9a94987a23d8d7ebd97498ed8b8cc83163f37e53fc6c85098aba7a3bb8b75" + "sha256:0ce53507a7da7b148eaa454526e0e05f7da5e5d1c23440e4886cf146981d8420", + "sha256:2253334ac76f67cba68c2072273f7e0e67dbdac77eeb7e318f511d2f9a53c5e4" ], "index": "pypi", - "version": "==3.0.4" + "version": "==4.0.0" }, "channels-redis": { "hashes": [ - "sha256:5dffd4cc16174125bd4043fc8fe7462ca7403cf801d59a9fa7410ed101fa6a57", - "sha256:6e4565b7c11c6bcde5d48556cb83bd043779697ff03811867d2f895aa6170d56" + "sha256:122414f29f525f7b9e0c9d59cdcfc4dc1b0eecba16fbb6a1c23f1d9b58f49dcb", + "sha256:81b59d68f53313e1aa891f23591841b684abb936b42e4d1a966d9e4dc63a95ec" ], "index": "pypi", - "version": "==3.4.0" + "version": "==4.0.0" }, "constantly": { "hashes": [ @@ -171,37 +179,40 @@ }, "cryptography": { "hashes": [ - "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b", - "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51", - "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7", - "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d", - "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6", - "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29", - "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9", - "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf", - "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815", - "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf", - "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85", - "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77", - "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86", - "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb", - "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e", - "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0", - "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3", - "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84", - "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2", - "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6" + "sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1", + "sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7", + "sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06", + "sha256:30b1d1bfd00f6fc80d11300a29f1d8ab2b8d9febb6ed4a38a76880ec564fae84", + "sha256:35d658536b0a4117c885728d1a7032bdc9a5974722ae298d6c533755a6ee3915", + "sha256:50cadb9b2f961757e712a9737ef33d89b8190c3ea34d0fb6675e00edbe35d074", + "sha256:5f8c682e736513db7d04349b4f6693690170f95aac449c56f97415c6980edef5", + "sha256:6236a9610c912b129610eb1a274bdc1350b5df834d124fa84729ebeaf7da42c3", + "sha256:788b3921d763ee35dfdb04248d0e3de11e3ca8eb22e2e48fef880c42e1f3c8f9", + "sha256:8bc0008ef798231fac03fe7d26e82d601d15bd16f3afaad1c6113771566570f3", + "sha256:8f35c17bd4faed2bc7797d2a66cbb4f986242ce2e30340ab832e5d99ae60e011", + "sha256:b49a88ff802e1993b7f749b1eeb31134f03c8d5c956e3c125c75558955cda536", + "sha256:bc0521cce2c1d541634b19f3ac661d7a64f9555135e9d8af3980965be717fd4a", + "sha256:bc5b871e977c8ee5a1bbc42fa8d19bcc08baf0c51cbf1586b0e87a2694dde42f", + "sha256:c43ac224aabcbf83a947eeb8b17eaf1547bce3767ee2d70093b461f31729a480", + "sha256:d15809e0dbdad486f4ad0979753518f47980020b7a34e9fc56e8be4f60702fac", + "sha256:d7d84a512a59f4412ca8549b01f94be4161c94efc598bf09d027d67826beddc0", + "sha256:e029b844c21116564b8b61216befabca4b500e6816fa9f0ba49527653cae2108", + "sha256:e8a0772016feeb106efd28d4a328e77dc2edae84dfbac06061319fdb669ff828", + "sha256:e944fe07b6f229f4c1a06a7ef906a19652bdd9fd54c761b0ff87e83ae7a30354", + "sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612", + "sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3", + "sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97" ], "markers": "python_version >= '3.6'", - "version": "==36.0.2" + "version": "==39.0.2" }, "daphne": { "hashes": [ - "sha256:76ffae916ba3aa66b46996c14fa713e46004788167a4873d647544e750e0e99f", - "sha256:a9af943c79717bc52fe64a3c236ae5d3adccc8b5be19c881b442d2c3db233393" + "sha256:a288ece46012b6b719c37150be67c69ebfca0793a8521bf821533bad983179b2", + "sha256:cce9afc8f49a4f15d4270b8cfb0e0fe811b770a5cc795474e97e4da287497666" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.2" + "index": "pypi", + "version": "==4.0.0" }, "decorator": { "hashes": [ @@ -219,14 +230,6 @@ "index": "pypi", "version": "==0.7.1" }, - "deprecated": { - "hashes": [ - "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d", - "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.2.13" - }, "dj-cmd": { "hashes": [ "sha256:47588966ebf4345d792fdfd8512f8797be57e780454c02188e6f2583b50d03b5", @@ -237,19 +240,19 @@ }, "dj-database-url": { "hashes": [ - "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163", - "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9" + "sha256:5c2993b91801c0f78a8b19e642b497b90831124cbade0c265900d4c1037b4730", + "sha256:b23b15046cb38180e0c95207bcc90fe5e9dbde8eef16065907dd85cf4ca7036c" ], "index": "pypi", - "version": "==0.5.0" + "version": "==1.2.0" }, "django": { "hashes": [ - "sha256:07c8638e7a7f548dc0acaaa7825d84b7bd42b10e8d22268b3d572946f1e9b687", - "sha256:4e8177858524417563cc0430f29ea249946d831eacb0068a1455686587df40b5" + "sha256:44f714b81c5f190d9d2ddad01a532fe502fa01c4cb8faf1d081f4264ed15dcd8", + "sha256:f2f431e75adc40039ace496ad3b9f17227022e8b11566f4b363da44c7e44761e" ], "index": "pypi", - "version": "==4.0.4" + "version": "==4.1.7" }, "django-appconf": { "hashes": [ @@ -269,35 +272,34 @@ }, "django-cors-headers": { "hashes": [ - "sha256:a22be2befd4069c4fc174f11cf067351df5c061a3a5f94a01650b4e928b0372b", - "sha256:eb98389bf7a2afc5d374806af4a9149697e3a6955b5a2dc2bf049f7d33647456" + "sha256:5fbd58a6fb4119d975754b2bc090f35ec160a8373f276612c675b00e8a138739", + "sha256:684180013cc7277bdd8702b80a3c5a4b3fcae4abb2bf134dceb9f5dfe300228e" ], "index": "pypi", - "version": "==3.11.0" + "version": "==3.14.0" }, "django-dynamic-preferences": { "hashes": [ - "sha256:06cc20998429e008fe0e9a06f50bedd09bf42eeb9afcbc9df440127ff524bc1b", - "sha256:cd8987cf8e4dd36e019ad3e8a25c589bc4b410ca4a66cdfcbe5c25a517a7c0ad" + "sha256:c00abcb8d524067390a66518cfcd32683b87ad3cc620d5913649fc7707b80833" ], "index": "pypi", - "version": "==1.12.0" + "version": "==1.14.0" }, "django-extensions": { "hashes": [ - "sha256:28e1e1bf49f0e00307ba574d645b0af3564c981a6dfc87209d48cb98f77d0b1a", - "sha256:9238b9e016bb0009d621e05cf56ea8ce5cce9b32e91ad2026996a7377ca28069" + "sha256:2a4f4d757be2563cd1ff7cfdf2e57468f5f931cc88b23cf82ca75717aae504a4", + "sha256:421464be390289513f86cb5e18eb43e5dc1de8b4c27ba9faa3b91261b0d67e09" ], "index": "pypi", - "version": "==3.1.5" + "version": "==3.2.1" }, "django-formtools": { "hashes": [ - "sha256:4699937e19ee041d803943714fe0c1c7ad4cab802600eb64bbf4cdd0a1bfe7d9", - "sha256:9663b6eca64777b68d6d4142efad8597fe9a685924673b25aa8a1dcff4db00c3" + "sha256:deb932be55b1d9419e37dc4d65dfbfeb8d307b71c8c11fd52f159aba5fc0deed", + "sha256:f5f32f62ec8192cd1bc55bd929ca7dff5a5f2addf9027db95a5906ecfaa64836" ], "index": "pypi", - "version": "==2.3" + "version": "==2.4" }, "django-gfklookupwidget": { "hashes": [ @@ -316,10 +318,10 @@ }, "django-jet-reboot": { "hashes": [ - "sha256:616e14435cd7b994ace28c7c251ecf908c3d9f1851a012b4bc20b0a176c94b1c" + "sha256:87263acbbbd56b5e92c98987d2e8132034d65261473cceb8cca57dafaab85b87" ], "index": "pypi", - "version": "==1.3.1" + "version": "==1.3.3" }, "django-polymorphic": { "hashes": [ @@ -339,19 +341,19 @@ }, "django-split-settings": { "hashes": [ - "sha256:5d97ae64cf9ed14a831722d82ac725944667ac8c08307b7cfd22e91367b411d0", - "sha256:6b3aed89667a95525152026eab93a9f038ff22df6883006318b8b4a3d0ca6888" + "sha256:31415a618256b54c5cee8662cbaa72a890683b8b7465d64ba88fdd3affdd6c60", + "sha256:4b3be146776d49c61bd9dcf89fad40edb1544f13ab27a87a0b1aecf5a0d636f4" ], "index": "pypi", - "version": "==1.1.0" + "version": "==1.2.0" }, "django-statici18n": { "hashes": [ - "sha256:81450c42da4aaa0f8de8307aad167883d8bbfa1c84a459084e1eacc2e7957648", - "sha256:dbcdac190d93e0b4eabcab8875c8eb68795eceb442f926843ec5cbe1432fe628" + "sha256:00079579035d5b45320830191e2c047f8643b7906307eff9833f0fa95068a603", + "sha256:5f4bb3d58670def2df490babe338524927cfb2ebe2e5e20538b98d9424e83d0e" ], "index": "pypi", - "version": "==2.2.0" + "version": "==2.3.1" }, "django-summernote": { "hashes": [ @@ -362,11 +364,27 @@ }, "djangorestframework": { "hashes": [ - "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee", - "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa" + "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8", + "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08" ], "index": "pypi", - "version": "==3.13.1" + "version": "==3.14.0" + }, + "drf-link-header-pagination": { + "hashes": [ + "sha256:19446c5716a8b857f5e0ecbba39a49508a8e748ef51a8cfd6bd706090e97060c", + "sha256:9890a871803395544c5a0ee0665fc2d2701fcdf151570ed15c8b8d873aefe27d" + ], + "index": "pypi", + "version": "==0.2.0" + }, + "drf-spectacular": { + "hashes": [ + "sha256:789696f9845ef2397c52f66154aec6d96411baf6aa09a5d40c5f0b0e99f6b3d8", + "sha256:d58684e702f5ad436c5bd1735d46df0e123e64de883092d38f1debb9fa4a03c9" + ], + "index": "pypi", + "version": "==0.25.1" }, "gunicorn": { "hashes": [ @@ -376,53 +394,6 @@ "index": "pypi", "version": "==20.1.0" }, - "hiredis": { - "hashes": [ - "sha256:04026461eae67fdefa1949b7332e488224eac9e8f2b5c58c98b54d29af22093e", - "sha256:04927a4c651a0e9ec11c68e4427d917e44ff101f761cd3b5bc76f86aaa431d27", - "sha256:07bbf9bdcb82239f319b1f09e8ef4bdfaec50ed7d7ea51a56438f39193271163", - "sha256:09004096e953d7ebd508cded79f6b21e05dff5d7361771f59269425108e703bc", - "sha256:0adea425b764a08270820531ec2218d0508f8ae15a448568109ffcae050fee26", - "sha256:0b39ec237459922c6544d071cdcf92cbb5bc6685a30e7c6d985d8a3e3a75326e", - "sha256:0d5109337e1db373a892fdcf78eb145ffb6bbd66bb51989ec36117b9f7f9b579", - "sha256:0f41827028901814c709e744060843c77e78a3aca1e0d6875d2562372fcb405a", - "sha256:11d119507bb54e81f375e638225a2c057dda748f2b1deef05c2b1a5d42686048", - "sha256:1233e303645f468e399ec906b6b48ab7cd8391aae2d08daadbb5cad6ace4bd87", - "sha256:139705ce59d94eef2ceae9fd2ad58710b02aee91e7fa0ccb485665ca0ecbec63", - "sha256:1f03d4dadd595f7a69a75709bc81902673fa31964c75f93af74feac2f134cc54", - "sha256:240ce6dc19835971f38caf94b5738092cb1e641f8150a9ef9251b7825506cb05", - "sha256:294a6697dfa41a8cba4c365dd3715abc54d29a86a40ec6405d677ca853307cfb", - "sha256:3d55e36715ff06cdc0ab62f9591607c4324297b6b6ce5b58cb9928b3defe30ea", - "sha256:3dddf681284fe16d047d3ad37415b2e9ccdc6c8986c8062dbe51ab9a358b50a5", - "sha256:3f5f7e3a4ab824e3de1e1700f05ad76ee465f5f11f5db61c4b297ec29e692b2e", - "sha256:508999bec4422e646b05c95c598b64bdbef1edf0d2b715450a078ba21b385bcc", - "sha256:5d2a48c80cf5a338d58aae3c16872f4d452345e18350143b3bf7216d33ba7b99", - "sha256:5dc7a94bb11096bc4bffd41a3c4f2b958257085c01522aa81140c68b8bf1630a", - "sha256:65d653df249a2f95673976e4e9dd7ce10de61cfc6e64fa7eeaa6891a9559c581", - "sha256:7492af15f71f75ee93d2a618ca53fea8be85e7b625e323315169977fae752426", - "sha256:7f0055f1809b911ab347a25d786deff5e10e9cf083c3c3fd2dd04e8612e8d9db", - "sha256:807b3096205c7cec861c8803a6738e33ed86c9aae76cac0e19454245a6bbbc0a", - "sha256:81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a", - "sha256:87c7c10d186f1743a8fd6a971ab6525d60abd5d5d200f31e073cd5e94d7e7a9d", - "sha256:8b42c0dc927b8d7c0eb59f97e6e34408e53bc489f9f90e66e568f329bff3e443", - "sha256:a00514362df15af041cc06e97aebabf2895e0a7c42c83c21894be12b84402d79", - "sha256:a39efc3ade8c1fb27c097fd112baf09d7fd70b8cb10ef1de4da6efbe066d381d", - "sha256:a4ee8000454ad4486fb9f28b0cab7fa1cd796fc36d639882d0b34109b5b3aec9", - "sha256:a7928283143a401e72a4fad43ecc85b35c27ae699cf5d54d39e1e72d97460e1d", - "sha256:adf4dd19d8875ac147bf926c727215a0faf21490b22c053db464e0bf0deb0485", - "sha256:ae8427a5e9062ba66fc2c62fb19a72276cf12c780e8db2b0956ea909c48acff5", - "sha256:b4c8b0bc5841e578d5fb32a16e0c305359b987b850a06964bd5a62739d688048", - "sha256:b84f29971f0ad4adaee391c6364e6f780d5aae7e9226d41964b26b49376071d0", - "sha256:c39c46d9e44447181cd502a35aad2bb178dbf1b1f86cf4db639d7b9614f837c6", - "sha256:cb2126603091902767d96bcb74093bd8b14982f41809f85c9b96e519c7e1dc41", - "sha256:dcef843f8de4e2ff5e35e96ec2a4abbdf403bd0f732ead127bd27e51f38ac298", - "sha256:e3447d9e074abf0e3cd85aef8131e01ab93f9f0e86654db7ac8a3f73c63706ce", - "sha256:f52010e0a44e3d8530437e7da38d11fb822acfb0d5b12e9cd5ba655509937ca0", - "sha256:f8196f739092a78e4f6b1b2172679ed3343c39c61a3e9d722ce6fcf1dac2824a" - ], - "markers": "python_version >= '3.6'", - "version": "==2.0.0" - }, "honcho": { "hashes": [ "sha256:a4d6e3a88a7b51b66351ecfc6e9d79d8f4b87351db9ad7e923f5632cc498122f", @@ -448,81 +419,114 @@ }, "idna": { "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], - "markers": "python_version >= '3.5'", - "version": "==3.3" + "version": "==3.4" }, "incremental": { "hashes": [ - "sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57", - "sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321" + "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0", + "sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51" ], - "version": "==21.3.0" + "version": "==22.10.0" + }, + "inflection": { + "hashes": [ + "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", + "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2" + ], + "markers": "python_version >= '3.5'", + "version": "==0.5.1" }, "ipython": { "hashes": [ - "sha256:468abefc45c15419e3c8e8c0a6a5c115b2127bafa34d7c641b1d443658793909", - "sha256:86df2cf291c6c70b5be6a7b608650420e89180c8ec74f376a34e2dc15c3400e7" + "sha256:af3bdb46aa292bce5615b1b2ebc76c2080c5f77f54bda2ec72461317273e7cd6", + "sha256:c175d2440a1caff76116eb719d40538fbb316e214eda85c5515c303aacbfb23e" ], "index": "pypi", - "version": "==7.32.0" + "version": "==7.34.0" }, "jedi": { "hashes": [ - "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d", - "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab" + "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e", + "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612" ], "markers": "python_version >= '3.6'", - "version": "==0.18.1" + "version": "==0.18.2" + }, + "jsonschema": { + "hashes": [ + "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", + "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" + ], + "markers": "python_version >= '3.7'", + "version": "==4.17.3" }, "matplotlib-inline": { "hashes": [ - "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee", - "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c" + "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", + "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" ], "markers": "python_version >= '3.5'", - "version": "==0.1.3" + "version": "==0.1.6" }, "msgpack": { "hashes": [ - "sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc", - "sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147", - "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3", - "sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba", - "sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39", - "sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85", - "sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9", - "sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a", - "sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec", - "sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88", - "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e", - "sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a", - "sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b", - "sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1", - "sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3", - "sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef", - "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079", - "sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52", - "sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a", - "sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a", - "sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4", - "sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996", - "sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73", - "sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a", - "sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920", - "sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7", - "sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d", - "sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770", - "sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50", - "sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2", - "sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2", - "sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d", - "sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea", - "sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611" - ], - "version": "==1.0.3" + "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", + "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", + "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", + "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", + "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", + "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", + "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", + "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", + "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", + "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", + "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", + "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", + "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", + "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", + "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", + "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", + "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", + "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", + "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", + "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", + "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", + "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", + "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", + "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", + "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", + "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", + "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", + "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", + "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", + "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", + "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", + "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", + "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", + "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", + "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", + "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", + "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", + "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", + "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", + "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", + "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", + "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", + "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", + "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", + "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", + "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", + "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", + "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", + "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", + "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", + "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", + "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" + ], + "version": "==1.0.4" }, "munkres": { "hashes": [ @@ -532,13 +536,13 @@ "index": "pypi", "version": "==1.1.4" }, - "packaging": { + "networkx": { "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + "sha256:58058d66b1818043527244fab9d41a51fcd7dcc271748015f3c181b8a90c8e2e", + "sha256:9a9992345353618ae98339c2b63d8201c381c2944f38a2ab49cb45a4c667e412" ], - "markers": "python_version >= '3.6'", - "version": "==21.3" + "index": "pypi", + "version": "==3.0" }, "parso": { "hashes": [ @@ -550,9 +554,10 @@ }, "persisting-theory": { "hashes": [ - "sha256:00ff7dcc8f481ff75c770ca5797d968e8725b6df1f77fe0cf7d20fa1e5790c0a" + "sha256:0f840fa22247bcaa514094da7f3b26c602359429ab12d2cd88be06b49a336290", + "sha256:73fe3ba1ea7ab67632a1c292fc5c9fa6d3ebfd0e2ad74defa56e316abf3c8d21" ], - "version": "==0.2.1" + "version": "==1.0" }, "pexpect": { "hashes": [ @@ -571,73 +576,88 @@ }, "prompt-toolkit": { "hashes": [ - "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752", - "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7" + "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b", + "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f" ], - "markers": "python_full_version >= '3.6.2'", - "version": "==3.0.29" + "markers": "python_version >= '3.7'", + "version": "==3.0.38" }, "psycopg2-binary": { "hashes": [ - "sha256:01310cf4cf26db9aea5158c217caa92d291f0500051a6469ac52166e1a16f5b7", - "sha256:083a55275f09a62b8ca4902dd11f4b33075b743cf0d360419e2051a8a5d5ff76", - "sha256:090f3348c0ab2cceb6dfbe6bf721ef61262ddf518cd6cc6ecc7d334996d64efa", - "sha256:0a29729145aaaf1ad8bafe663131890e2111f13416b60e460dae0a96af5905c9", - "sha256:0c9d5450c566c80c396b7402895c4369a410cab5a82707b11aee1e624da7d004", - "sha256:10bb90fb4d523a2aa67773d4ff2b833ec00857f5912bafcfd5f5414e45280fb1", - "sha256:12b11322ea00ad8db8c46f18b7dfc47ae215e4df55b46c67a94b4effbaec7094", - "sha256:152f09f57417b831418304c7f30d727dc83a12761627bb826951692cc6491e57", - "sha256:15803fa813ea05bef089fa78835118b5434204f3a17cb9f1e5dbfd0b9deea5af", - "sha256:15c4e4cfa45f5a60599d9cec5f46cd7b1b29d86a6390ec23e8eebaae84e64554", - "sha256:183a517a3a63503f70f808b58bfbf962f23d73b6dccddae5aa56152ef2bcb232", - "sha256:1f14c8b0942714eb3c74e1e71700cbbcb415acbc311c730370e70c578a44a25c", - "sha256:1f6b813106a3abdf7b03640d36e24669234120c72e91d5cbaeb87c5f7c36c65b", - "sha256:280b0bb5cbfe8039205c7981cceb006156a675362a00fe29b16fbc264e242834", - "sha256:2d872e3c9d5d075a2e104540965a1cf898b52274a5923936e5bfddb58c59c7c2", - "sha256:2f9ffd643bc7349eeb664eba8864d9e01f057880f510e4681ba40a6532f93c71", - "sha256:3303f8807f342641851578ee7ed1f3efc9802d00a6f83c101d21c608cb864460", - "sha256:35168209c9d51b145e459e05c31a9eaeffa9a6b0fd61689b48e07464ffd1a83e", - "sha256:3a79d622f5206d695d7824cbf609a4f5b88ea6d6dab5f7c147fc6d333a8787e4", - "sha256:404224e5fef3b193f892abdbf8961ce20e0b6642886cfe1fe1923f41aaa75c9d", - "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d", - "sha256:47133f3f872faf28c1e87d4357220e809dfd3fa7c64295a4a148bcd1e6e34ec9", - "sha256:526ea0378246d9b080148f2d6681229f4b5964543c170dd10bf4faaab6e0d27f", - "sha256:53293533fcbb94c202b7c800a12c873cfe24599656b341f56e71dd2b557be063", - "sha256:539b28661b71da7c0e428692438efbcd048ca21ea81af618d845e06ebfd29478", - "sha256:57804fc02ca3ce0dbfbef35c4b3a4a774da66d66ea20f4bda601294ad2ea6092", - "sha256:63638d875be8c2784cfc952c9ac34e2b50e43f9f0a0660b65e2a87d656b3116c", - "sha256:6472a178e291b59e7f16ab49ec8b4f3bdada0a879c68d3817ff0963e722a82ce", - "sha256:68641a34023d306be959101b345732360fc2ea4938982309b786f7be1b43a4a1", - "sha256:6e82d38390a03da28c7985b394ec3f56873174e2c88130e6966cb1c946508e65", - "sha256:761df5313dc15da1502b21453642d7599d26be88bff659382f8f9747c7ebea4e", - "sha256:7af0dd86ddb2f8af5da57a976d27cd2cd15510518d582b478fbb2292428710b4", - "sha256:7b1e9b80afca7b7a386ef087db614faebbf8839b7f4db5eb107d0f1a53225029", - "sha256:874a52ecab70af13e899f7847b3e074eeb16ebac5615665db33bce8a1009cf33", - "sha256:887dd9aac71765ac0d0bac1d0d4b4f2c99d5f5c1382d8b770404f0f3d0ce8a39", - "sha256:8b344adbb9a862de0c635f4f0425b7958bf5a4b927c8594e6e8d261775796d53", - "sha256:8fc53f9af09426a61db9ba357865c77f26076d48669f2e1bb24d85a22fb52307", - "sha256:91920527dea30175cc02a1099f331aa8c1ba39bf8b7762b7b56cbf54bc5cce42", - "sha256:93cd1967a18aa0edd4b95b1dfd554cf15af657cb606280996d393dadc88c3c35", - "sha256:99485cab9ba0fa9b84f1f9e1fef106f44a46ef6afdeec8885e0b88d0772b49e8", - "sha256:9d29409b625a143649d03d0fd7b57e4b92e0ecad9726ba682244b73be91d2fdb", - "sha256:a29b3ca4ec9defec6d42bf5feb36bb5817ba3c0230dd83b4edf4bf02684cd0ae", - "sha256:a9e1f75f96ea388fbcef36c70640c4efbe4650658f3d6a2967b4cc70e907352e", - "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f", - "sha256:adf20d9a67e0b6393eac162eb81fb10bc9130a80540f4df7e7355c2dd4af9fba", - "sha256:af9813db73395fb1fc211bac696faea4ca9ef53f32dc0cfa27e4e7cf766dcf24", - "sha256:b1c8068513f5b158cf7e29c43a77eb34b407db29aca749d3eb9293ee0d3103ca", - "sha256:bda845b664bb6c91446ca9609fc69f7db6c334ec5e4adc87571c34e4f47b7ddb", - "sha256:c381bda330ddf2fccbafab789d83ebc6c53db126e4383e73794c74eedce855ef", - "sha256:c3ae8e75eb7160851e59adc77b3a19a976e50622e44fd4fd47b8b18208189d42", - "sha256:d1c1b569ecafe3a69380a94e6ae09a4789bbb23666f3d3a08d06bbd2451f5ef1", - "sha256:def68d7c21984b0f8218e8a15d514f714d96904265164f75f8d3a70f9c295667", - "sha256:dffc08ca91c9ac09008870c9eb77b00a46b3378719584059c034b8945e26b272", - "sha256:e3699852e22aa68c10de06524a3721ade969abf382da95884e6a10ff798f9281", - "sha256:e847774f8ffd5b398a75bc1c18fbb56564cda3d629fe68fd81971fece2d3c67e", - "sha256:ffb7a888a047696e7f8240d649b43fb3644f14f0ee229077e7f6b9f9081635bd" + "sha256:00475004e5ed3e3bf5e056d66e5dcdf41a0dc62efcd57997acd9135c40a08a50", + "sha256:01ad49d68dd8c5362e4bfb4158f2896dc6e0c02e87b8a3770fc003459f1a4425", + "sha256:024030b13bdcbd53d8a93891a2cf07719715724fc9fee40243f3bd78b4264b8f", + "sha256:02551647542f2bf89073d129c73c05a25c372fc0a49aa50e0de65c3c143d8bd0", + "sha256:043a9fd45a03858ff72364b4b75090679bd875ee44df9c0613dc862ca6b98460", + "sha256:05b3d479425e047c848b9782cd7aac9c6727ce23181eb9647baf64ffdfc3da41", + "sha256:0775d6252ccb22b15da3b5d7adbbf8cfe284916b14b6dc0ff503a23edb01ee85", + "sha256:1764546ffeaed4f9428707be61d68972eb5ede81239b46a45843e0071104d0dd", + "sha256:1e491e6489a6cb1d079df8eaa15957c277fdedb102b6a68cfbf40c4994412fd0", + "sha256:212757ffcecb3e1a5338d4e6761bf9c04f750e7d027117e74aa3cd8a75bb6fbd", + "sha256:215d6bf7e66732a514f47614f828d8c0aaac9a648c46a831955cb103473c7147", + "sha256:25382c7d174c679ce6927c16b6fbb68b10e56ee44b1acb40671e02d29f2fce7c", + "sha256:2abccab84d057723d2ca8f99ff7b619285d40da6814d50366f61f0fc385c3903", + "sha256:2d964eb24c8b021623df1c93c626671420c6efadbdb8655cb2bd5e0c6fa422ba", + "sha256:2ec46ed947801652c9643e0b1dc334cfb2781232e375ba97312c2fc256597632", + "sha256:2ef892cabdccefe577088a79580301f09f2a713eb239f4f9f62b2b29cafb0577", + "sha256:33e632d0885b95a8b97165899006c40e9ecdc634a529dca7b991eb7de4ece41c", + "sha256:3520d7af1ebc838cc6084a3281145d5cd5bdd43fdef139e6db5af01b92596cb7", + "sha256:3d790f84201c3698d1bfb404c917f36e40531577a6dda02e45ba29b64d539867", + "sha256:3fc33295cfccad697a97a76dec3f1e94ad848b7b163c3228c1636977966b51e2", + "sha256:422e3d43b47ac20141bc84b3d342eead8d8099a62881a501e97d15f6addabfe9", + "sha256:426c2ae999135d64e6a18849a7d1ad0e1bd007277e4a8f4752eaa40a96b550ff", + "sha256:46512486be6fbceef51d7660dec017394ba3e170299d1dc30928cbedebbf103a", + "sha256:46850a640df62ae940e34a163f72e26aca1f88e2da79148e1862faaac985c302", + "sha256:484405b883630f3e74ed32041a87456c5e0e63a8e3429aa93e8714c366d62bd1", + "sha256:4e7904d1920c0c89105c0517dc7e3f5c20fb4e56ba9cdef13048db76947f1d79", + "sha256:56b2957a145f816726b109ee3d4e6822c23f919a7d91af5a94593723ed667835", + "sha256:5c6527c8efa5226a9e787507652dd5ba97b62d29b53c371a85cd13f957fe4d42", + "sha256:5cbc554ba47ecca8cd3396ddaca85e1ecfe3e48dd57dc5e415e59551affe568e", + "sha256:5d28ecdf191db558d0c07d0f16524ee9d67896edf2b7990eea800abeb23ebd61", + "sha256:5fc447058d083b8c6ac076fc26b446d44f0145308465d745fba93a28c14c9e32", + "sha256:63e318dbe52709ed10d516a356f22a635e07a2e34c68145484ed96a19b0c4c68", + "sha256:68d81a2fe184030aa0c5c11e518292e15d342a667184d91e30644c9d533e53e1", + "sha256:6e63814ec71db9bdb42905c925639f319c80e7909fb76c3b84edc79dadef8d60", + "sha256:6f8a9bcab7b6db2e3dbf65b214dfc795b4c6b3bb3af922901b6a67f7cb47d5f8", + "sha256:70831e03bd53702c941da1a1ad36c17d825a24fbb26857b40913d58df82ec18b", + "sha256:74eddec4537ab1f701a1647214734bc52cee2794df748f6ae5908e00771f180a", + "sha256:7b3751857da3e224f5629400736a7b11e940b5da5f95fa631d86219a1beaafec", + "sha256:7cf1d44e710ca3a9ce952bda2855830fe9f9017ed6259e01fcd71ea6287565f5", + "sha256:7d07f552d1e412f4b4e64ce386d4c777a41da3b33f7098b6219012ba534fb2c2", + "sha256:7d88db096fa19d94f433420eaaf9f3c45382da2dd014b93e4bf3215639047c16", + "sha256:7ee3095d02d6f38bd7d9a5358fcc9ea78fcdb7176921528dd709cc63f40184f5", + "sha256:902844f9c4fb19b17dfa84d9e2ca053d4a4ba265723d62ea5c9c26b38e0aa1e6", + "sha256:937880290775033a743f4836aa253087b85e62784b63fd099ee725d567a48aa1", + "sha256:95076399ec3b27a8f7fa1cc9a83417b1c920d55cf7a97f718a94efbb96c7f503", + "sha256:9c38d3869238e9d3409239bc05bc27d6b7c99c2a460ea337d2814b35fb4fea1b", + "sha256:9e32cedc389bcb76d9f24ea8a012b3cb8385ee362ea437e1d012ffaed106c17d", + "sha256:9ffdc51001136b699f9563b1c74cc1f8c07f66ef7219beb6417a4c8aaa896c28", + "sha256:a0adef094c49f242122bb145c3c8af442070dc0e4312db17e49058c1702606d4", + "sha256:a36a0e791805aa136e9cbd0ffa040d09adec8610453ee8a753f23481a0057af5", + "sha256:a7e518a0911c50f60313cb9e74a169a65b5d293770db4770ebf004245f24b5c5", + "sha256:af0516e1711995cb08dc19bbd05bec7dbdebf4185f68870595156718d237df3e", + "sha256:b8104f709590fff72af801e916817560dbe1698028cd0afe5a52d75ceb1fce5f", + "sha256:b911dfb727e247340d36ae20c4b9259e4a64013ab9888ccb3cbba69b77fd9636", + "sha256:b9a794cef1d9c1772b94a72eec6da144c18e18041d294a9ab47669bc77a80c1d", + "sha256:b9c33d4aef08dfecbd1736ceab8b7b3c4358bf10a0121483e5cd60d3d308cc64", + "sha256:b9d38a4656e4e715d637abdf7296e98d6267df0cc0a8e9a016f8ba07e4aa3eeb", + "sha256:bcda1c84a1c533c528356da5490d464a139b6e84eb77cc0b432e38c5c6dd7882", + "sha256:bef7e3f9dc6f0c13afdd671008534be5744e0e682fb851584c8c3a025ec09720", + "sha256:c15ba5982c177bc4b23a7940c7e4394197e2d6a424a2d282e7c236b66da6d896", + "sha256:c5254cbd4f4855e11cebf678c1a848a3042d455a22a4ce61349c36aafd4c2267", + "sha256:c5682a45df7d9642eff590abc73157c887a68f016df0a8ad722dcc0f888f56d7", + "sha256:c5e65c6ac0ae4bf5bef1667029f81010b6017795dcb817ba5c7b8a8d61fab76f", + "sha256:d4c7b3a31502184e856df1f7bbb2c3735a05a8ce0ade34c5277e1577738a5c91", + "sha256:d892bfa1d023c3781a3cab8dd5af76b626c483484d782e8bd047c180db590e4c", + "sha256:dbc332beaf8492b5731229a881807cd7b91b50dbbbaf7fe2faf46942eda64a24", + "sha256:dc85b3777068ed30aff8242be2813038a929f2084f69e43ef869daddae50f6ee", + "sha256:e59137cdb970249ae60be2a49774c6dfb015bd0403f05af1fe61862e9626642d", + "sha256:e67b3c26e9b6d37b370c83aa790bbc121775c57bfb096c2e77eacca25fd0233b", + "sha256:e72c91bda9880f097c8aa3601a2c0de6c708763ba8128006151f496ca9065935", + "sha256:f95b8aca2703d6a30249f83f4fe6a9abf2e627aa892a5caaab2267d56be7ab69" ], "index": "pypi", - "version": "==2.9.3" + "version": "==2.9.5" }, "ptyprocess": { "hashes": [ @@ -691,56 +711,135 @@ }, "pygments": { "hashes": [ - "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65", - "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a" + "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", + "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" ], - "markers": "python_version >= '3.5'", - "version": "==2.11.2" + "markers": "python_version >= '3.6'", + "version": "==2.14.0" }, "pyopenssl": { "hashes": [ - "sha256:660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf", - "sha256:ea252b38c87425b64116f808355e8da644ef9b07e429398bfece610f893ee2e0" + "sha256:c1cc5f86bcacefc84dada7d31175cae1b1518d5f60d3d0bb595a67822a868a6f", + "sha256:df5fc28af899e74e19fccb5510df423581047e10ab6f1f4ba1763ff5fde844c0" + ], + "version": "==23.0.0" + }, + "pypng": { + "hashes": [ + "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c", + "sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1" + ], + "version": "==0.20220715.0" + }, + "pyrsistent": { + "hashes": [ + "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", + "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", + "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", + "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", + "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", + "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", + "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", + "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", + "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", + "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", + "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", + "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", + "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", + "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", + "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", + "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", + "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", + "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", + "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", + "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", + "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", + "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", + "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", + "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", + "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", + "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", + "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" ], - "version": "==22.0.0" + "markers": "python_version >= '3.7'", + "version": "==0.19.3" }, - "pyparsing": { + "pytz": { "hashes": [ - "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954", - "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06" + "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0", + "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a" ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.8" + "version": "==2022.7.1" }, - "pytz": { + "pyyaml": { "hashes": [ - "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", - "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], - "version": "==2022.1" + "markers": "python_version >= '3.6'", + "version": "==6.0" }, "qrcode": { "hashes": [ - "sha256:375a6ff240ca9bd41adc070428b5dfc1dcfbb0f2507f1ac848f6cded38956578" + "sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a", + "sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845" ], "index": "pypi", - "version": "==7.3.1" + "version": "==7.4.2" }, "redis": { "hashes": [ - "sha256:0107dc8e98a4f1d1d4aa00100e044287f77121a1e6d2085545c4b7fa94a7a27f", - "sha256:4e95f4ec5f49e636efcf20061a5a9110c20852f607cfca6865c07aaa8a739ee2" + "sha256:1eec3741cda408d3a5f84b78d089c8b8d895f21b3b050988351e925faf202864", + "sha256:5deb072d26e67d2be1712603bfb7947ec3431fb0eec9c578994052e33035af6d" ], "index": "pypi", - "version": "==4.2.2" + "version": "==4.5.1" }, "sentry-sdk": { "hashes": [ - "sha256:0a9eb20a84f4c17c08c57488d59fdad18669db71ebecb28fb0721423a33535f9", - "sha256:972c8fe9318a415b5cf35f687f568321472ef94b36806407c370ce9c88a67f2e" + "sha256:633edefead34d976ff22e7edc367cdf57768e24bc714615ccae746d9d91795ae", + "sha256:a900845bd78c263d49695d48ce78a4bce1030bbd917e0b6cc021fc000c901113" ], "index": "pypi", - "version": "==1.5.10" + "version": "==1.16.0" }, "service-identity": { "hashes": [ @@ -751,11 +850,11 @@ }, "setuptools": { "hashes": [ - "sha256:26ead7d1f93efc0f8c804d9fafafbe4a44b179580a7105754b245155f9af05a8", - "sha256:47c7b0c0f8fc10eec4cf1e71c6fdadf8decaa74ffa087e68cd1c20db7ad6a592" + "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330", + "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251" ], "markers": "python_version >= '3.7'", - "version": "==62.1.0" + "version": "==67.4.0" }, "six": { "hashes": [ @@ -767,61 +866,69 @@ }, "sqlparse": { "hashes": [ - "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", - "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" + "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34", + "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268" ], "markers": "python_version >= '3.5'", - "version": "==0.4.2" + "version": "==0.4.3" }, "traitlets": { "hashes": [ - "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7", - "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033" + "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8", + "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9" ], "markers": "python_version >= '3.7'", - "version": "==5.1.1" + "version": "==5.9.0" }, "twisted": { "extras": [ "tls" ], "hashes": [ - "sha256:a047990f57dfae1e0bd2b7df2526d4f16dcdc843774dc108b78c52f2a5f13680", - "sha256:f9f7a91f94932477a9fc3b169d57f54f96c6e74a23d78d9ce54039a7f48928a2" + "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31", + "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0" ], - "markers": "python_full_version >= '3.6.7'", - "version": "==22.4.0" + "markers": "python_full_version >= '3.7.1'", + "version": "==22.10.0" }, "txaio": { "hashes": [ - "sha256:2e4582b70f04b2345908254684a984206c0d9b50e3074a24a4c55aba21d24d01", - "sha256:41223af4a9d5726e645a8ee82480f413e5e300dd257db94bc38ae12ea48fb2e5" + "sha256:aaea42f8aad50e0ecfb976130ada140797e9dcb85fad2cf72b0f37f8cefcb490", + "sha256:f9a9216e976e5e3246dfd112ad7ad55ca915606b60b84a757ac769bd404ff704" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.1" + "markers": "python_version >= '3.7'", + "version": "==23.1.1" }, "typing-extensions": { "hashes": [ - "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", - "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" + "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", + "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + ], + "markers": "python_version >= '3.7'", + "version": "==4.5.0" + }, + "uritemplate": { + "hashes": [ + "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", + "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e" ], "markers": "python_version >= '3.6'", "version": "==4.1.1" }, "urllib3": { "hashes": [ - "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", - "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" + "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", + "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'", - "version": "==1.26.9" + "markers": "python_version >= '3.6'", + "version": "==1.26.14" }, "wcwidth": { "hashes": [ - "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", - "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", + "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" ], - "version": "==0.2.5" + "version": "==0.2.6" }, "webencodings": { "hashes": [ @@ -832,170 +939,87 @@ }, "whitenoise": { "hashes": [ - "sha256:08c42bc535f9777eea1a599289d9433f081921f97887eaf6f559446b2a080374", - "sha256:5a4aff543ee860fbe40d743e556adf92ccd41b7df45697cae074afdf657056b9" + "sha256:599dc6ca57e48929dfeffb2e8e187879bfe2aed0d49ca419577005b7f2cc930b", + "sha256:a02d6660ad161ff17e3042653c8e3f5ecbb2a2481a006bde125b9efb9a30113a" ], "index": "pypi", - "version": "==6.0.0" - }, - "wrapt": { - "hashes": [ - "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b", - "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0", - "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330", - "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3", - "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68", - "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa", - "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe", - "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd", - "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b", - "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80", - "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38", - "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f", - "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350", - "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd", - "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb", - "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3", - "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0", - "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff", - "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c", - "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758", - "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036", - "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb", - "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763", - "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9", - "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7", - "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1", - "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7", - "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0", - "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5", - "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce", - "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8", - "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279", - "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0", - "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06", - "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561", - "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a", - "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311", - "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131", - "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4", - "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291", - "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4", - "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8", - "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8", - "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d", - "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c", - "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd", - "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d", - "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6", - "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775", - "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e", - "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627", - "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e", - "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8", - "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1", - "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48", - "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc", - "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3", - "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6", - "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425", - "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d", - "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23", - "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c", - "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33", - "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.14.0" + "version": "==6.4.0" }, "zope.interface": { "hashes": [ - "sha256:08f9636e99a9d5410181ba0729e0408d3d8748026ea938f3b970a0249daa8192", - "sha256:0b465ae0962d49c68aa9733ba92a001b2a0933c317780435f00be7ecb959c702", - "sha256:0cba8477e300d64a11a9789ed40ee8932b59f9ee05f85276dbb4b59acee5dd09", - "sha256:0cee5187b60ed26d56eb2960136288ce91bcf61e2a9405660d271d1f122a69a4", - "sha256:0ea1d73b7c9dcbc5080bb8aaffb776f1c68e807767069b9ccdd06f27a161914a", - "sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3", - "sha256:15e7d1f7a6ee16572e21e3576d2012b2778cbacf75eb4b7400be37455f5ca8bf", - "sha256:17776ecd3a1fdd2b2cd5373e5ef8b307162f581c693575ec62e7c5399d80794c", - "sha256:194d0bcb1374ac3e1e023961610dc8f2c78a0f5f634d0c737691e215569e640d", - "sha256:1c0e316c9add0db48a5b703833881351444398b04111188069a26a61cfb4df78", - "sha256:205e40ccde0f37496904572035deea747390a8b7dc65146d30b96e2dd1359a83", - "sha256:273f158fabc5ea33cbc936da0ab3d4ba80ede5351babc4f577d768e057651531", - "sha256:2876246527c91e101184f63ccd1d716ec9c46519cc5f3d5375a3351c46467c46", - "sha256:2c98384b254b37ce50eddd55db8d381a5c53b4c10ee66e1e7fe749824f894021", - "sha256:2e5a26f16503be6c826abca904e45f1a44ff275fdb7e9d1b75c10671c26f8b94", - "sha256:334701327f37c47fa628fc8b8d28c7d7730ce7daaf4bda1efb741679c2b087fc", - "sha256:3748fac0d0f6a304e674955ab1365d515993b3a0a865e16a11ec9d86fb307f63", - "sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54", - "sha256:3dd4952748521205697bc2802e4afac5ed4b02909bb799ba1fe239f77fd4e117", - "sha256:3f24df7124c323fceb53ff6168da70dbfbae1442b4f3da439cd441681f54fe25", - "sha256:469e2407e0fe9880ac690a3666f03eb4c3c444411a5a5fddfdabc5d184a79f05", - "sha256:4de4bc9b6d35c5af65b454d3e9bc98c50eb3960d5a3762c9438df57427134b8e", - "sha256:5208ebd5152e040640518a77827bdfcc73773a15a33d6644015b763b9c9febc1", - "sha256:52de7fc6c21b419078008f697fd4103dbc763288b1406b4562554bd47514c004", - "sha256:5bb3489b4558e49ad2c5118137cfeaf59434f9737fa9c5deefc72d22c23822e2", - "sha256:5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e", - "sha256:5dd9ca406499444f4c8299f803d4a14edf7890ecc595c8b1c7115c2342cadc5f", - "sha256:5f931a1c21dfa7a9c573ec1f50a31135ccce84e32507c54e1ea404894c5eb96f", - "sha256:63b82bb63de7c821428d513607e84c6d97d58afd1fe2eb645030bdc185440120", - "sha256:66c0061c91b3b9cf542131148ef7ecbecb2690d48d1612ec386de9d36766058f", - "sha256:6f0c02cbb9691b7c91d5009108f975f8ffeab5dff8f26d62e21c493060eff2a1", - "sha256:71aace0c42d53abe6fc7f726c5d3b60d90f3c5c055a447950ad6ea9cec2e37d9", - "sha256:7d97a4306898b05404a0dcdc32d9709b7d8832c0c542b861d9a826301719794e", - "sha256:7df1e1c05304f26faa49fa752a8c690126cf98b40b91d54e6e9cc3b7d6ffe8b7", - "sha256:8270252effc60b9642b423189a2fe90eb6b59e87cbee54549db3f5562ff8d1b8", - "sha256:867a5ad16892bf20e6c4ea2aab1971f45645ff3102ad29bd84c86027fa99997b", - "sha256:877473e675fdcc113c138813a5dd440da0769a2d81f4d86614e5d62b69497155", - "sha256:8892f89999ffd992208754851e5a052f6b5db70a1e3f7d54b17c5211e37a98c7", - "sha256:9a9845c4c6bb56e508651f005c4aeb0404e518c6f000d5a1123ab077ab769f5c", - "sha256:a1e6e96217a0f72e2b8629e271e1b280c6fa3fe6e59fa8f6701bec14e3354325", - "sha256:a8156e6a7f5e2a0ff0c5b21d6bcb45145efece1909efcbbbf48c56f8da68221d", - "sha256:a9506a7e80bcf6eacfff7f804c0ad5350c8c95b9010e4356a4b36f5322f09abb", - "sha256:af310ec8335016b5e52cae60cda4a4f2a60a788cbb949a4fbea13d441aa5a09e", - "sha256:b0297b1e05fd128d26cc2460c810d42e205d16d76799526dfa8c8ccd50e74959", - "sha256:bf68f4b2b6683e52bec69273562df15af352e5ed25d1b6641e7efddc5951d1a7", - "sha256:d0c1bc2fa9a7285719e5678584f6b92572a5b639d0e471bb8d4b650a1a910920", - "sha256:d4d9d6c1a455d4babd320203b918ccc7fcbefe308615c521062bc2ba1aa4d26e", - "sha256:db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48", - "sha256:dd93ea5c0c7f3e25335ab7d22a507b1dc43976e1345508f845efc573d3d779d8", - "sha256:f44e517131a98f7a76696a7b21b164bcb85291cee106a23beccce454e1f433a4", - "sha256:f7ee479e96f7ee350db1cf24afa5685a5899e2b34992fb99e1f7c1b0b758d263" + "sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32", + "sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0", + "sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c", + "sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c", + "sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d", + "sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf", + "sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b", + "sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc", + "sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f", + "sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d", + "sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e", + "sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16", + "sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f", + "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9", + "sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296", + "sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a", + "sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d", + "sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d", + "sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189", + "sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4", + "sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452", + "sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a", + "sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0", + "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5", + "sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671", + "sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e", + "sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f", + "sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396", + "sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7", + "sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b", + "sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf", + "sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f", + "sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6", + "sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188", + "sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7", + "sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==5.4.0" + "version": "==5.5.2" } }, "develop": { "alabaster": { "hashes": [ - "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359", - "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02" + "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3", + "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2" ], - "version": "==0.7.12" + "markers": "python_version >= '3.6'", + "version": "==0.7.13" }, "asgiref": { "hashes": [ - "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0", - "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9" + "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac", + "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506" ], "index": "pypi", - "version": "==3.5.0" + "version": "==3.6.0" }, "babel": { "hashes": [ - "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9", - "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0" + "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610", + "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.9.1" + "markers": "python_version >= '3.7'", + "version": "==2.12.1" }, "certifi": { "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], - "version": "==2021.10.8" + "markers": "python_version >= '3.6'", + "version": "==2022.12.7" }, "cfgv": { "hashes": [ @@ -1007,215 +1031,298 @@ }, "charset-normalizer": { "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b", + "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42", + "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d", + "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b", + "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a", + "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59", + "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154", + "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1", + "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c", + "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a", + "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d", + "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6", + "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b", + "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b", + "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783", + "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5", + "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918", + "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555", + "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639", + "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786", + "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e", + "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed", + "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820", + "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8", + "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3", + "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541", + "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14", + "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be", + "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e", + "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76", + "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b", + "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c", + "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b", + "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3", + "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc", + "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6", + "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59", + "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4", + "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d", + "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d", + "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3", + "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a", + "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea", + "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6", + "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e", + "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603", + "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24", + "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a", + "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58", + "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678", + "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a", + "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c", + "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6", + "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18", + "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174", + "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317", + "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f", + "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc", + "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837", + "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41", + "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c", + "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579", + "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753", + "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8", + "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291", + "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087", + "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866", + "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3", + "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d", + "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1", + "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca", + "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e", + "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db", + "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72", + "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d", + "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc", + "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539", + "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d", + "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af", + "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b", + "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602", + "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f", + "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478", + "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c", + "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e", + "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479", + "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7", + "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8" ], - "markers": "python_version >= '3'", - "version": "==2.0.12" + "markers": "python_version >= '3.6'", + "version": "==3.0.1" }, "click": { "hashes": [ - "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e", - "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72" + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" ], "markers": "python_version >= '3.7'", - "version": "==8.1.2" + "version": "==8.1.3" }, "colorama": { "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.4.4" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==0.4.6" }, "distlib": { "hashes": [ - "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b", - "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579" + "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", + "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" ], - "version": "==0.3.4" + "version": "==0.3.6" }, "django": { "hashes": [ - "sha256:07c8638e7a7f548dc0acaaa7825d84b7bd42b10e8d22268b3d572946f1e9b687", - "sha256:4e8177858524417563cc0430f29ea249946d831eacb0068a1455686587df40b5" + "sha256:44f714b81c5f190d9d2ddad01a532fe502fa01c4cb8faf1d081f4264ed15dcd8", + "sha256:f2f431e75adc40039ace496ad3b9f17227022e8b11566f4b363da44c7e44761e" ], "index": "pypi", - "version": "==4.0.4" + "version": "==4.1.7" }, "django-debug-toolbar": { "hashes": [ - "sha256:644bbd5c428d3283aa9115722471769cac1bec189edf3a0c855fd8ff870375a9", - "sha256:6b633b6cfee24f232d73569870f19aa86c819d750e7f3e833f2344a9eb4b4409" + "sha256:24ef1a7d44d25e60d7951e378454c6509bf536dce7e7d9d36e7c387db499bc27", + "sha256:879f8a4672d41621c06a4d322dcffa630fc4df056cada6e417ed01db0e5e0478" ], "index": "pypi", - "version": "==3.2.4" + "version": "==3.8.1" }, "docutils": { "hashes": [ - "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125", - "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61" + "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c", + "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.17.1" + "version": "==0.18.1" }, "filelock": { "hashes": [ - "sha256:9cd540a9352e432c7246a48fe4e8712b10acb1df2ad1f30e8c070b82ae1fed85", - "sha256:f8314284bfffbdcfa0ff3d7992b023d4c628ced6feb957351d4c48d059f56bc0" + "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de", + "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d" ], "markers": "python_version >= '3.7'", - "version": "==3.6.0" + "version": "==3.9.0" }, "identify": { "hashes": [ - "sha256:3f3244a559290e7d3deb9e9adc7b33594c1bc85a9dd82e0f1be519bf12a1ec17", - "sha256:5f06b14366bd1facb88b00540a1de05b69b310cbc2654db3c7e07fa3a4339323" + "sha256:89e144fa560cc4cffb6ef2ab5e9fb18ed9f9b3cb054384bab4b95c12f6c309fe", + "sha256:93aac7ecf2f6abf879b8f29a8002d3c6de7086b8c28d88e1ad15045a15ab63f9" ], "markers": "python_version >= '3.7'", - "version": "==2.4.12" + "version": "==2.5.18" }, "idna": { "hashes": [ - "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", - "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], - "markers": "python_version >= '3.5'", - "version": "==3.3" + "version": "==3.4" }, "imagesize": { "hashes": [ - "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c", - "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d" + "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", + "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.3.0" + "version": "==1.4.1" }, "importlib-metadata": { "hashes": [ - "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6", - "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539" + "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad", + "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d" ], "markers": "python_version < '3.10'", - "version": "==4.11.3" + "version": "==6.0.0" }, "jinja2": { "hashes": [ - "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119", - "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9" + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], "markers": "python_version >= '3.7'", - "version": "==3.1.1" + "version": "==3.1.2" }, "livereload": { "hashes": [ - "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869" + "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869", + "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4" ], "version": "==2.6.3" }, "markupsafe": { "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed", + "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc", + "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2", + "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460", + "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7", + "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0", + "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1", + "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa", + "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03", + "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323", + "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65", + "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013", + "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036", + "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f", + "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4", + "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419", + "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2", + "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619", + "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a", + "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a", + "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd", + "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7", + "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666", + "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65", + "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859", + "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625", + "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff", + "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156", + "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd", + "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba", + "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f", + "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1", + "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094", + "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a", + "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513", + "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed", + "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d", + "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3", + "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147", + "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c", + "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603", + "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601", + "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a", + "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1", + "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d", + "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3", + "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54", + "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2", + "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6", + "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58" ], "markers": "python_version >= '3.7'", - "version": "==2.1.1" + "version": "==2.1.2" }, "nodeenv": { "hashes": [ - "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b", - "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7" + "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e", + "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b" ], - "version": "==1.6.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==1.7.0" }, "packaging": { "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", + "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" ], - "markers": "python_version >= '3.6'", - "version": "==21.3" + "markers": "python_version >= '3.7'", + "version": "==23.0" }, "platformdirs": { "hashes": [ - "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", - "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" + "sha256:13b08a53ed71021350c9e300d4ea8668438fb0046ab3937ac9a29913a1a1350a", + "sha256:accc3665857288317f32c7bebb5a8e482ba717b474f3fc1d18ca7f9214be0cef" ], "markers": "python_version >= '3.7'", - "version": "==2.5.1" + "version": "==3.1.0" }, "pre-commit": { "hashes": [ - "sha256:02226e69564ebca1a070bd1f046af866aa1c318dbc430027c50ab832ed2b73f2", - "sha256:5d445ee1fa8738d506881c5d84f83c62bb5be6b2838e32207433647e8e5ebe10" + "sha256:b80254e60668e1dd1f5c03a1c9e0413941d61f568a57d745add265945f65bfe8", + "sha256:d63e6537f9252d99f65755ae5b79c989b462d511ebbc481b561db6a297e1e865" ], "index": "pypi", - "version": "==2.18.1" + "version": "==3.1.1" }, "pygments": { "hashes": [ - "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65", - "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a" - ], - "markers": "python_version >= '3.5'", - "version": "==2.11.2" - }, - "pyparsing": { - "hashes": [ - "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954", - "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.8" - }, - "pytz": { - "hashes": [ - "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", - "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" + "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", + "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" ], - "version": "==2022.1" + "markers": "python_version >= '3.6'", + "version": "==2.14.0" }, "pyyaml": { "hashes": [ + "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", @@ -1227,26 +1334,32 @@ "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" ], @@ -1255,11 +1368,11 @@ }, "requests": { "hashes": [ - "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", - "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa", + "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.27.1" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.28.2" }, "selenium": { "hashes": [ @@ -1271,11 +1384,11 @@ }, "setuptools": { "hashes": [ - "sha256:26ead7d1f93efc0f8c804d9fafafbe4a44b179580a7105754b245155f9af05a8", - "sha256:47c7b0c0f8fc10eec4cf1e71c6fdadf8decaa74ffa087e68cd1c20db7ad6a592" + "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330", + "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251" ], "markers": "python_version >= '3.7'", - "version": "==62.1.0" + "version": "==67.4.0" }, "six": { "hashes": [ @@ -1294,11 +1407,11 @@ }, "sphinx": { "hashes": [ - "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6", - "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226" + "sha256:0dac3b698538ffef41716cf97ba26c1c7788dba73ce6f150c1ff5b4720786dd2", + "sha256:807d1cb3d6be87eb78a381c3e70ebd8d346b9a25f3753e9947e866b2786865fc" ], "index": "pypi", - "version": "==4.5.0" + "version": "==6.1.3" }, "sphinx-autobuild": { "hashes": [ @@ -1310,27 +1423,27 @@ }, "sphinx-intl": { "hashes": [ - "sha256:2ff97cba0e4e43249e339a3c29dd2f5b63c25ce794050aabca320ad95f5c5b55", - "sha256:b25a6ec169347909e8d983eefe2d8adecb3edc2f27760db79b965c69950638b4" + "sha256:9798946b995989de691387651d70c3fc191275b587e2e519655541edfd7bbd68", + "sha256:9d9849ae42515b39786824e99f1e30db0404c377b01bb022690fc932b0221c02" ], "index": "pypi", - "version": "==2.0.1" + "version": "==2.1.0" }, "sphinx-rtd-theme": { "hashes": [ - "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8", - "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c" + "sha256:a0d8bd1a2ed52e0b338cbe19c4b2eef3c5e7a048769753dac6a9f059c7b641b8", + "sha256:f823f7e71890abe0ac6aaa6013361ea2696fc8d3e1fa798f463e82bdb77eeff2" ], "index": "pypi", - "version": "==1.0.0" + "version": "==1.2.0" }, "sphinxcontrib-applehelp": { "hashes": [ - "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a", - "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58" + "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228", + "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.2" + "markers": "python_version >= '3.8'", + "version": "==1.0.4" }, "sphinxcontrib-devhelp": { "hashes": [ @@ -1342,10 +1455,18 @@ }, "sphinxcontrib-htmlhelp": { "hashes": [ - "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07", - "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2" + "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff", + "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903" ], - "markers": "python_version >= '3.6'", + "markers": "python_version >= '3.8'", + "version": "==2.0.1" + }, + "sphinxcontrib-jquery": { + "hashes": [ + "sha256:8fb65f6dba84bf7bcd1aea1f02ab3955ac34611d838bcc95d4983b805b234daa", + "sha256:ed47fa425c338ffebe3c37e1cdb56e30eb806116b85f01055b158c7057fdb995" + ], + "markers": "python_version >= '3.1'", "version": "==2.0.0" }, "sphinxcontrib-jsmath": { @@ -1374,90 +1495,52 @@ }, "sqlparse": { "hashes": [ - "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae", - "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d" + "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34", + "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268" ], "markers": "python_version >= '3.5'", - "version": "==0.4.2" - }, - "toml": { - "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" + "version": "==0.4.3" }, "tornado": { "hashes": [ - "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb", - "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c", - "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288", - "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95", - "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558", - "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe", - "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791", - "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d", - "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326", - "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b", - "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4", - "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c", - "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910", - "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5", - "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c", - "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0", - "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675", - "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd", - "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f", - "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c", - "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea", - "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6", - "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05", - "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd", - "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575", - "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a", - "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37", - "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795", - "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f", - "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32", - "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c", - "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01", - "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4", - "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2", - "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921", - "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085", - "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df", - "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102", - "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5", - "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68", - "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5" + "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca", + "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72", + "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23", + "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8", + "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b", + "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9", + "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13", + "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75", + "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac", + "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e", + "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b" ], "markers": "python_version > '2.7'", - "version": "==6.1" + "version": "==6.2" }, "urllib3": { "hashes": [ - "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", - "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" + "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72", + "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'", - "version": "==1.26.9" + "markers": "python_version >= '3.6'", + "version": "==1.26.14" }, "virtualenv": { "hashes": [ - "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a", - "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5" + "sha256:3c22fa5a7c7aa106ced59934d2c20a2ecb7f49b4130b8bf444178a16b880fa45", + "sha256:a8a4b8ca1e28f864b7514a253f98c1d62b64e31e77325ba279248c65fb4fcef4" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==20.14.1" + "markers": "python_version >= '3.7'", + "version": "==20.20.0" }, "zipp": { "hashes": [ - "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad", - "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099" + "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", + "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" ], "markers": "python_version >= '3.7'", - "version": "==3.8.0" + "version": "==3.15.0" } } } diff --git a/deploy_heroku.py b/deploy_heroku.py index 4bfcc80d92f..8aa1e0d5515 100644 --- a/deploy_heroku.py +++ b/deploy_heroku.py @@ -8,6 +8,7 @@ import shutil import subprocess import sys +import time try: from django.core.management.utils import get_random_secret_key @@ -42,8 +43,8 @@ def get_random_secret_key(): help="Heroku Postgres plan (default mini)") parser.add_argument( - "--web-dynos", type=str, default="1:eco", - help="Web dyno specification, passed to heroku ps:scale web=[], e.g. 1:eco, 1:hobby, 2:Standard-1X") + "--web-dynos", type=str, default="1", + help="Web dyno specification, passed to heroku ps:scale web=[], e.g. 1:eco, 1:basic, 2:Standard-1X") parser.add_argument( "--import-tournament", type=str, metavar="IMPORT_DIR", @@ -165,7 +166,7 @@ def get_git_push_spec(): if args.urlname != "-": command.append(args.urlname) output = get_output_from_command(command) -match = re.search(r"https://([\w_-]+)\.herokuapp\.com/\s+\|\s+(https://git.heroku.com/[\w_-]+.git)", output) +match = re.search(r"https://([\w_-]+?)(?:-\w{12})?\.herokuapp\.com/\s+\|\s+(https://git.heroku.com/[\w_-]+.git)", output) urlname = match.group(1) heroku_url = match.group(2) @@ -207,6 +208,18 @@ def get_git_push_spec(): else: remote_name = heroku_url +# Wait for Redis provisioning, which can take a significant amount of time +redis_provisioned = False +redis_status_command = make_heroku_command(["redis:info"]) +print_yellow("Waiting for Heroku Redis to provision (may take up to 5 minutes)...") + +while not redis_provisioned: + time.sleep(30) + redis_output = subprocess.check_output(redis_status_command).decode().split("\n") + redis_provisioned = "available" in redis_output[2] + +print("Heroku Redis is available, starting deployment") + # Push source code to Heroku push_spec = get_git_push_spec() run_command(["git", "push", remote_name, push_spec]) diff --git a/docs/about/licence.rst b/docs/about/licence.rst index 2f7644abf03..6cf4e182338 100644 --- a/docs/about/licence.rst +++ b/docs/about/licence.rst @@ -1 +1,17 @@ -.. include:: ../../LICENSE.rst +===================== +Licence and Donations +===================== + +Licence +======= + +Tabbycat is licensed under the terms of the `GNU Affero General Public License v3.0 `_. You may copy, distribute, and modify this software; however note that this licence requires (amongst other provisions) that any modifications you make to Tabbycat be made public. + +Please `consult the terms of the licence for the full detail of its terms `_. + +Donations +========= + +Monetary donations are much appreciated and help us to continue the development and maintenance of Tabbycat. We suggest that tournaments donate at the level of $1 Australian dollar per-team — especially if your tournament is run for profit or fund-raising purposes. + +Information on how to donate, and the suggested level of donation, are available in the footer links of each Tabbycat site. diff --git a/docs/api-schema.yml b/docs/api-schema.yml deleted file mode 100644 index 1c323430600..00000000000 --- a/docs/api-schema.yml +++ /dev/null @@ -1,4446 +0,0 @@ -openapi: 3.0.0 -info: - title: Tabbycat API - description: Parliamentary debate tabulation software - termsOfService: 'https://tabbycat.readthedocs.io/en/stable/' - contact: - email: ebeaule@tabbycat-debate.org - name: Étienne Beaulé - license: - name: Tabbycat - url: 'https://tabbycat.readthedocs.io/en/stable/about/licence.html' - version: 1.2.0 -security: - - Token: [] -paths: - /: - get: - operationId: _list - description: API Root - security: [] - responses: - '200': - description: '' - '401': - description: The API has been disabled on this site. - parameters: [] - /v1: - get: - operationId: v1_list - description: API Version 1 Root - security: [] - responses: - '200': - description: '' - content: - application/json: - schema: - type: object - properties: - _links: - title: links - type: object - readOnly: true - properties: - v1: - title: v1 - type: string - format: uri - readOnly: true - version: - title: Tabbycat version - type: string - readOnly: true - tags: - - v1 - parameters: [] - /v1/institutions: - get: - operationId: v1_institutions_list - description: List all institutions - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: region - in: query - description: Name of the region to include. - required: false - schema: - type: string - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Institution' - tags: - - v1 - - institutions - post: - operationId: v1_institutions_create - description: Create an institution - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Institution' - tags: - - v1 - - institutions - requestBody: - $ref: '#/components/requestBodies/Institution' - parameters: [] - '/v1/institutions/{id}': - get: - operationId: v1_institutions_read - description: Retrieve an institution - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Institution' - tags: - - v1 - - institutions - post: - operationId: v1_institutions_update - description: Modify an institution - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Institution' - tags: - - v1 - - institutions - requestBody: - $ref: '#/components/requestBodies/Institution' - delete: - operationId: v1_institutions_delete - description: Delete an institution - responses: - '204': - description: '' - tags: - - v1 - - institutions - parameters: - - name: id - in: path - required: true - schema: - type: integer - /v1/tournaments: - get: - operationId: v1_tournaments_list - description: List all tournaments - security: [] - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Tournament' - tags: - - v1 - - tournaments - post: - operationId: v1_tournaments_create - description: Create a tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Tournament' - tags: - - v1 - - tournaments - requestBody: - $ref: '#/components/requestBodies/Tournament' - parameters: [] - '/v1/tournaments/{tournament_slug}': - get: - operationId: v1_tournaments_read - description: Retrieve a tournament - security: [] - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Tournament' - tags: - - v1 - - tournaments - post: - operationId: v1_tournaments_update - description: Modify a tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Tournament' - tags: - - v1 - - tournaments - requestBody: - $ref: '#/components/requestBodies/Tournament' - delete: - operationId: v1_tournaments_delete - description: Delete a tournament - responses: - '204': - description: '' - tags: - - v1 - - tournaments - patch: - operationId: v1_tournaments_partial_update - description: Update a tournament - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Tournament' - tags: - - v1 - - tournaments - requestBody: - $ref: '#/components/requestBodies/Tournament' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/adjudicators': - get: - operationId: v1_tournaments_adjudicators_list - description: List adjudicators of a tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: break - in: query - description: >- - If present, only show breaking adjudicators, if permissions allow. - required: false - schema: - type: boolean - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Adjudicator' - tags: - - v1 - - adjudicators - post: - operationId: v1_tournaments_adjudicators_create - description: Create an adjudicator for the tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Adjudicator' - tags: - - v1 - - adjudicators - requestBody: - $ref: '#/components/requestBodies/Adjudicator' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/adjudicators/{id}': - get: - operationId: v1_tournaments_adjudicators_read - description: Retrieve an adjudicator - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Adjudicator' - tags: - - v1 - - adjudicators - post: - operationId: v1_tournaments_adjudicators_update - description: Modify an adjudicator - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Adjudicator' - tags: - - v1 - - adjudicators - requestBody: - $ref: '#/components/requestBodies/Adjudicator' - delete: - operationId: v1_tournaments_adjudicators_delete - description: Delete an adjudicator - responses: - '204': - description: '' - tags: - - v1 - - adjudicators - patch: - operationId: v1_tournaments_adjudicators_partial_update - description: Update an adjudicator - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Adjudicator' - tags: - - v1 - - adjudicators - requestBody: - $ref: '#/components/requestBodies/Adjudicator' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/adjudicators/{id}/checkin': - get: - operationId: v1_tournaments_adjudicators_checkin_list - description: Check if adjudicator is currently checked in - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - adjudicators - - checkins - post: - operationId: v1_tournaments_adjudicators_checkin_create - description: Create an check-in identifier for the adjudicator - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - tags: - - v1 - - adjudicators - - checkins - put: - operationId: v1_tournaments_adjudicators_checkin_update - description: Check in the adjudicator - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - adjudicators - - checkins - patch: - operationId: v1_tournaments_adjudicators_checkin_partial_update - description: Toggle the adjudicator''s check-in status - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - adjudicators - - checkins - delete: - operationId: v1_tournaments_adjudicators_checkin_delete - description: Check out the adjudicator - responses: - '204': - description: '' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - adjudicators - - checkins - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/break-categories': - get: - operationId: v1_tournaments_break-categories_list - description: List the tournament''s break categories. - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BreakCategory' - tags: - - v1 - - break-categories - post: - operationId: v1_tournaments_break-categories_create - description: Create a break category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakCategory' - tags: - - v1 - - break-categories - requestBody: - $ref: '#/components/requestBodies/BreakCategory' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/break-categories/{id}': - get: - operationId: v1_tournaments_break-categories_read - description: Retrieve a break category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakCategory' - tags: - - v1 - - break-categories - post: - operationId: v1_tournaments_break-categories_update - description: Modify a break category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakCategory' - tags: - - v1 - - break-categories - requestBody: - $ref: '#/components/requestBodies/BreakCategory' - delete: - operationId: v1_tournaments_break-categories_delete - description: Delete a break category - responses: - '204': - description: '' - tags: - - v1 - - break-categories - patch: - operationId: v1_tournaments_break-categories_partial_update - description: Update a break category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakCategory' - tags: - - v1 - - break-categories - requestBody: - $ref: '#/components/requestBodies/BreakCategory' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/break-categories/{id}/eligibility': - get: - operationId: v1_tournaments_break-categories_eligibility_read - description: Get team eligibility for all the break category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakEligibility' - tags: - - v1 - - break-categories - - eligibility - put: - operationId: v1_tournaments_break-categories_eligibility_update - description: Set the teams eligible for the break category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakEligibility' - tags: - - v1 - - break-categories - - eligibility - requestBody: - $ref: '#/components/requestBodies/BreakEligibility' - patch: - operationId: v1_tournaments_break-categories_eligibility_partial_update - description: Add eligible teams to the break category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/BreakEligibility' - tags: - - v1 - - break-categories - - eligibility - requestBody: - $ref: '#/components/requestBodies/BreakEligibility' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/break-categories/{id}/break': - get: - operationId: v1_tournaments_break-categories_break_read - description: Get team breaks for the break category - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BreakingTeam' - tags: - - v1 - - break-categories - post: - operationId: v1_tournaments_break-categories_break_create - description: Create a break for a break category - responses: - '201': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BreakingTeam' - tags: - - v1 - - break-categories - delete: - operationId: v1_tournaments_break-categories_break_delete - description: Delete a break category''s break - responses: - '204': - description: '' - tags: - - v1 - - break-categories - patch: - operationId: v1_tournaments_break-categories_break_partial_update - description: Update remark on team and regenerate break - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BreakingTeam' - tags: - - v1 - - break-categories - requestBody: - $ref: '#/components/requestBodies/PartialBreakingTeam' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/feedback': - get: - operationId: v1_tournaments_feedback_list - description: >- - List all adjudicator feedback for a tournament. - Warning: Expensive operation. - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: source_type - in: query - description: The type of participant submitter of the feedback - required: false - schema: - type: string - enum: - - adjudicator - - team - - name: source - in: query - description: >- - The ID of the participant submitting feedback; must be used in - conjunction with `source_type` - required: false - schema: - type: integer - - name: target - in: query - description: The ID of the adjudicator receiving feedback - required: false - schema: - type: integer - - name: round - in: query - description: The sequence of the round of the submitted feedback. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Feedback' - tags: - - v1 - - feedback - post: - operationId: v1_tournaments_feedback_create - description: Submit feedback on an adjudicator - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Feedback' - tags: - - v1 - - feedback - requestBody: - $ref: '#/components/requestBodies/Feedback' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/feedback-questions': - get: - operationId: v1_tournaments_feedback-questions_list - description: List questions posed in adjudicator feedback - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: from_adj - in: query - description: >- - Filter to the questions posed to adjudicators. (Determined by - presence of parameter) - required: false - schema: - type: boolean - - name: from_team - in: query - description: >- - Filter by whether the question is posed to teams. (Determined by - presence of parameter) - required: false - schema: - type: boolean - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/FeedbackQuestion' - tags: - - v1 - - questions - post: - operationId: v1_tournaments_feedback-questions_create - description: Create a question for adjudicator feedback - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/FeedbackQuestion' - tags: - - v1 - - questions - requestBody: - $ref: '#/components/requestBodies/FeedbackQuestion' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/feedback-questions/{id}': - get: - operationId: v1_tournaments_feedback-questions_read - description: Retrieve a question for adjudicator feedback - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/FeedbackQuestion' - tags: - - v1 - - questions - post: - operationId: v1_tournaments_feedback-questions_update - description: Modify a question for adjuicator feedback - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/FeedbackQuestion' - tags: - - v1 - - questions - requestBody: - $ref: '#/components/requestBodies/FeedbackQuestion' - delete: - operationId: v1_tournaments_feedback-questions_delete - description: Delete an adjudicator feedback question including answers - responses: - '204': - description: '' - tags: - - v1 - - questions - patch: - operationId: v1_tournaments_feedback-questions_partial_update - description: Update a feedback question - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/FeedbackQuestion' - tags: - - v1 - - questions - requestBody: - $ref: '#/components/requestBodies/FeedbackQuestion' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/feedback/{id}': - get: - operationId: v1_tournaments_feedback_read - description: Retrieve submitted feedback - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Feedback' - tags: - - v1 - - feedback - post: - operationId: v1_tournaments_feedback_update - description: >- - Modify feedback. Only the confirmed and ignored fields can be updated; - all other fields are ignored. - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Feedback' - tags: - - v1 - - feedback - requestBody: - $ref: '#/components/requestBodies/Feedback' - delete: - operationId: v1_tournaments_feedback_delete - description: Delete feedback - responses: - '204': - description: '' - tags: - - v1 - - feedback - patch: - operationId: v1_tournaments_feedback_partial_update - description: Update feedback - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Feedback' - tags: - - v1 - - feedback - requestBody: - $ref: '#/components/requestBodies/Feedback' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/institutions': - get: - operationId: v1_tournaments_institutions_list - description: >- - List all institutions with an affiliated participant in the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: region - in: query - description: Name of the region to include. - required: false - schema: - type: string - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TournamentInstitution' - tags: - - v1 - - institutions - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/motions': - get: - operationId: v1_tournaments_motions_list - description: List motions of a tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Motion' - tags: - - v1 - - motions - post: - operationId: v1_tournaments_motions_create - description: Create a motion - responses: - '201': - description: '' - tags: - - v1 - - motions - requestBody: - $ref: '#/components/requestBodies/Motion' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/motions/{id}': - get: - operationId: v1_tournaments_motions_read - description: Retrieve a motion - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Motion' - tags: - - v1 - - motions - post: - operationId: v1_tournaments_motions_update - description: Modify a motion - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Motion' - tags: - - v1 - - motions - requestBody: - $ref: '#/components/requestBodies/Motion' - delete: - operationId: v1_tournaments_motions_delete - description: Delete a motion - responses: - '204': - description: '' - tags: - - v1 - - motions - patch: - operationId: v1_tournaments_motions_partial_update - description: Update a motion - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Motion' - tags: - - v1 - - motions - requestBody: - $ref: '#/components/requestBodies/Motion' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/preferences': - get: - operationId: v1_tournaments_preferences_list - description: List tournament preferences - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Preference' - tags: - - v1 - - preferences - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/preferences/bulk': - post: - operationId: v1_tournaments_preferences_bulk - summary: Update multiple preferences at once - description: |- - this is a long method because we ensure everything is valid - before actually persisting the changes - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Preference' - tags: - - v1 - - preferences - requestBody: - $ref: '#/components/requestBodies/Preference' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/preferences/{id}': - get: - operationId: v1_tournaments_preferences_read - description: Retrieve specific tournament preference - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Preference' - tags: - - v1 - - preferences - put: - operationId: v1_tournaments_preferences_update - description: Update a tournament preference - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Preference' - tags: - - v1 - - preferences - requestBody: - $ref: '#/components/requestBodies/Preference' - patch: - operationId: v1_tournaments_preferences_partial_update - description: Partially update tournament preference - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Preference' - tags: - - v1 - - preferences - requestBody: - $ref: '#/components/requestBodies/Preference' - parameters: - - name: id - in: path - description: >- - A unique integer value identifying this tournament preference. - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds': - get: - operationId: v1_tournaments_rounds_list - description: List rounds of the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Round' - tags: - - v1 - - rounds - post: - operationId: v1_tournaments_rounds_create - description: Create round in tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Round' - tags: - - v1 - - rounds - requestBody: - $ref: '#/components/requestBodies/Round' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}': - get: - operationId: v1_tournaments_rounds_read - description: Retrieve a round - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Round' - tags: - - v1 - - rounds - post: - operationId: v1_tournaments_rounds_update - description: >- - Modify a round. Motions are modified by sequence, so their text fields - can be modified. To move motions, placeholder sequences are needed - through Motion endpoints, as well as for deleting motions. Motions can - be appended through this method. An empty field has no effect. - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Round' - tags: - - v1 - - rounds - requestBody: - $ref: '#/components/requestBodies/Round' - delete: - operationId: v1_tournaments_rounds_delete - description: Delete a round - responses: - '204': - description: '' - tags: - - v1 - - rounds - patch: - operationId: v1_tournaments_rounds_partial_update - description: Update a round - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Round' - tags: - - v1 - - rounds - requestBody: - $ref: '#/components/requestBodies/Round' - parameters: - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}/pairings': - get: - operationId: v1_tournaments_rounds_pairings_list - description: List debates in the round - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Debate' - tags: - - v1 - - debates - post: - operationId: v1_tournaments_rounds_pairings_create - description: Create a debate between teams with adjudicators in the round - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Debate' - tags: - - v1 - - debates - requestBody: - $ref: '#/components/requestBodies/Debate' - delete: - operationId : v1_tournaments_rounds_pairings_delete_all - description: Delete all pairings of the round - responses: - '204': - description: 'All pairings have been deleted' - tags: - - v1 - - debates - parameters: - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}/pairings/{debate_pk}': - get: - operationId: v1_tournaments_rounds_pairings_read - description: Retrieve a debate in the round - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Debate' - tags: - - v1 - - debates - post: - operationId: v1_tournaments_rounds_pairings_update - description: >- - Modify a pairing in the round. Teams can be modified, but cannot be - moved between sides. This method thus cannot be used when confirming - sides. An empty field has no effect. - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Debate' - tags: - - v1 - - debates - requestBody: - $ref: '#/components/requestBodies/Debate' - delete: - operationId: v1_tournaments_rounds_pairings_delete - description: Delete a matchup including panel - responses: - '204': - description: '' - tags: - - v1 - - debates - patch: - operationId: v1_tournaments_rounds_pairings_partial_update - description: Update a pairing - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Debate' - tags: - - v1 - - debates - requestBody: - $ref: '#/components/requestBodies/Debate' - parameters: - - name: debate_pk - in: path - required: true - schema: - type: integer - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}/pairings/{debate_pk}/ballots': - get: - operationId: v1_tournaments_rounds_pairings_ballots_list - description: Retrieve ballots for a debate - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/DebateResult' - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: confirmed - in: query - description: Whether to include unconfirmed ballots - required: false - schema: - type: boolean - tags: - - v1 - - results - post: - operationId: v1_tournaments_rounds_pairings_ballots_create - description: Create a result for a debate - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/DebateResult' - tags: - - v1 - - results - requestBody: - $ref: '#/components/requestBodies/DebateResult' - parameters: - - name: debate_pk - in: path - required: true - schema: - type: integer - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}/pairings/{debate_pk}/ballots/{id}': - get: - operationId: v1_tournaments_rounds_pairings_ballots_read - description: Retrieve a ballot of a debate - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/DebateResult' - tags: - - v1 - - results - post: - operationId: v1_tournaments_rounds_pairings_ballots_update - description: Modify a debate ballot. Cannot re-edit scores. - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/DebateResult' - tags: - - v1 - - results - requestBody: - $ref: '#/components/requestBodies/DebateResult' - delete: - operationId: v1_tournaments_rounds_pairings_ballots_delete - description: Delete a ballot of the debate - responses: - '204': - description: '' - tags: - - v1 - - results - patch: - operationId: v1_tournaments_rounds_pairings_ballots_partial_update - description: Update a ballot - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/DebateResult' - tags: - - v1 - - results - requestBody: - $ref: '#/components/requestBodies/DebateResult' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: debate_pk - in: path - required: true - schema: - type: integer - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/rounds/{round_seq}/availabilities': - get: - operationId: v1_tournaments_rounds_availabilities_list - description: List all participants marked as available for the round - parameters: - - name: adjudicators - in: query - description: Whether to list available adjudicators - required: false - schema: - type: boolean - - name: teams - in: query - description: Whether to list available teams - required: false - schema: - type: boolean - - name: venues - in: query - description: Whether to list available rooms - required: false - schema: - type: boolean - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - tags: - - v1 - - availabilities - post: - operationId: v1_tournaments_rounds_availabilities_post - description: Marks participants as unavailable for a round - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - tags: - - v1 - - availabilities - requestBody: - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - put: - operationId: v1_tournaments_rounds_availabilities_put - description: Marks participants as available for a round - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - tags: - - v1 - - availabilities - requestBody: - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - patch: - operationId: v1_tournaments_rounds_availabilities_patch - description: Toggles participants' availabilities for a round - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - tags: - - v1 - - availabilities - requestBody: - content: - application/json: - schema: - type: array - items: - title: Participant - type: string - format: uri - delete: - operationId: v1_tournaments_rounds_availabilities_delete - description: >- - Marks all participants of specified type as unavailable for the round - parameters: - - name: adjudicators - in: query - description: Whether to unmark available adjudicators - required: false - schema: - type: boolean - - name: teams - in: query - description: Whether to unmark available teams - required: false - schema: - type: boolean - - name: venues - in: query - description: Whether to unmark available rooms - required: false - schema: - type: boolean - responses: - '204': - description: '' - tags: - - v1 - - availabilities - parameters: - - name: round_seq - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speaker-categories': - get: - operationId: v1_tournaments_speaker-categories_list - description: List all speaker categories of the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/SpeakerCategory' - tags: - - v1 - - speaker-categories - post: - operationId: v1_tournaments_speaker-categories_create - description: Create a speaker category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerCategory' - tags: - - v1 - - speaker-categories - requestBody: - $ref: '#/components/requestBodies/SpeakerCategory' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speaker-categories/{id}': - get: - operationId: v1_tournaments_speaker-categories_read - description: Retrieve a speaker category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerCategory' - tags: - - v1 - - speaker-categories - post: - operationId: v1_tournaments_speaker-categories_update - description: Modify a speaker category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerCategory' - tags: - - v1 - - speaker-categories - requestBody: - $ref: '#/components/requestBodies/SpeakerCategory' - delete: - operationId: v1_tournaments_speaker-categories_delete - description: Delete a speaker category with eligibilities - responses: - '204': - description: '' - tags: - - v1 - - speaker-categories - patch: - operationId: v1_tournaments_speaker-categories_partial_update - description: Update a speaker category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerCategory' - tags: - - v1 - - speaker-categories - requestBody: - $ref: '#/components/requestBodies/SpeakerCategory' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speaker-categories/{id}/eligibility': - get: - operationId: v1_tournaments_speaker-categories_eligibility_read - description: List speakers included in the category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerEligibility' - tags: - - v1 - - speaker-categories - - eligibility - put: - operationId: v1_tournaments_speaker-categories_eligibility_update - description: Set eligible speakers of the category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerEligibility' - tags: - - v1 - - speaker-categories - - eligibility - requestBody: - $ref: '#/components/requestBodies/SpeakerEligibility' - patch: - operationId: v1_tournaments_speaker-categories_eligibility_partial_update - description: Add speakers to the category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerEligibility' - tags: - - v1 - - speaker-categories - - eligibility - requestBody: - $ref: '#/components/requestBodies/SpeakerEligibility' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speakers': - get: - operationId: v1_tournaments_speakers_list - description: List speakers of tournament teams - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Speaker' - tags: - - v1 - - speakers - post: - operationId: v1_tournaments_speakers_create - description: Create new speaker to team - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Speaker' - tags: - - v1 - - speakers - requestBody: - $ref: '#/components/requestBodies/Speaker' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speakers/standings': - get: - operationId: v1_tournaments_speakers_standings_list - description: Get speaker standings in the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: category - in: query - description: Restrict the standings to a speaker category - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerStandings' - tags: - - v1 - - speakers - - standings - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speakers/{id}': - get: - operationId: v1_tournaments_speakers_read - description: Retrieve a speaker - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Speaker' - tags: - - v1 - - speakers - post: - operationId: v1_tournaments_speakers_update - description: Modify a speaker - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Speaker' - tags: - - v1 - - speakers - requestBody: - $ref: '#/components/requestBodies/Speaker' - delete: - operationId: v1_tournaments_speakers_delete - description: Delete a speaker - responses: - '204': - description: '' - tags: - - v1 - - speakers - patch: - operationId: v1_tournaments_speakers_partial_update - description: Update a speaker - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Speaker' - tags: - - v1 - - speakers - requestBody: - $ref: '#/components/requestBodies/Speaker' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/speakers/{id}/checkin': - get: - operationId: v1_tournaments_speakers_checkin_list - description: Check if speaker is currently checked in - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - speakers - - checkins - post: - operationId: v1_tournaments_speakers_checkin_create - description: Create an check-in identifier for the speaker - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - tags: - - v1 - - speakers - - checkins - put: - operationId: v1_tournaments_speakers_checkin_update - description: Check in the speaker - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - speakers - - checkins - patch: - operationId: v1_tournaments_speakers_checkin_partial_update - description: Toggle the speaker''s check-in status - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - speakers - - checkins - delete: - operationId: v1_tournaments_speakers_checkin_delete - description: Check out the speaker - responses: - '204': - description: '' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - speakers - - checkins - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/teams': - get: - operationId: v1_tournaments_teams_list - description: List teams in the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Team' - tags: - - v1 - - teams - post: - operationId: v1_tournaments_teams_create - description: Create team in the tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Team' - tags: - - v1 - - teams - requestBody: - $ref: '#/components/requestBodies/Team' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/teams/standings': - get: - operationId: v1_tournaments_teams_standings_list - description: Get the team standings - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - - name: category - in: query - description: Restrict the standings to a break category - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/TeamStandings' - tags: - - v1 - - teams - - standings - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/teams/{id}': - get: - operationId: v1_tournaments_teams_read - description: Retrieve a team - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Team' - tags: - - v1 - - teams - post: - operationId: v1_tournaments_teams_update - description: >- - Modify a team. The speakers field can only create speakers, not - modify or remove them. Leave empty if none are being added. - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Team' - tags: - - v1 - - teams - requestBody: - $ref: '#/components/requestBodies/Team' - delete: - operationId: v1_tournaments_teams_delete - description: Delete a team - responses: - '204': - description: '' - tags: - - v1 - - teams - patch: - operationId: v1_tournaments_team_partial_update - description: Update a team - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Team' - tags: - - v1 - - teams - requestBody: - $ref: '#/components/requestBodies/Team' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/venue-categories': - get: - operationId: v1_tournaments_venue-categories_list - description: List venue categories - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/VenueCategory' - tags: - - v1 - - venue-categories - post: - operationId: v1_tournaments_venue-categories_create - description: Create a venue category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/VenueCategory' - tags: - - v1 - - venue-categories - requestBody: - $ref: '#/components/requestBodies/VenueCategory' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/venue-categories/{id}': - get: - operationId: v1_tournaments_venue-categories_read - description: Retrieve venue category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/VenueCategory' - tags: - - v1 - - venue-categories - post: - operationId: v1_tournaments_venue-categories_update - description: Modify a venue category - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/VenueCategory' - tags: - - v1 - - venue-categories - requestBody: - $ref: '#/components/requestBodies/VenueCategory' - delete: - operationId: v1_tournaments_venue-categories_delete - description: Delete a venue category - responses: - '204': - description: '' - tags: - - v1 - - venue-categories - patch: - operationId: v1_tournaments_venue-categories_partial_update - description: Update a venue category - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/VenueCategory' - tags: - - v1 - - venue-categories - requestBody: - $ref: '#/components/requestBodies/VenueCategory' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/venues': - get: - operationId: v1_tournaments_venues_list - description: List venues added for the tournament - parameters: - - name: limit - in: query - description: Number of results to return per page. - required: false - schema: - type: integer - - name: offset - in: query - description: The initial index from which to return the results. - required: false - schema: - type: integer - responses: - '200': - description: '' - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Venue' - tags: - - v1 - - venues - post: - operationId: v1_tournaments_venues_create - description: Add a venue to the tournament - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Venue' - tags: - - v1 - - venues - requestBody: - $ref: '#/components/requestBodies/Venue' - parameters: - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/venues/{id}': - get: - operationId: v1_tournaments_venues_read - description: Retrieve a venue - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Venue' - tags: - - v1 - - venues - post: - operationId: v1_tournaments_venues_update - description: Modify a venue - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Venue' - tags: - - v1 - - venues - requestBody: - $ref: '#/components/requestBodies/Venue' - delete: - operationId: v1_tournaments_venues_delete - description: Delete a venue - responses: - '204': - description: '' - tags: - - v1 - - venues - patch: - operationId: v1_tournaments_venues_partial_update - description: Update a venue - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Venue' - tags: - - v1 - - venues - requestBody: - $ref: '#/components/requestBodies/Venue' - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string - '/v1/tournaments/{tournament_slug}/venues/{id}/checkin': - get: - operationId: v1_tournaments_venues_checkin_list - description: Check if venue is currently checked in - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - venues - - checkins - post: - operationId: v1_tournaments_venues_checkin_create - description: Create an check-in identifier for the venue - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - tags: - - v1 - - venues - - checkins - put: - operationId: v1_tournaments_venues_checkin_update - description: Check in the venue - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - venues - - checkins - patch: - operationId: v1_tournaments_venues_checkin_partial_update - description: Toggle the venue''s check-in status - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/Checkin' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - venues - - checkins - delete: - operationId: v1_tournaments_venues_checkin_delete - description: Check out the venue - responses: - '204': - description: '' - '404': - description: 'No identifier. Use POST to generate.' - tags: - - v1 - - venues - - checkins - parameters: - - name: id - in: path - required: true - schema: - type: integer - - name: tournament_slug - in: path - required: true - schema: - type: string -servers: - - url: 'https://{server}/api' - variables: - server: - default: localhost -components: - requestBodies: - TournamentInstitution: - content: - application/json: - schema: - $ref: '#/components/schemas/TournamentInstitution' - required: true - Venue: - content: - application/json: - schema: - $ref: '#/components/schemas/Venue' - required: true - FeedbackQuestion: - content: - application/json: - schema: - $ref: '#/components/schemas/FeedbackQuestion' - required: true - Preference: - content: - application/json: - schema: - $ref: '#/components/schemas/Preference' - required: true - Motion: - content: - application/json: - schema: - $ref: '#/components/schemas/Motion' - required: true - SpeakerEligibility: - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerEligibility' - required: true - Feedback: - content: - application/json: - schema: - $ref: '#/components/schemas/Feedback' - required: true - VenueCategory: - content: - application/json: - schema: - $ref: '#/components/schemas/VenueCategory' - required: true - Institution: - content: - application/json: - schema: - $ref: '#/components/schemas/Institution' - required: true - Tournament: - content: - application/json: - schema: - $ref: '#/components/schemas/Tournament' - required: true - Adjudicator: - content: - application/json: - schema: - $ref: '#/components/schemas/Adjudicator' - required: true - BreakCategory: - content: - application/json: - schema: - $ref: '#/components/schemas/BreakCategory' - required: true - BreakEligibility: - content: - application/json: - schema: - $ref: '#/components/schemas/BreakEligibility' - required: true - Round: - content: - application/json: - schema: - $ref: '#/components/schemas/Round' - required: true - Debate: - content: - application/json: - schema: - $ref: '#/components/schemas/Debate' - required: true - SpeakerCategory: - content: - application/json: - schema: - $ref: '#/components/schemas/SpeakerCategory' - required: true - Speaker: - content: - application/json: - schema: - $ref: '#/components/schemas/Speaker' - required: true - Team: - content: - application/json: - schema: - $ref: '#/components/schemas/Team' - required: true - DebateResult: - content: - application/json: - schema: - $ref: '#/components/schemas/DebateResult' - required: true - PartialBreakingTeam: - content: - application/json: - schema: - required: - - team - type: object - properties: - team: - title: Team - type: string - format: uri - remark: - title: Remark - type: string - nullable: true - enum: - - C - - I - - D - - d - - t - - w - - null - securitySchemes: - Token: - type: apiKey - name: Authorization - in: header - schemas: - VenueConstraint: - required: - - category - - priority - type: object - properties: - category: - title: Category - description: The venue category to constrain to - type: string - format: uri - priority: - title: Priority - description: How important is the constraint - type: integer - Institution: - required: - - name - - code - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - name: - title: Name - description: >- - The institution's full name, e.g., "University of Cambridge", - "Victoria University of Wellington" - type: string - maxLength: 100 - minLength: 1 - code: - title: Code - description: >- - What the institution is typically called for short, e.g., - "Cambridge", "Vic Wellington" - type: string - maxLength: 20 - minLength: 1 - region: - title: Region - type: string - maxLength: 100 - nullable: true - venue_constraints: - type: array - items: - $ref: '#/components/schemas/VenueConstraint' - TournamentInstitution: - required: - - name - - code - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - name: - title: Name - description: >- - The institution's full name, e.g., "University of Cambridge", - "Victoria University of Wellington" - type: string - maxLength: 100 - minLength: 1 - code: - title: Code - description: >- - What the institution is typically called for short, e.g., - "Cambridge", "Vic Wellington" - type: string - maxLength: 20 - minLength: 1 - region: - title: Region - type: string - maxLength: 100 - nullable: true - teams: - title: Teams - type: array - items: - type: string - format: uri - adjudicators: - title: Adjudicators - type: array - items: - type: string - format: uri - venue_constraints: - type: array - items: - $ref: '#/components/schemas/VenueConstraint' - Tournament: - required: - - name - - slug - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - current_rounds: - type: array - items: - type: string - format: uri - readOnly: true - uniqueItems: true - _links: - title: links - type: object - readOnly: true - properties: - rounds: - title: Rounds - type: string - format: uri - readOnly: true - break_categories: - title: Break categories - type: string - format: uri - readOnly: true - speaker_categories: - title: Speaker categories - type: string - format: uri - readOnly: true - institutions: - title: Institutions - type: string - format: uri - readOnly: true - teams: - title: Teams - type: string - format: uri - readOnly: true - adjudicators: - title: Adjudicators - type: string - format: uri - readOnly: true - speakers: - title: Speakers - type: string - format: uri - readOnly: true - venues: - title: Venues - type: string - format: uri - readOnly: true - venue_categories: - title: Venue categories - type: string - format: uri - readOnly: true - motions: - title: Motions - type: string - format: uri - readOnly: true - feedback: - title: Feedback - type: string - format: uri - readOnly: true - feedback_questions: - title: Feedback questions - type: string - format: uri - readOnly: true - preferences: - title: Preferences - type: string - format: uri - readOnly: true - name: - title: Name - description: >- - The full name, e.g. "Australasian Intervarsity Debating - Championships 2016" - type: string - maxLength: 100 - minLength: 1 - short_name: - title: Short name - description: 'The name used in the menu, e.g. "Australs 2016"' - type: string - maxLength: 25 - seq: - title: Sequence number - description: >- - A number that determines the relative order in which tournaments - are displayed on the homepage. - type: integer - maximum: 2147483647 - minimum: -2147483648 - nullable: true - slug: - title: Slug - description: >- - The sub-URL of the tournament, cannot have spaces, e.g. - "australs2016" - type: string - format: slug - pattern: '^[-a-zA-Z0-9_]+$' - maxLength: 50 - minLength: 1 - active: - title: Active - type: boolean - Preference: - required: - - value - type: object - properties: - section: - title: Section - type: string - readOnly: true - minLength: 1 - name: - title: Name - type: string - readOnly: true - minLength: 1 - identifier: - title: Identifier - type: string - readOnly: true - default: - title: Default - type: string - readOnly: true - value: - title: Value - type: string - verbose_name: - title: Verbose name - type: string - readOnly: true - help_text: - title: Help text - type: string - readOnly: true - additional_data: - title: Additional data - type: string - readOnly: true - field: - title: Field - type: string - readOnly: true - Checkin: - type: object - properties: - object: - title: object - type: string - format: uri - readOnly: true - barcode: - title: barcode - type: integer - pattern: '^[1-9]\d*$' - readOnly: true - nullable: true - checked: - title: Checked - type: boolean - readOnly: true - timestamp: - title: Timestamp - type: string - format: date-time - readOnly: true - nullable: true - Adjudicator: - required: - - name - - institution - - institution_conflicts - - team_conflicts - - adjudicator_conflicts - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - name: - title: Name - type: string - maxLength: 70 - gender: - title: Gender - description: >- - Gender is displayed in the adjudicator allocation interface, and - nowhere else - enum: - - M - - F - - O - email: - title: E-mail address - type: string - format: email - maxLength: 254 - nullable: true - phone: - title: Phone - type: string - maxLength: 40 - anonymous: - title: Anonymous - description: >- - Anonymous persons will have their name and team redacted on public - tab releases - type: boolean - pronoun: - title: Pronoun - description: >- - If printing ballots using Tabbycat, there is the option to - pre-print pronouns - type: string - maxLength: 10 - institution: - title: Institution - type: string - format: uri - nullable: true - base_score: - title: Base score - type: number - format: float - breaking: - title: Breaking - type: boolean - trainee: - title: Always trainee - description: >- - If checked, this adjudicator will never be auto-allocated a voting - position, regardless of their score - type: boolean - independent: - title: Independent - type: boolean - adj_core: - title: Adjudication core - type: boolean - institution_conflicts: - title: Institution conflicts - type: array - items: - type: string - format: uri - team_conflicts: - title: Team conflicts - type: array - items: - type: string - format: uri - adjudicator_conflicts: - title: Adjudicator conflicts - type: array - items: - type: string - format: uri - url_key: - title: URL Key - description: >- - Set null to automatically generate; set as empty string to have no URL key. - type: string - format: slug - pattern: '^[-a-zA-Z0-9_]+$' - maxLength: 24 - nullable: true - _links: - title: links - type: object - readOnly: true - properties: - checkin: - title: Checkins - type: string - format: uri - readOnly: true - venue_constraints: - type: array - items: - $ref: '#/components/schemas/VenueConstraint' - BreakCategory: - required: - - name - - slug - - seq - - break_size - - is_general - - priority - type: object - properties: - id: - title: ID - type: integer - readOnly: true - name: - title: Name - description: 'Name to be displayed, e.g., "ESL"' - type: string - maxLength: 50 - slug: - title: Slug - description: 'Slug for URLs, e.g., "esl"' - type: string - format: slug - seq: - title: Sequence number - description: The order in which the categories are displayed - type: integer - break_size: - title: Break size - description: Number of breaking teams in this category - type: integer - minimum: 2 - is_general: - title: Is general - description: >- - True if most teams eligible for this category, e.g. Open, False - otherwise - type: boolean - priority: - title: Priority - description: >- - If a team breaks in multiple categories, higher priority numbers - take precedence; teams can break into multiple categories if and - only if they all have the same priority - type: integer - limit: - title: Limit - description: >- - At most this many teams will be shown on the public tab for this - category, or use 0 for no limit - type: integer - rule: - title: Rule - description: >- - Rule for how the break is calculated (most tournaments should use - "Standard") - type: string - enum: - - standard - - aida-1996 - - aida-2016-easters - - aida-2016-australs - - aida-2019-australs-open - url: - title: Url - type: string - format: uri - readOnly: true - _links: - title: links - type: object - readOnly: true - properties: - eligibility: - title: Eligibility - type: string - format: uri - readOnly: true - SpeakerCategory: - required: - - name - - slug - - seq - type: object - properties: - id: - title: ID - type: integer - readOnly: true - name: - title: Name - description: 'Name to be displayed, e.g., "ESL"' - type: string - maxLength: 50 - slug: - title: Slug - description: 'Slug for URLs, e.g., "esl"' - type: string - format: slug - seq: - title: Sequence number - description: The order in which the categories are displayed - type: integer - limit: - title: Limit - description: >- - At most this many speakers will be shown on the public tab for this - category, or use 0 for no limit - type: integer - public: - title: Public - description: >- - If checked, this category will be included in the speaker category - tabs shown to the public - type: boolean - url: - title: Url - type: string - format: uri - readOnly: true - _links: - title: links - type: object - readOnly: true - properties: - eligibility: - title: Eligibility - type: string - format: uri - readOnly: true - BreakEligibility: - required: - - team_set - type: object - properties: - slug: - title: Slug - description: 'Slug for URLs, e.g., "esl"' - type: string - format: slug - readOnly: true - team_set: - title: Team set - type: array - items: - type: string - format: uri - SpeakerEligibility: - required: - - speaker_set - type: object - properties: - slug: - title: Slug - description: 'Slug for URLs, e.g., "esl"' - type: string - format: slug - readOnly: true - speaker_set: - title: Speaker set - type: array - items: - type: string - format: uri - Feedback: - required: - - adjudicator - - source - - debate - - score - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - adjudicator: - title: Adjudicator - type: string - format: uri - source: - title: Source - description: The adjudicator or team submitting this feedback - type: string - format: uri - debate: - title: Debate - description: The debate for which this feedback originates - type: string - format: uri - answers: - title: Answers - type: array - items: - type: object - required: - - question - - answer - properties: - question: - title: question - type: string - format: uri - answer: - title: Answer - type: string - timestamp: - type: string - format: date-time - title: Timestamp - version: - title: Version - type: integer - readOnly: true - submitter_type: - title: Submitter type - type: string - enum: - - T - - P - readOnly: true - confirmed: - title: Confirmed - type: boolean - confirm_timestamp: - title: Confirm timestamp - type: string - format: date-time - readOnly: true - nullable: true - ip_address: - title: IP address - type: string - format: ipv4 - readOnly: true - score: - title: Score - type: number - format: float - ignored: - title: Ignored - description: Whether the feedback should affect the judge's score - type: boolean - participant_submitter: - title: Participant submitter - description: The submitting participant, adjudicator or speaker - type: string - format: uri - nullable: true - readOnly: true - private_url: - title: Private URL - description: >- - Whether the feedback was submitted through the participant's - private URL. - type: boolean - readOnly: true - submitter: - title: Submitter - type: integer - nullable: true - readOnly: true - confirmer: - title: Confirmer - type: integer - nullable: true - readOnly: true - FeedbackQuestion: - required: - - choices - - seq - - text - - name - - reference - - from_adj - - from_team - - answer_type - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - choices: - title: Choices - type: array - items: - type: string - seq: - title: Sequence number - description: The order in which questions are displayed - type: integer - text: - title: Text - description: >- - The question displayed to participants, e.g., "Did you agree with - the decision?" - type: string - maxLength: 255 - name: - title: Name - description: >- - 'A short name for the question, e.g., "Agree with decision"' - type: string - maxLength: 30 - reference: - title: Reference - description: 'Code-compatible reference, e.g., "agree_with_decision"' - type: string - maxLength: 50 - from_adj: - title: From adjudicator - description: >- - Adjudicators should be asked this question (about other - adjudicators) - type: boolean - from_team: - title: From team - description: Teams should be asked this question - type: boolean - answer_type: - title: Answer type - type: string - enum: - - bc - - bs - - i - - is - - f - - t - - tl - - ss - - ms - required: - title: Required - description: Whether participants are required to fill out this field - type: boolean - min_value: - title: Minimum value - description: >- - Minimum allowed value for numeric fields (ignored for text or - boolean fields) - nullable: true - max_value: - title: Maximum value - description: >- - Maximum allowed value for numeric fields (ignored for text or - boolean fields) - nullable: true - Motion: - required: - - rounds - - text - - reference - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - rounds: - title: Rounds - type: array - items: - type: object - required: - - round - properties: - round: - title: Round - type: string - format: uri - seq: - title: Sequence number - description: The order in which motions are displayed - type: integer - text: - title: Text - description: >- - 'The full motion e.g., "This House would straighten all bananas"' - type: string - maxLength: 500 - reference: - title: Reference - description: 'Shortcode for the motion, e.g., "Bananas"' - maxLength: 100 - info_slide: - title: Info slide - description: The information slide for this topic; if it has one - Round: - required: - - break_category - - motions - - seq - - name - - abbreviation - - draw_type - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - break_category: - title: Break category - type: string - format: uri - nullable: true - motions: - title: Motions - type: array - items: - type: object - required: - - text - - reference - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - seq: - title: Sequence number - description: The order in which motions are displayed - type: integer - text: - title: Text - description: >- - The full motion e.g., "This House would straighten all - bananas" - type: string - maxLength: 500 - reference: - title: Reference - description: 'Shortcode for the motion, e.g., "Bananas"' - maxLength: 100 - info_slide: - title: Info slide - description: >- - The information slide for this topic; if it has one - _links: - title: links - readOnly: true - type: object - properties: - pairing: - title: Pairing - type: string - format: uri - readOnly: true - seq: - title: Sequence number - description: >- - A number that determines the order of the round, should count - consecutively from 1 for the first round - type: integer - completed: - title: completed - description: >- - True if the round is over, which normally means all results have - been entered and confirmed - type: boolean - name: - title: Name - description: e.g. "Round 1" - type: string - maxLength: 40 - abbreviation: - title: Abbreviation - description: e.g. "R1" - type: string - maxLength: 10 - stage: - title: stage - description: 'Preliminary = inrounds, elimination = outrounds' - type: string - enum: - - P - - E - draw_type: - title: Draw type - description: Which draw method to use - type: string - enum: - - R - - M - - D - - P - - E - draw_status: - title: Draw status - description: The status of this round's draw - type: string - enum: - - 'N' - - D - - C - - R - feedback_weight: - title: Feedback weight - description: >- - The extent to which each adjudicator's overall score depends on - feedback vs their base score. At 0, it is 100% drawn from their - base score, at 1 it is 100% drawn from feedback. - type: number - format: float - silent: - title: Silent - description: >- - If marked silent, information about this round (such as its - results) will not be shown publicly. - type: boolean - motions_released: - title: Motions released - description: >- - Whether motions will appear on the public website, assuming that - feature is turned on - type: boolean - starts_at: - title: Starts at - type: string - format: time - weight: - title: Weight - description: >- - A factor for the points received in the round. For example, if 2, - all points are doubled. - type: integer - Debate: - required: - - teams - type: object - properties: - url: - title: Url - readOnly: true - type: string - format: uri - id: - title: ID - readOnly: true - type: integer - venue: - title: Venue - type: string - format: uri - nullable: true - teams: - title: Teams - type: array - items: - required: - - team - - side - type: object - properties: - team: - title: Team - type: string - format: uri - side: - title: Side - type: string - enum: - - aff - - neg - - og - - oo - - cg - - co - adjudicators: - title: Adjudicators - type: object - nullable: true - required: - - chair - - panellists - - trainees - properties: - chair: - title: Chair - type: string - format: uri - nullable: true - panellists: - title: Panellists - type: array - items: - type: string - format: uri - trainees: - title: Trainees - type: array - items: - type: string - format: uri - bracket: - title: Bracket - type: number - room_rank: - title: room rank - type: integer - importance: - title: importance - type: integer - result_status: - title: result status - type: string - enum: - - N - - P - - D - - C - sides_confirmed: - title: Sides confirmed - description: >- - If unchecked, the sides assigned to teams in this debate are just - placeholders. - type: boolean - Speaker: - required: - - name - - categories - type: object - properties: - id: - title: ID - type: integer - readOnly: true - url: - title: Url - type: string - format: uri - readOnly: true - name: - title: Name - type: string - maxLength: 70 - gender: - title: Gender - description: >- - Gender is displayed in the adjudicator allocation interface, and - nowhere else - enum: - - M - - F - - O - email: - title: E-mail address - type: string - format: email - maxLength: 254 - nullable: true - phone: - title: Phone - type: string - maxLength: 40 - anonymous: - title: Anonymous - description: >- - Anonymous persons will have their name and team redacted on public - tab releases - type: boolean - pronoun: - title: Pronoun - description: >- - If printing ballots using Tabbycat, there is the option to pre-print - pronouns - type: string - maxLength: 10 - categories: - title: Categories - type: array - items: - type: string - format: uri - url_key: - title: URL Key - description: >- - Set null to automatically generate; set as empty string to have no URL key. - type: string - format: slug - pattern: '^[-a-zA-Z0-9_]+$' - maxLength: 24 - nullable: true - _links: - title: links - type: object - readOnly: true - properties: - checkin: - title: Checkins - type: string - format: uri - readOnly: true - Team: - type: object - required: - - institution - - break_categories - - institution_conflicts - properties: - url: - title: Url - type: string - format: uri - readOnly: true - id: - title: ID - type: integer - readOnly: true - reference: - title: Full name/suffix - description: >- - Do not include institution name (see "uses institutional prefix" - below) - type: string - maxLength: 150 - short_reference: - title: Short name/suffix - description: >- - The decoded name shown in the draw, not including institution name - (see "uses institutional prefix" below) - type: string - maxLength: 35 - code_name: - title: Code name - description: >- - Name used to obscure institutional identity on public-facing pages - type: string - maxLength: 150 - emoji: - title: Emoji - type: string - maxLength: 2 - nullable: true - short_name: - title: Short name - description: >- - The decoded name shown in the draw, including institution name. This - is autogenerated. - type: string - readOnly: true - long_name: - title: Long name - description: >- - The full name of the team, including institution name. This is - autogenerated. - type: string - readOnly: true - institution: - title: Institution - type: string - format: uri - nullable: true - speakers: - title: Speakers - type: array - items: - $ref: '#/components/schemas/Speaker' - use_institution_prefix: - title: Uses institutional prefix - description: >- - If ticked, a team called "1" from Victoria will be shown as - "Victoria 1" - type: boolean - break_categories: - title: Break categories - type: array - items: - type: string - format: uri - institution_conflicts: - title: Institution conflicts - type: array - items: - type: string - format: uri - venue_constraints: - type: array - items: - $ref: '#/components/schemas/VenueConstraint' - SpeakerStandings: - type: array - items: - type: object - properties: - rank: - title: Rank - type: integer - tied: - title: Tied - type: boolean - metrics: - title: Metrics - type: array - items: - type: object - properties: - metric: - title: Metric - type: string - enum: - - total - - average - - trimmed_mean - - team_points - - stdev - - count - - replies_sum - - replies_avg - - replies_stddev - - replies_count - value: - title: Value - type: number - speaker: - title: Speaker - type: string - format: uri - TeamStandings: - type: array - items: - type: object - properties: - rank: - title: Rank - type: integer - tied: - title: Tied - type: boolean - metrics: - title: Metrics - type: array - items: - type: object - properties: - metric: - title: Metric - type: string - enum: - - points - - wins - - speaks_sum - - speaks_avg - - speaks_ind_avg - - speaks_stddev - - draw_strength - - draw_strength_speaks - - margin_sum - - margin_avg - - npullups - - num_adjs - - firsts - - seconds - - wbw - value: - title: Value - type: number - team: - title: Team - type: string - format: uri - Venue: - required: - - categories - - name - - priority - type: object - properties: - url: - title: Url - type: string - format: uri - readOnly: true - id: - title: ID - type: integer - readOnly: true - categories: - title: Categories - type: array - items: - type: string - format: uri - display_name: - title: Display name - type: string - readOnly: true - _links: - title: links - type: object - readOnly: true - properties: - checkin: - title: Checkins - type: string - format: uri - readOnly: true - name: - title: Name - type: string - format: uri - maxLength: 40 - priority: - title: Priority - description: >- - Venues with a higher priority number will be preferred when - allocating venues to debates - type: integer - external_url: - title: External URL - type: string - format: uri - nullable: true - VenueCategory: - required: - - venues - - name - type: object - properties: - url: - title: Url - type: string - format: uri - readOnly: true - id: - title: ID - type: integer - readOnly: true - venues: - title: Venues - type: array - items: - type: string - format: uri - name: - title: Name - description: >- - Name of category, e.g., "Purple", "Step-free access", "Close to tab - room". This name is shown when the category is prefixed or suffixed - to a venue name in the draw, e.g., "Purple – G05". - type: string - maxLength: 80 - description: - title: Description - description: >- - Description, as the predicate of a sentence, e.g. "has step-free - access", "is close to the briefing hall". This description follows - "This venue" when shown in tooltips, e.g., "This venue is close to - the briefing hall.". - type: string - maxLength: 200 - display_in_venue_name: - title: Display in venue name - description: 'Prefix: "Purple – G05", Suffix: "G05 – Purple"' - type: string - enum: - - '-' - - P - - S - display_in_public_tooltip: - title: Display in public tooltip - description: >- - Displays the description in the tooltip for the venue on public - pages. The description, if not blank, will always show on admin - pages. - type: boolean - DebateResult: - required: - - result - type: object - properties: - url: - title: Url - type: string - format: uri - readOnly: true - id: - title: ID - type: integer - readOnly: true - result: - title: Result - type: object - properties: - sheets: - title: Sheets - type: array - items: - type: object - required: - - teams - properties: - adjudicator: - title: Adjudicator - type: string - format: uri - nullable: true - teams: - title: Teams - type: array - items: - type: object - required: - - side - - team - properties: - side: - title: Side - type: string - enum: - - aff - - neg - - og - - oo - - cg - - co - points: - title: Points - type: integer - win: - title: Win - type: boolean - score: - title: Score - type: number - team: - title: Team - type: string - format: uri - speeches: - title: Speeches - description: Speeches must be given in speaker order. - type: array - items: - type: object - required: - - score - - speaker - properties: - ghost: - title: Ghost - description: >- - If checked, this score does not count towards - the speaker tab. This is typically checked - for speeches where someone spoke twice to - make up for an absent teammate (sometimes - known as iron-person or iron-man speeches). - type: boolean - score: - title: Score - type: number - speaker: - title: Speaker - type: string - format: uri - motion: - title: Motion - type: string - format: uri - nullable: true - vetos: - title: Vetos - type: array - items: - type: object - properties: - team: - title: Team - type: string - format: uri - motion: - title: Motion - type: string - format: uri - nullable: true - timestamp: - title: Timestamp - type: string - format: date-time - readOnly: true - version: - title: Version - type: integer - readOnly: true - submitter_type: - title: Submitter type - type: string - enum: - - T - - P - readOnly: true - confirmed: - title: Confirmed - type: boolean - confirm_timestamp: - title: Confirm timestamp - type: string - format: date-time - readOnly: true - nullable: true - ip_address: - title: IP address - type: string - format: ipv4 - readOnly: true - discarded: - title: Discarded - type: boolean - participant_submitter: - title: Participant submitter - description: The submitting adjudicator (if by private URL) - type: string - format: uri - nullable: true - readOnly: true - private_url: - title: Private URL - description: >- - Whether the ballot was submitted through the participant's - private URL. - type: boolean - readOnly: true - single_adj: - title: Single adjudicator - description: >- - If the ballot only has the scores of one adjudicator, - rather than from all. - type: boolean - readOnly: true - submitter: - title: Submitter - type: integer - nullable: true - readOnly: true - confirmer: - title: Confirmer - type: integer - nullable: true - readOnly: true - BreakingTeam: - required: - - team - - rank - type: object - properties: - team: - title: Team - type: string - format: uri - rank: - title: Rank - type: integer - break_rank: - title: Break rank - type: integer - remark: - title: Remark - type: string - nullable: true - enum: - - C - - I - - D - - d - - t - - w - - null diff --git a/docs/conf.py b/docs/conf.py index c8a877f5331..cbad7ad5b09 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -58,9 +58,9 @@ # built documents. # # The short X.Y version. -version = '2.7' +version = '2.8' # The full version, including alpha/beta/rc tags. -release = '2.7.8' +release = '2.8.0' rst_epilog = """ .. |vrelease| replace:: v{release} diff --git a/docs/features/api.rst b/docs/features/api.rst index 5d7a1d8835a..6001cddf2a8 100644 --- a/docs/features/api.rst +++ b/docs/features/api.rst @@ -27,4 +27,4 @@ Unauthenticated (public) endpoints are restricted in that they cannot perform mo Schema ====== -The schema is available on `Swagger `_. The OpenAPI schema is also available in the ``docs`` directory of Tabbycat. +The API schema documentation can be accessed on Tabbycat instances version 2.8+ through the ``/api/schema/redoc/`` path. The schemas for previous versions can be found in the ``docs`` directory of the Tabbycat repository at version-tagged points. diff --git a/docs/features/data-entry.rst b/docs/features/data-entry.rst index 696aee3c240..4feb1691174 100644 --- a/docs/features/data-entry.rst +++ b/docs/features/data-entry.rst @@ -45,7 +45,7 @@ Duplicate/Swing Speeches .. image:: images/iron-speakers.png -When entering the ballots there is a toggle label *'Iron' speeches*. When set to "yes" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel). +When entering the ballots there is a toggle label *'Iron' speeches*. When set to "yes" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that the lesser 'iron-person' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel). Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate. diff --git a/docs/features/data-importers.rst b/docs/features/data-importers.rst index a8d21600b8d..a07737f2b35 100644 --- a/docs/features/data-importers.rst +++ b/docs/features/data-importers.rst @@ -6,7 +6,7 @@ Tournament Data Importers This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary. -The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_. +The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_. .. todo:: This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section. diff --git a/docs/features/draw-generation.rst b/docs/features/draw-generation.rst index fdcf66269ea..de78cd8f3ed 100644 --- a/docs/features/draw-generation.rst +++ b/docs/features/draw-generation.rst @@ -51,9 +51,10 @@ Options are set in the **Configuration** page as described in :ref:`starting a t - Random * - :ref:`Conflict avoidance method ` - - How to avoid history/institution conflicts + - How to avoid conflicts - - Off - One-up-one-down + - Minimum cost matching * - :ref:`Pullup restriction ` - Whether and how to restrict pullups @@ -70,7 +71,7 @@ When generating a power-paired draw, Tabbycat goes through five steps: 1. First, it divides teams into "raw brackets", grouping them by the number of wins. 2. Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called "pulling up" teams. 3. Third, within each bracket, it pairs teams into debates using the pairing method. -4. Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts. +4. Fourth, if enabled, it adjusts pairings to avoid conflicts. 5. Finally, it assigns sides to teams in each debate. For each of these steps except the first, Tabbycat allows you to choose between @@ -164,11 +165,11 @@ Teams are always paired within their brackets, after resolving odd brackets. Conflict avoidance method ------------------------- -A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how. +A **conflict** is when two teams could face each other but should not, possibly for a variety of reasons. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how. -You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented. +You can turn this off by using **Off**. Other than this, there are currently two conflict avoidance methods implemented. -**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict: +**One-up-one-down** is the method specified in the Australs constitution. This method only considers conflicts for teams that have seen each other before, or are from the same institution. Broadly speaking, if there is a debate with a conflict: * It tries to swap teams with the debate "one up" from it in the draw. * If that doesn't work, it tries to swap teams with the debate "one down" from it in the draw. @@ -181,6 +182,8 @@ It's a bit more complicated than that, for two reasons: * History conflicts are prioritised over (*i.e.*, "worse than") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa. * Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could "one down" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps. +**Minimum cost matching** is a more flexible method designed for APDA and other formats. This method creates a graph between teams in a bracket, weighing all possible pairings for conflicts, and finding the minimum weight matching with the `Blossom algorithm `_. In addition to history and institution conflicts, it can try to minimize the number of times teams have seen a pulled-up team, and stabilize side balance. + .. _draw-pullup-restriction: Pullup restriction diff --git a/docs/features/images/add-venue-category.png b/docs/features/images/add-venue-category.png index e96cbf3db9b..0b65d1a8204 100644 Binary files a/docs/features/images/add-venue-category.png and b/docs/features/images/add-venue-category.png differ diff --git a/docs/features/images/add-venue-constraint.png b/docs/features/images/add-venue-constraint.png index dd6f9e5a87a..bd4534f3ef9 100644 Binary files a/docs/features/images/add-venue-constraint.png and b/docs/features/images/add-venue-constraint.png differ diff --git a/docs/features/images/adding-feedback.png b/docs/features/images/adding-feedback.png index 19b24c29660..4deca7b82dc 100644 Binary files a/docs/features/images/adding-feedback.png and b/docs/features/images/adding-feedback.png differ diff --git a/docs/features/images/ballot-entry.png b/docs/features/images/ballot-entry.png index 2e8e5636bcb..989636784c0 100644 Binary files a/docs/features/images/ballot-entry.png and b/docs/features/images/ballot-entry.png differ diff --git a/docs/features/images/check-ins-overview.png b/docs/features/images/check-ins-overview.png index 2dd2e2da965..60d5c5e12ad 100644 Binary files a/docs/features/images/check-ins-overview.png and b/docs/features/images/check-ins-overview.png differ diff --git a/docs/features/images/checkbox.png b/docs/features/images/checkbox.png index 7b85f609c9b..58fb6955484 100644 Binary files a/docs/features/images/checkbox.png and b/docs/features/images/checkbox.png differ diff --git a/docs/features/images/checkin_statuses.png b/docs/features/images/checkin_statuses.png index c184ad8d64f..4a4a77863da 100644 Binary files a/docs/features/images/checkin_statuses.png and b/docs/features/images/checkin_statuses.png differ diff --git a/docs/features/images/float.png b/docs/features/images/float.png index 58946867f7c..5ff4cf48818 100644 Binary files a/docs/features/images/float.png and b/docs/features/images/float.png differ diff --git a/docs/features/images/integer-scale.png b/docs/features/images/integer-scale.png index 3651776c06c..5ffc75b5850 100644 Binary files a/docs/features/images/integer-scale.png and b/docs/features/images/integer-scale.png differ diff --git a/docs/features/images/integer-textbox.png b/docs/features/images/integer-textbox.png index 7e9c6c7bfd5..814ae9047cb 100644 Binary files a/docs/features/images/integer-textbox.png and b/docs/features/images/integer-textbox.png differ diff --git a/docs/features/images/iron-speakers.png b/docs/features/images/iron-speakers.png index 737f00d0b76..776f6cf85ed 100644 Binary files a/docs/features/images/iron-speakers.png and b/docs/features/images/iron-speakers.png differ diff --git a/docs/features/images/longtext.png b/docs/features/images/longtext.png index 0fa592fd8fc..05862e637ca 100644 Binary files a/docs/features/images/longtext.png and b/docs/features/images/longtext.png differ diff --git a/docs/features/images/select-multiple.png b/docs/features/images/select-multiple.png index afa70a36d62..72ead19eba8 100644 Binary files a/docs/features/images/select-multiple.png and b/docs/features/images/select-multiple.png differ diff --git a/docs/features/images/select-one.png b/docs/features/images/select-one.png index 46ed155b572..36c932735e9 100644 Binary files a/docs/features/images/select-one.png and b/docs/features/images/select-one.png differ diff --git a/docs/features/images/text.png b/docs/features/images/text.png index 81aaa69c9cf..55dd49406dd 100644 Binary files a/docs/features/images/text.png and b/docs/features/images/text.png differ diff --git a/docs/features/images/yesnodropdown.png b/docs/features/images/yesnodropdown.png index 93470d3f0a3..a4960086219 100644 Binary files a/docs/features/images/yesnodropdown.png and b/docs/features/images/yesnodropdown.png differ diff --git a/docs/guide/comparisons.rst b/docs/guide/comparisons.rst index 412a617a7ac..8694e13d482 100644 --- a/docs/guide/comparisons.rst +++ b/docs/guide/comparisons.rst @@ -96,7 +96,7 @@ Other considerations **Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface. -**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament. +**Cost**. Tabbycat and Tabbie2 are both free to use. Larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament. **Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level. @@ -150,7 +150,7 @@ Other considerations **Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2. -**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament. +**Cost**. Tournaman and Tabbycat are both free to use. Larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament. **Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed. diff --git a/docs/guide/tournament-logistics.rst b/docs/guide/tournament-logistics.rst index de6e50dedae..d9c5b06f31a 100644 --- a/docs/guide/tournament-logistics.rst +++ b/docs/guide/tournament-logistics.rst @@ -35,7 +35,7 @@ It might sound obvious but it will pay to have a very thorough conversation abou - Ensure that plans are made for food to be brought to the tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams. - What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible. - What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors. -- Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab. +- Will the tournament make a donation to whoever maintains the tabbing software you are using? Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab. - You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense. - Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start). - How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular, also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays. @@ -330,7 +330,7 @@ If at all feasible, you want to train the volunteers acting as runners and/or da - Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots in which they will occur. - Run through how the seating/table/box arrangement works and the types of roles at different positions. - Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else. - - Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered. + - Run through the different edge cases and things to check during entry. For example, iron-person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc. (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered. Training the adjudication core ------------------------------ diff --git a/docs/guide/upgrading.rst b/docs/guide/upgrading.rst index 4908565808f..0330b6175c0 100644 --- a/docs/guide/upgrading.rst +++ b/docs/guide/upgrading.rst @@ -8,7 +8,7 @@ Generally only want to upgrade copies of tab sites that are used on an ongoing b .. note:: - Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade. + Going from any version of Tabbycat 1 to any version of Tabbycat 2 has a more complicated upgrade process. Upgrading a Local Copy ====================== @@ -27,3 +27,12 @@ Once you have done this you can login to your Heroku Dashboard, go to your app, .. image:: images/deploying.png Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes. + +Upgrading from version 1 to version 2 +===================================== + +Tabbycat instances running 1.x cannot be upgraded to 2.0 using a simple migration. This is because all the migrations were regenerated in order to reduce how many there are. If you try to migrate an existing 1.x instance, it will fail with an ``InconsistentMigrationHistory`` error. + +To upgrade, checkout the ``bea58288980eaf74e213d742b58e039167ed4379`` commit (which is before the migration deletion), delete the migration history using ``TRUNCATE django_migrations;`` in PostgreSQL, and then fake all the migrations using ``dj migrate --fake``. Afterwards, you can checkout ``master`` and run the newer migrations with ``dj migrate``. + +Needless to say, this should only be done with extreme caution and copious backups. diff --git a/docs/install/heroku.rst b/docs/install/heroku.rst index 1a424dfe530..f43c1a5c60b 100644 --- a/docs/install/heroku.rst +++ b/docs/install/heroku.rst @@ -74,7 +74,7 @@ Account Setup `Heroku `_ is a platform as a service on which Tabbycat can be installed to be available on the internet. Naturally, this requires you to have a Heroku account. Head to the site and sign-up for one. -.. note:: During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard. +.. note:: During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *may charge* your card. If you have a paid Heroku Eco plan Tabbycat will use your Eco hours and you will not be charged, otherwise Tabbycat will use 2 Basic dynos which cost roughly $0.25/day or $7/month each. 1. Install dependencies ----------------------- @@ -101,12 +101,16 @@ a. Navigate on the command-line your Tabbycat directory. If you have not changed cd tabbycat -b. Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``. +b. Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname-suffix.herokuapp.com``. + + .. warning:: On June 14th, 2023, Heroku started appending 12-character random suffixes to subdomains to prevent domain takeover when an app is renamed or deleted. Tabs created before this point will keep their ``yourappname.herokuapp.com`` domain, but new tabs will have the random suffix after ``yourappname``. :: python deploy_heroku.py yourappname + The script uses the default dyno type for your Heroku account. If you have a paid Heroku Eco plan, the script will use Eco dynos. If you do not have an Eco plan, it will use Basic dynos which are billed based on usage. You can use the ``--web-dynos`` option to use a specific type, such as ``--web-dynos 1:basic`` if you have an Eco plan but wish to use Basic dynos. + This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details. The script may work away on its own for 10-30 minutes before it asks you some questions to answer. When finished, it will open the app in your browser. It should look something like this: @@ -122,9 +126,11 @@ TLDR commands .. warning:: We provide a "short version" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below. +The script uses the default dyno type for your Heroku account. If you have a paid Heroku Eco plan, the script will use Eco dynos. If you do not have an Eco plan, it will use Basic dynos which are billed based on usage. You can use the ``--web-dynos`` option with the last command to use a specific type, such as ``--web-dynos 1:basic`` if you have an Eco plan but wish to use Basic dynos. + .. parsed-literal:: - git clone https\:\/\/github.com/TabbycatDebate/tabbycat.git + git clone https://github.com/TabbycatDebate/tabbycat.git cd tabbycat git checkout master python deploy_heroku.py yourappname @@ -139,20 +145,20 @@ If you have a large tournament, you may want to customize your Heroku app. This Upgrading your database size ---------------------------- -The free plan of `Heroku Postgres `_, "Hobby Dev", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea: +The Mini plan of `Heroku Postgres `_, should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea: - Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows. - The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows. - A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows -If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, "Hobby Basic", should certainly be more than sufficient. +If you need more than 10,000 rows, you'll need to upgrade to a larger Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, "Basic", should certainly be more than sufficient. -If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity. +If you're not sure, you can always start at Mini—just be prepared to `upgrade `_ during the tournament if you run close to capacity. Custom domain names ------------------- -Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center: +Your Heroku app will be available at ``yourappname-suffix.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center: - `Custom Domain Names for Apps `_ - `Heroku SSL `_ @@ -203,7 +209,8 @@ You'll need both Git and the Heroku CLI, and you'll need to be logged in to the 2. If you haven't already, clone our Git repository and check out the master branch:: - $ git clone https\:\/\/github.com/TabbycatDebate/tabbycat.git + $ git clone https://github.com/TabbycatDebate/tabbycat.git + $ cd tabbycat $ git checkout master If you've already cloned our Git repository, don't forget to pull so you're up to date:: @@ -214,17 +221,17 @@ You'll need both Git and the Heroku CLI, and you'll need to be logged in to the 3. Check to see if you have a Git remote already in place:: $ git remote -v - heroku https://git.heroku.com/mytournament2018.git (fetch) - heroku https://git.heroku.com/mytournament2018.git (push) + heroku https://git.heroku.com/yourappname.git (fetch) + heroku https://git.heroku.com/yourappname.git (push) - If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``. + If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``yourappname-suffix.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/yourappname.git``. If a Git remote URL for your Tabbycat site *doesn't* appear, then create one:: - $ heroku git:remote --app mytournament2018 --remote heroku - set git remote heroku to https://git.heroku.com/mytournament2018.git + $ heroku git:remote --app yourappname --remote heroku + set git remote heroku to https://git.heroku.com/yourappname.git - .. tip:: If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments. + .. tip:: If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``yourappname``), so that you can manage multiple tournaments. 4. Push to Heroku:: diff --git a/docs/install/images/tabbycat-bare-linux.png b/docs/install/images/tabbycat-bare-linux.png deleted file mode 100644 index 9a0e7a5e984..00000000000 Binary files a/docs/install/images/tabbycat-bare-linux.png and /dev/null differ diff --git a/docs/install/images/tabbycat-bare-osx.png b/docs/install/images/tabbycat-bare-osx.png deleted file mode 100644 index d7020122a7d..00000000000 Binary files a/docs/install/images/tabbycat-bare-osx.png and /dev/null differ diff --git a/docs/install/images/tabbycat-bare-windows.png b/docs/install/images/tabbycat-bare-windows.png deleted file mode 100644 index dd976055d7c..00000000000 Binary files a/docs/install/images/tabbycat-bare-windows.png and /dev/null differ diff --git a/docs/install/images/tabbycat-bare.png b/docs/install/images/tabbycat-bare.png index 711e518c341..e4b39a3c4c0 100644 Binary files a/docs/install/images/tabbycat-bare.png and b/docs/install/images/tabbycat-bare.png differ diff --git a/docs/install/linux.rst b/docs/install/linux.rst index 196f434bebc..f7a523ddda1 100644 --- a/docs/install/linux.rst +++ b/docs/install/linux.rst @@ -33,7 +33,7 @@ Short version cd tabbycat git checkout master sudo -u postgres createuser myusername --createdb --pwprompt # skip if not first time - createdb mydatabasename + createdb -O myusername mydatabasename # -O designates the owner of the database Then create **settings/local.py** as described :ref:`below `, then:: @@ -126,7 +126,8 @@ If you have Git, life will be easier if you clone `our GitHub repository`_: .. parsed-literal:: - $ git clone https\:\/\/github.com/TabbycatDebate/tabbycat.git + $ git clone https://github.com/TabbycatDebate/tabbycat.git + $ cd tabbycat $ git checkout master (You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.) @@ -162,9 +163,9 @@ a. Create a new user account with a password, replacing ``myusername`` with what .. tip:: If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*. -b. Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running:: +b. Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running, and replace ``myusername`` with the username you used in the previous command:: - $ createdb mydatabasename + $ createdb -O myusername mydatabasename .. _install-linux-tabbycat: @@ -227,7 +228,7 @@ f. Start Tabbycat! g. Open your browser and go to http://127.0.0.1:8000/ or http://localhost:8000/. It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat. - .. image:: images/tabbycat-bare-linux.png + .. image:: images/tabbycat-bare.png :alt: Bare Tabbycat installation Naturally, your database is currently empty, so proceed to :ref:`importing initial data `. diff --git a/docs/install/osx.rst b/docs/install/osx.rst index 172b503bdae..466e828b7ae 100644 --- a/docs/install/osx.rst +++ b/docs/install/osx.rst @@ -154,7 +154,7 @@ f. Start Tabbycat! g. Open your browser and go to http://127.0.0.1:8000/ or http://localhost:8000/. It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat. - .. image:: images/tabbycat-bare-osx.png + .. image:: images/tabbycat-bare.png :alt: Bare Tabbycat installation Naturally, your database is currently empty, so proceed to :ref:`importing initial data `. diff --git a/docs/install/windows.rst b/docs/install/windows.rst index e621fb61b4a..aac98374866 100644 --- a/docs/install/windows.rst +++ b/docs/install/windows.rst @@ -212,7 +212,7 @@ g. Start Tabbycat! g. Open your browser and go to http://127.0.0.1:8000/ or http://localhost:8000/. It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat. - .. image:: images/tabbycat-bare-windows.png + .. image:: images/tabbycat-bare.png Naturally, your database is currently empty, so proceed to :ref:`importing initial data `. diff --git a/docs/locale/bg/LC_MESSAGES/about/authors.po b/docs/locale/bg/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..c0426b9ca95 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/authors.po @@ -0,0 +1,72 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: bg_BG\n" + +#: ../../../AUTHORS.rst:3 +msgid "Authors & Acknowledgements" +msgstr "" + +#: ../../../AUTHORS.rst:6 +msgid "Authors" +msgstr "" + +#: ../../../AUTHORS.rst:8 +msgid "Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:" +msgstr "" + +#: ../../../AUTHORS.rst:10 +msgid "Philip Belesky (`pb-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:11 +msgid "Chuan-Zheng Lee (`cz-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:13 +msgid "Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:16 +msgid "Contributors" +msgstr "" + +#: ../../../AUTHORS.rst:18 +msgid "Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:19 +msgid "Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category." +msgstr "" + +#: ../../../AUTHORS.rst:20 +msgid "Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced." +msgstr "" + +#: ../../../AUTHORS.rst:21 +msgid "Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the \"Tournament Logistics\" section of our documentation." +msgstr "" + +#: ../../../AUTHORS.rst:24 +msgid "Sponsors" +msgstr "" + +#: ../../../AUTHORS.rst:26 +msgid "Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/about/changelog.po b/docs/locale/bg/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..8b41da64259 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/changelog.po @@ -0,0 +1,1922 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: bg_BG\n" + +#: ../../../CHANGELOG.rst:3 +msgid "Change Log" +msgstr "" + +#: ../../../CHANGELOG.rst:6 +msgid "2.4.0 (Maine)" +msgstr "" + +#: ../../../CHANGELOG.rst:7 +msgid "*Release date: ?*" +msgstr "" + +#: ../../../CHANGELOG.rst:9 +msgid "Added support for Russian, and shortened the language selector" +msgstr "" + +#: ../../../CHANGELOG.rst:10 +msgid "Renamed 'test score' to 'base score'" +msgstr "" + +#: ../../../CHANGELOG.rst:11 +msgid "Divisions-specific features have been deprecated and removed" +msgstr "" + +#: ../../../CHANGELOG.rst:12 +msgid "Moved the 'Edit Database' menu item to the dropdown with the logo in the admin navigation" +msgstr "" + +#: ../../../CHANGELOG.rst:13 +msgid "Pull-ups can now be restricted to teams with the lowest draw strength (by speaker or team points) of their bracket" +msgstr "" + +#: ../../../CHANGELOG.rst:14 +msgid "The number of pull-ups and draw strength by speaker score are now available as team standing metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:15 +msgid "Added the new emoji that come along with Unicode 11 — thanks to Viran Weerasekera for this addition!" +msgstr "" + +#: ../../../CHANGELOG.rst:16 +msgid "The 'Show adjudicator institutions' preference now covers a wider range of cases; meaning that if it is unchecked then all adjudicator's institutional affiliations should be hidden from the public" +msgstr "" + +#: ../../../CHANGELOG.rst:20 +msgid "2.3.2" +msgstr "" + +#: ../../../CHANGELOG.rst:21 +msgid "*Release date: 19 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:23 +msgid "Fixed issue where teams would appear to be unavailable in break rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:24 ../../../CHANGELOG.rst:294 +#: ../../../CHANGELOG.rst:302 ../../../CHANGELOG.rst:314 +msgid "Other minor fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:28 +msgid "2.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:29 +msgid "*Release date: 6 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:31 +msgid "Fixed issue where the institutions list would count teams/adjudicators outside of the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:32 +msgid "Fixed issue where a rejected ballot form would crash rather than providing an error message" +msgstr "" + +#: ../../../CHANGELOG.rst:33 +msgid "Fixed issue where the javascript bundle would not build on a local windows install" +msgstr "" + +#: ../../../CHANGELOG.rst:34 +msgid "Fixed issue where the adjudicator record pages would show an unreleased motion if that round's draw was released" +msgstr "" + +#: ../../../CHANGELOG.rst:38 +msgid "2.3.0 (LaPerm)" +msgstr "" + +#: ../../../CHANGELOG.rst:39 +msgid "*Release date: 27 September 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:42 +msgid "Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation" +msgstr "" + +#: ../../../CHANGELOG.rst:43 +msgid "Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates" +msgstr "" + +#: ../../../CHANGELOG.rst:45 +msgid "By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:47 +msgid "These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core" +msgstr "" + +#: ../../../CHANGELOG.rst:48 +msgid "A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information" +msgstr "" + +#: ../../../CHANGELOG.rst:49 +msgid "The unused panel is now able to sort adjudicators by name, score, or drag order" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Average scores for all adjudicators, and a voting majority, are now shown next to the panel" +msgstr "" + +#: ../../../CHANGELOG.rst:51 +msgid "Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values" +msgstr "" + +#: ../../../CHANGELOG.rst:52 +msgid "The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)" +msgstr "" + +#: ../../../CHANGELOG.rst:55 +msgid "Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "A range of improvements to the email notifications contributed by Étienne Beaulé:" +msgstr "" + +#: ../../../CHANGELOG.rst:57 +msgid "Ballot receipt emails now provide more information about team scores/points" +msgstr "" + +#: ../../../CHANGELOG.rst:58 +msgid "Emails are now in a rich-text format" +msgstr "" + +#: ../../../CHANGELOG.rst:59 +msgid "Custom emails may be sent out to select participants through the web-interface" +msgstr "" + +#: ../../../CHANGELOG.rst:60 +msgid "Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "Teams can be sent emails with their draw details" +msgstr "" + +#: ../../../CHANGELOG.rst:62 +msgid "Emails can be tracked to determine if sent or read (SendGrid-specific)" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Expanded the use of private URLs (Encore Étienne Beaulé):" +msgstr "" + +#: ../../../CHANGELOG.rst:64 +msgid "QR codes are now included in addition to the URL when printing private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:66 +msgid "Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Reworked how conflicts are determined to support double-past institutional conflicts:" +msgstr "" + +#: ../../../CHANGELOG.rst:68 +msgid "Added a \"team-institution conflict\" model" +msgstr "" + +#: ../../../CHANGELOG.rst:69 +msgid "Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter" +msgstr "" + +#: ../../../CHANGELOG.rst:71 +msgid "An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties" +msgstr "" + +#: ../../../CHANGELOG.rst:72 +msgid "When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions" +msgstr "" + +#: ../../../CHANGELOG.rst:73 +msgid "Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:74 +msgid "Info-slides can now be split into paragraphs" +msgstr "" + +#: ../../../CHANGELOG.rst:75 +msgid "Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:76 +msgid "Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:77 +msgid "Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``" +msgstr "" + +#: ../../../CHANGELOG.rst:78 +msgid "Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally." +msgstr "" + +#: ../../../CHANGELOG.rst:82 +msgid "2.2.10" +msgstr "" + +#: ../../../CHANGELOG.rst:83 +msgid "*Release date: 10 February 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:85 +msgid "Fixed the display of feedback quantities on the Feedback Overview Page" +msgstr "" + +#: ../../../CHANGELOG.rst:86 +msgid "Fixed issue where 'ignored' feedback would hide the result from the feedback graph but not affect an adjudicator's current score. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:90 +msgid "2.2.9" +msgstr "" + +#: ../../../CHANGELOG.rst:91 +msgid "*Release date: 24 January 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:93 +msgid "Fixed an issue that could cause errors for tournaments when using an atypical number of rounds and break sizes. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:94 +msgid "Fixed an issue where the display of adjudicator's record links would display their name twice" +msgstr "" + +#: ../../../CHANGELOG.rst:98 +msgid "2.2.8" +msgstr "" + +#: ../../../CHANGELOG.rst:99 +msgid "*Release date: 14 December 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:101 +msgid "Fix issue where the check-in buttons were always disabled on admin and assistant pages" +msgstr "" + +#: ../../../CHANGELOG.rst:102 +msgid "Other minor fixes. Thanks to Étienne for these and for the check-in button fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:106 +msgid "2.2.7" +msgstr "" + +#: ../../../CHANGELOG.rst:107 +msgid "*Release date: 16 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:109 +msgid "Lock redis-py version to 2.10.6, as workaround for `compatibility issue between django-redis and redis-py `_" +msgstr "" + +#: ../../../CHANGELOG.rst:110 +msgid "Fix login link on page shown after a user logs out" +msgstr "" + +#: ../../../CHANGELOG.rst:114 +msgid "2.2.6" +msgstr "" + +#: ../../../CHANGELOG.rst:115 +msgid "*Release date: 14 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:117 +msgid "Fix issue where check-ins could not be revoked" +msgstr "" + +#: ../../../CHANGELOG.rst:118 +msgid "Fix issue where the standings overview 'dashboard' included scores from elimination rounds. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:119 +msgid "Fix issue where the Average Individual Speaker Score metric would fail to calculate in some circumstances. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:120 +msgid "Fix issue where draw emails would crash if venues were unspecified. Thanks, again, to Étienne for this fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:124 +msgid "2.2.5" +msgstr "" + +#: ../../../CHANGELOG.rst:125 +msgid "*Release date: 21 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:127 +msgid "Remove the buttons from the public check-ins page (as these do nothing unless the user is logged in)" +msgstr "" + +#: ../../../CHANGELOG.rst:128 +msgid "Hopefully fixed error that could cause Team- and Adjudicator- Institutional conflicts to not show properly on Allocation pages" +msgstr "" + +#: ../../../CHANGELOG.rst:129 +msgid "Thanks to Étienne for pull requests fixing rare bugs in the user creation form and break generation when rounds are not present" +msgstr "" + +#: ../../../CHANGELOG.rst:133 +msgid "2.2.4" +msgstr "" + +#: ../../../CHANGELOG.rst:134 +msgid "*Release date: 9 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:136 +msgid "Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:140 +msgid "2.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:141 +msgid "*Release date: 28 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:143 +msgid "*Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:144 +msgid "Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:145 +msgid "Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:149 +msgid "2.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:150 +msgid "*Release date: 22 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:152 +msgid "*Actually* fix the issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:156 +msgid "2.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:157 +msgid "*Release date: 21 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:159 +msgid "Fix issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:163 +msgid "2.2.0 (Khao Manee)" +msgstr "" + +#: ../../../CHANGELOG.rst:164 +msgid "*Release date: 20 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Implemented a new server architecture on Heroku along with other optimisation that should significantly improve the performance of sites receiving lots of traffic. Note that if you are upgrading an existing Heroku instance this requires a few tweaks before you deploy the update:" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Add the `https://github.com/heroku/heroku-buildpack-nginx.git` build pack under the Settings area of the Heroku Dashboard and positioning it first" +msgstr "" + +#: ../../../CHANGELOG.rst:168 +msgid "If your Heroku Stack is not \"heroku-16\" (noted under that same Settings page) it will need to be set as such using the Heroku CLI and the ``heroku stack:set heroku-16 --app APP_NAME`` command" +msgstr "" + +#: ../../../CHANGELOG.rst:169 +msgid "Added a page to the documentation that details how to scale a Tabbycat site that is receiving large amounts of traffic; and another page that documents how to upgrade a Tabbycat site to a new version" +msgstr "" + +#: ../../../CHANGELOG.rst:170 +msgid "Added support for Japanese and Portuguese. Let us know if you'd like to help contribute translations for either language (or a new one)!" +msgstr "" + +#: ../../../CHANGELOG.rst:171 +msgid "The results-entry page now updates its data live, giving you a more up to date look at data entry progress and reducing the cases of old data leading people to enter new ballots when they meant to confirm them" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "A huge thanks to Étienne Beaulé for contributing a number of major new features and bug fixes. Notably:" +msgstr "" + +#: ../../../CHANGELOG.rst:173 +msgid "Added a means to mark feedback as 'ignored' so that it still is recorded as having been submitted, but does not affect the targeted-adjudicator's feedback score" +msgstr "" + +#: ../../../CHANGELOG.rst:174 +msgid "Added email notification to adjudicators on round release" +msgstr "" + +#: ../../../CHANGELOG.rst:175 +msgid "Implemented participant self-check-in through the use of their private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:176 +msgid "Gave all participants to a tournament a private URL key rather than being by team, and added a landing page for the participants using this key" +msgstr "" + +#: ../../../CHANGELOG.rst:177 +msgid "Implemented templated email notifications with ballot submission and round advance with the messages in a new settings panel. Private URL emails are now also customizable" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "Added the \"average individual speaker score\" metric which averages the scores of all substantive speeches by the team within preliminary rounds. The old \"average speaker score\" metric has been renamed to to \"average total speaker score\"" +msgstr "" + +#: ../../../CHANGELOG.rst:179 +msgid "Reworked the ballots status graph to be an area chart" +msgstr "" + +#: ../../../CHANGELOG.rst:180 +msgid "Added the ability to hide motions on printed ballots (even if they have been entered). Thanks to Github user 0zlw for the feature request!" +msgstr "" + +#: ../../../CHANGELOG.rst:181 +msgid "Added the ability to unconfirm feedback from any of the views that show it" +msgstr "" + +#: ../../../CHANGELOG.rst:182 +msgid "BP motion statistics now also show average points split by bench and half" +msgstr "" + +#: ../../../CHANGELOG.rst:183 +msgid "Added a warning when users are close to their free-tier database limit on Heroku that makes it clear not to create new tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:184 +msgid "Added ``exportconfig`` and ``importconfig`` management commands to export and import tournament configurations to a JSON file" +msgstr "" + +#: ../../../CHANGELOG.rst:185 +msgid "Upgraded `django-dynamic-preferences `_ to version 1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:187 +msgid "This won't affect most users, but advanced users previously having problems with a stray ``dynamic_preferences_users_userpreferencemodel`` table who are upgrading an existing instance may wish to run the SQL command ``DROP TABLE dynamic_preferences_users_userpreferencemodel;`` to remove this stray table. When this table was present, it caused an inconsistency between migration state and database schema that in turned caused the ``python manage.py flush`` command to fail. More information is available in the `django-dynamic-preferences changelog `_" +msgstr "" + +#: ../../../CHANGELOG.rst:191 +msgid "2.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:192 +msgid "*Release date: 21 August 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:194 +msgid "Added an alert for British Parliamentary format grand-final ballots that explains the workaround needed to nominate a sole winner" +msgstr "" + +#: ../../../CHANGELOG.rst:195 +msgid "Improved display of images shown when sharing Tabbycat links on social media" +msgstr "" + +#: ../../../CHANGELOG.rst:196 +msgid "Optimised the performance of several commonly-loaded pages. Thanks to Étienne Beaulé for the pull request!" +msgstr "" + +#: ../../../CHANGELOG.rst:197 +msgid "Prevented the entry of integer-scale feedback questions without the required min/max attributes" +msgstr "" + +#: ../../../CHANGELOG.rst:198 +msgid "Provided a shortcut link to editing a round's feedback weight" +msgstr "" + +#: ../../../CHANGELOG.rst:199 +msgid "Prevented standings from crashing when only a single standings metric is set" +msgstr "" + +#: ../../../CHANGELOG.rst:203 +msgid "2.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:204 +msgid "*Release date: 14 July 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:206 +msgid "Fixed an error caused when calculating breaks including teams without institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:207 +msgid "Improved display of long motions and info slides" +msgstr "" + +#: ../../../CHANGELOG.rst:208 +msgid "Fixed bug in feedback progress tracking with UADC-style adjudication" +msgstr "" + +#: ../../../CHANGELOG.rst:209 +msgid "Fixed bug where the public checks page would cause large amounts of failing requests" +msgstr "" + +#: ../../../CHANGELOG.rst:210 +msgid "Fixed visual issue with adjudicator lists wrapping poorly on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:211 +msgid "Limited the time it takes to serve requests to match Heroku's in-built limit; this may help improve the performance of sites under heavy load" +msgstr "" + +#: ../../../CHANGELOG.rst:215 +msgid "2.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:216 +msgid "*Release date: 19 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:218 +msgid "The Scan Identifiers page now orders check-ins from top to bottom" +msgstr "" + +#: ../../../CHANGELOG.rst:219 +msgid "The Scan Identifiers now plays different sounds for failed check-ins" +msgstr "" + +#: ../../../CHANGELOG.rst:220 +msgid "The Scan Identifiers now has a toggle for sounds; allowing it to work in browsers like Safari that block auto-playing audio" +msgstr "" + +#: ../../../CHANGELOG.rst:224 +msgid "2.1.0 (Japanese Bobtail)" +msgstr "" + +#: ../../../CHANGELOG.rst:225 +msgid "*Release date: 7 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:227 +msgid "Added an introductory modal for the adjudicator allocation page to help outline how the features and workflow operate" +msgstr "" + +#: ../../../CHANGELOG.rst:228 +msgid "Added an automated method for assigning importances to debates using their bracket or 'liveness'. This should allow smaller tournaments to more easily assign importances and save time for larger tournaments that do so" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "Added the ability to switch between using 'team codes' and standard team names" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "By default team codes are set to match that team's emoji, but team codes are editable and can be imported like standard data" +msgstr "" + +#: ../../../CHANGELOG.rst:231 +msgid "Team codes can be swapped in an out for standard team names at will, with precise control over the contexts in which either is used — i.e. in public-facing pages, in admin-facing pages, in tooltips, *etc.*" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Added a range of 'check-in' functionality" +msgstr "" + +#: ../../../CHANGELOG.rst:233 +msgid "This includes barcode assignment, printing, and scanning. Scanning methods are optimised both for manual entry, entry with barcodes scanners, and for a 'live' scanning view that uses your phone's camera!" +msgstr "" + +#: ../../../CHANGELOG.rst:234 +msgid "This includes new people and venue status pages that show an overview of check-in status and allow for easy manual check-ins; ideal for a roll-calls!. This page can also be made public" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Ballot check-ins have been converted to this new method, and now all printed ballots will contain the barcodes needed to scan them" +msgstr "" + +#: ../../../CHANGELOG.rst:236 +msgid "Venue check-ins have been added alongside the standard 'person' check-ins to allow you to track a room's status at the start of the day or round-by-round" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Added (partial) translations in French, Spanish and Arabic" +msgstr "" + +#: ../../../CHANGELOG.rst:238 +msgid "Users can now use a link in the footer to switch the site's language into French, Spanish, or Arabic. By default Tabbycat should also match your browser's language and so automatically apply those languages if it matches" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Our translations are generously provided by volunteers, but (so far) do not cover all of the interface text within Tabbycat. If you're interested in helping to translate new or existing languages please get in touch!" +msgstr "" + +#: ../../../CHANGELOG.rst:240 +msgid "Thanks to the excellent team at QatarDebate for contributing the Arabic translations, and to Alejandro, Hernando, Julian and Zoe for contributing the Spanish translations." +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Added a new (beta) feature: allocation 'sharding'" +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Sharding allows you to split up the Adjudicator Allocation screen into a defined subset of the draw. This has been designed so that you can have multiple computers doing allocations simultaneously; allowing the adjudication core to split itself and tackle allocations in parallel." +msgstr "" + +#: ../../../CHANGELOG.rst:243 +msgid "Shards can be assigned into defined fractions (i.e. halves or fifths) according to specific criteria (i.e. bracket or priority) and following either a top-to-bottom sorting or a mixed sorting that ensures each bracket has an even proportion of each criteria." +msgstr "" + +#: ../../../CHANGELOG.rst:244 +msgid "Added an option to show a \"Confirm Digits\" option to pre-printed ballots that asks adjudicators to confirm their scores in a manner that may help clarify instances or bad handwriting. This can be enabled in the \"Data Entry\" settings area." +msgstr "" + +#: ../../../CHANGELOG.rst:245 +msgid "Added a 'liveness' calculator for BP that will estimate whether each team has, can, or can't break in each of their categories (as previously existed for 2-team formats)" +msgstr "" + +#: ../../../CHANGELOG.rst:246 +msgid "Added draw pull-up option: pull up from middle" +msgstr "" + +#: ../../../CHANGELOG.rst:247 +msgid "Added new draw option: choose pull-up from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../../CHANGELOG.rst:248 +msgid "Added the ability to have different 'ballots-per-debates' for in/out rounds; accommodating tournaments like Australian Easters that use consensus for preliminary rounds but voting for elimination rounds." +msgstr "" + +#: ../../../CHANGELOG.rst:249 +msgid "Added time zone support to the locations where times are displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:250 +msgid "Administrators can now view pages as if they were Assistants; allowing them to (for example) use the data entry forms that enforce double-checking without needed to create a separate account" +msgstr "" + +#: ../../../CHANGELOG.rst:251 +msgid "Fixed χ² test in motion statistics, and refactored the motion statistics page" +msgstr "" + +#: ../../../CHANGELOG.rst:252 +msgid "Teams, like adjudicators, no longer need to have an institution" +msgstr "" + +#: ../../../CHANGELOG.rst:253 +msgid "Added a page allowing for bulk updates to adjudicator scores" +msgstr "" + +#: ../../../CHANGELOG.rst:254 +msgid "Added break categories to team standings, and new team standings pages for break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Made speaker standings more configurable" +msgstr "" + +#: ../../../CHANGELOG.rst:256 +msgid "Second-order metrics can now be specified" +msgstr "" + +#: ../../../CHANGELOG.rst:257 +msgid "Added trimmed mean (also known as high-low drop)" +msgstr "" + +#: ../../../CHANGELOG.rst:258 +msgid "Added ability to set no limit for number of missed debates" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Standard deviation is now the population standard deviation (was previously sample), and ranks in ascending order if used to rank speakers." +msgstr "" + +#: ../../../CHANGELOG.rst:273 ../../../CHANGELOG.rst:386 +msgid "Quality of life improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:262 +msgid "Added a \"☆\" indicator to more obviously liveness in the adjudicator allocation screen" +msgstr "" + +#: ../../../CHANGELOG.rst:263 +msgid "Added WYSIWYG editor for tournament welcome message, and moved it to tournament configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:264 +msgid "Added \"appellant\" and \"respondent\" to the side name options" +msgstr "" + +#: ../../../CHANGELOG.rst:265 +msgid "Added a two new columns to the feedback overview page: one that displays the current difference between an adjudicator's test score and their current weighted score; another the displays the standard deviation of an adjudicator's feedback scores" +msgstr "" + +#: ../../../CHANGELOG.rst:266 +msgid "Added an 'important feedback' page that highlights feedback significantly above or below an adjudicator's test score" +msgstr "" + +#: ../../../CHANGELOG.rst:267 +msgid "Added a means to bulk-import adjudicator scores (for example from a CSV) to make it easier to work with external feedback processing" +msgstr "" + +#: ../../../CHANGELOG.rst:268 +msgid "Speakers and speaker's emails in the simple importer can now be separated by commas or tabs in addition to new lines" +msgstr "" + +#: ../../../CHANGELOG.rst:269 +msgid "The \"shared\" checkbox in the simple importer is now hidden unless the relevant tournament option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:270 +msgid "Current team standings page now shows silent round results if \"Release all round results to public\" is set" +msgstr "" + +#: ../../../CHANGELOG.rst:271 +msgid "The Consensus vs Voting options for how ballots work has now been split into two settings: one option for preliminary rounds and one option for elimination rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:272 +msgid "Speaker scores now show as integers (without decimals) where the tournament format would not allow decimals" +msgstr "" + +#: ../../../CHANGELOG.rst:273 +msgid "Added a page showing a list of institutions in the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:274 +msgid "On the assistant \"enter results\" page, pressing \"/\" jumps to the \"Find in Table\" box, so data entry can be done entirely from your keyboard" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "Switched to using a Websockets/Channels based infrastructure to better allow for asynchronous updates. This should also ameliorate cases where the Memcachier plugin expired due to inactivity which would then crash a site. Notes for those upgrading:" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "On Heroku: You should remove the Memcachier plugin and instead add 'heroku-redis' to any instances being upgraded" +msgstr "" + +#: ../../../CHANGELOG.rst:277 +msgid "Locally: You should recreate your `local_settings.py` from the `local_settings.example` file" +msgstr "" + +#: ../../../CHANGELOG.rst:280 +msgid "Upgraded to Django 2.0" +msgstr "" + +#: ../../../CHANGELOG.rst:279 +msgid "Converted most raw SQL queries to use the new ``filter`` keyword in annotations" +msgstr "" + +#: ../../../CHANGELOG.rst:283 +msgid "2.0.7" +msgstr "" + +#: ../../../CHANGELOG.rst:284 +msgid "*Release date: 13 April 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:286 +msgid "Fixed an issue preventing draws with pre-allocate sides generating" +msgstr "" + +#: ../../../CHANGELOG.rst:290 +msgid "2.0.6" +msgstr "" + +#: ../../../CHANGELOG.rst:291 +msgid "*Release date: 20 March 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:293 +msgid "Added reminder to add own-institution conflicts in the Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:298 +msgid "2.0.5" +msgstr "" + +#: ../../../CHANGELOG.rst:299 +msgid "*Release date: 7 February 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:301 +msgid "Improved the printing of scoresheets and feedback forms on Chrome." +msgstr "" + +#: ../../../CHANGELOG.rst:306 +msgid "2.0.4" +msgstr "" + +#: ../../../CHANGELOG.rst:307 +msgid "*Release date: 22 January 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:309 +msgid "Add alert for users who try to do voting ballots on BP-configured tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:310 +msgid "Fixed issue where draws of the \"manual\" type would not generate correctly" +msgstr "" + +#: ../../../CHANGELOG.rst:311 +msgid "Fixed issue where a ballot's speaker names dropdown would contain both team's speakers when using formats with side selection" +msgstr "" + +#: ../../../CHANGELOG.rst:312 +msgid "Fixed issue where scoresheets would not show correctly under some configurations" +msgstr "" + +#: ../../../CHANGELOG.rst:313 +msgid "Improved display of really long motions when using the inbuilt motion-showing page" +msgstr "" + +#: ../../../CHANGELOG.rst:318 +msgid "2.0.3" +msgstr "" + +#: ../../../CHANGELOG.rst:319 +msgid "*Release date: 3 December 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:321 +msgid "Fixed issue where the 'prefix team name with institution name' checkbox would not be correctly saved when using the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:322 +msgid "Removed the scroll speed / text size buttons on mobile draw views that were making it difficult to view the table" +msgstr "" + +#: ../../../CHANGELOG.rst:323 +msgid "Improved the display of the motions tab page on mobile devices and fixed an issue where it appeared as if only half the vetoes were made" +msgstr "" + +#: ../../../CHANGELOG.rst:327 +msgid "2.0.2" +msgstr "" + +#: ../../../CHANGELOG.rst:328 +msgid "*Release date: 27 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Fixes and improvements to diversity overview" +msgstr "" + +#: ../../../CHANGELOG.rst:331 +msgid "Fixed average feedback rating from teams, it was previously (incorrectly) showing the average feedback rating from all adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:332 +msgid "Gender splits for average feedback rating now go by target adjudicator; this was previously source adjudicator" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Persons with unknown gender are now shown in counts (but not score/rating averages); a bug had previously caused them to be incorrectly counted as zero" +msgstr "" + +#: ../../../CHANGELOG.rst:334 +msgid "Improved query efficiency of the page" +msgstr "" + +#: ../../../CHANGELOG.rst:335 +msgid "Improved the BP motions tab for out-rounds by specifying advancing teams as \"top/bottom ½\" rather than as 1st/4th and removed the average-points-per-position graphs that were misleading" +msgstr "" + +#: ../../../CHANGELOG.rst:336 +msgid "Improved handling of long motions in the motion display interface" +msgstr "" + +#: ../../../CHANGELOG.rst:337 +msgid "Fixed issue where creating BP tournaments using the wizard would create an extra break round given the size of the break specified" +msgstr "" + +#: ../../../CHANGELOG.rst:338 +msgid "Fixed auto-allocation in consensus panels where there are fewer judges than debates in the round" +msgstr "" + +#: ../../../CHANGELOG.rst:339 +msgid "Fixed reply speaker validity check when speeches are marked as duplicate" +msgstr "" + +#: ../../../CHANGELOG.rst:340 +msgid "Prohibit assignment of teams to break categories of other tournaments in Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:344 +msgid "2.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:345 +msgid "*Release date: 21 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:347 +msgid "Fixed issue where results submission would crash if sides are unconfirmed" +msgstr "" + +#: ../../../CHANGELOG.rst:348 +msgid "Fixed issue where scoresheets would not display properly for adjudicators who lack institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:349 +msgid "Fixed issue where the round history indicators in the Edit Adjudicators page would sometimes omit the \"rounds ago\" indicator" +msgstr "" + +#: ../../../CHANGELOG.rst:353 +msgid "2.0.0 (Iberian Lynx)" +msgstr "" + +#: ../../../CHANGELOG.rst:354 +msgid "*Release date: 13 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "British Parliamentary support" +msgstr "" + +#: ../../../CHANGELOG.rst:357 +msgid "Full support for British Parliamentary format has been added and we're incredibly excited to see Tabbycat's unique features and design (finally) available as an option for those tabbing in the predominant global format" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "As part of the implementation of this format we've made significant improvements over existing tab software on how sides are allocated within BP draws. This means that teams are less likely to have 'imbalanced' proportions of side allocations (for example having many more debates as Opening Government than Closing Opposition)" +msgstr "" + +#: ../../../CHANGELOG.rst:359 +msgid "We've added a new \"Comparisons\" page added to the documentation to outline some of the key differences between Tabbycat and other software in the context of BP tabbing" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "Refreshed interface design" +msgstr "" + +#: ../../../CHANGELOG.rst:361 +msgid "The basic graphic elements of Tabbycat have had a their typography, icons, colours, forms, and more redesign for a more distinctive and clear look. We also now have an official logo!" +msgstr "" + +#: ../../../CHANGELOG.rst:362 +msgid "The \"Motions\" stage of the per-round workflow has now been rolled into the Display area to better accommodate BP formats and consolidate the Draw/Motion 'release' process" +msgstr "" + +#: ../../../CHANGELOG.rst:363 +msgid "Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks" +msgstr "" + +#: ../../../CHANGELOG.rst:364 +msgid "Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions" +msgstr "" + +#: ../../../CHANGELOG.rst:366 +msgid "Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "Improved handling of Break Rounds ballots and sides allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised" +msgstr "" + +#: ../../../CHANGELOG.rst:369 +msgid "Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores" +msgstr "" + +#: ../../../CHANGELOG.rst:370 +msgid "Now, like Break Categories, you can define arbitrary Categories such as 'Novice' or 'ESL' to create custom Speaker tabs for groups of Speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:371 +msgid "You can now release an Adjudicators Tab showing test scores, final scores, and/or per-round feedback averages" +msgstr "" + +#: ../../../CHANGELOG.rst:372 +msgid "Information Slides can now be added to the system; either for showing to an auditorium within Tabbycat or for displaying alongside the public list of motions and/or the motions tab" +msgstr "" + +#: ../../../CHANGELOG.rst:373 +msgid "Teams and adjudicators are no longer required to have institutions; something that should be very useful when setting up small IVs and the like" +msgstr "" + +#: ../../../CHANGELOG.rst:374 +msgid "Private URLs can now be incrementally generated. Records of sent mail are now also kept by Tabbycat, so that emails can be incrementally sent to participants as registration data changes" +msgstr "" + +#: ../../../CHANGELOG.rst:376 +msgid "After creating a new tournament you will now be prompted to apply a basic rules and public information preset" +msgstr "" + +#: ../../../CHANGELOG.rst:377 +msgid "Better handling of errors that arise when a debate team is missing or where two teams have been assigned the same side" +msgstr "" + +#: ../../../CHANGELOG.rst:378 +msgid "Fixed issue where the adjudicator feedback graphs would not sort along with their table" +msgstr "" + +#: ../../../CHANGELOG.rst:379 +msgid "The Feedback Overview page now makes it more clear how the score is determined, the current distribution of scores, and how scores affect the distribution of chairs, panellists, and trainees" +msgstr "" + +#: ../../../CHANGELOG.rst:380 +msgid "Speaker tabs now default to sorting by average, except for formats where we are certain that they must be sorted by total. The speaker tab page itself now prominently notes which setting is is currently using" +msgstr "" + +#: ../../../CHANGELOG.rst:381 +msgid "'Feedback paths' now default to a more permissive setting (rather than only allowing Chairs to submit feedback) and the Feedback Overview page will note that current configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:382 +msgid "Emails can be assigned to adjudicators and teams in the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:383 +msgid "More of the tables that allow you to set or edit data (such as the check-in tables for adjudicators, teams and venues) now automatically save changes" +msgstr "" + +#: ../../../CHANGELOG.rst:384 +msgid "When adding/editing users extraneous fields have been hidden and the \"Staff\" and \"Superuser\" roles have new sub-text clarifying what they mean for users with those permissions" +msgstr "" + +#: ../../../CHANGELOG.rst:385 +msgid "Team record pages now show cumulative team points, and if the speaker tab is fully released, speaker scores for that team in each debate" +msgstr "" + +#: ../../../CHANGELOG.rst:389 +msgid "1.4.6" +msgstr "" + +#: ../../../CHANGELOG.rst:390 +msgid "*Release date: 23 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:392 +msgid "Fixed issue where speaker standings with a large amount of non-ranking speakers would cause the page to load slowly or time-out." +msgstr "" + +#: ../../../CHANGELOG.rst:396 +msgid "1.4.5" +msgstr "" + +#: ../../../CHANGELOG.rst:397 +msgid "*Release date: 14 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:399 +msgid "Added warning message when adjudicator scores are outside the expected range" +msgstr "" + +#: ../../../CHANGELOG.rst:400 +msgid "Fixed handling of uniqueness failure in simple importer for teams" +msgstr "" + +#: ../../../CHANGELOG.rst:404 +msgid "1.4.4" +msgstr "" + +#: ../../../CHANGELOG.rst:405 +msgid "*Release date: 27 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:407 +msgid "Fixed Vue dependency issue preventing Heroku installs after a dependency release" +msgstr "" + +#: ../../../CHANGELOG.rst:408 +msgid "Fixed issue with formatting non-numeric standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:409 +msgid "Fixed behaviour of public tabs when all rounds are silent" +msgstr "" + +#: ../../../CHANGELOG.rst:413 +msgid "1.4.3" +msgstr "" + +#: ../../../CHANGELOG.rst:414 +msgid "*Release date: 9 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:416 +msgid "A number of improvements to error handling and logging" +msgstr "" + +#: ../../../CHANGELOG.rst:417 +msgid "Changed the \"previous round\" of an elimination round to point to the last one in the same break category" +msgstr "" + +#: ../../../CHANGELOG.rst:418 +msgid "Other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:422 +msgid "1.4.2" +msgstr "" + +#: ../../../CHANGELOG.rst:423 +msgid "*Release date: 23 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:425 +msgid "Minor bug fixes and error logging improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:429 +msgid "1.4.1" +msgstr "" + +#: ../../../CHANGELOG.rst:430 +msgid "*Release date: 2 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:432 +msgid "Fixed bug that prevented edited matchups from being saved" +msgstr "" + +#: ../../../CHANGELOG.rst:433 +msgid "Added flag to prevent retired sites from using the database for sessions" +msgstr "" + +#: ../../../CHANGELOG.rst:437 +msgid "1.4.0 (Havana Brown)" +msgstr "" + +#: ../../../CHANGELOG.rst:438 +msgid "*Release date: 26 July 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:" +msgstr "" + +#: ../../../CHANGELOG.rst:441 +msgid "Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping" +msgstr "" + +#: ../../../CHANGELOG.rst:442 +msgid "When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress" +msgstr "" + +#: ../../../CHANGELOG.rst:443 +msgid "Added conflicts and recent histories to the slideovers shown for teams/adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels" +msgstr "" + +#: ../../../CHANGELOG.rst:445 +msgid "Each interface's table is now sortable by a debate's importance, bracket, liveness, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:446 +msgid "Added a new \"Tournament Logistics\" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document" +msgstr "" + +#: ../../../CHANGELOG.rst:447 +msgid "Added (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)" +msgstr "" + +#: ../../../CHANGELOG.rst:448 +msgid "Added an ESL/EFL tab release option and status field" +msgstr "" + +#: ../../../CHANGELOG.rst:449 +msgid "Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this" +msgstr "" + +#: ../../../CHANGELOG.rst:450 +msgid "The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates" +msgstr "" + +#: ../../../CHANGELOG.rst:451 +msgid "Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished" +msgstr "" + +#: ../../../CHANGELOG.rst:452 +msgid "Added 'Average Speaks by Round' to the standings overview page" +msgstr "" + +#: ../../../CHANGELOG.rst:453 +msgid "Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important" +msgstr "" + +#: ../../../CHANGELOG.rst:454 +msgid "Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes" +msgstr "" + +#: ../../../CHANGELOG.rst:455 +msgid "Fixed issue where VenueCategories could not be edited if they did not have Venues set" +msgstr "" + +#: ../../../CHANGELOG.rst:456 +msgid "Various other small fixes and improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:460 +msgid "1.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:461 +msgid "*Release date: 26 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:463 +msgid "Fixed bug that allowed duplicate emoji to be occasionally generated" +msgstr "" + +#: ../../../CHANGELOG.rst:467 +msgid "1.3.0 (Genetta)" +msgstr "" + +#: ../../../CHANGELOG.rst:468 +msgid "*Release date: 9 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:470 +msgid "Added the ability to mark speeches as duplicates when entering ballots so that they will not show in speaker tabs, intended for use with 'iron-man' speeches and swing speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:471 +msgid "Reworked venue constraints and venue display options by streamlining \"venue groups\" and \"venue constraint categories\" into a single \"venue category\" type, with options for how they are used and displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:472 +msgid "Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:473 +msgid "Reworked the simple data importer (formerly the visual importer) to improve its robustness" +msgstr "" + +#: ../../../CHANGELOG.rst:474 +msgid "Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)" +msgstr "" + +#: ../../../CHANGELOG.rst:475 +msgid "Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release" +msgstr "" + +#: ../../../CHANGELOG.rst:476 +msgid "Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)" +msgstr "" + +#: ../../../CHANGELOG.rst:477 +msgid "Added the ability to redact individual person's identifying details from speaker tabs" +msgstr "" + +#: ../../../CHANGELOG.rst:478 +msgid "Added the ability for user passwords to be easily reset" +msgstr "" + +#: ../../../CHANGELOG.rst:479 +msgid "Added a minimal set of default feedback questions to newly created Tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:480 +msgid "When a tournament's current round is set, redirect to a page where it can be set, rather than crashing" +msgstr "" + +#: ../../../CHANGELOG.rst:481 +msgid "A number of other minor bug fixes and enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:485 +msgid "1.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:486 +msgid "*Release date: 17 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:488 +msgid "Improved the display of the admin ballot entry form on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:489 ../../../CHANGELOG.rst:497 +#: ../../../CHANGELOG.rst:505 +msgid "A number of other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:493 +msgid "1.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:494 +msgid "*Release date: 4 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:496 +msgid "Protected debate-team objects from cascaded deletion, and added warning messages with guidance when users would otherwise do this" +msgstr "" + +#: ../../../CHANGELOG.rst:501 +msgid "1.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:502 +msgid "*Release date: 25 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:504 +msgid "Printable feedback forms will now display the default rating scale, any configured introduction text, and better prompt you to add additional questions" +msgstr "" + +#: ../../../CHANGELOG.rst:509 +msgid "1.2.0 (Foldex)" +msgstr "" + +#: ../../../CHANGELOG.rst:510 +msgid "*Release date: 15 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:512 +msgid "Changed the core workflow by splitting display- and motion- related activities into separate pages to simplify each stage of running a round" +msgstr "" + +#: ../../../CHANGELOG.rst:513 +msgid "Added support for Docker-based installations to make local/offline installations much more simple" +msgstr "" + +#: ../../../CHANGELOG.rst:514 +msgid "Added a \"Tabbykitten\" version of Tabbycat that can be deployed to Heroku without a needing a credit/debit card" +msgstr "" + +#: ../../../CHANGELOG.rst:515 +msgid "Added button to load a demo tournament on the 'New Tournament' page so it is easier to test-run Tabbycat" +msgstr "" + +#: ../../../CHANGELOG.rst:516 +msgid "Changed venue groups to be separate to venue constraint categories" +msgstr "" + +#: ../../../CHANGELOG.rst:517 +msgid "Modified the licence to clarify that donations are required for some tournaments and added a more explicit donations link and explanation page" +msgstr "" + +#: ../../../CHANGELOG.rst:518 +msgid "Added information about autosave status to the adjudicator allocations page" +msgstr "" + +#: ../../../CHANGELOG.rst:519 +msgid "Added configurable side names so that tournaments can use labels like \"Proposition\"/\"Opposition\" instead of \"Affirmative\"/\"Negative\"" +msgstr "" + +#: ../../../CHANGELOG.rst:520 +msgid "Started work on basic infrastructure for translations" +msgstr "" + +#: ../../../CHANGELOG.rst:524 +msgid "1.1.7" +msgstr "" + +#: ../../../CHANGELOG.rst:525 +msgid "*Release date: 31 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:527 +msgid "Yet more minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:528 +msgid "The auto-allocation UI will now detail your minimum rating setting better" +msgstr "" + +#: ../../../CHANGELOG.rst:529 +msgid "Added guidance on database backups to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:533 +msgid "1.1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:534 +msgid "*Release date: 19 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:536 +msgid "A number of minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:537 +msgid "Added basic infrastructure for creating tabbycat translations" +msgstr "" + +#: ../../../CHANGELOG.rst:541 +msgid "1.1.5" +msgstr "" + +#: ../../../CHANGELOG.rst:542 +msgid "*Release date: 12 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:544 +msgid "A number of minor bug fixes and improvements to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:548 +msgid "1.1.4" +msgstr "" + +#: ../../../CHANGELOG.rst:549 +msgid "*Release date: 25 November 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:551 +msgid "Redesigned the footer area to better describe Tabbycat and to promote donations and related projects" +msgstr "" + +#: ../../../CHANGELOG.rst:552 +msgid "Slight tweaks to the site homepage and main menus to better accommodate the login/log out links" +msgstr "" + +#: ../../../CHANGELOG.rst:553 +msgid "A few minor bug fixes and improvements to error reporting" +msgstr "" + +#: ../../../CHANGELOG.rst:557 +msgid "1.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:558 +msgid "*Release date: 15 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:560 +msgid "Fixed bug affecting some migrations from earlier versions" +msgstr "" + +#: ../../../CHANGELOG.rst:561 +msgid "Made latest results show question mark rather than crash if a team is missing" +msgstr "" + +#: ../../../CHANGELOG.rst:562 +msgid "Fixed bug affecting the ability to save motions" +msgstr "" + +#: ../../../CHANGELOG.rst:563 +msgid "Fixed bug preventing draw flags from being displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:567 +msgid "1.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:568 +msgid "*Release date: 14 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:570 +msgid "Allow panels with even number of adjudicators (with warnings), by giving chair the casting vote" +msgstr "" + +#: ../../../CHANGELOG.rst:571 +msgid "Removed defunct person check-in, which hasn't been used since 2010" +msgstr "" + +#: ../../../CHANGELOG.rst:572 +msgid "Collapsed availability database models into a single model with Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:573 +msgid "Collapsed optional fields in action log entries into a single generic field using Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:574 +msgid "Added better warnings when attempting to create an elimination round draw with fewer than two teams" +msgstr "" + +#: ../../../CHANGELOG.rst:575 +msgid "Added warnings in Edit Database view when editing debate teams" +msgstr "" + +#: ../../../CHANGELOG.rst:576 +msgid "Renamed \"AIDA pre-2015\" break rule to \"AIDA 1996\"" +msgstr "" + +#: ../../../CHANGELOG.rst:580 +msgid "1.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:581 +msgid "*Release date: 8 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:583 +msgid "Fixed a bug where the team standings and team tab would crash when some emoji were not set" +msgstr "" + +#: ../../../CHANGELOG.rst:587 +msgid "1.1.0 (Egyptian Mau)" +msgstr "" + +#: ../../../CHANGELOG.rst:588 +msgid "*Release date: 3 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:590 +msgid "Added support for the United Asian Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:591 +msgid "Added support for the World Schools Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:592 +msgid "Made Windows 8+ Emoji more colourful" +msgstr "" + +#: ../../../CHANGELOG.rst:593 +msgid "Fixed an incompatability between Vue and IE 10-11 which caused tables to not render" +msgstr "" + +#: ../../../CHANGELOG.rst:594 +msgid "Minor bug fixes and dependency updates" +msgstr "" + +#: ../../../CHANGELOG.rst:598 +msgid "1.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:599 +msgid "*Release date: 19 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:601 +msgid "Fixed a minor bug with the visual importer affecting similarly named institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:602 +msgid "Fixed error message when user tries to auto-allocate adjudicators on unconfirmed or released draw" +msgstr "" + +#: ../../../CHANGELOG.rst:603 +msgid "Minor docs edits" +msgstr "" + +#: ../../../CHANGELOG.rst:607 +msgid "1.0.0 (Devon Rex)" +msgstr "" + +#: ../../../CHANGELOG.rst:608 +msgid "*Release date: 16 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Redesigned and redeveloped adjudicator allocation page" +msgstr "" + +#: ../../../CHANGELOG.rst:611 +msgid "Redesigned interface, featuring clearer displays of conflict and diversity information" +msgstr "" + +#: ../../../CHANGELOG.rst:612 +msgid "Changes to importances and panels are now automatically saved" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Added debate \"liveness\" to help identify critical rooms—many thanks to Thevesh Theva" +msgstr "" + +#: ../../../CHANGELOG.rst:614 +msgid "Panel score calculations performed live to show strength of voting majorities" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "New features" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "Added record pages for teams and adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:617 +msgid "Added a diversity tab to display demographic information about participants and scoring" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Significant general improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Shifted most table rendering to Vue.js to improve performance and design" +msgstr "" + +#: ../../../CHANGELOG.rst:620 +msgid "Drastically reduced number of SQL queries in large tables, *e.g.* draw, results, tab" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Break round management" +msgstr "" + +#: ../../../CHANGELOG.rst:622 +msgid "Completed support for break round draws" +msgstr "" + +#: ../../../CHANGELOG.rst:623 +msgid "Simplified procedure for adding remarks to teams and updating break" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Reworked break generation code to be class-based, to improve future extensibility" +msgstr "" + +#: ../../../CHANGELOG.rst:625 +msgid "Added support for break qualification rules: AIDA Australs, AIDA Easters, WADL" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:627 +msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Changed \"panellist feedback enabled\" option to \"feedback paths\", a choice of three options" +msgstr "" + +#: ../../../CHANGELOG.rst:630 +msgid "Dropped \"/t/\" from tournament URLs and moved \"/admin/\" to \"/database/\", with 301 redirects" +msgstr "" + +#: ../../../CHANGELOG.rst:631 +msgid "Added basic code linting to the continuous integration tests" +msgstr "" + +#: ../../../CHANGELOG.rst:632 +msgid "Many other small bug fixes, refactors, optimisations, and documentation updates" +msgstr "" + +#: ../../../CHANGELOG.rst:636 +msgid "0.9.0 (Chartreux)" +msgstr "" + +#: ../../../CHANGELOG.rst:637 +msgid "*Release date: 13 June 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:639 +msgid "Added a beta implementation of the break rounds workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:640 +msgid "Added venue constraints, to allow participants or divisions to preferentially be given venues from predefined groups" +msgstr "" + +#: ../../../CHANGELOG.rst:641 +msgid "Added a button to regenerate draws" +msgstr "" + +#: ../../../CHANGELOG.rst:642 +msgid "Refactored speaker standings implementation to match team standings implementation" +msgstr "" + +#: ../../../CHANGELOG.rst:643 +msgid "New standings metrics, draw methods, and interface settings for running small tournaments and division-based tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:644 +msgid "Improved support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:645 +msgid "Improved user-facing error messages in some scenarios" +msgstr "" + +#: ../../../CHANGELOG.rst:646 +msgid "Most frontend dependencies now handled by Bower" +msgstr "" + +#: ../../../CHANGELOG.rst:647 +msgid "Static file compilation now handled by Gulp" +msgstr "" + +#: ../../../CHANGELOG.rst:648 ../../../CHANGELOG.rst:660 +msgid "Various bug fixes, optimisations, and documentation edits" +msgstr "" + +#: ../../../CHANGELOG.rst:652 +msgid "0.8.3" +msgstr "" + +#: ../../../CHANGELOG.rst:653 +msgid "*Release date: 4 April 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:655 +msgid "Restored and reworking printing functionality for scoresheets/feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:656 +msgid "Restored Edit Venues and Edit Matchups on the draw pages" +msgstr "" + +#: ../../../CHANGELOG.rst:657 +msgid "Reworked tournament data importers to use csv.DictReader, so that column order in files doesn't matter" +msgstr "" + +#: ../../../CHANGELOG.rst:658 +msgid "Improved dashboard and feedback graphs" +msgstr "" + +#: ../../../CHANGELOG.rst:659 +msgid "Add separate pro speakers tab" +msgstr "" + +#: ../../../CHANGELOG.rst:664 +msgid "0.8.2" +msgstr "" + +#: ../../../CHANGELOG.rst:665 +msgid "*Release date: 20 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:667 +msgid "Fixed issue where scores from individual ballots would be deleted when any other panel in the round was edited" +msgstr "" + +#: ../../../CHANGELOG.rst:668 +msgid "Fixed issue where page crashes for URLs with \"tab\" in it but that aren't recognized tab pages" +msgstr "" + +#: ../../../CHANGELOG.rst:672 +msgid "0.8.1" +msgstr "" + +#: ../../../CHANGELOG.rst:673 +msgid "*Release date: 15 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:675 +msgid "Fixed a bug where editing a Team in the admin section could cause an error" +msgstr "" + +#: ../../../CHANGELOG.rst:676 +msgid "Added instructions on how to account for speakers speaking twice to docs" +msgstr "" + +#: ../../../CHANGELOG.rst:677 +msgid "Venues Importer wont show VenueGroup import info unless that option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:681 +msgid "0.8.0 (Bengal)" +msgstr "" + +#: ../../../CHANGELOG.rst:682 +msgid "*Release date: 29 February 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:684 +msgid "Upgraded to Python 3.4, dropped support for Python 2" +msgstr "" + +#: ../../../CHANGELOG.rst:685 +msgid "Restructured directories and, as a consequence, changed database schema" +msgstr "" + +#: ../../../CHANGELOG.rst:686 +msgid "Added Django migrations to the release (they were previously generated by the user)" +msgstr "" + +#: ../../../CHANGELOG.rst:687 +msgid "Migrated documentation to `Read The Docs `_" +msgstr "" + +#: ../../../CHANGELOG.rst:688 +msgid "New user interface design and workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:689 +msgid "Overhauled tournament preferences to use `django-dynamic-preferences `_" +msgstr "" + +#: ../../../CHANGELOG.rst:690 +msgid "Added new visual data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:691 +msgid "Improved flexibility of team standings rules" +msgstr "" + +#: ../../../CHANGELOG.rst:692 +msgid "Moved data utility scripts to Django management commands" +msgstr "" + +#: ../../../CHANGELOG.rst:693 +msgid "Changed emoji to Unicode characters" +msgstr "" + +#: ../../../CHANGELOG.rst:694 +msgid "Various other fixes and refinements" +msgstr "" + +#: ../../../CHANGELOG.rst:698 +msgid "0.7.0 (Abyssinian)" +msgstr "" + +#: ../../../CHANGELOG.rst:699 +msgid "*Release date: 31 July 2015*" +msgstr "" + +#: ../../../CHANGELOG.rst:701 +msgid "Support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:702 +msgid "Improved and extensible tournament data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:703 +msgid "Display gender, region, and break category in adjudicator allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:704 +msgid "New views for online adjudicator feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:705 +msgid "Customisable adjudicator feedback forms" +msgstr "" + +#: ../../../CHANGELOG.rst:706 +msgid "Randomised URLs for public submission" +msgstr "" + +#: ../../../CHANGELOG.rst:707 +msgid "Customisable break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:708 +msgid "Computerised break generation (break round draws not supported)" +msgstr "" + +#: ../../../CHANGELOG.rst:709 +msgid "Lots of fixes, interface touch-ups and performance enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:710 +msgid "Now requires Django 1.8 (and other package upgrades)" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/about/contributing.po b/docs/locale/bg/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..60aa4d3ee53 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/contributing.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: bg_BG\n" + +#: ../../../CONTRIBUTING.rst:3 +msgid "Contributing" +msgstr "" + +#: ../../../CONTRIBUTING.rst:5 +msgid "Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation." +msgstr "" + +#: ../../../CONTRIBUTING.rst:7 +msgid "Feel free to `join our Facebook group `_ if you have any questions about how to get started." +msgstr "" + +#: ../../../CONTRIBUTING.rst:10 +msgid "Feedback and ideas" +msgstr "" + +#: ../../../CONTRIBUTING.rst:12 +msgid "These can be added as issues in the `GitHub repository `_; posts in our `Facebook group `_; or as an :ref:`email to the developers `." +msgstr "" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Bug reports" +msgstr "" + +#: ../../../CONTRIBUTING.rst:17 +msgid "Please report bugs by opening a new issue in our `GitHub repository `_. It is most helpful if you can include:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:19 +msgid "How Tabbycat was installed (on Heroku, locally on macOS, `etc.`)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Any details about your tournament and setup that might be helpful in troubleshooting" +msgstr "" + +#: ../../../CONTRIBUTING.rst:21 +msgid "Detailed steps for how to reproduce the bug" +msgstr "" + +#: ../../../CONTRIBUTING.rst:24 +msgid "Getting started with development" +msgstr "" + +#: ../../../CONTRIBUTING.rst:26 +msgid "To easily test your changes to Tabbycat you probably want a working :ref:`local install ` (without using Docker)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:27 +msgid "Please submit pull requests for features and bug fixes against `develop` (but not `master`)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:28 +msgid "We broadly use the `git-flow workflow `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:29 +msgid "We use Django's testing tools — adding unit tests to new features is greatly appreciated" +msgstr "" + +#: ../../../CONTRIBUTING.rst:31 +msgid "A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed." +msgstr "" + +#: ../../../CONTRIBUTING.rst:33 +msgid "A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:37 +msgid "Our ``package.json`` provides a convenience command that runs a standard set of development tools simultaneously, such as the Django server and the automatic recompilation with live injecting of javascript and CSS. Once you have set ``USE_WEBPACK_SERVER=True`` in your ``settings_local.py`` you can then run this with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:42 +msgid "Generating test data" +msgstr "" + +#: ../../../CONTRIBUTING.rst:44 +msgid "There are management commands to help developers quickly generate data for use in testing, including results and feedback. A list of all commands can be found from ``dj help``, but the most useful in this context are:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:46 +msgid "``dj importtournament ( minimal8team | australs24team | bp88team )``, which imports participant data for the 8-team (``minimal8team``), 24-team Australs (``australs24team``) and 88-team BP (``bp88team``) demonstration tournaments respectively." +msgstr "" + +#: ../../../CONTRIBUTING.rst:47 +msgid "``dj simulaterounds ROUND [ROUND ROUND ...]``, which simulates all of the rounds specified, generating a draw, an adjudicator allocation and a complete set of random results (but not feedback)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:48 +msgid "``dj generatefeedback ROUND [ROUND ROUND ...]``, which randomly generates feedback for all existing debates in the specified rounds." +msgstr "" + +#: ../../../CONTRIBUTING.rst:49 +msgid "``dj generateresults ROUND [ROUND ROUND ...]``, which randomly generates results for all existing debates in the specified rounds. (You don't need to run this if you ran ``simulaterounds``, because that already does it.)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:51 +msgid "Rounds can be specified by sequence number (``seq``) or abbreviation. You can find more information about each of them by adding ``--help`` after the command name." +msgstr "" + +#: ../../../CONTRIBUTING.rst:54 +msgid "Database schema changes" +msgstr "" + +#: ../../../CONTRIBUTING.rst:56 +msgid "When adding new features, it may be necessary to modify the database schema to support these new additions. After the changes are made, the migration files made by ``python manage.py makemigrations`` must also be committed. The migration files should also contain methods fill the new fields based on existing data if possible." +msgstr "" + +#: ../../../CONTRIBUTING.rst:58 +msgid "Fixture files (found under ``data/fixtures/``) may also need to be updated, which can be done by running the ``migrate_fixtures.py`` script under a unmigrated database, then committing the result. ::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:64 +msgid "Style guide" +msgstr "" + +#: ../../../CONTRIBUTING.rst:66 +msgid "For the front end interface design there is a style guide available at \"/style/\" once a tournament has been setup." +msgstr "" + +#: ../../../CONTRIBUTING.rst:68 +msgid "For python code, we use `flake8 `_ to check for a non-strict series of style rules. Warnings will trigger a Travis CI build to fail. The entire codebase can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:72 +msgid "For stylesheets, we use `stylelint `_. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:76 +msgid "For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:81 +msgid "Versioning convention" +msgstr "" + +#: ../../../CONTRIBUTING.rst:83 +msgid "Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:85 +msgid "the database can't be migrated forwards using ``python manage.py migrate --no-input``, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:86 +msgid "there is a major change to how the tournament workflow goes, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:87 +msgid "we make some other change that is, in our opinion, significant enough to warrant a milestone." +msgstr "" + +#: ../../../CONTRIBUTING.rst:89 +msgid "We write `data migrations `_ to allow existing systems to be upgraded easily. However, we don't always support backward database migrations. Our expectation is that long-lived installations keep up with our latest version." +msgstr "" + +#: ../../../CONTRIBUTING.rst:91 +msgid "One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:93 +msgid "Starting from version 0.7.0, we use cat breeds as the code names for major versions." +msgstr "" + +#: ../../../CONTRIBUTING.rst:96 +msgid "Documentation" +msgstr "" + +#: ../../../CONTRIBUTING.rst:98 +msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." +msgstr "" + +#: ../../../CONTRIBUTING.rst:100 +msgid "To preview the documentation locally, install the development dependencies and then start the server::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:104 +msgid "You should then be able to preview the docs at `127.0.0.1:7999 `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:107 +msgid "Project structure" +msgstr "" + +#: ../../../CONTRIBUTING.rst:109 +msgid "``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline." +msgstr "" + +#: ../../../CONTRIBUTING.rst:110 +msgid "``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively" +msgstr "" + +#: ../../../CONTRIBUTING.rst:111 +msgid "``docs`` contains our document source files and images (although some are linked from the root directory)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``tabbycat`` is the main directory containing the Django project" +msgstr "" + +#: ../../../CONTRIBUTING.rst:113 +msgid "``locale`` contains translation strings for shared templates (others are in respective app directories)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:114 +msgid "``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins." +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``utils`` contains shared utilities" +msgstr "" + +#: ../../../CONTRIBUTING.rst:116 +msgid "All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates." +msgstr "" + +#: ../../../CONTRIBUTING.rst:117 +msgid "In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:120 +msgid "Internationalization/Localization" +msgstr "" + +#: ../../../CONTRIBUTING.rst:122 +msgid "The `gettext `_ framework is used to enable the translation of strings in Python files and Django templates. Backend in this context signifies these types of files." +msgstr "" + +#: ../../../CONTRIBUTING.rst:124 +msgid "The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py)::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:128 +msgid "To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``." +msgstr "" + +#: ../../../CONTRIBUTING.rst:130 +msgid "These can then be compiled using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:134 +msgid "As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:136 +msgid "Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:141 +msgid "These are then also committed to git to save users needing to run `compilejsi18n` during setup. The resulting files are then bundled as part of the npm build task. Updating these translations in development (live-reload) requires the use of the ``cp-i18n`` npm task." +msgstr "" + +#: ../../../CONTRIBUTING.rst:144 +msgid "Release checklist" +msgstr "" + +#: ../../../CONTRIBUTING.rst:146 +msgid "Check that all migrations have been generated and committed into Git" +msgstr "" + +#: ../../../CONTRIBUTING.rst:147 +msgid "Merge translations from the Crowdin pull request and compile messages" +msgstr "" + +#: ../../../CONTRIBUTING.rst:148 +msgid "Bump version number in ``docs/conf.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:149 +msgid "Bump version number and (if applicable) codename in ``tabbycat/settings/core.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:150 +msgid "Update the main ``CHANGELOG.rst`` file (including release date)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Check the major current deployment options, including:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:152 +msgid "The ``deploy_heroku.py`` script" +msgstr "" + +#: ../../../CONTRIBUTING.rst:153 +msgid "The Tabbykitten version" +msgstr "" + +#: ../../../CONTRIBUTING.rst:154 +msgid "Docker (macOS, Windows 10*) and Docker Toolbox (Windows 10 Home) methods" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Using Bash and Powershell on Windows" +msgstr "" + +#: ../../../CONTRIBUTING.rst:156 +msgid "Using Terminal on macOS (at least test out a fresh install of the npm/pip dependencies)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:157 +msgid "Check that the last Travis CI build passed and run the full local test suite (this will include the Selenium tests that are not on Travis)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:158 +msgid "Shift remaining issues from the Github Milestone" +msgstr "" + +#: ../../../CONTRIBUTING.rst:159 +msgid "Create and finish the release branch as per git-flow" +msgstr "" + +#: ../../../CONTRIBUTING.rst:160 +msgid "Ensure the tag is correct (``vX.Y.Z``) and published to GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:161 +msgid "Back-merge ``master`` to the ``kitten`` branch" +msgstr "" + +#: ../../../CONTRIBUTING.rst:162 +msgid "Back-merge ``develop`` to the in-progress feature branches" +msgstr "" + +#: ../../../CONTRIBUTING.rst:163 +msgid "Issue a formal release with change notes on GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:164 +msgid "Post change notes on the Facebook page/group" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/about/licence.po b/docs/locale/bg/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..a9b495d54a1 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/licence.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: bg_BG\n" + +#: ../../../LICENSE.rst:3 +msgid "Licence Information" +msgstr "" + +#: ../../../LICENSE.rst:5 +msgid "We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of A$1 (Australian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.)" +msgstr "" + +#: ../../../LICENSE.rst:8 +msgid "Use at for-profit or fundraising tournaments" +msgstr "" + +#: ../../../LICENSE.rst:10 +msgid "If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a donation of A$1 (Australian dollar) per team to the Tabbycat maintenance team, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit." +msgstr "" + +#: ../../../LICENSE.rst:12 +msgid "While we suggest that non-profit, non-fundraising tournaments budget for a donation of A$1 per team, it is not required in order for such tournaments to use Tabbycat." +msgstr "" + +#: ../../../LICENSE.rst:15 +msgid "Modifications to and redistributions of Tabbycat" +msgstr "" + +#: ../../../LICENSE.rst:17 +msgid "We grant you permission to modify and/or redistribute Tabbycat, provided that" +msgstr "" + +#: ../../../LICENSE.rst:19 +msgid "you do not receive any payment for this modification and/or redistribution," +msgstr "" + +#: ../../../LICENSE.rst:20 +msgid "if you modify Tabbycat, you add prominent notices stating that you modified it," +msgstr "" + +#: ../../../LICENSE.rst:21 +msgid "all references and functionality relating to donations are kept intact, and" +msgstr "" + +#: ../../../LICENSE.rst:22 +msgid "this licence page and all attributions of authorship are included as-is." +msgstr "" + +#: ../../../LICENSE.rst:24 +msgid "Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission." +msgstr "" + +#: ../../../LICENSE.rst:26 +msgid "If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required." +msgstr "" + +#: ../../../LICENSE.rst:29 +msgid "Disclaimer of warranty and liability" +msgstr "" + +#: ../../../LICENSE.rst:31 +msgid "We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided \"as is\", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.**" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/about/support.po b/docs/locale/bg/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..73bd0dbb0b7 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/support.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: bg_BG\n" + +#: ../../about/support.rst:3 +msgid "Support" +msgstr "" + +#: ../../about/support.rst:5 +msgid "There are a number of ways to report bugs, ask for help, or submit feedback." +msgstr "" + +#: ../../about/support.rst:8 +msgid "Facebook" +msgstr "" + +#: ../../about/support.rst:10 +msgid "`Our Facebook group `_ is a good place to ask for help. It's also a good place to keep up with new releases and participate in more general discussions of features and ideas." +msgstr "" + +#: ../../about/support.rst:13 +msgid "GitHub" +msgstr "" + +#: ../../about/support.rst:15 +msgid "Adding an issue to our `GitHub repository `_ is a great way to let us know about bugs or writeup suggestions for how to improve Tabbycat. Pull requests are also encouraged!" +msgstr "" + +#: ../../about/support.rst:17 +msgid "When submitting bugs or reporting errors please let us know your site address (if installed online) or operating system (if local) along with a complete description of the problem along with any error messages." +msgstr "" + +#: ../../about/support.rst:20 +msgid "Email" +msgstr "" + +#: ../../about/support.rst:22 +msgid "Feel free to :ref:`contact the maintainers directly ` if you are not able to access Facebook or GitHub." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/about/tournament-history.po b/docs/locale/bg/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..45af9270fb4 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/about/tournament-history.po @@ -0,0 +1,248 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: bg_BG\n" + +#: ../../about/tournament-history.rst:3 +msgid "Tournament History" +msgstr "" + +#: ../../about/tournament-history.rst:5 +msgid "A partial list of major national and international tournaments (that we know of) which have used Tabbycat." +msgstr "" + +#: ../../about/tournament-history.rst:8 +msgid "2017" +msgstr "" + +#: ../../about/tournament-history.rst:10 +msgid "`APU Philosophy CHallenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:11 +msgid "`ANU Spring IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:12 +msgid "`Australian British Parliamentary Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:13 +msgid "`Australasian Wom*ns Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:14 +msgid "Asia World Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:15 +msgid "`Asia British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:16 +msgid "`Borneo British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:17 +msgid "`Canadian British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:18 +msgid "`Cambridge Asian Schools BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:19 +msgid "Cambodia United Asian Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:20 +msgid "`China British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:21 +msgid "`Japan British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:22 +msgid "`Kings College London IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:23 +msgid "`Kuala Lumpur Open Challenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:24 +msgid "`KPU Pro Ams `_" +msgstr "" + +#: ../../about/tournament-history.rst:25 +msgid "`Malaysian National Intervarsity Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:26 +msgid "`Melbourne Mini `_" +msgstr "" + +#: ../../about/tournament-history.rst:27 +msgid "`New Zealand Easters 2017 `_" +msgstr "" + +#: ../../about/tournament-history.rst:28 +msgid "`New Zealand British Parliamentary Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:29 +msgid "`North East Asia Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:30 +msgid "`Swords Mini-Gong `_" +msgstr "" + +#: ../../about/tournament-history.rst:31 +msgid "`Shanghai Asian Schools British Parliamentary Debate Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:32 +msgid "`UCD Law Society IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:33 +msgid "`UCD Vice President's Cup `_" +msgstr "" + +#: ../../about/tournament-history.rst:34 +msgid "`UQ Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:35 +msgid "`UT MARA Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:36 +msgid "`Victoria Cup IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:37 +msgid "`Western Sydney BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:38 +msgid "`Wollongong Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:39 +msgid "`Yale IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:42 +msgid "2016" +msgstr "" + +#: ../../about/tournament-history.rst:44 +msgid "`Sydney Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:45 +msgid "`Joynt Scroll 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:46 +msgid "`Malaysia Debate Open 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:47 +msgid "`New Zealand Easters 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:48 +msgid "`Perth Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:49 +msgid "`Thailand United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:50 ../../about/tournament-history.rst:61 +msgid "The National Law School Debate" +msgstr "" + +#: ../../about/tournament-history.rst:51 +msgid "The Khazak National Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:54 +msgid "2015" +msgstr "" + +#: ../../about/tournament-history.rst:56 +msgid "`Bali United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:57 +msgid "`Daejeon Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:58 +msgid "`Joynt Scroll `_" +msgstr "" + +#: ../../about/tournament-history.rst:59 +msgid "`Malaysia Debate Open 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:60 +msgid "`New Zealand Easters 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:62 +msgid "`UNSW/UTS Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:65 +msgid "2014" +msgstr "" + +#: ../../about/tournament-history.rst:67 +msgid "`Joynt Scroll 2014 `_" +msgstr "" + +#: ../../about/tournament-history.rst:68 +msgid "NTU United Asian Debating Championships" +msgstr "" + +#: ../../about/tournament-history.rst:69 +msgid "`Otago Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:72 +msgid "2012" +msgstr "" + +#: ../../about/tournament-history.rst:74 +msgid "Wellington Australs" +msgstr "" + +#: ../../about/tournament-history.rst:77 +msgid "2010" +msgstr "" + +#: ../../about/tournament-history.rst:79 +msgid "Auckland Australs" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/bg/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..2b058cd11f9 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/adjudicator-allocation.po @@ -0,0 +1,160 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: bg_BG\n" + +#: ../../features/adjudicator-allocation.rst:5 +msgid "Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:7 +msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:10 +msgid "Assigning Debate Priority" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:12 +msgid "For tournaments with more than a few debates you generally want to begin the allocation process by applying a priority value to your debates. A debate's priority value is used by the automatic adjudicator allocator (or the preformed panel indicator) to match the strongest panels to the debates that need them most." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:16 +msgid "The prioritise button in the top-left allows you to assign a priority value automatically based on a debate's bracket or its 'liveness'. Remember that in early rounds there are usually not enough results for the liveness of each debate to be distinct and that Tabbycat measures liveness based on the sum of all live break categories — a debate can have more liveness points than it has teams if there are teams that are live in multiple categories." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:18 +msgid "The automatic prioritiser never uses the 'highest' priority value so that you can easily use this to highlight the debates that need the strongest panels without needing to redistribute the priority of other debates." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:20 +msgid "Regardless of whether you automatically assign priority, there are sliders to the left of each team that can be used to manually specify priority. These are usually used to override the automatic priority of a debate if that matchup needs and especially strong/weak/mediocre panel for reasons that are not reflected in its bracket/liveness." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:24 +msgid "If each debate's priority is the same, the automatic adjudicator will fall-back on using the debate's bracket as a substitute for priority. Thus, you can skip the prioritisation process (or only prioritise the most/least important debates) if you want a relatively even spread of panellists (e.g. during Round 1)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:27 +msgid "Automatic Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:29 +msgid "Once you are happy with your priorities you can begin assigning adjudicators. This also has an (optional) automatic process that will create panels for you. In creating these panels automatically, the allocator will:" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:31 +msgid "Avoid creating 'hard' conflicts (i.e. personal or institutional clashes) between adjudicators and teams while also trying to avoid 'soft' conflicts (i.e. avoiding an adjudicator seeing the same team again)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:32 +msgid "Form panels whose relative average voting score matches the relative priority you assigned to each debate." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:33 +msgid "Allocate trainees (unless disabled or none are under the threshold) to panels (allocated first to the highest-strength panels)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:34 +msgid "Violate the above intents in cases where there are inescapable constraints — e.g. if there are too many soft or hard conflicts to avoid creating panels that do not trigger them." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:36 +msgid "Remember that Tabbycat will only automatically allocate adjudicators that have been marked as available for this round." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:38 +msgid "To begin this process, click the *Allocate* button in the top-left. If you have :ref:`formed preformed panels ` for this round, the modal will first ask whether you want to assign adjudicators using those panels; otherwise the modal will contain a number of options that can be used to control the allocation. In general, the *minimum feedback score* value is the most important setting to consider as it determines the threshold needed for adjudicators to not be allocated as trainees." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:42 +msgid "Once you click *Auto-Allocate* the modal should disappear and your panels should appear. At large tournaments, and in the later rounds, it is not unheard of for this process to take a minute or longer." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:44 +msgid "You can re-run the automatic allocation process on top of an existing allocation. Thus it is worth tweaking your priorities or allocation settings if the allocation does not seem optimal to you. Also note that the allocation process is not deterministic — if you rerun it the panels will be different." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:46 +msgid "Once your adjudicators have been allocated you can drag and drop them on to different panels. You can also drag and drop them to the 'unused area' (the gray bar at the bottom of the page) if you wish to store them temporarily or remove them from the draw. Dropping an adjudicator into the chair position will 'swap' that adjudicator into the previous position of the new chair." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:49 +msgid "Saving, Live Updates, and Sharing" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:51 +msgid "Changes to your panels save automatically and you can exit the allocation page whenever you wish." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:53 +msgid "In addition, the allocation pages maintain a 'live' connection to the server that shows updates made by other users who are viewing/using the same page. That is to say, if two people on two computers are both viewing the allocation page they should see each other's changes in real-time. This allows you to 'distribute' the task of allocation across individual people (rather than sharing a screen/projector) if desired." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:55 +msgid "It is possible to have users 'undo' or 'overwrite' each others changes despite this live system, e.g. if both users drag and adjudicator somewhere at the same time." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:57 +msgid "If you are dividing the task of allocation across multiple people, the *Sharding* system can help by allowing individuals to limit their view of the draw. The use case here is usually to divide the draw up into mutually-exclusive subsets so that individuals (or groups) of the adjudication core can focus on creating panels across the draw in parallel." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:61 +msgid "To activate sharding, click the small icon to the right of the \"Allocate\" button. This then presents a number of options for how the draw is divide up into distinct sets. If you want to ensure that each person opens a completely distinct set of the draw, you will need to coordinate the options that each user selects here. They will need to set the **same** options for *Shard Mix*, *Shard Split* and *Shard Sort* but select a **different** *Open* option (i.e. opt-in to viewing a different shard from the other users). The ability to exit a sharded view is available in the same dialogue." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:64 +msgid "In-Place Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:66 +msgid "Adjudicators and teams may have borders of varying colors. These borders indicate that there is a clash — soft or hard — within a debate and highlights the teams/adjudicators that have triggered this. There is a key for these colors available at the top of the page — e.g. orange means *institutional conflict* while blue means *this adjudicator has seen this adjudicator/team before*." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:70 +msgid "In general, you want to be on the lookout for red borders ('hard conflicts') and for teams with orange borders (institutional conflicts). Blue borders on teams/adjudicators and orange borders between adjudicators are usually of lesser concern." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:72 +msgid "There are two 'special' types of highlight — a gray background in the chair position (no chair) or in the panellist position (the panel is not an odd-size). Adjudicators may also have a black background if they have not been marked as available." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:75 +msgid "Hover Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:77 +msgid "When you hover over an adjudicator or team, they will take on a purple background and other adjudicators or teams may suddenly have different colored backgrounds. These indicate the conflicts that this team/adjudicator has with those other teams/adjudicators. By showing this information you can avoid swapping that adjudicator into a new debate which they have a conflict with." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:81 +msgid "When you hover over an adjudicator or team the top-most area of the screen will show additional information about them, such as all of their previous institutions, their conflicts, their break category, their team members, their region, and who they saw in the last few rounds." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:84 +msgid "Toggle Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:86 +msgid "In the top-right of the interface are a number of toggles that changes the color of adjudicators and teams to more easily check specific types of information. For example, selecting the gender toggle will color-code teams and adjudicators with the gender that has been recorded in Tabbycat. Note that when a toggle is active, the color key will update to show the meaning of these new colors." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:90 +msgid "When finalising an adjudication you may want to ensure you have turned off any toggle highlights — often they make it more difficult to see the border colors that indicate conflicts." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/bg/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..82c305ee9e3 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/adjudicator-feedback.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: bg_BG\n" + +#: ../../features/adjudicator-feedback.rst:5 +msgid "Adjudicator Feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:7 +msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:9 +msgid "Currently, there are two methods of setting questions:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:11 +msgid "Through the :ref:`edit database area `. Go to **Setup** > **Edit Database**, then click **Change** next to *Adjudicator feedback questions*. You can add questions here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:14 +msgid "Using the :ref:`importtournament command `." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:16 +msgid "Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field descriptions in the edit database area helpful.) Some more details are here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:20 +msgid "Answer types and options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Type" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Relevant options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Appearance" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +msgid "**checkbox**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +#: ../../features/adjudicator-feedback.rst:27 +#: ../../features/adjudicator-feedback.rst:35 +#: ../../features/adjudicator-feedback.rst:37 +msgid "\\-" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:27 +msgid "**yes/no (dropdown)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +msgid "**integer (textbox)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +#: ../../features/adjudicator-feedback.rst:31 +#: ../../features/adjudicator-feedback.rst:33 +msgid "min_value, max_value" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:31 +msgid "**integer scale**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:33 +msgid "**float**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:35 +msgid "**text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:37 +msgid "**long text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +msgid "**select one**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +#: ../../features/adjudicator-feedback.rst:41 +msgid "choices" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:41 +msgid "**select multiple**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:44 +msgid "Options:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:46 +msgid "**min_value** and **max_value** specify the minimum and maximum allowable values in the field. Mandatory for \"integer scale\" types and optional for \"integer (textbox)\" and \"float\" types." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:47 +msgid "**choices** is used with \"select one\" and \"select multiple\" types, and is a ``//``-delimited list of possible answers, *e.g.* ``biased//clear//concise//rambly//attentive//inattentive``" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:48 +msgid "**required** specifies whether users must fill out the field before clicking \"submit\". This requirement is only enforced on public submission forms. It is not enforced on forms entered by tab room assistants." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:50 +msgid "The exception to this is the \"checkbox\" type. For checkboxes, \"required\" means that the user cannot submit the form unless the box is checked. Think of it like an \"I agree to the terms\" checkbox. This isn't a deliberate design decision—it's just a quirk of how checkboxes work on web forms." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:53 +msgid "Want another answer type?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:55 +msgid "We don't really intend to add any further complexity to the built-in feedback system. If the above answer types don't cover your needs, we suggest using a third-party feedback system. You might be able to adapt `SurveyMonkey `_, `Google Forms `_ or `Qualtrics `_ to your needs." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:60 +msgid "We may be persuaded to make an exception if the new question type you have in mind is easy to add: that is, if it is straightforward to implement using standard web page elements and fits into the existing questionnaire framework (see :ref:`feedback-questionnaires` below). If you think there is such a case, please contact us using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:69 +msgid "Different questionnaires" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:71 +msgid "Tabbycat allows you to specify two questionnaires: one for feedback submitted by teams, and one for feedback submitted by adjudicators. You must specify in each question whether to include the question in each questionnaire." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:75 +msgid "**from_team**, if checked, includes the question in feedback submitted by teams" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:77 +msgid "**from_adj**, if checked, includes the question in feedback submitted by adjudicators" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:81 +msgid "Who gives feedback on whom?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:82 +msgid "Tabbycat allows for three choices for which adjudicators give feedback on which other adjudicators:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:85 +msgid "Chairs give feedback on panellists and trainees" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:86 +msgid "Chairs give feedback on panellists and trainees, and panellists give feedback on chairs" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:88 +msgid "All adjudicators, including trainees, give feedback on all other adjudicators they have adjudicated with" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:91 +msgid "You can set this in the **feedback paths** option under *Setup* > *Configuration* > *Feedback*. Your choice affects each of the following:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:94 +msgid "The options presented to adjudicators in the online feedback form" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:95 +msgid "The printable feedback forms" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:96 +msgid "The submissions expected when calculating feedback progress and highlighting missing feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:99 +msgid "The feedback paths option only affects feedback from adjudicators. Teams are always assumed to give feedback on the orallist, and they are encouraged to do so through hints on the online and printable feedback forms, but there is nothing technically preventing them from submitting feedback from any adjudicator on their panel." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:105 +msgid "Advanced users" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:108 +msgid "If you need a different setting, you need to edit the source code. Specifically, you should edit the function ``expected_feedback_targets`` in tabbycat/adjfeedback/utils.py." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:112 +msgid "Unless we can be convinced that they are very common, we don't intend to add any further choices to the feedback paths option. If your needs are specific enough that you need to differ from the available settings, they are probably also beyond what is sensible for a built-in feedback system, and we recommend using a third-party feedback system instead." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:119 +msgid "How is an adjudicator's score determined?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:121 +msgid "For the purpose of the automated allocation, an adjudicator's overall score is a function of their base score, the current round's feedback weight, and their average feedback score. This number is calculated according to the following formula:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:126 +msgid "\\textrm{score} = (1-w)\\times\\textrm{base score} + w\\times\\textrm{average feedback score}" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:130 +msgid "where :math:`w` is the feedback weight for the round. Note that because the feedback score is averaged across all pieces of feedback (rather than on a per-round total) rounds in which a person receives feedback from many sources (say from all teams and all panellists) could impact their average score much more than a round in which they only receive feedback from one or two sources." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:132 +msgid "Under this formula, each round's feedback weight can be used to determine the relative influence of the base score vs feedback in determining the overall score. As an example, say that an adjudicator received 5.0 as their base score, but their average feedback rating has thus far been 2.0. If the current rounds' feedback weight is set to 0.75, then their overall score would be 2.75. If the current round's feedback weight is set to 0.5 their score would be 3.5. If the weight was 0, their score will always be their base score; if the weight was 1 it will always be their average feedback value." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:141 +msgid "To change the weight of a round you will need to go to the Edit Database area, open the round in question, and change its *Feedback weight* value. It is common to set rounds with a low feedback weight value early on in the tournament (when feedback is scant) and to increase the feedback weight as the tournament progresses." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:143 +msgid "A participant's base score can, in conjunction with feedback weight, also be used as a manual override for an adjudicator's overall ranking. At several tournaments, adjudication cores have set every round's feedback weight to 0, and manually adjusted an adjudicator's base score in response to feedback they have received and reviewed. In this way complete control over every adjudicator's overall score can be exerted." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:145 +msgid "If feedback from trainee adjudicators is enabled, any scores that they submit in their feedback are not counted towards that adjudicator's overall score." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:148 +msgid "Ignoring/Discarding feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:150 +msgid "There are some cases where feedback should be discarded or ignored, but there are some differences between the two. Discarded feedback is mostly due to having another piece of feedback that supersedes the discarded ones. Ignored feedback is different as it still counts the affected feedback as submitted, just inconsequential, ignored in the adjudicator's score calculation." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:152 +msgid "Feedback can be marked as discarded in the database view, under the ``confirmed`` field. It can also be marked as ignored in the same view. Controls to reverse these designations are also available there. To mark feedback as ignored, an option is available in the administrator's and assistant's feedback adding form, as well in the form of a toggle link at the bottom of each card." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/backups.po b/docs/locale/bg/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..a92158ca613 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/backups.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:16\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: bg_BG\n" + +#: ../../features/backups.rst:5 +msgid "Backups" +msgstr "" + +#: ../../features/backups.rst:7 +msgid "Tabbycat doesn't provide an in-built backup system; instead you should create copies of your database directly. Heroku provides a very good backup utility for all sites hosted on Heroku which makes this easy, and for Heroku-based Tabbycat sites, we strongly recommend it." +msgstr "" + +#: ../../features/backups.rst:12 +msgid "You should **always** back up the database before deleting *any* data while in the Edit Database area, because deleting data cannot be undone. It is also a good idea to back up the database before doing anything in the Edit Database area, unless you're very familiar and confident with editing the Tabbycat database directly." +msgstr "" + +#: ../../features/backups.rst:18 +msgid "You may, as a matter of standard practice at large tournaments, wish to back up the database twice per round: Once just after you've generated the draw and allocated adjudicators, and once just after you've finished entering results." +msgstr "" + +#: ../../features/backups.rst:22 +msgid "If you're using an online version of Tabbycat, it's a good idea to download the backups. While it's extremely rare to lose internet access or have an outage in a critical web service (*i.e.*, Heroku), having a local copy of your backups allows you to :ref:`restore your tab to a local installation ` if this ever happens." +msgstr "" + +#: ../../features/backups.rst:29 +msgid "Installations on Heroku" +msgstr "" + +#: ../../features/backups.rst:31 +msgid "Heroku provides a utility to easily back up and restore the entire site database." +msgstr "" + +#: ../../features/backups.rst:35 +msgid "If you don't have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:36 +msgid "You can capture backups from the Heroku Dashboard:" +msgstr "" + +#: ../../features/backups.rst:38 +msgid "Go to the `Heroku Dashboard `_ and click on your app." +msgstr "" + +#: ../../features/backups.rst:40 +msgid "Under *Installed add-ons*, go to **Heroku Postgres**." +msgstr "" + +#: ../../features/backups.rst:41 +msgid "Scroll down, and click on the **Capture Backup** button." +msgstr "" + +#: ../../features/backups.rst:42 +msgid "Once the capture has finished, a **Download** button will be available." +msgstr "" + +#: ../../features/backups.rst:44 +msgid "You can't restore a backup without the Heroku Command Line Interface (CLI), so if you end up needing your backup, you'll need to install the `Heroku CLI `_, and then follow the instructions below." +msgstr "" + +#: ../../features/backups.rst:50 +msgid "If you have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:52 +msgid "The best guide to backing up databases is the `Heroku Dev Center's PGBackups guide `_." +msgstr "" + +#: ../../features/backups.rst:55 +msgid "To capture a backup::" +msgstr "" + +#: ../../features/backups.rst:59 +msgid "To download the most recently captured backup::" +msgstr "" + +#: ../../features/backups.rst:63 +msgid "To restore a backup::" +msgstr "" + +#: ../../features/backups.rst:67 +msgid "If you have multiple Tabbycat sites, you'll need to specify which one by adding ``--app mytournamentname`` to the end of the command." +msgstr "" + +#: ../../features/backups.rst:71 +msgid "Local installations" +msgstr "" + +#: ../../features/backups.rst:73 +msgid "There are lots of ways to back up local PostgreSQL databases, but we'd suggest using the `pg_dump `_ and `pg_restore `_ commands." +msgstr "" + +#: ../../features/backups.rst:83 +msgid "Restoring a Heroku backup to a local installation" +msgstr "" + +#: ../../features/backups.rst:85 +msgid "As detailed in the `Heroku Dev Center `_, you can restore a downloaded Heroku backup to a local installation. This might be useful if, say, your internet connection breaks irrecoverably in the middle of a tournament and you need to run offline. Of course, for this to work, you need to have downloaded your backup before your internet connection broke---a good reason to download a copy of your backups as soon as you make them." +msgstr "" + +#: ../../features/backups.rst:92 +msgid "Assuming your download is called ``latest.dump`` (this is the default name), your PostgreSQL username is ``tabbycat``, and you wish to call your local database ``fromheroku`` (if not, replace arguments as appropriate)::" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/breaks.po b/docs/locale/bg/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..bbdcd59f770 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/breaks.po @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: bg_BG\n" + +#: ../../features/breaks.rst:5 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../features/breaks.rst:7 +msgid "In Tabbycat, elimination rounds (sometimes called *outrounds* or the *final series*) are called \"break rounds\", and the qualification of teams to compete in the elimination phase of a tournament is called the \"break\"." +msgstr "" + +#: ../../features/breaks.rst:12 +msgid "About break categories" +msgstr "" + +#: ../../features/breaks.rst:14 +msgid "Tabbycat supports multiple and arbitrarily-named break categories. Most tournaments will have just one category, typically called \"Open\", leading to the grand final. Some tournaments also have restricted-eligibility break categories, for example, for novice teams or teams for whom English is a second language." +msgstr "" + +#: ../../features/breaks.rst:19 +msgid "Having multiple break categories is intended for tournaments where multiple *parallel* elimination phases derive from the *same* preliminary rounds (inrounds). It's not for parallel but distinct competitions---for those, you should create distinct tournaments." +msgstr "" + +#: ../../features/breaks.rst:27 +msgid "Break qualification rules" +msgstr "" + +#: ../../features/breaks.rst:29 +msgid "Tabbycat supports several break qualification rules, and each break category must be configured to use one of them. Most tournaments will use \"Standard\", which is the default." +msgstr "" + +#: ../../features/breaks.rst:38 +msgid "Rule name (string to use in ``importtournament`` CSV files)" +msgstr "" + +#: ../../features/breaks.rst:39 +msgid "Descrption" +msgstr "" + +#: ../../features/breaks.rst:41 +msgid "Standard (``standard``)" +msgstr "" + +#: ../../features/breaks.rst:42 +msgid "The top *n* teams break. This is the default, and most tournaments use this rule." +msgstr "" + +#: ../../features/breaks.rst:45 +msgid "AIDA 1996 (``aida-1996``)" +msgstr "" + +#: ../../features/breaks.rst:46 +msgid "The top *n* teams that are also in the top three teams from their institution break." +msgstr "" + +#: ../../features/breaks.rst:49 +msgid "AIDA 2016 (Australs) (``aida-2016-australs``)" +msgstr "" + +#: ../../features/breaks.rst:50 +msgid "The top *n* teams that fulfil either of these criteria break:" +msgstr "" + +#: ../../features/breaks.rst:53 +msgid "They are in the top *n* teams overall, and in the top three teams from their institution." +msgstr "" + +#: ../../features/breaks.rst:55 +msgid "They have at least as many wins as the *n*\\ th-ranked team, and they are the top team from their institution." +msgstr "" + +#: ../../features/breaks.rst:58 +msgid "If fewer than *n* teams fulfil either criterion, then the best teams not fulfilling the criteria are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:62 +msgid "AIDA 2016 (Easters) (``aida-2016-easters``)" +msgstr "" + +#: ../../features/breaks.rst:63 +msgid "As for AIDA 2016 (Australs), except that if fewer than *n* teams fulfil either criterion, then only the best teams who are in the top three teams from their institution are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:68 +msgid "The break generators are somewhat more complex than described in the above table: among other things, they also handle cases where there is a tie for the last place in the break, and for those break categories marked \"general\", they will show where ineligible teams would have broken, had they been eligible." +msgstr "" + +#: ../../features/breaks.rst:75 +msgid "Setting up break categories and rounds" +msgstr "" + +#: ../../features/breaks.rst:77 +msgid "For each break category in your tournament, you need to do two things:" +msgstr "" + +#: ../../features/breaks.rst:79 +msgid "Create (and name) a break category" +msgstr "" + +#: ../../features/breaks.rst:80 +msgid "Create break rounds for the category" +msgstr "" + +#: ../../features/breaks.rst:81 +msgid "Set the eligibility of teams to compete in the category" +msgstr "" + +#: ../../features/breaks.rst:83 +msgid "If you only have one break category (open) and you create your tournament using the \"Create New Tournament\" page, simply enter the number of teams in the break (*e.g.*, 8 if you're breaking to quarterfinals). Tabbycat will create the break category and break rounds for you. For any further break categories, you'll need to go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Break Categories**. Fill out the forms for the number of new break categories and save. Rounds will be created automatically. You'll still need to set the eligibility of teams though, as in (3) below." +msgstr "" + +#: ../../features/breaks.rst:92 +msgid "If you create your tournament using the `importtournament` command or in **Edit Database**, you'll need to do all three steps above yourself. You may also want to edit the break rounds (2) to change their names." +msgstr "" + +#: ../../features/breaks.rst:97 +msgid "1. Creating break categories" +msgstr "" + +#: ../../features/breaks.rst:99 +msgid "If using the `importtournament` command, there is an example file, *break_categories.csv*, that you can copy and adjust. If using **Edit Database**, add categories under **Break Qualification > Break categories**." +msgstr "" + +#: ../../features/breaks.rst:103 +msgid "Most of the fields are self-explanatory or described on the Edit Database form, except for one: \"rule\", which sets the break qualification rule. Permissible values are described in :ref:`breakqual-rules` above. If using `importtournament`, be sure to use the correct string (in brackets in the table). The rule defaults to \"Standard\" (``standard``)." +msgstr "" + +#: ../../features/breaks.rst:109 +msgid "The \"institution cap\" field was removed in Tabbycat 1.0. All Australs break qualification rules are now hard-coded to a cap of three teams per institution." +msgstr "" + +#: ../../features/breaks.rst:114 +msgid "2. Creating break rounds" +msgstr "" + +#: ../../features/breaks.rst:116 +msgid "You should create a round for every break round you intend to hold, including it in *rounds.csv* if using `importtournament`, or adding them under **Tournaments > Rounds** if using **Edit Database**. Be careful to set the following fields correctly:" +msgstr "" + +#: ../../features/breaks.rst:121 +msgid "*Break category* must be set to the relevant break category." +msgstr "" + +#: ../../features/breaks.rst:122 +msgid "*Stage* and *draw type* must both be set to \"Elimination\"." +msgstr "" + +#: ../../features/breaks.rst:125 +msgid "3. Setting break eligibility" +msgstr "" + +#: ../../features/breaks.rst:127 +msgid "Once a break category has been created it will not have any teams eligible for it, even if it was marked as \"Is general\". To edit the eligibility of teams for any break round go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Team Eligiblity**." +msgstr "" + +#: ../../features/breaks.rst:132 +msgid "Here you can select \"all\" or \"none\" to toggle all team eligiblities or edit them using the tick boxes. Once you **save** it should return you to the main break page which will display the number of teams marked eligible." +msgstr "" + +#: ../../features/breaks.rst:136 +msgid "Adjudicators can be marked as \"breaking\" on the **Feedback** page; clicking **Adjudicators** on the breaks page will take you straight there." +msgstr "" + +#: ../../features/breaks.rst:140 +msgid "Generating the break" +msgstr "" + +#: ../../features/breaks.rst:142 +msgid "Unlike team or speaker standings, each category's break (and the break ranks of teams) are not determined automatically and updated continuously. Instead each can be generated (and regenerated) as desired." +msgstr "" + +#: ../../features/breaks.rst:146 +msgid "To do so go to the **Breaks** item in the left-hand menu and then click the white button that corresponds to the break category you'd like to determine the rankings for. When prompted, select **Generate the break for all categories** to display the list of breaking teams." +msgstr "" + +#: ../../features/breaks.rst:151 +msgid "From this page you can update the breaking teams list for this break category (or all categories) as well as view and edit 'remarks' that account for cases in which a team may not break (such as being capped or losing a coin toss)." +msgstr "" + +#: ../../features/breaks.rst:155 +msgid "Please double-check the generated break before announcing or releasing it. Although the break generation code is designed to handle edge cases, we don't test the code for such cases." +msgstr "" + +#: ../../features/breaks.rst:160 +msgid "Creating draws for break rounds" +msgstr "" + +#: ../../features/breaks.rst:162 +msgid "Creating a draw for a break round proceeds as normal, except that the team availability process is skipped. Instead, when you visit the availability page for that round it will have automatically determined which teams should be debating based upon the determined break for that category. Once a draw has been generated it will then use the relevant break ranks to create the matchups (ie 1st-breaking vs 16th-breaking, 2nd vs 15th, *etc.*). Subsequent break rounds will then also automatically determine matchups based on the previous round's results and room ranks." +msgstr "" + +#: ../../features/breaks.rst:171 +msgid "If the \"break size\" of a break category is not a power of 2, it will treat the first break round as a partial-elimination draw and only create a draw for the teams not skipping the partial-elimination round. Subsequent break rounds will then process as described above." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/check-ins.po b/docs/locale/bg/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..ac156421273 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/check-ins.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: bg_BG\n" + +#: ../../features/check-ins.rst:5 +msgid "Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:7 +msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." +msgstr "" + +#: ../../features/check-ins.rst:9 +msgid "Check-ins serve a similar purpose to the :ref:`availability ` system. However availabilities are tied to a particular round rather than to a particular time — they are generally used to record instances where you know ahead of time whether a person should or should not be included in a draw. In contrast, check-ins are useful for when you *don't* know ahead of time whether a person will be able to be put into the draw and so want to be able to confirm their presence with a high degree of confidence. That said the two systems interact — the standard availability pages allow you to easily set all adjudicators or teams who have checked-in as available for a given round." +msgstr "" + +#: ../../features/check-ins.rst:12 +msgid "Check-In Identifiers" +msgstr "" + +#: ../../features/check-ins.rst:14 +msgid "Check-ins are associated with a 'identifier' — a number that is unique to each speaker and adjudicator. To generate these numbers go to the *Identifiers* section under the Check-Ins menu. From here you generate identifiers for Speakers, Adjudicators, and Venues as needed. Note also that Identifiers can be manually added or edited in the *Edit Database* area if necessary." +msgstr "" + +#: ../../features/check-ins.rst:18 +msgid "Once this number has been generated it can be transformed into a barcode so that it can be easily included on tournament badges or otherwise printed and disbursed. On the same *Identifiers* page you can use the *View barcodes* option to open up a page that lists all the barcodes for the speakers, adjudicators, or venues." +msgstr "" + +#: ../../features/check-ins.rst:22 +msgid "The identifiers for ballots are automatically generated when printing ballots." +msgstr "" + +#: ../../features/check-ins.rst:25 +msgid "Recording Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:27 +msgid "On the *Scanning* section of Check-ins you can record a particular check-in. This can be done in a few different ways:" +msgstr "" + +#: ../../features/check-ins.rst:29 +msgid "You can type in the Identifier number into the box. Once five numbers have been identified it will automatically issue the check-in and clear the input field for the next number." +msgstr "" + +#: ../../features/check-ins.rst:31 +msgid "If you have purchased barcode scanners and configured them as USB keyboards they should then be compatible with this page: upon page load the cursor should be positioned in the input field, and any scanned barcodes should populate it with the specified number, issue the check-in, and then clear the box for the next scan." +msgstr "" + +#: ../../features/check-ins.rst:33 +msgid "Barcode scanners are probably cheaper than you think. A perfectly serviceable model should be around $20 USD or less although a cursory Google search might at first turn up models that are many times that amount. If you are a curious tab director, or are involved in a tournament with a little spare money, having just one or two around for critical tasks can be highly valuable." +msgstr "" + +#: ../../features/check-ins.rst:35 +msgid "If your device has a (web)cam you can use the Scan Using Camera button. Any barcodes put in front of the camera's video stream will be scanned into the form. A sound will play when a barcode has been identified — so be aware that turning sound on or using headphones can help identify when a scan has been made." +msgstr "" + +#: ../../features/check-ins.rst:39 +msgid "Camera scanning works on most modern browsers although it will only work with Safari 11 or higher (iOS 11+ and macOS 10.13+). Camera scanning may also not work when using a local-installation of Tabbycat in all browsers, *except* Firefox where it seems to. Depending on the quality of your camera barcodes that are less than 4cm wide may not be recognised — ideally barcodes should be at least 5cm if using this method as your main way of checking-in things." +msgstr "" + +#: ../../features/check-ins.rst:41 +msgid "The Check-in status page (described below) allows assistants and administrators to manually check-in particular people or entire institutions without needing to know their identifiers." +msgstr "" + +#: ../../features/check-ins.rst:44 +msgid "The Check-In 'Window'" +msgstr "" + +#: ../../features/check-ins.rst:46 +msgid "Because Check-In events are not explicitly linked to rounds there is essentially a 'window' or time period in which a check-in is still considered valid. The time of this 'window' in hours can be set in *Setup* > *Configuration* > *Data Entry*." +msgstr "" + +#: ../../features/check-ins.rst:48 +msgid "At tournaments the run check-ins during the start of each day the check-in 'window' (i.e. the time before check-ins expire) you can leave this window setting at the default time (12 hours) which should give enough time to distinguish between the first check-ins of that day as compared to the last check-ins of the previous day. At tournaments where you want to run a check-in process at the start of every round you may want to set the time to around 2 hours or something much shorter." +msgstr "" + +#: ../../features/check-ins.rst:51 +msgid "Viewing Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:53 +msgid "On the *People Statuses* section of Check-ins you can view who has or has not been checked-in. This page will live-update with the latest check-ins so you should be able to leave it open to monitor income attendances." +msgstr "" + +#: ../../features/check-ins.rst:57 +msgid "The blue \"tick\" boxes allow you to manually check-in people and/or entire institutions (for *People*) or venues and/or venue groups (for *Venues*) , without the need to scan their identifiers. This style of check-in is designed for use an auditorium roll-call type situation where you might be running through a list of people to the room or identifying absences on a per-institution basis." +msgstr "" + +#: ../../features/check-ins.rst:59 +msgid "A public version of this check-in status page can be enabled under *Setup* > *Configuration* > *Public Features* which can be useful for allowing people to self-police check-ins and/or validate their check-in worked." +msgstr "" + +#: ../../features/check-ins.rst:62 +msgid "Check-Ins for Ballots" +msgstr "" + +#: ../../features/check-ins.rst:64 +msgid "Ballots can be checked-in to quickly validate which ballots are physically present in the tab room. This can help more quickly identify ballots that are missing. Which ballots have or have not been checked-in will show up on the Results page. Ballots can be scanned using the standard 'Scan Identifiers' page." +msgstr "" + +#: ../../features/check-ins.rst:66 +msgid "Barcodes are automatically assigned and included to ballots when they are printed. Barcodes have no check-in window — any relevant check-in event counts regardless of how long ago it was." +msgstr "" + +#: ../../features/check-ins.rst:69 +msgid "Check-Ins for Venues" +msgstr "" + +#: ../../features/check-ins.rst:71 +msgid "Venues can be checked-in, but what a 'venue check-in' means is a bit more flexible. It might be used to validate which rooms are debate-ready at the start of a day (i.e. unlocked; has a desk) or it could be used during the rounds to record which rooms have returned their ballots." +msgstr "" + +#: ../../features/check-ins.rst:73 +msgid "Venues have a separate check-in window setting to that of people." +msgstr "" + +#: ../../features/check-ins.rst:75 +msgid "Venues have their own Status page (like people) and can be checked-in there manually. Like speakers and adjudicators their barcodes can also be printed off." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/data-entry.po b/docs/locale/bg/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..ab49c795042 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/data-entry.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: bg_BG\n" + +#: ../../features/data-entry.rst:5 +msgid "Entering Ballots and Feedback" +msgstr "" + +#: ../../features/data-entry.rst:8 +msgid "Ballot check-in" +msgstr "" + +#: ../../features/data-entry.rst:10 +msgid "For tournaments that require it, there is a \"ballot check-in\" page that can be used to record the arrival of ballots to the tab room. When there's a missing ballot, it can help establish whether the ballot never made it to the tab room, or whether it's probably floating around in the room forgotten. Also, it can help enforce early checks that panels return the correct number of ballots to the room." +msgstr "" + +#: ../../features/data-entry.rst:12 +msgid "To get to the ballot check-in, click the relevant round in the menu of the admin area, and then click \"Results\" and then \"Ballot Check-In\". This requires superuser privileges." +msgstr "" + +#: ../../features/data-entry.rst:14 +msgid "There's no adverse effect from not using the ballot check-in. Data enterers will still be able to enter and confirmed ballots, even if not checked in." +msgstr "" + +#: ../../features/data-entry.rst:18 +msgid "Since the ballot check-in tends to require a dedicated computer or two, it can be worth creating a separate superuser account for ballot check-in, so that it doesn't appear on the action logs as being by a particular person." +msgstr "" + +#: ../../features/data-entry.rst:19 +msgid "Don't forget to provision a computer or two for this if you're planning to use it." +msgstr "" + +#: ../../features/data-entry.rst:20 +msgid "Ballot check-ins can be a bottleneck, so you might decide they're not worth using. Alternatively, you might have multiple computers for this purpose, or you might dedicate a tab room helper to driving the process (since this is probably faster than runners doing the typing in turn)." +msgstr "" + +#: ../../features/data-entry.rst:23 +msgid "Ballot entry" +msgstr "" + +#: ../../features/data-entry.rst:27 +msgid "Most tab rooms run some sort of check system to ensure data is entered accurately. In Tabbycat, this is built into the system, which also helps speed it up." +msgstr "" + +#: ../../features/data-entry.rst:29 +msgid "As a general principle, Tabbycat requires all ballots to be looked at by two people. The first person enters the data from the ballot, and the second person checks it. The second person isn't allowed to modify the data—they either confirm it or reject it, and if they reject it, then the whole process starts again. This is by design: to be confirmed, the *same* data must have been seen by at least two people." +msgstr "" + +#: ../../features/data-entry.rst:31 +msgid "The administrator area does **not** work like this. It's designed to be flexible, so allows you to edit, confirm or unconfirm any ballot at any time. For this reason, you should use the **assistant** area to enter ballots, even if you have a superuser account." +msgstr "" + +#: ../../features/data-entry.rst:35 +msgid "Don't forget to check the totals against the ballot—they're a useful integrity check too." +msgstr "" + +#: ../../features/data-entry.rst:36 +msgid "Don't forget to check the winner against the ballot! If the adjudicator gets it wrong, it's worth asking to clarify." +msgstr "" + +#: ../../features/data-entry.rst:37 +msgid "It can be helpful to think about the room layout to maximize efficiency." +msgstr "" + +#: ../../features/data-entry.rst:38 +msgid "Some tab rooms like to assign some to data entry and some to verification. This isn't really necessary, since Tabbycat doesn't let the same person enter and verify the same ballot. (This is one of many reasons why every person should have their own account.)" +msgstr "" + +#: ../../features/data-entry.rst:39 +msgid "Emails can be configured to be sent to adjudicators as a receipt of their ballot once confirmed." +msgstr "" + +#: ../../features/data-entry.rst:42 +msgid "Duplicate/Swing Speeches" +msgstr "" + +#: ../../features/data-entry.rst:46 +msgid "When entering the ballots there is a toggle label *'Iron' speeches*. When set to \"yes\" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel)." +msgstr "" + +#: ../../features/data-entry.rst:48 +msgid "Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate." +msgstr "" + +#: ../../features/data-entry.rst:50 +msgid "There is also an option under **Standings** in the **Configuration** section that specifies the number of debates a speaker can miss before you will not show on the tab. By default there is no limit, but if need be this can be set to hide swing speakers from the final speaker tab." +msgstr "" + +#: ../../features/data-entry.rst:53 +msgid "Feedback entry" +msgstr "" + +#: ../../features/data-entry.rst:57 +msgid "Feedback doesn't have the same verification process as ballots. Feedback that is entered by the tab room is assumed to be confirmed. If feedback is entered multiple times, all copies are retained but only the last one \"counts\" (is considered confirmed)." +msgstr "" + +#: ../../features/data-entry.rst:60 +msgid "Online entry" +msgstr "" + +#: ../../features/data-entry.rst:62 +msgid "There are two methods of allowing ballots and feedback to be submitted online. Both are set in the **Data Entry** page of each tournament's **Configuration** section and can be set independently; both in whether each can be submitted online at all and in which method of online submission are available." +msgstr "" + +#: ../../features/data-entry.rst:68 +msgid "Private URLs" +msgstr "" + +#: ../../features/data-entry.rst:70 +msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." +msgstr "" + +#: ../../features/data-entry.rst:72 +msgid "Private URLs should provide more than adequate security for almost all tournaments' purposes, but they aren't foolproof. Anyone with access to the URL for a participant can submit feedback or ballots on their behalf, so it's important that participants not share their URLs. This also means participants need to be careful when submitting from devices they do not own, because the URL will be logged in that device's browser history." +msgstr "" + +#: ../../features/data-entry.rst:74 +msgid "These links must be generated within Tabbycat after the preference is enabled. To do so go to the **Feedback** section and then the **Private URLs** area. Once there you will be prompted to generate those URLs for all participants, which — once generated — will be presented in separate tables (one for teams; one for adjudicators)." +msgstr "" + +#: ../../features/data-entry.rst:78 +msgid "These URLs can then be distributed to each person in a number of ways. There are pages within Tabbycat for printing them out (one URL per page labelled by recipient) or emailing them out (providing participants have been assigned email addresses). In the past tournaments have also used data from this table to send out SMSs by bulk, or distributed them to institutional representatives to disburse." +msgstr "" + +#: ../../features/data-entry.rst:82 +msgid "You can assign email address to participants using the :ref:`importtournament command ` when importing your registration data, or by going to the *Edit Data* area and looking up each Speaker/Adjudicator." +msgstr "" + +#: ../../features/data-entry.rst:83 +msgid "If, after generating the private URLs, you add additional Teams or Adjudicators you can go to the *Edit Database* area , look up each Speaker/Adjudicator, and type in a bunch of random characters as their *Url key* to assign them a private URL." +msgstr "" + +#: ../../features/data-entry.rst:84 +msgid "You can delete the current set of URLs by running this command in a shell on your server (replacing TOURNAMENT_SLUG with the appropriate value): ``python manage.py privateurls delete --tournament TOURNAMENT_SLUG``" +msgstr "" + +#: ../../features/data-entry.rst:89 +msgid "Public URLs" +msgstr "" + +#: ../../features/data-entry.rst:91 +msgid "The second method of data entry is using 'normal URLs'. This essentially means that any users visiting the public version of the site is able to submit a ballot or feedback (as specified by their respective settings). They do so by self-selecting which Team or Adjudicator they are then entering in a form as normal." +msgstr "" + +#: ../../features/data-entry.rst:93 +msgid "This is, rather obviously, not a particularly secure method of data entry — nothing is stopping anyone on the site from entering data as someone else. The data can be checked, verified, and edited as normal by admins however. As such, this method is only recommended for small tournaments where you can trust those present to enter accurate information (or where accuracy is not crucial)." +msgstr "" + +#: ../../features/data-entry.rst:95 +msgid "There is an additional setting to set a 'tournament password' that needs to be submitted to enable the form. It is imagined, that if enabled, this password would only be distributed to tournament participants. However this only helps (at best) prevent non-participants from entering information; the fundamental problem of not verifying who is submitting what information is still present." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/data-importers.po b/docs/locale/bg/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..1e6912f9a68 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/data-importers.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: bg_BG\n" + +#: ../../features/data-importers.rst:5 +msgid "Tournament Data Importers" +msgstr "" + +#: ../../features/data-importers.rst:7 +msgid "This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary." +msgstr "" + +#: ../../features/data-importers.rst:9 +msgid "The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_." +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "Todo" +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/data-importers.rst:14 +msgid "Why write your own?" +msgstr "" + +#: ../../features/data-importers.rst:16 +msgid "While Tabbycat has standard import formats, you might find that none of them fit the data that you need to import." +msgstr "" + +#: ../../features/data-importers.rst:18 +msgid "It's not possible to devise a single, universally-convenient import file format. Tabbycat supports way too many permutations of configurations for this to be workable. Instead, we provide the ones that have been useful before and are therefore likely to be useful again—but if your tournament has different needs, you might decide that it's easier to write an importer to conform to you, rather than conform to the importer." +msgstr "" + +#: ../../features/data-importers.rst:20 +msgid "A base importer class abstracts away most of the nitty-gritty of parsing files, allowing new importers to focus on their interpretation with as little code as possible." +msgstr "" + +#: ../../features/data-importers.rst:22 +msgid "To allow new importers to be written with as little code as possible, most of the work is abstracted to the base class. The flipside of this abstraction is that it induces a learning curve." +msgstr "" + +#: ../../features/data-importers.rst:25 +msgid "Basic workflow" +msgstr "" + +#: ../../features/data-importers.rst:27 +msgid "Choose a name. We name importers after items of clothing in alphabetical order (starting at 'Anorak')." +msgstr "" + +#: ../../features/data-importers.rst:28 +msgid "Write a subclass of ``BaseTournamentDataImporter``." +msgstr "" + +#: ../../features/data-importers.rst:29 +msgid "Write the front-end interface. This will probably be a `Django management command `_." +msgstr "" + +#: ../../features/data-importers.rst:32 +msgid "A basic example" +msgstr "" + +#: ../../features/data-importers.rst:34 +msgid "It's easiest to start with an example. Here's a basic importer with just one import method, which imports adjudicators." +msgstr "" + +#: ../../features/data-importers.rst:60 +msgid "Let's break this down. The method ``import_adjudicators()`` takes a single argument, a file object representing the CSV file. Most of the work is passed off to ``self._import()``. This helper method is defined in ``BaseTournamentDataImporter`` and is where most of the intelligence lies." +msgstr "" + +#: ../../features/data-importers.rst:65 +msgid "When called, ``self._import(f, model, interpreter)`` does the following:" +msgstr "" + +#: ../../features/data-importers.rst:67 +msgid "It reads the CSV file using a `csv.DictReader `_. A ``DictReader`` iterates through the CSV file, yielding a dict for each line, whose keys are given by the column header names in the first row of the file." +msgstr "" + +#: ../../features/data-importers.rst:72 +msgid "On each line:" +msgstr "" + +#: ../../features/data-importers.rst:74 +msgid "It passes the dict given by the ``DictReader`` to ``interpreter``. The interpreter modifies the dict (or creates a new one) to prepare it for the model constructor, and returns it." +msgstr "" + +#: ../../features/data-importers.rst:78 +msgid "The dict returned by ``interpreter`` is then passed as keyword arguments to the ``model`` constructor." +msgstr "" + +#: ../../features/data-importers.rst:81 +msgid "So in very simplified form, ``self._import(f, model, interpreter)`` does this:" +msgstr "" + +#: ../../features/data-importers.rst:92 +msgid "(There's a lot more to it than that, but that's the basic idea.)" +msgstr "" + +#: ../../features/data-importers.rst:94 +msgid "A consequence of relying on column headers to identify fields is that the header names in CSV files must match model field names exactly, unless they are deleted by the interpreter using the ``DELETE`` keyword (see below)." +msgstr "" + +#: ../../features/data-importers.rst:100 +msgid "Interpreters" +msgstr "" + +#: ../../features/data-importers.rst:101 +msgid "The main task of an importer, then, is to provide interpreters so that ``self._import`` knows how to interpret the data in a CSV file. An interpreter takes a dict and returns a dict. For example:" +msgstr "" + +#: ../../features/data-importers.rst:113 +msgid "This interpreter does the following:" +msgstr "" + +#: ../../features/data-importers.rst:115 +msgid "Replaces ``line['institution']`` with an Institution object, by looking up the original value by name." +msgstr "" + +#: ../../features/data-importers.rst:117 +msgid "Replaces ``line['gender']`` with a ``Person.GENDER_*`` constant. We'll come back to how this works later." +msgstr "" + +#: ../../features/data-importers.rst:119 +msgid "Adds a new ``line['tournament']`` entry to the dict, being the Tournament object represented by ``self.tournament``, the tournament that was passed to the importer's constructor." +msgstr "" + +#: ../../features/data-importers.rst:122 +msgid "Leaves all other entries in the dict unchanged." +msgstr "" + +#: ../../features/data-importers.rst:124 +msgid "This looks simple enough, but it's very robust. What if a cell in the CSV file is blank, or what if the file omits a column? (For example, some tournaments might not collect information about participant gender, so Tabbycat doesn't require it.) We could deal with these scenarios on a case-by-case basis, but that's cumbersome." +msgstr "" + +#: ../../features/data-importers.rst:130 +msgid "Instead, we provide a ``make_interpreter`` method that returns an interpreter method which, in turn, takes care of all these details. This way, all you have to do is provide the functions that transform fields. So the following is equivalent to the above, but better:" +msgstr "" + +#: ../../features/data-importers.rst:143 +msgid "Notice that we provided a callable in two of these keyword arguments, and a (non-callable) Tournament object to the third. ``make_interpreter`` is smart enough to tell the difference, and treat them differently. What it does with each field depends on (a) whether a value exists in the CSV file and (b) what transformation function was provided, as summarised in the following table:" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Value in CSV file" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Transformation" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Action" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "provided and not callable" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "populate model field with interpreter value" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "does not exist or blank" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "callable or not provided" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "do not pass to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:158 ../../features/data-importers.rst:161 +msgid "exists and not blank" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "callable" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "call interpreter on column value, pass result to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "not provided" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "pass column value directly to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:169 +msgid "If a transformation isn't an existing method, you might find `lambda functions `_ useful. For example: ``lambda x: Speaker.objects.get(name=x)``." +msgstr "" + +#: ../../features/data-importers.rst:173 +msgid "You shouldn't check for mandatory fields. If a mandatory field is omitted, the model constructor will throw an error, and ``self._import()`` will catch the error and pass a useful message on to the caller. On the other hand, if it's an optional field in the model, it should optional in the importer, too. Similarly, interpreters generally shouldn't specify defaults; these should be left to model definitions." +msgstr "" + +#: ../../features/data-importers.rst:180 +msgid "You don't need to include interpreter transformations for things like converting strings to integers, floats or booleans. Django converts strings to appropriate values when it instantiates models. So, for example, adding ``test_score=float`` to the above interpreter would be redundant." +msgstr "" + +#: ../../features/data-importers.rst:186 +msgid "More complicated interpreters" +msgstr "" + +#: ../../features/data-importers.rst:188 +msgid "If you have a column in the CSV file that shouldn't be passed to the model constructor, you can tell the interpreter to remove it by using the special ``DELETE`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:199 +msgid "The ``make_interpreter`` can only deal with modifications where each field is modified separately of the others (or not at all). If you want to combine information from multiple fields, you need to write your interpreter the long way (perhaps calling a function returned by ``make_interpreter`` to do some of the work)." +msgstr "" + +#: ../../features/data-importers.rst:205 +msgid "On the other hand, if you don't need to do any transformations involving some sort of object or constant lookup, then you can just omit the ``interpreter`` argument of ``self._lookup()``, and it'll just leave the fields as-is." +msgstr "" + +#: ../../features/data-importers.rst:210 +msgid "Lookup functions" +msgstr "" + +#: ../../features/data-importers.rst:211 +msgid "In the above example, we used a function ``self.lookup_gender`` to convert from the text in the CSV file to a ``Person.GENDER_*`` constant. To make this easier, the importer provides a convenience function to define such lookup functions. Let's look at the relevant lines again:" +msgstr "" + +#: ../../features/data-importers.rst:224 +msgid "This should be a member of your subclass, in our case, ``ExampleTournamentDataImporter``. It generates a function that looks something like:" +msgstr "" + +#: ../../features/data-importers.rst:241 +msgid "The ``make_lookup`` function takes two arguments. The first is a text description of what it's looking up; this is used for the error message if the value in the CSV file isn't recognised. The second is a dict mapping tuples of valid strings to constants." +msgstr "" + +#: ../../features/data-importers.rst:247 +msgid "Debugging output" +msgstr "" + +#: ../../features/data-importers.rst:249 +msgid "The ``BaseTournamentDataImporter`` constructor accepts a ``loglevel`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:255 +msgid "If ``loglevel`` is set to ``logging.DEBUG``, the importer will print information about every instance it creates." +msgstr "" + +#: ../../features/data-importers.rst:258 +msgid "You can also pass in a logger for it to use (instead of the default one) with the ``logger`` argument." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/bg/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..33348672ff3 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/draw-generation-bp.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: bg_BG\n" + +#: ../../features/draw-generation-bp.rst:5 +msgid "Draw Generation (BP)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:7 +msgid "The draw generator for British Parliamentary tournaments tries to rotate teams through positions by assigning them positions they've been in less often before the current round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:12 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `. Options in `italics` with an asterisk are not WUDC-compliant. The recommended options are shown in **bold**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:19 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation-bp.rst:20 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation-bp.rst:21 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation-bp.rst:22 +msgid ":ref:`Pullup distribution `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:23 +msgid "Where pullup teams get placed" +msgstr "" + +#: ../../features/draw-generation-bp.rst:24 +msgid "**Anywhere in bracket**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:25 +msgid "*All in the same room*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:26 +msgid ":ref:`Position cost `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:27 +msgid "Which cost function to use to indicate which position profiles are preferred" +msgstr "" + +#: ../../features/draw-generation-bp.rst:28 +#: ../../features/draw-generation-bp.rst:179 +msgid "Simple" +msgstr "" + +#: ../../features/draw-generation-bp.rst:29 +msgid "**Rényi entropy**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:30 +#: ../../features/draw-generation-bp.rst:254 +msgid "Population variance" +msgstr "" + +#: ../../features/draw-generation-bp.rst:31 +msgid ":ref:`Rényi order `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:32 +msgid "Order of Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:33 +msgid "Any non-negative number (default: **1**, *i.e.* Shannon entropy)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:34 +msgid ":ref:`Position cost exponent `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:35 +msgid "Degree to which large position imbalances should be prioritised" +msgstr "" + +#: ../../features/draw-generation-bp.rst:36 +msgid "Any non-negative number (default: **4**)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:37 +msgid ":ref:`Assignment method `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:38 +msgid "Algorithm used to assign positions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:39 +msgid "*Hungarian*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:40 +msgid "**Hungarian with preshuffling**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:45 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation-bp.rst:47 +msgid "To try to achieve position balance, Tabbycat treats the allocation of teams to debates as an `assignment problem `_. That is, it computes the \"cost\" of assigning each team to each position in each debate, and finds an assignment of all teams to a position in a debate that minimises the total cost (the sum over all teams)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:50 +msgid "A simple example" +msgstr "" + +#: ../../features/draw-generation-bp.rst:52 +msgid "Here's a small example, to illustrate the idea. Say you have a tournament with 16 teams, and you're about to draw round 4. There are sixteen \"places\" in the draw: four positions in each of four rooms. Tabbycat calculates the \"cost\" of putting each team in each place, and puts them in a matrix, like this:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Room" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Top" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Second" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Third" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Bottom" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "Position" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +msgid "**A (8)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "16" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +msgid ":q:`0`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "∞" +msgstr "" + +#: ../../features/draw-generation-bp.rst:67 +msgid "**B (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:69 +msgid "**C (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +msgid "**D (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:95 +msgid "0" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:95 +msgid ":q:`16`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:73 +msgid "**E (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:75 +msgid "**F (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:77 +msgid "**G (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:79 +msgid "**H (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:81 +msgid "**I (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:83 +msgid "**J (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:85 +msgid "**K (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:87 +msgid "**L (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:89 +msgid "**M (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:91 +msgid "**N (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:93 +msgid "**O (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:95 +msgid "**P (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:98 +msgid "Each \"16\" is the cost of putting a team in a position it's seen once; each \"0\" is the cost of putting a team in the position it hasn't. (Details of how this is calculated are :ref:`below `.) For example, team A (on 8 points) has been in every position except CO. The ∞'s indicate places where the team isn't allowed to go, because the room isn't in their bracket. For example, the three teams on 6 points (D, E, F) can go in either the top or second room, because any of them can be the pullup team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:100 +msgid "The algorithm then chooses entries so that one is selected from each row and one is selected from each column, in a way that minimises the sum of the selected entries. In this case, the selected entries are highlighted in blue. For example, the top room comprises teams E (OG), B (OO), C (CG) and A (CO)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:102 +msgid "Sometimes, particularly in round 4, it simply isn't possible to \"satisfy\" everyone. For example, among the top eight teams, five haven't been in OO, but only two can be accommodated within those brackets. In this case, teams B and G got lucky; there are also many other draws that would have incurred the same total cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:104 +msgid "More generally, in most cases, there will be many optimal solutions. To randomise the selection among them, Tabbycat (under default settings) randomly permutes the rows and columns of the matrix before starting the assignment algorithm." +msgstr "" + +#: ../../features/draw-generation-bp.rst:107 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:112 +msgid "Pullup distribution" +msgstr "" + +#: ../../features/draw-generation-bp.rst:114 +msgid "If the number of teams in a bracket is not a multiple of four, it pulls up teams from the next bracket down. The pullup distribution then governs how those teams are paired into the upper bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:116 +msgid "The available options are as follows:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:120 +msgid "**Anywhere in bracket:** The pullup teams are treated as if they were any other team in their new bracket. For example, if there are 17 teams in a 10-point bracket, then the three 9-point teams that get pulled up may be paired anywhere in the 10-point bracket, independently of each other. Chance might put them in the same room, but more likely, they will not all be in the same room, so there will be multiple pullup rooms in the 10-point bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:122 +msgid "**All in the same room:** All of the pullup teams will be paired into the same room. This means that there will be at most one pullup room per bracket, effectively creating an \"intermediate bracket\"." +msgstr "" + +#: ../../features/draw-generation-bp.rst:124 +msgid "While it can be argued that the `All in the same room` setting is fairer, it is prohibited by the WUDC constitution. If your tournament follows WUDC rules, you cannot use this setting." +msgstr "" + +#: ../../features/draw-generation-bp.rst:126 +msgid "The teams that get pulled up aren't specifically chosen---they're just assigned as part of the algorithm described :ref:`above `, which optimises for position balance. Tabbycat doesn't support taking anything else into account when choosing pullup teams. (WUDC rules wouldn't allow it, either.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:131 +msgid "Position cost options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:133 +msgid "The `position cost function` is a function that indicates how \"bad\" it would be if a team were to be allocated a certain position (OG, OO, CG, CO) in a debate. When generating a draw, Tabbycat chooses from among the draws that minimise the sum of the position costs for each team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:135 +msgid "More formally:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:139 +msgid "A `position history` or just `history` :math:`\\mathbf{h}` is a 4-tuple where each element is the number of times a team has already been in the corresponding position. For example, :math:`\\mathbf{h} = (0, 2, 1, 1)` means that a team has been in OO twice, CG and CO once each, and hasn't been in OG." +msgstr "" + +#: ../../features/draw-generation-bp.rst:140 +msgid "A cost function :math:`C(\\mathbf{h},s)` is a function specifying how \"bad\" it would be if a team with position history :math:`\\mathbf{h}` were assigned the position :math:`s` in the next round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:142 +msgid "Tabbycat allows you to choose from a number of different **position cost functions**, as well as a **position cost exponent** :math:`\\beta`. Then, when allocating teams to debates, Tabbycat allocates teams to positions :math:`(s_t, t \\in\\mathcal{T})` to minimise" +msgstr "" + +#: ../../features/draw-generation-bp.rst:144 +msgid "\\sum_{t \\in \\mathcal{T}} [C(\\mathbf{h}_t,s_t)]^\\beta" +msgstr "" + +#: ../../features/draw-generation-bp.rst:148 +msgid "where :math:`\\mathcal{T}` is the set of all teams, :math:`\\mathbf{h}_t` is the position history of team :math:`t` and :math:`s_t` is the position to which team :math:`t` would be allocated." +msgstr "" + +#: ../../features/draw-generation-bp.rst:153 +msgid "Position cost exponent" +msgstr "" + +#: ../../features/draw-generation-bp.rst:155 +msgid "The **position cost exponent** :math:`\\beta` controls how different teams trade off with each other." +msgstr "" + +#: ../../features/draw-generation-bp.rst:159 +msgid "The **larger** :math:`\\beta` is, the more concerned it is with preventing *very* bad situations. That is, it will give more teams some slight unevenness in order to prevent one team from getting a `very` uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:161 +msgid "The **smaller** :math:`\\beta` is, the more concerned it is with preventing *any* unevenness. That is, it will try to keep more teams from being uneven *at all*, at the cost of possibly letting just one team get a very uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:163 +msgid "At the large extreme, as :math:`\\beta\\rightarrow\\infty`, it will do everything it can to minimise the plight of the *worst-off* team, and it won't care for *any* team other than the worst-off." +msgstr "" + +#: ../../features/draw-generation-bp.rst:165 +msgid "At the small extreme, as :math:`\\beta\\rightarrow 0`, it will do everything it can to minimise the number of teams with a non-optimal profile---but if it's impossible to protect a team from sub-optimality, it won't care *how* uneven the unlucky team gets." +msgstr "" + +#: ../../features/draw-generation-bp.rst:167 +msgid "The \"balanced\" approach would be :math:`\\beta = 1`, which just takes the cost function as-is. This doesn't mean that this is the best idea, however---you'd typically want to bias towards preventing very uneven histories a bit more. Most tournaments will probably want :math:`\\beta` to be somewhere between 2 and 5. (Note that :math:`\\beta` need not be an integer.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:172 +msgid "Position cost functions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:174 +msgid "Tabbycat allows you to choose between three position cost functions :math:`C(\\mathbf{h},s)`: **Simple**, **Rényi entropy** and **Population variance**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:176 +msgid "In the descriptions that follow, :math:`\\mathcal{S} = \\{\\texttt{OG}, \\texttt{OO}, \\texttt{CG}, \\texttt{CO}\\}`, the set of all BP positions." +msgstr "" + +#: ../../features/draw-generation-bp.rst:181 +msgid "The simple cost function :math:`C_\\textrm{simple}(\\mathbf{h},s)` returns the number of times the team has already been in position :math:`s`, less the number of times the team has been in its least frequent position. That is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:183 +msgid "C_\\mathrm{simple}(\\mathbf{h},s) = \\mathbf{h}[s] - \\min_{s' \\in\\mathcal{S}} \\mathbf{h}[s']" +msgstr "" + +#: ../../features/draw-generation-bp.rst:187 +msgid "where :math:`\\mathbf{h}[s]` is the element of :math:`\\mathbf{h}` corresponding to position :math:`s`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:190 +msgid "Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:192 +msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:194 +msgid "The Rényi entropy takes one parameter, known as its *order*, :math:`\\alpha`, which will be further discussed below." +msgstr "" + +#: ../../features/draw-generation-bp.rst:196 +msgid "More formally, the Rényi entropy cost function :math:`C_\\textrm{R\\'enyi}(\\mathbf{h},s)` is defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:198 +msgid "C_\\textrm{R\\'enyi}(\\mathbf{h},s) = n_\\mathbf{h} [2 - H_\\alpha(\\hat{p}_{\\mathbf{h},s})]" +msgstr "" + +#: ../../features/draw-generation-bp.rst:202 +msgid "where" +msgstr "" + +#: ../../features/draw-generation-bp.rst:206 +msgid ":math:`n_\\mathbf{h} = \\sum_{s'} \\mathbf{h}[s']` is the number of rounds the team has competed in so far." +msgstr "" + +#: ../../features/draw-generation-bp.rst:207 +msgid ":math:`\\hat{p}_{\\mathbf{h},s}` is the *normalised hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:209 +msgid "\\hat{p}_{\\mathbf{h},s}[s'] = \\begin{cases} \\frac{1}{n_\\mathbf{h} + 1} (\\mathbf{h}[s'] + 1), &\\text{ if } s = s', \\\\ \\frac{1}{n_\\mathbf{h} + 1} \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:216 +msgid "Note that :math:`\\hat{p}_{\\mathbf{h},s}` is a probability distribution (that is, its elements sum to 1)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:218 +msgid ":math:`H_\\alpha(\\cdot)` is the `Rényi entropy `_ of order :math:`\\alpha` of a probability distribution, defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:220 +msgid "H_\\alpha(p) = \\frac{1}{1-\\alpha} \\log_2 \\left( \\sum_{s\\in\\mathcal{S}} (p[s])^\\alpha \\right), \\qquad \\alpha \\ne 1." +msgstr "" + +#: ../../features/draw-generation-bp.rst:224 +msgid "In the special (limiting) case where :math:`\\alpha=1`, it reduces to the `Shannon entropy `_," +msgstr "" + +#: ../../features/draw-generation-bp.rst:226 +msgid "H_1(p) =-\\sum_{s\\in\\mathcal{S}} p[s] \\log_2 p[s]." +msgstr "" + +#: ../../features/draw-generation-bp.rst:230 +msgid "Note that for all :math:`\\alpha`, :math:`0 \\le H_\\alpha(p) \\le \\log_2(4) = 2` (since there are four positions in BP)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:234 +msgid "The **Rényi order** is the parameter :math:`\\alpha` above, and it controls *what it means to be \"even among positions\"* for a team. Note that \"evenness\" is not easily defined. After round 8, which position history is more even: (0, 2, 3, 3) or (1, 1, 1, 5)? The Rényi order allows us to tune this definition." +msgstr "" + +#: ../../features/draw-generation-bp.rst:238 +msgid "The **smaller** :math:`\\alpha` is, the more it cares that teams compete in every position *at least* once, favouring (1, 1, 1, 5) over (0, 2, 3, 3): it's worse to have never OGed, than it is to have COed five times." +msgstr "" + +#: ../../features/draw-generation-bp.rst:240 +msgid "The **larger** :math:`\\alpha` is, the more it cares that teams do not compete in *any* (one) position too many times, favouring (0, 2, 3, 3) over (1, 1, 1, 5): it's worse to have COed five times, than it is to have never OGed." +msgstr "" + +#: ../../features/draw-generation-bp.rst:242 +msgid "At the small extreme, as :math:`\\alpha\\rightarrow0`, it *only* counts how many positions a team has seen at least once, and doesn't care about the distribution among them so long as a team has been in each position once." +msgstr "" + +#: ../../features/draw-generation-bp.rst:244 +msgid "At the large extreme, as :math:`\\alpha\\rightarrow\\infty`, it *only* looks at how many times each team has seen its *most frequent* position, and tries to keep this number even among all teams." +msgstr "" + +#: ../../features/draw-generation-bp.rst:246 +msgid "The \"balanced\" approach would be :math:`\\alpha=1` (the `Shannon entropy `_), though of course it's arguable what \"balanced\" means. Tabbycat defaults to this value." +msgstr "" + +#: ../../features/draw-generation-bp.rst:248 +msgid "To give some intuition for the useful range: In round 9, a strict ordering by number of positions seen at least once occurs for approximately :math:`\\alpha < 0.742`. A strict ordering by number of times in the most frequent position occurs for :math:`\\alpha>3`. Changing :math:`\\alpha` outside the range :math:`[0.742, 3]` will still affect the relative (cardinal) weighting *between teams*, but will not affect the *ordinal* ranking of possible histories." +msgstr "" + +#: ../../features/draw-generation-bp.rst:250 +msgid "The purpose of weighting costs by :math:`n_\\mathbf{h}` is to prioritise those teams who have competed in every round over those who have competed in fewer rounds." +msgstr "" + +#: ../../features/draw-generation-bp.rst:256 +msgid "The **population variance** cost function is just the population variance of the history 4-tuple," +msgstr "" + +#: ../../features/draw-generation-bp.rst:258 +msgid "C_\\textrm{popvar}(\\mathbf{h},s) = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\left(\\mathbf{\\hat{h}}_s[s'] - \\mu_{\\mathbf{\\hat{h}}_s} \\right)^2," +msgstr "" + +#: ../../features/draw-generation-bp.rst:262 +msgid "where :math:`\\mathbf{\\hat{h}}_s` is the *hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:264 +msgid "\\mathbf{\\hat{h}}_s[s'] = \\begin{cases} \\mathbf{h}[s'] + 1, &\\text{ if } s = s', \\\\ \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:271 +msgid "and where :math:`\\mu_{\\mathbf{\\hat{h}}_s}` is the mean of :math:`\\mathbf{\\hat{h}}_s`," +msgstr "" + +#: ../../features/draw-generation-bp.rst:273 +msgid "\\mu_{\\mathbf{\\hat{h}}_s} = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\mathbf{\\hat{h}}_s[s']." +msgstr "" + +#: ../../features/draw-generation-bp.rst:277 +msgid "At the extremes, a team that has seen all positions evenly will have a population variance of zero, while a team that has seen just one position :math:`n` times will have a population variance of :math:`\\frac{3n^2}{16}`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:282 +msgid "Assignment method" +msgstr "" + +#: ../../features/draw-generation-bp.rst:284 +msgid "Tabbycat uses the `Hungarian algorithm `_ to solve the `assignment problem `_ of assigning teams to positions in debates. This can be run with or without preshuffling:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:288 +msgid "**Hungarian algorithm** just runs the Hungarian algorithm as-is, with no randomness. This probably isn't what you want." +msgstr "" + +#: ../../features/draw-generation-bp.rst:290 +msgid "**Hungarian algorithm with preshuffling** also runs the Hungarian algorithm on the position cost matrix, but shuffles the input so that the draw is randomised, subject to having optimal position allocations." +msgstr "" + +#: ../../features/draw-generation-bp.rst:292 +msgid "Preshuffling doesn't compromise the optimality of position allocations: It simply shuffles the order in which teams and debates appear in the input to the algorithm, by randomly permuting the rows and columns of the position cost matrix. The Hungarian algorithm still guarantees an optimal position assignment, according to the chosen position cost function." +msgstr "" + +#: ../../features/draw-generation-bp.rst:294 +msgid "Running the Hungarian algorithm *without* preshuffling has the side effect of grouping teams with similar speaker scores in to the same room, and is therefore prohibited by WUDC rules. Its inclusion as an option is mainly academic; most tournaments will not want to use it in practice." +msgstr "" + +#: ../../features/draw-generation-bp.rst:296 +msgid "No other assignment methods are currently supported. For example, Tabbycat can't run fold (high-low) or adjacent (high-high) pairing *within* brackets." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/draw-generation.po b/docs/locale/bg/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..2a9e5c880cf --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/draw-generation.po @@ -0,0 +1,436 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: bg_BG\n" + +#: ../../features/draw-generation.rst:5 +msgid "Draw Generation" +msgstr "" + +#: ../../features/draw-generation.rst:7 +msgid "The draw generator is quite flexible. You can specify a number of settings to suit different tournaments' rules." +msgstr "" + +#: ../../features/draw-generation.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation.rst:11 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `." +msgstr "" + +#: ../../features/draw-generation.rst:18 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation.rst:19 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation.rst:20 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation.rst:22 +msgid ":ref:`Odd bracket resolution method `" +msgstr "" + +#: ../../features/draw-generation.rst:23 +msgid "How to resolve odd brackets" +msgstr "" + +#: ../../features/draw-generation.rst:24 +msgid "Pull up from top" +msgstr "" + +#: ../../features/draw-generation.rst:25 +msgid "Pull up from bottom" +msgstr "" + +#: ../../features/draw-generation.rst:26 +msgid "Pull up from middle" +msgstr "" + +#: ../../features/draw-generation.rst:27 +msgid "Pull up at random" +msgstr "" + +#: ../../features/draw-generation.rst:29 +msgid "If sides are `Random` or `Balance`:" +msgstr "" + +#: ../../features/draw-generation.rst:31 +msgid "Intermediate" +msgstr "" + +#: ../../features/draw-generation.rst:32 +msgid "Intermediate with bubble-up-bubble-down" +msgstr "" + +#: ../../features/draw-generation.rst:34 +msgid "If sides are `Pre-allocated`:" +msgstr "" + +#: ../../features/draw-generation.rst:36 +msgid "Intermediate 1" +msgstr "" + +#: ../../features/draw-generation.rst:37 +msgid "Intermediate 2" +msgstr "" + +#: ../../features/draw-generation.rst:39 +msgid ":ref:`Side allocations method `" +msgstr "" + +#: ../../features/draw-generation.rst:40 +msgid "How to allocate aff/neg" +msgstr "" + +#: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 +msgid "Random" +msgstr "" + +#: ../../features/draw-generation.rst:42 +msgid "Balance" +msgstr "" + +#: ../../features/draw-generation.rst:43 +msgid "Pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:44 +msgid "Manual ballot" +msgstr "" + +#: ../../features/draw-generation.rst:46 +msgid ":ref:`Pairing method `" +msgstr "" + +#: ../../features/draw-generation.rst:47 +msgid "How to pair teams within brackets" +msgstr "" + +#: ../../features/draw-generation.rst:48 +msgid "Slide" +msgstr "" + +#: ../../features/draw-generation.rst:49 +msgid "Fold" +msgstr "" + +#: ../../features/draw-generation.rst:50 +msgid "Adjacent" +msgstr "" + +#: ../../features/draw-generation.rst:53 +msgid ":ref:`Conflict avoidance method `" +msgstr "" + +#: ../../features/draw-generation.rst:54 +msgid "How to avoid history/institution conflicts" +msgstr "" + +#: ../../features/draw-generation.rst:55 +msgid "Off" +msgstr "" + +#: ../../features/draw-generation.rst:56 +msgid "One-up-one-down" +msgstr "" + +#: ../../features/draw-generation.rst:58 +msgid ":ref:`Pullup restriction `" +msgstr "" + +#: ../../features/draw-generation.rst:59 +msgid "Whether and how to restrict pullups" +msgstr "" + +#: ../../features/draw-generation.rst:60 +msgid "No restriction" +msgstr "" + +#: ../../features/draw-generation.rst:61 +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../features/draw-generation.rst:62 +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: ../../features/draw-generation.rst:64 +msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." +msgstr "" + +#: ../../features/draw-generation.rst:67 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation.rst:68 +msgid "When generating a power-paired draw, Tabbycat goes through five steps:" +msgstr "" + +#: ../../features/draw-generation.rst:70 +msgid "First, it divides teams into \"raw brackets\", grouping them by the number of wins." +msgstr "" + +#: ../../features/draw-generation.rst:71 +msgid "Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called \"pulling up\" teams." +msgstr "" + +#: ../../features/draw-generation.rst:72 +msgid "Third, within each bracket, it pairs teams into debates using the pairing method." +msgstr "" + +#: ../../features/draw-generation.rst:73 +msgid "Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts." +msgstr "" + +#: ../../features/draw-generation.rst:74 +msgid "Finally, it assigns sides to teams in each debate." +msgstr "" + +#: ../../features/draw-generation.rst:76 +msgid "For each of these steps except the first, Tabbycat allows you to choose between a number of different methods." +msgstr "" + +#: ../../features/draw-generation.rst:80 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation.rst:85 +msgid "Odd bracket resolution" +msgstr "" + +#: ../../features/draw-generation.rst:86 +msgid "The **draw odd brackets** option specifies what you do when a bracket has an odd number of teams. (Obviously you have to do something, otherwise you can't pair off teams within the bracket.) There are two groups of methods: pull-up and intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:90 +msgid "**Pull-up methods** take one or more teams from the next bracket down, and move them into the odd bracket to fill the bracket." +msgstr "" + +#: ../../features/draw-generation.rst:92 +msgid "**Intermediate brackets** take the excess teams from the odd bracket and move them down into a new bracket, which sits between the odd bracket and the next one down (the \"intermediate bracket\"). It then takes teams from the next bracket down and moves them up to fill the new intermediate bracket." +msgstr "" + +#: ../../features/draw-generation.rst:94 +msgid "The exact mechanics depend on whether or not sides are pre-allocated." +msgstr "" + +#: ../../features/draw-generation.rst:97 +msgid "When sides are not pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:101 +msgid "**Pull-up methods:** Take a team from the next bracket down, and add them to the odd bracket to form an even bracket. You can choose to pull up the top team from the next bracket, or the bottom team, or the middle team, or a randomly chosen team. (If you pull up the middle team, and the bracket has an even number of teams, then it will choose randomly from the two middle teams.)" +msgstr "" + +#: ../../features/draw-generation.rst:103 +msgid "**Intermediate brackets:** Take the bottom team from the odd bracket and match them against the top team from the next bracket. An intermediate bracket always has two teams." +msgstr "" + +#: ../../features/draw-generation.rst:105 +msgid "If you're using conflict avoidance and intermediate brackets, you will probably want to use **Intermediate with bubble-up-bubble-down** instead. This uses the \"bubble-up-bubble-down\" rule to swap teams out of an intermediate bracket if there is a history or institution conflict. This is defined in the Australs constitution and is analogous to the \"one-up-one-down\" rule." +msgstr "" + +#: ../../features/draw-generation.rst:107 +msgid "Using `Intermediate` with `One-up-one-down` does **not** imply `Intermediate with bubble-up-bubble-down`. You must enable `Intermediate with bubble-up-bubble-down` specifically." +msgstr "" + +#: ../../features/draw-generation.rst:110 +msgid "When sides are pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:111 +msgid "When sides are pre-allocated, an \"odd bracket\" is one that has an uneven number of affirmative and negative teams. (So odd brackets can have an even number of teams, *e.g.* 4 affs and 2 negs.)" +msgstr "" + +#: ../../features/draw-generation.rst:115 +msgid "**Pull-up methods:** Take as many teams from the next bracket down as necessary to fill the bracket. If there aren't enough teams in the next bracket down, take teams from the bracket after that, and so on, until the (original) odd bracket is filled. Higher brackets are always filled first. You can choose to pull up the top teams from the next bracket, the bottom teams, or a random selection of teams." +msgstr "" + +#: ../../features/draw-generation.rst:117 +msgid "**Intermediate brackets:** Take the unpaired teams in a bracket, and move them down to a new intermediate bracket. Then, take the number of teams necessary from the opposite side, from the next bracket down, to fill the next bracket." +msgstr "" + +#: ../../features/draw-generation.rst:119 +msgid "**Intermediate 1** and **Intermediate 2** differ only in what happens if there aren't enough teams in the next bracket to fill the intermediate bracket. In **Intermediate 1**, it will just take teams from the bracket after that, and so on, until the intermediate bracket is filled. In **Intermediate 2**, it will split the intermediate bracket: the teams that can be paired with the next bracket form the first intermediate bracket, and then the teams that aren't form a new (unfilled) intermediate bracket, to be filled from teams from the bracket after that. This keeps going, splitting into as many intermediate brackets as necessary, until all excess teams from the original odd bracket are paired." +msgstr "" + +#: ../../features/draw-generation.rst:124 +msgid "Side allocations" +msgstr "" + +#: ../../features/draw-generation.rst:125 +msgid "There are four methods:" +msgstr "" + +#: ../../features/draw-generation.rst:129 +msgid "**Random** allocates randomly. Some tournaments might like this, but most will probably want to use Balance, because Random doesn't guarantee that a team won't be (say) affirming the entire tournament." +msgstr "" + +#: ../../features/draw-generation.rst:130 +msgid "**Balance** assigns the team that has affirmed less so far the affirmative side (and, therefore, the team that has negated less the negative side). If both teams have affirmed the same number of times, it assigns sides randomly." +msgstr "" + +#: ../../features/draw-generation.rst:131 +msgid "**Preallocated** is used for pre-allocated sides. If used, you must enter data for pre-allocated sides into the database, as specified below." +msgstr "" + +#: ../../features/draw-generation.rst:132 +msgid "**Manually enter from ballot** is used for tournaments where the sides of the teams involved are not assigned in advance, but are instead determined by the teams themselves" +msgstr "" + +#: ../../features/draw-generation.rst:135 +msgid "Pre-allocated sides" +msgstr "" + +#: ../../features/draw-generation.rst:136 +msgid "There isn't currently any way to edit side allocations from the front end. To do so from the back end, you need to create one ``TeamPositionAllocation`` entry for each team in each round. All teams must have an allocation for every round. There are a few ways to do this, take your pick:" +msgstr "" + +#: ../../features/draw-generation.rst:140 +msgid "If you're using the :ref:`importtournament command `, it reads sides from the file sides.csv." +msgstr "" + +#: ../../features/draw-generation.rst:141 +msgid "You can do this from the Django admin interface (under Setup > Edit Database) by going to the relevant team and adding a **team position allocation** entry. That is:" +msgstr "" + +#: ../../features/draw-generation.rst:143 +msgid "Click **Admin** on the bottom right of any page after logging into an account with :ref:`superuser access `." +msgstr "" + +#: ../../features/draw-generation.rst:144 +msgid "Next to **Teams**, click **Change**." +msgstr "" + +#: ../../features/draw-generation.rst:145 +msgid "Click on the name of the team you want to edit side allocations for." +msgstr "" + +#: ../../features/draw-generation.rst:146 +msgid "Add or edit the entry or entries in the **Team position allocations** table at the bottom." +msgstr "" + +#: ../../features/draw-generation.rst:148 +msgid "You can also do this by writing a script that creates ``TeamPositionAllocation`` objects and saves them. Have a look at `draw/management/commands/generatesideallocations.py `_ for an example." +msgstr "" + +#: ../../features/draw-generation.rst:153 +msgid "Pairing method" +msgstr "" + +#: ../../features/draw-generation.rst:154 +msgid "It's easiest to describe these by example, using a ten-team bracket:" +msgstr "" + +#: ../../features/draw-generation.rst:156 +msgid "**Fold**: 1 vs 10, 2 vs 9, 3 vs 8, 4 vs 7, 5 vs 6. (Also known as high-low pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:157 +msgid "**Slide**: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10." +msgstr "" + +#: ../../features/draw-generation.rst:158 +msgid "**Adjacent**: 1 vs 2, 3 vs 4, 5 vs 6, 7 vs 8, 9 vs 10. (Also known as high-high pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:159 +msgid "**Random**: paired at random within bracket." +msgstr "" + +#: ../../features/draw-generation.rst:161 +msgid "Teams are always paired within their brackets, after resolving odd brackets." +msgstr "" + +#: ../../features/draw-generation.rst:166 +msgid "Conflict avoidance method" +msgstr "" + +#: ../../features/draw-generation.rst:167 +msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." +msgstr "" + +#: ../../features/draw-generation.rst:169 +msgid "You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented." +msgstr "" + +#: ../../features/draw-generation.rst:171 +msgid "**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict:" +msgstr "" + +#: ../../features/draw-generation.rst:173 +msgid "It tries to swap teams with the debate \"one up\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:174 +msgid "If that doesn't work, it tries to swap teams with the debate \"one down\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:175 +msgid "If neither of those works, it accepts the original conflicted debate." +msgstr "" + +#: ../../features/draw-generation.rst:177 +msgid "It's a bit more complicated than that, for two reasons:" +msgstr "" + +#: ../../features/draw-generation.rst:181 +msgid "History conflicts are prioritised over (*i.e.*, \"worse than\") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa." +msgstr "" + +#: ../../features/draw-generation.rst:182 +msgid "Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could \"one down\" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps." +msgstr "" + +#: ../../features/draw-generation.rst:187 +msgid "Pullup restriction" +msgstr "" + +#: ../../features/draw-generation.rst:188 +msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" +msgstr "" + +#: ../../features/draw-generation.rst:192 +msgid "You can **choose from teams who have been pulled up the fewest times so far**, that is, in rounds before the current round. Most of the time, this is equivalent to saying that a team cannot be pulled up more than once. But if *all* teams in a bracket have been pulled up at least once, it then chooses from among teams who have been pulled up *only* once (if any), and so on." +msgstr "" + +#: ../../features/draw-generation.rst:194 +msgid "You can **choose from teams with the lowest draw strength so far**, by **wins** or **speaks**." +msgstr "" + +#: ../../features/draw-generation.rst:196 +msgid "If you choose speaks, it's unlikely that two teams will have the same draw strength by speaks, so most of the time this will just choose the team in the lower bracket that's had the easiest draw so far (as measured by their opponents' speaker scores)." +msgstr "" + +#: ../../features/draw-generation.rst:198 +msgid "Pullup restrictions only apply when the :ref:`odd bracket resolution method ` is a pullup method. They have no effect on intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:201 +msgid "What do I do if the draw looks wrong?" +msgstr "" + +#: ../../features/draw-generation.rst:203 +msgid "You can edit match-ups directly from the draw page. Functionally, you can do anything you want. Of course, operationally, you should only edit the draw when you *know* that the draw algorithm got something wrong. If you need to do this, even just once, please file a bug report by creating a new issue on `our issues page on GitHub `_." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/notifications.po b/docs/locale/bg/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..dedc6f469fe --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/notifications.po @@ -0,0 +1,257 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: bg_BG\n" + +#: ../../features/notifications.rst:3 +msgid "Sending Notifications" +msgstr "" + +#: ../../features/notifications.rst:5 +msgid "Tabbycat offers integrations with email delivery services to send notifications to participants on certain enumerated events. For sending these emails, `SendGrid `_ is readily available as an add-on in Heroku. It may be necessary to install the `SendGrid add-on `_ manually. Other integrations may also be used in its place by changing the relevant environment variables." +msgstr "" + +#: ../../features/notifications.rst:8 +msgid "Events" +msgstr "" + +#: ../../features/notifications.rst:10 +msgid "Tabbycat includes a number of templated notifications that can be sent in various times. Variables which are included between curly brackets which are substituted for personalized information passed by email. Links to email will redirect to a page where the message can be changed and the participants selected." +msgstr "" + +#: ../../features/notifications.rst:12 +msgid "All emails have the ``{{ USER }}`` and ``{{ TOURN }}`` variables to indicate who the email is sent to, and the tournament it relates to. The \"From\" in the emails will also be the tournament's name." +msgstr "" + +#: ../../features/notifications.rst:17 +msgid "Email content and description" +msgstr "" + +#: ../../features/notifications.rst:18 +msgid "Variables" +msgstr "" + +#: ../../features/notifications.rst:20 +msgid "**Adjudicator draw notification**" +msgstr "" + +#: ../../features/notifications.rst:22 +msgid "Email to adjudicators indicating their room assignment." +msgstr "" + +#: ../../features/notifications.rst:24 ../../features/notifications.rst:36 +#: ../../features/notifications.rst:74 +msgid "Available through the admin draw page." +msgstr "" + +#: ../../features/notifications.rst:25 ../../features/notifications.rst:37 +msgid "``{{ ROUND }}``: The round name" +msgstr "" + +#: ../../features/notifications.rst:26 ../../features/notifications.rst:38 +msgid "``{{ VENUE }}``: The venue of the assigned debate" +msgstr "" + +#: ../../features/notifications.rst:27 ../../features/notifications.rst:39 +msgid "``{{ PANEL }}``: A list of all the adjudicators assigned to the venue (with positions)" +msgstr "" + +#: ../../features/notifications.rst:28 ../../features/notifications.rst:40 +msgid "``{{ DRAW }}``: A list of the team matchup with their roles" +msgstr "" + +#: ../../features/notifications.rst:29 +msgid "``{{ POSITION }}``: The target adjudicator's position in the panel" +msgstr "" + +#: ../../features/notifications.rst:30 +msgid "``{{ URL }}``: A link to the adjudicator's private URL page" +msgstr "" + +#: ../../features/notifications.rst:32 +msgid "**Team draw notification**" +msgstr "" + +#: ../../features/notifications.rst:34 +msgid "Email to teams indicating their pairing." +msgstr "" + +#: ../../features/notifications.rst:41 +msgid "``{{ TEAM }}``: The team's code or short name" +msgstr "" + +#: ../../features/notifications.rst:42 +msgid "``{{ SIDE }}``: The team's side" +msgstr "" + +#: ../../features/notifications.rst:44 +msgid "**Private URL distribution**" +msgstr "" + +#: ../../features/notifications.rst:46 +msgid "Email to participants giving them their private URL for electronic forms." +msgstr "" + +#: ../../features/notifications.rst:48 +msgid "Available through the private URLs page." +msgstr "" + +#: ../../features/notifications.rst:49 +msgid "``{{ URL }}``: The personalized URL" +msgstr "" + +#: ../../features/notifications.rst:50 +msgid "``{{ KEY }}``: The private code in the URL" +msgstr "" + +#: ../../features/notifications.rst:52 +msgid "**Ballot submission receipt**" +msgstr "" + +#: ../../features/notifications.rst:54 +msgid "Email to adjudicators of their ballot after tabroom confirmation." +msgstr "" + +#: ../../features/notifications.rst:56 +msgid "Sent automatically when their ballot's result status becomes confirmed, if enabled in the \"Notifications\" section of the tournament options." +msgstr "" + +#: ../../features/notifications.rst:58 +msgid "``{{ DEBATE }}``: The name (with round & venue) of the relevent debate" +msgstr "" + +#: ../../features/notifications.rst:59 +msgid "``{{ SCORES }}``: The submitted ballot with speaker scores ands team names" +msgstr "" + +#: ../../features/notifications.rst:61 +msgid "**Current team standings**" +msgstr "" + +#: ../../features/notifications.rst:63 +msgid "Email to speakers with their point total." +msgstr "" + +#: ../../features/notifications.rst:65 +msgid "Available through the \"Confirm Round Completion\" page." +msgstr "" + +#: ../../features/notifications.rst:66 +msgid "``{{ URL }}``: The URL of the team standings page (if public)" +msgstr "" + +#: ../../features/notifications.rst:67 +msgid "``{{ TEAM }}``: The team's name" +msgstr "" + +#: ../../features/notifications.rst:68 +msgid "``{{ POINTS }}``: The team's number of points" +msgstr "" + +#: ../../features/notifications.rst:70 +msgid "**Motion release**" +msgstr "" + +#: ../../features/notifications.rst:72 +msgid "Email to speakers with the motion(s) of the current round." +msgstr "" + +#: ../../features/notifications.rst:75 +msgid "``{{ ROUND }}``: The name of the round" +msgstr "" + +#: ../../features/notifications.rst:76 +msgid "``{{ MOTIONS }}``: A list of the motions released" +msgstr "" + +#: ../../features/notifications.rst:78 +msgid "**Team information**" +msgstr "" + +#: ../../features/notifications.rst:80 +msgid "Email to speakers with information pertaining to their team, such as eligibility and codes." +msgstr "" + +#: ../../features/notifications.rst:82 +msgid "Available through the Participants page." +msgstr "" + +#: ../../features/notifications.rst:83 +msgid "``{{ SHORT }}``: The team's short name" +msgstr "" + +#: ../../features/notifications.rst:84 +msgid "``{{ LONG }}``: The team's long name" +msgstr "" + +#: ../../features/notifications.rst:85 +msgid "``{{ CODE }}``: The team's code name" +msgstr "" + +#: ../../features/notifications.rst:86 +msgid "``{{ EMOJI }}``: The team's assigned emoji" +msgstr "" + +#: ../../features/notifications.rst:87 +msgid "``{{ DIVISION }}``: The team's division if applicable" +msgstr "" + +#: ../../features/notifications.rst:88 +msgid "``{{ BREAK }}``: Break categories which the team is a member" +msgstr "" + +#: ../../features/notifications.rst:89 +msgid "``{{ SPEAKERS }}``: A list of the speakers in the team" +msgstr "" + +#: ../../features/notifications.rst:90 +msgid "``{{ INSTITUTION }}``: The team's affiliation" +msgstr "" + +#: ../../features/notifications.rst:93 +msgid "Event Webhook" +msgstr "" + +#: ../../features/notifications.rst:95 +msgid "With SendGrid, the status of sent emails can be sent to Tabbycat to be displayed, giving an indication of failures and whether participants have opened the messages. To activate this feature, setup must be done both in your SendGrid account and in Tabbycat." +msgstr "" + +#: ../../features/notifications.rst:97 +msgid "Set a secret key in the Email section of the tournament's preferences. This key must be alphanumeric without any spaces." +msgstr "" + +#: ../../features/notifications.rst:98 +msgid "Copy the \"web-hook\" link presented in a box at the top of the \"email participants\" page." +msgstr "" + +#: ../../features/notifications.rst:99 +msgid "Go to https://app.sendgrid.com/settings/mail_settings and select \"Event Notifications\"" +msgstr "" + +#: ../../features/notifications.rst:100 +msgid "Enable the feature and paste the Tabbycat URL under \"HTTP POST URL\"." +msgstr "" + +#: ../../features/notifications.rst:101 +msgid "Select the notifications to keep track (or all of them)." +msgstr "" + +#: ../../features/notifications.rst:103 +msgid "Each email and change in status sent to Tabbycat will add a row to the database. If the number of rows is limited, as is for free Heroku apps, enabling the webhook may use up a significant number of rows. Be selective in the events to keep track." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/preformed-panels.po b/docs/locale/bg/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..f0542a72a9b --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/preformed-panels.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: bg_BG\n" + +#: ../../features/preformed-panels.rst:5 +msgid "Preformed Panels" +msgstr "" + +#: ../../features/preformed-panels.rst:7 +msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." +msgstr "" + +#: ../../features/preformed-panels.rst:9 +msgid "Tabbycat's implementation of preformed panels is more powerful, but less simple, than many others. The chief difference is that our workflow does not simply transpose a linear set of preformed panels atop a draw. Instead we employ Tabbycat's existing allocation tools, primarily the notion of a debate's *priority*, to allow for a non-linear matching of preformed panels that avoids adjudicator conflicts and better adapts to a given draw — particularly when the most important debates do not strictly follow the highest debate brackets." +msgstr "" + +#: ../../features/preformed-panels.rst:11 +msgid "The central concept is that each preformed panel has a priority value. When applying preformed panels to a draw, the allocator ties to best match the priority value of each preformed panel to the priority of each actual debate. This is similar to how Tabbycat's normal auto-allocator matches the strength of each panel (as measured by adjudicators' ratings) to the priority of each debate." +msgstr "" + +#: ../../features/preformed-panels.rst:14 +msgid "Step 1: Create preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:16 +msgid "You can find the preformed panels section either" +msgstr "" + +#: ../../features/preformed-panels.rst:18 +msgid "under the **Setup** menu (for all rounds), or" +msgstr "" + +#: ../../features/preformed-panels.rst:19 +msgid "on the **Draw** page (for the current and next round)." +msgstr "" + +#: ../../features/preformed-panels.rst:21 +msgid "Initially, the preformed panels page will have no panels. Click the **Create Panels** button in the top left to make some. The panels it creates are based upon a projection of that round's general results using the results of the previous round. As a result, each preformed panel will have a *bracket range*, the lowest and highest brackets that debate might be in, and a *liveness range*, the maximum number of teams that could be live in that room." +msgstr "" + +#: ../../features/preformed-panels.rst:25 +msgid "Like the normal adjudicator allocation interface, the preformed panel interfaces will indicate when an adjudicator has not been marked as available. If using preformed panels, you may want to set adjudicator availability earlier than you would otherwise." +msgstr "" + +#: ../../features/preformed-panels.rst:27 +msgid "Liveness in the anticipated draw only pertains to the open category (the first break category that is marked as a \"general\" category). It's not possible to meaningfully predict where teams open-dead but live in other categories will end up." +msgstr "" + +#: ../../features/preformed-panels.rst:30 +msgid "Step 2: Assign priorities to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:32 +msgid "By default the priority slider for all preformed panels is in the neutral position. You can use the \"Prioritise\" button in the top left to assign priority values automatically, based upon their brackets or liveness. Before or after this step you can alter the priorities as usual — even after you have allocated adjudicators." +msgstr "" + +#: ../../features/preformed-panels.rst:34 +msgid "It's important to remember to assign a range of priorities to the panels. Without distinct priority values, the application of your preformed panels to the actual draw will be essentially random. If allocating priorities manually, it is a good idea to keep a relatively even distribution of priorities — use the range!" +msgstr "" + +#: ../../features/preformed-panels.rst:36 +msgid "In Round 1, each debate has a liveness and bracket of 0. If you are using preformed panels in this instance you may need to manually-differentiate their priorities." +msgstr "" + +#: ../../features/preformed-panels.rst:39 +msgid "Step 3: Allocate adjudicators to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:43 +msgid "Now that your panels have a priority, you can begin allocating adjudicators. You can do this manually, but do note that the normal auto-allocator for adjudicators also works in this context (the \"Allocate\" button). Even if you want to tweak your panels extensively, the auto-allocator can provide a good first-pass collection of panels, because it will give stronger adjudicators to the panels that you have marked as important." +msgstr "" + +#: ../../features/preformed-panels.rst:45 +msgid "The created panels all auto-save, so you can leave the page and return to pick up where you left. Like the main allocation interface, changes should appear 'live' across different computers and the sharding system is available to divide up each person's view of the draw." +msgstr "" + +#: ../../features/preformed-panels.rst:48 +msgid "Step 4: Generate the draw" +msgstr "" + +#: ../../features/preformed-panels.rst:50 +msgid "Proceed with the creation of the draw as usual. Open up the normal adjudicator allocation page for that round." +msgstr "" + +#: ../../features/preformed-panels.rst:53 +msgid "Step 5: Assign priorities to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:55 +msgid "When allocating preformed panels, the priority levels are what connects the preformed panels to the actual debates. It is thus crucial that you assign priorities to the debates in the actual draw using automatic prioritisation or the manual sliders. Because the automatic prioritiser does not employ the highest priority value, it is worth having a look at the draw and seeing if any debates justify this before proceeding." +msgstr "" + +#: ../../features/preformed-panels.rst:58 +msgid "Step 6: Allocate preformed panels to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:60 +msgid "To allocate preformed panels to your debates, click the normal \"Allocate\" button and then select the *Preformed Panels* option." +msgstr "" + +#: ../../features/preformed-panels.rst:64 +msgid "This will then allocate the preformed panels to debates." +msgstr "" + +#: ../../features/preformed-panels.rst:68 +msgid "You can the edit the allocation as normal. If needed, you can redo the allocation of the preformed panels at any point." +msgstr "" + +#: ../../features/preformed-panels.rst:71 +msgid "How does the allocator work?" +msgstr "" + +#: ../../features/preformed-panels.rst:73 +msgid "Roughly speaking, the allocator tries to match panel priorities to debate priorities, while avoiding conflicts. It'll mostly try to swap panels within priority levels in order to avoid conflicts. If there aren't exactly as many panels at each priority level as there are debates, it'll do its best to match what it can." +msgstr "" + +#: ../../features/preformed-panels.rst:75 +msgid "More formally, it treats the allocation of preformed panels to debates as an `assignment problem `_, with a cost of assigning each panel :math:`p` to each debate :math:`d` given by" +msgstr "" + +#: ../../features/preformed-panels.rst:77 +msgid "C(p,d) = w_\\mathrm{mism} [\\mathrm{importance}(p) - \\mathrm{importance(d)}]^2 + w_\\mathrm{conf} \\, \\mathrm{conflicts}(p,d) + w_\\mathrm{hist} \\, \\mathrm{history}(p,d)" +msgstr "" + +#: ../../features/preformed-panels.rst:81 +msgid "where" +msgstr "" + +#: ../../features/preformed-panels.rst:83 +msgid ":math:`w_\\mathrm{mism}` is the \"Importance mismatch penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:84 +msgid ":math:`w_\\mathrm{hist}` is the \"Adjudicator conflict penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:85 +msgid ":math:`w_\\mathrm{conf}` is the \"Adjudicator history penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:86 +msgid ":math:`\\mathrm{importance}(p)` is the importance of panel :math:`p`," +msgstr "" + +#: ../../features/preformed-panels.rst:87 +msgid ":math:`\\mathrm{importance}(d)` is the importance of debate :math:`d`," +msgstr "" + +#: ../../features/preformed-panels.rst:88 +msgid ":math:`\\mathrm{conflicts}(p,d)` is the number of adjudicator-team conflicts between panel :math:`p` and debate :math:`d`, and" +msgstr "" + +#: ../../features/preformed-panels.rst:89 +msgid ":math:`\\mathrm{history}(p,d)` is the number of adjudicators and teams who have seen each other between panel :math:`p` and debate :math:`d`." +msgstr "" + +#: ../../features/preformed-panels.rst:91 +msgid "It then uses the `Hungarian algorithm `_ to find the assignment of panels to debates that minimizes the total cost of the pairings." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/printing.po b/docs/locale/bg/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..92d21b8cd8e --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/printing.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: bg_BG\n" + +#: ../../features/printing.rst:3 +msgid "Printing Ballots and Feedback" +msgstr "" + +#: ../../features/printing.rst:5 +msgid "Tabbycat offers the ability to print scoresheets and feedback sheets on a per-round basis. This means that each scoresheet is customised to match the draw, and so will display:" +msgstr "" + +#: ../../features/printing.rst:7 +msgid "The motion or possible motions that could have been chosen from" +msgstr "" + +#: ../../features/printing.rst:8 +msgid "The teams, and a list of speakers for each team" +msgstr "" + +#: ../../features/printing.rst:9 +msgid "The room number, and name of the adjudicators present" +msgstr "" + +#: ../../features/printing.rst:11 +msgid "Feedback sheets will also be customised in this manner; displaying:" +msgstr "" + +#: ../../features/printing.rst:13 +msgid "A 'from' source. Sheet will be printed for each possible piece of feedback in that room: ie adjudicators will each get a sheet for their panellists and trainees while teams and panellists will get sheets for the chair." +msgstr "" + +#: ../../features/printing.rst:14 +msgid "The specific questions you established when configuring the :ref:`adjudicator feedback questions `" +msgstr "" + +#: ../../features/printing.rst:15 +msgid "The room number" +msgstr "" + +#: ../../features/printing.rst:17 +msgid "To print the ballots for each round, you would go to the **Display** page for that round, the click one of the two relevant print links. This opens a new window. In each window, you then use your browser's print function (CTRL-P). In the resulting print interface (from your browser) you'll want to turn background graphics on, header/footers off, and set the layout to portrait (feedback sheets) or landscape (score sheets)." +msgstr "" + +#: ../../features/printing.rst:19 +msgid "Typically you'd save these to PDF for printing, although you should be able to print straight from this dialogue box." +msgstr "" + +#: ../../features/printing.rst:21 +msgid "Printing works best in Safari and Firefox; use those if possible." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/standings-rules.po b/docs/locale/bg/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..935b3042ab3 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/standings-rules.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: bg_BG\n" + +#: ../../features/standings-rules.rst:5 +msgid "Standings Rules" +msgstr "" + +#: ../../features/standings-rules.rst:8 +msgid "Team standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:10 +msgid "In Tabbycat, you can choose how teams are ranked in the team standings. For example, at Australs, teams are ranked first on the number of wins, and second on their total speaker score. The setting that specifies how teams are ranked is called the **team standings precedence**. The team standings precedence is used:" +msgstr "" + +#: ../../features/standings-rules.rst:15 +msgid "When displaying the team tab," +msgstr "" + +#: ../../features/standings-rules.rst:16 +msgid "Whenever a power-paired draw is generated, and" +msgstr "" + +#: ../../features/standings-rules.rst:17 +msgid "When computing which teams are in the break." +msgstr "" + +#: ../../features/standings-rules.rst:19 +msgid "When you choose the team standings precedence, you choose from a list of *metrics*. Then, in the standings, teams will be sorted first by the first metric, then by the second metric, and so on. You must choose at least one metric, and you can choose up to eight. Teams tied on all metrics will have the same rank." +msgstr "" + +#: ../../features/standings-rules.rst:25 +msgid "If you like, you can also choose **team standings extra metrics**, which are metrics that will be shown in the team standings, but not used to rank teams." +msgstr "" + +#: ../../features/standings-rules.rst:33 ../../features/standings-rules.rst:132 +msgid "Metric" +msgstr "" + +#: ../../features/standings-rules.rst:34 ../../features/standings-rules.rst:133 +msgid "Description" +msgstr "" + +#: ../../features/standings-rules.rst:36 +msgid "Wins" +msgstr "" + +#: ../../features/standings-rules.rst:37 +msgid "How many debates the team has won." +msgstr "" + +#: ../../features/standings-rules.rst:39 +msgid "Points" +msgstr "" + +#: ../../features/standings-rules.rst:40 +msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." +msgstr "" + +#: ../../features/standings-rules.rst:44 +msgid "Total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:45 +msgid "The sum of all speaker scores attained in all debates." +msgstr "" + +#: ../../features/standings-rules.rst:47 +msgid "Average total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:48 ../../features/standings-rules.rst:157 +msgid "The average total speaker score over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:51 +msgid "Average individual speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:52 +msgid "The total substantive speaker score, over all debates the team has had and the number of speakers. Provides an equivalent metric to average total speaker score in no-reply formats, but within the substantive speech scoring range." +msgstr "" + +#: ../../features/standings-rules.rst:57 +msgid "Speaker score standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:58 +msgid "The standard deviation of total speaker scores over all debates the team has had, not counting debates where they or their opponents forfeited. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:63 +msgid "Sum of margins" +msgstr "" + +#: ../../features/standings-rules.rst:64 +msgid "The sum of all margins. Wins are positive, losses are negative." +msgstr "" + +#: ../../features/standings-rules.rst:66 +msgid "Average margin" +msgstr "" + +#: ../../features/standings-rules.rst:67 +msgid "The average margin over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:70 +msgid "Draw strength by wins" +msgstr "" + +#: ../../features/standings-rules.rst:71 +msgid "The sum of the number of wins of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:73 +msgid "This is also known in some circuits as *win points*, *opponent wins* or *opponent strength*." +msgstr "" + +#: ../../features/standings-rules.rst:76 +msgid "Draw strength by speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:77 +msgid "The sum of speaker scores of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:79 +msgid "Votes/ballots carried" +msgstr "" + +#: ../../features/standings-rules.rst:80 +msgid "The number of adjudicators that gave this team a win across all of their debates. Also known as the number of *ballots* or *judges* a team has." +msgstr "" + +#: ../../features/standings-rules.rst:83 +msgid "In cases where the panel is smaller or larger than 3, this number is normalised to be out of 3. For example, if a panel of five splits 3--2, then the winning team is recorded as gaining 1.8 votes, and the losing team is recorded as gaining 1.2. This also means that solo adjudicators are always worth three votes." +msgstr "" + +#: ../../features/standings-rules.rst:89 +msgid "Number of firsts" +msgstr "" + +#: ../../features/standings-rules.rst:90 +msgid "The number of debates in which the team came first. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:93 +msgid "Number of seconds" +msgstr "" + +#: ../../features/standings-rules.rst:94 +msgid "The number of debates in which the team came second. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:97 +msgid "Number of pullups before this round" +msgstr "" + +#: ../../features/standings-rules.rst:98 +msgid "The number of times the team has been pulled up as part of :ref:`draw generation `. You probably wouldn't use this as a metric to rank teams, but you may wish to display it as an \"extra metric\" in the team standings for transparency." +msgstr "" + +#: ../../features/standings-rules.rst:103 +msgid "Who-beat-whom" +msgstr "" + +#: ../../features/standings-rules.rst:104 +msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." +msgstr "" + +#: ../../features/standings-rules.rst:110 +msgid "If there are more than two teams tied, this metric is not applied." +msgstr "" + +#: ../../features/standings-rules.rst:112 +msgid "This metric can be specified multiple times. Each time who-beat-whom occurs, it applies to all the metrics earlier in the precedence than the occurrence in question." +msgstr "" + +#: ../../features/standings-rules.rst:118 +msgid "Speaker standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:120 +msgid "The speaker standings precedence is only used in speaker standings (*i.e.*, it doesn't affect the operation of the tournament). As for team standings, the **speaker standings precedence** specifies which metrics are used to rank speakers, with the second metric tie-breaking the first, the third tie-breaking the second, and so on. The **speaker standings extra metrics** are metrics that will be shown in the speaker standings, but won't be used to rank speakers." +msgstr "" + +#: ../../features/standings-rules.rst:135 +msgid "Total" +msgstr "" + +#: ../../features/standings-rules.rst:136 +msgid "The sum of all speaker scores attained by the speaker. Note that if a speaker misses a round, they'll typically be relegated to the bottom of the speaker standings by this metric." +msgstr "" + +#: ../../features/standings-rules.rst:140 +msgid "Average" +msgstr "" + +#: ../../features/standings-rules.rst:141 +msgid "The average of all speaker scores attained by the speaker." +msgstr "" + +#: ../../features/standings-rules.rst:143 +msgid "Trimmed mean" +msgstr "" + +#: ../../features/standings-rules.rst:144 +msgid "The average speaker score after excluding their highest and lowest speaker scores. Also known as the *high-low drop*, *truncated mean* or *Olympic average*." +msgstr "" + +#: ../../features/standings-rules.rst:148 +msgid "If the speaker has only one or two scores, this metric just returns the average of those scores, without excluding any." +msgstr "" + +#: ../../features/standings-rules.rst:151 +msgid "Standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:152 +msgid "The standard deviation of all speaker scores attained by the speaker. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:156 +msgid "Average speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:160 +msgid "Number of speeches given" +msgstr "" + +#: ../../features/standings-rules.rst:161 +msgid "The number of speaker scores associated with the speaker. (In tournaments where teams can rotate speakers, this may not be all rounds.) This metric is normally used as an \"extra\" (unranked) metric, because it'd be weird to rank by number of speeches given, but you can if you want to." +msgstr "" + +#: ../../features/standings-rules.rst:168 +msgid "Motion balance" +msgstr "" + +#: ../../features/standings-rules.rst:170 +msgid "The motion balance page applies a statistical test to estimate the degree to which a motion is imbalanced. This is calculated by first making an underlying assumption that a motion is generally fair. This will be our null hypothesis: that, for a given motion, affirmative teams won the same number of times as negative teams." +msgstr "" + +#: ../../features/standings-rules.rst:172 +msgid "Our chi-squared test will then be centred around disproving this hypothesis. If we disprove the hypothesis, we say that, in the context of this tournament and this draw, the motion ended up being unbalanced. However (technically speaking) if we fail to reject the null hypothesis, we would conclude that there is insufficient evidence to suggest that the motion was unbalanced in the context of this tournament." +msgstr "" + +#: ../../features/standings-rules.rst:174 +msgid "The test proceeds by `calculating the chi-squared stat, then running a series of tests `_. The tests are where we go a little off-book with respect to statistical methodology. Normally we would test at a single \"level of significance\" (ie. with a certain degree of certainty), but that's insufficient in telling us how bad a motion ended up being. So, instead, we conduct a range of tests with a range of levels of significance, and calculate the minimum level of significance that causes our null hypothesis to be rejected. Using the minimum level of significance that rejects our null hypothesis, we can then grade the fairness of the motion on a scale. Motions whose tests fall below a certain threshold will be considered fair, while others will be graded based on the minimum." +msgstr "" + +#: ../../features/standings-rules.rst:176 +msgid "For formats with topic selection, the same test is applied using the number of affirmative and negative vetoes in place of wins. The assumption here is that, during the time allotted for motion selection, teams estimate how appealing a motion is from their position, and then veto the topic that they feel is least favourable. Thus, the null hypothesis is that a motion that is perceived of as fair would be vetoed by affirmative and negative teams to an equal degree." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/team-code-names.po b/docs/locale/bg/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..017e7d12ddd --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/team-code-names.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: bg_BG\n" + +#: ../../features/team-code-names.rst:5 +msgid "Team Code Names" +msgstr "" + +#: ../../features/team-code-names.rst:7 +msgid "Some tournaments use \"code names\" to obscure the institutional affiliations of teams. For example, rather than calling a team \"Harvard DK\", they would be presented in the draw as \"Butterfly\". A natural way to do this would be just to change the name of every team, but then the team's \"real name\" would be hidden from tournament staff, too." +msgstr "" + +#: ../../features/team-code-names.rst:13 +msgid "Instead, Tabbycat allows you to assign code names to teams, alongside their real names. This way, you can have code names show to participants, while real team names show in administrative views (*e.g.* allocating adjudicators). It also allows you to \"decode\" team names for elimination rounds or final tab release easily, without having to actually change every team's name." +msgstr "" + +#: ../../features/team-code-names.rst:19 +msgid "While the most frequently-used public views have been checked to ensure that they show only code names, not all views have been checked thoroughly. Please check views using demonstration data on a test site, configured in the same way that you would use it at your tournament, before using code names at a real tournament." +msgstr "" + +#: ../../features/team-code-names.rst:26 +msgid "Assigning code names" +msgstr "" + +#: ../../features/team-code-names.rst:28 +msgid "Most methods of importing teams, including the simple importer and the ``importtournament`` command, automatically assign code names to teams. The code name is the name of the emoji that is automatically assigned at the same time. For example, the team assigned 🦋 will be code-named \"Butterfly\"." +msgstr "" + +#: ../../features/team-code-names.rst:33 +msgid "If you wish to use your own code names, you need to set the \"code name\" field of each team. Here are two ways to do this:" +msgstr "" + +#: ../../features/team-code-names.rst:36 +msgid "**Edit Database area:** Enter the Edit Database area, and under **Participants > Teams**, click **Change**. Modify each team one by one, entering a new code name then saving." +msgstr "" + +#: ../../features/team-code-names.rst:39 +msgid "``importtournament`` **command:** If you imported a tournament from CSV files, you can just add a ``code_name`` column to your teams CSV file." +msgstr "" + +#: ../../features/team-code-names.rst:43 +msgid "Displaying code names" +msgstr "" + +#: ../../features/team-code-names.rst:45 +msgid "Code names are disabled by default; to enable then, go to **Setup > Configuration > Public Options**, and change the **Team code names** option. You can choose between the following options:" +msgstr "" + +#: ../../features/team-code-names.rst:49 +msgid "Do not use code names" +msgstr "" + +#: ../../features/team-code-names.rst:50 +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: ../../features/team-code-names.rst:51 +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:52 +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:53 +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: ../../features/team-code-names.rst:55 +msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." +msgstr "" + +#: ../../features/team-code-names.rst:58 +msgid "One typical use is as follows:" +msgstr "" + +#: ../../features/team-code-names.rst:60 +msgid "Before the tournament, set the team code names setting to *Use code names for public; real names with code names in tooltips for admins*. This hides real names from anything participants would see, but continues to refer to teams in administrative views by real names." +msgstr "" + +#: ../../features/team-code-names.rst:64 +msgid "After the break is announced, set it to *Use real names everywhere, and show code names in tooltips*. This basically decodes all team names, while still allowing people to look up the (now former) code name of a team." +msgstr "" + +#: ../../features/team-code-names.rst:68 +msgid "If you're enabling team codes, you probably want to disable the **Show team institutions** option too." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/user-accounts.po b/docs/locale/bg/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..ef1b528daa4 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/user-accounts.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: bg_BG\n" + +#: ../../features/user-accounts.rst:5 +msgid "User Accounts" +msgstr "" + +#: ../../features/user-accounts.rst:7 +msgid "For obvious reasons, user logins are required to data entry and administrative functions. Conceptually, there are four levels of access:" +msgstr "" + +#: ../../features/user-accounts.rst:14 +msgid "Access" +msgstr "" + +#: ../../features/user-accounts.rst:15 +msgid "Should be used by" +msgstr "" + +#: ../../features/user-accounts.rst:16 +msgid "Grants access to" +msgstr "" + +#: ../../features/user-accounts.rst:17 +msgid "Is capable of" +msgstr "" + +#: ../../features/user-accounts.rst:19 +msgid "Public" +msgstr "" + +#: ../../features/user-accounts.rst:20 +msgid "The public" +msgstr "" + +#: ../../features/user-accounts.rst:21 +msgid "Publicly available information." +msgstr "" + +#: ../../features/user-accounts.rst:22 +msgid "Viewing things, and submitting new ballots/feedback if electronic submission is permitted by the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:24 +msgid "Assistant" +msgstr "" + +#: ../../features/user-accounts.rst:25 +msgid "Data entry helpers" +msgstr "" + +#: ../../features/user-accounts.rst:26 +msgid "The assistant area" +msgstr "" + +#: ../../features/user-accounts.rst:27 +msgid "Entering, confirming and printing ballots and feedback, checking in ballots and people, and displaying the draw." +msgstr "" + +#: ../../features/user-accounts.rst:29 +msgid "Superuser" +msgstr "" + +#: ../../features/user-accounts.rst:30 +msgid "Chief adjudicators" +msgstr "" + +#: ../../features/user-accounts.rst:31 +msgid "The administrator and assistant areas" +msgstr "" + +#: ../../features/user-accounts.rst:32 +msgid "Generating draws, allocating adjudicators and venues, and editing ballots, feedback and adjudicator scores." +msgstr "" + +#: ../../features/user-accounts.rst:34 +msgid "Staff and superuser" +msgstr "" + +#: ../../features/user-accounts.rst:35 +msgid "Tab director" +msgstr "" + +#: ../../features/user-accounts.rst:36 +msgid "The administrator, assistant and Edit Database areas" +msgstr "" + +#: ../../features/user-accounts.rst:37 +msgid "Editing the database directly." +msgstr "" + +#: ../../features/user-accounts.rst:39 +msgid "If a user account on the tab system belongs to someone who is also a participant in the tournament (*e.g.*, a chief adjudicator), these two capacities are completely separate. User accounts are only used to regulate access to administrative functions. Tabbycat doesn't know about any relationship between user accounts, and who is participating in the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:42 +msgid "Account roles" +msgstr "" + +#: ../../features/user-accounts.rst:44 +msgid "You should create an account for each person who needs to access the tab system. When you create an account in the Edit Database area, there are checkboxes for **Superuser status** and **Staff access**. Superusers have access to the administrator area, and staff have access to the Edit Database area. You should grant permissions as follows:" +msgstr "" + +#: ../../features/user-accounts.rst:46 +msgid "Tab directors should get both superuser and staff status." +msgstr "" + +#: ../../features/user-accounts.rst:47 +msgid "Chief adjudicators and their deputies should get superuser status, but not staff status." +msgstr "" + +#: ../../features/user-accounts.rst:48 +msgid "Tab assistants (helping only with data entry) should get neither superuser nor staff status." +msgstr "" + +#: ../../features/user-accounts.rst:50 +msgid "Tournament participants (other than tab staff) do not need an account. Everything they need to know can be accessed without an account. If you're using electronic ballots or electronic feedback, they access these using a URL that only they know (see :ref:`private-urls`)." +msgstr "" + +#: ../../features/user-accounts.rst:52 +msgid "When doing data entry, users with superuser status should use the **assistant area**. The administrator area is intended for managing the tournament, and doesn't include someand should **not** in general be used for data entry. Specifically, the administrator area lacks checks that are important for data integrity assurance. It should be used only to override the normal :ref:`data entry ` procedure, for example, to unconfirm or modify a ballot." +msgstr "" + +#: ../../features/user-accounts.rst:54 +msgid "The **Edit Database** interface should not be used except where it is actually necessary. There are a few functions which require this, but as a principle, it shouldn't be used as a matter of course." +msgstr "" + +#: ../../features/user-accounts.rst:56 +msgid "In theory, you could grant an account staff status but not superuser status. But then they'd be allowed to edit the database, but not run the tournament, which would be weird." +msgstr "" + +#: ../../features/user-accounts.rst:59 +msgid "Adding accounts" +msgstr "" + +#: ../../features/user-accounts.rst:61 +msgid "To add an account:" +msgstr "" + +#: ../../features/user-accounts.rst:63 +msgid "Go to the Edit Database area of the site." +msgstr "" + +#: ../../features/user-accounts.rst:65 +msgid "Under **Authentication and Authorization**, click the **Add** link next to **Users**." +msgstr "" + +#: ../../features/user-accounts.rst:67 +msgid "Ask the user to enter a username, password and possibly email address." +msgstr "" + +#: ../../features/user-accounts.rst:69 +msgid "Only they should know what the password is." +msgstr "" + +#: ../../features/user-accounts.rst:70 +msgid "If you're hosting on the internet, all passwords should be at least moderately strong!" +msgstr "" + +#: ../../features/user-accounts.rst:71 +msgid "Passwords are not stored as raw passwords, so you can't figure out what their password is." +msgstr "" + +#: ../../features/user-accounts.rst:72 +msgid "The email address is optional." +msgstr "" + +#: ../../features/user-accounts.rst:73 +msgid "This email address is only used to reset their password if they forget it, and has nothing to do with the email address that Tabbycat uses to send emails to tournament participants (*e.g.* private URL links)." +msgstr "" + +#: ../../features/user-accounts.rst:75 +msgid "If they are being assigned superuser and/or staff status, check the relevant boxes." +msgstr "" + +#: ../../features/user-accounts.rst:77 +msgid "Click \"Save\" or \"Save and add another\"." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/features/venue-constraints.po b/docs/locale/bg/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..741ae08ea58 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/features/venue-constraints.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: bg_BG\n" + +#: ../../features/venue-constraints.rst:5 +msgid "Venue Constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:7 +msgid "Tabbycat supports a basic form of venue constraints. A **venue constraint** is a requirement that a particular **team, adjudicator, institution** or **division** be assigned to a venue in a particular **venue category**. Typical uses would include:" +msgstr "" + +#: ../../features/venue-constraints.rst:12 +msgid "Meeting venue accessibility requirements of particular teams (*e.g.* step-free access)" +msgstr "" + +#: ../../features/venue-constraints.rst:14 +msgid "Placing adjudication core and tab team members close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:15 +msgid "Keeping all debates in a division in one location" +msgstr "" + +#: ../../features/venue-constraints.rst:17 +msgid "Constraints apply to **venue categories**, not individual venues. That is, you specify that (say) a team should be given a venue from a particular *list* of venues. Of course, it's permissible for a venue category to have only one venue in it." +msgstr "" + +#: ../../features/venue-constraints.rst:22 +msgid "The algorithm used to satisfy venue constraints is not guaranteed to be optimal. In some rare cases, it may propose an allocation that fails some constraints, even though some other allocation would have satisfied all (or more) constraints. In almost all practical circumstances, however, it should work, and save human effort (and time) in specially allocating rooms." +msgstr "" + +#: ../../features/venue-constraints.rst:29 +msgid "Adding venue categories" +msgstr "" + +#: ../../features/venue-constraints.rst:31 +msgid "Before you add venue constraints, you first need to add venue categories. Each venue category is a list of venues, typically satisfying a particular need. For example, you might have a category for each of the following:" +msgstr "" + +#: ../../features/venue-constraints.rst:35 +msgid "Venues with step-free access" +msgstr "" + +#: ../../features/venue-constraints.rst:36 +msgid "Venues that are close to general assembly (the briefing room)" +msgstr "" + +#: ../../features/venue-constraints.rst:37 +msgid "Venues that are close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:38 +msgid "Venues that are, or venues that are not, being live-streamed" +msgstr "" + +#: ../../features/venue-constraints.rst:40 +msgid "Each venue can be in as many categories as you like (or none at all)." +msgstr "" + +#: ../../features/venue-constraints.rst:44 +msgid "To add or edit venue categories, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Categories**. Note that this page will show all existing Venue Categories first before showing the blank forms that allow you to create new categories. Give your category a name (like \"Step-free access\"), assign it some venues, then click the \"Save Venue Categories\" button at the bottom of the page." +msgstr "" + +#: ../../features/venue-constraints.rst:47 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue categories\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:50 +msgid "Adding venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:52 +msgid "To add or edit venue constraints, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Constraints**. Note that this page will show all existing Venue Constraints first before showing the blank forms that allow you to create new categories. Note that the \"Constrainee ID\" field should let you select from a dropdown or type in the name of an adjudicator, institution, or team (rather than having to lookup the exact ID)." +msgstr "" + +#: ../../features/venue-constraints.rst:57 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue constraints\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:59 +msgid "For each constraint, you need to specify four things:" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "**Category**" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "The venue category to which the subject of this constraint should be locked." +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "**Priority**" +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "This is a number used to resolve conflicts between constraints. Constraints with higher priority (greater number) take precedence over those with lower priority. If none of your constraints will ever conflict, then the priority is arbitrary (but it must still be specified)." +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "**Subject content** **type**" +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "The type of subject to which this constraint relates: adjudicator, team, institution or division." +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "**Subject ID**" +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "Which adjudicator, team, institution or division the constraint relates to. The textbox takes a number (the ID of the object in the database), but you can search for the subject by clicking on the search icon next to it. This will bring up a table of objects of the type specified in \"subject content type\" for you to choose from. (You need to select the subject content type first.)" +msgstr "" + +#: ../../features/venue-constraints.rst:86 +msgid "Applying venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:88 +msgid "If you don't have any venue constraints for adjudicators, venue constraints are applied automatically when the draw is generated." +msgstr "" + +#: ../../features/venue-constraints.rst:91 +msgid "However, if you have one or more venue constraints for adjudicators, it's not possible to take adjudicator venue constraints into account during draw generation, because the adjudicator allocation isn't known then. You'll need to run the venue allocation yourself after you've allocated adjudicators." +msgstr "" + +#: ../../features/venue-constraints.rst:96 +msgid "To run venue allocation, go to **Edit Venues** (while looking at the draw), then in the screen where you can edit venues, click the **Auto Allocate** button. You can also do this at any other point (say, after adding a new venue constraint) if, for whatever reason, you would like to re-run the venue allocation algorithm." +msgstr "" + +#: ../../features/venue-constraints.rst:102 +msgid "If a venue constraint couldn't be met, a message will show in the \"conflicts/flags\" column of the draw. A constraint might not be met for a number of reasons:" +msgstr "" + +#: ../../features/venue-constraints.rst:106 +msgid "It could be that constraints of different parties (say, one team and one adjudicator) conflicted, so only one could be fulfilled." +msgstr "" + +#: ../../features/venue-constraints.rst:108 +msgid "It could be that all available rooms in the relevant category were already taken by other, higher-priority constraints." +msgstr "" + +#: ../../features/venue-constraints.rst:110 +msgid "It could just be one of those edge cases that's too hard for the naïve algorithm to handle." +msgstr "" + +#: ../../features/venue-constraints.rst:113 +msgid "Currently, Tabbycat doesn't tell you which of these happened, so if the venue allocation fails to meet all your constraints, it's on you to figure out why. In most scenarios, we imagine you'll have few enough constraints that this will be obvious; for example, if the chief adjudicator is judging a team with accessibility requirements, it might be obvious that the latter's constraint took priority. We might in future add support for more useful guidance on conflicting constraints, but we currently consider this to be of low priority." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/guide/comparisons.po b/docs/locale/bg/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..5061920cd37 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/guide/comparisons.po @@ -0,0 +1,338 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: bg_BG\n" + +#: ../../guide/comparisons.rst:5 +msgid "Tab Software Comparisons" +msgstr "" + +#: ../../guide/comparisons.rst:7 +msgid "If you're reading this, you're probably interested in using Tabbycat, and wondering how it compares to other options. Perhaps you're a long-time user of another tab system, and wondering what Tabbycat can do better. This page is our effort to help answer this. Tabbycat's been around since 2010, but since BP support is a recent addition (2017), we thought it would be useful to outline the differences between Tabbycat and other BP software." +msgstr "" + +#: ../../guide/comparisons.rst:9 +msgid "Obviously, this page is written by the developers of Tabbycat, and naturally, we have our biases. But rarely is there a single best option for everyone and every situation: different tab programs imagine the tabbing process in a different ways and have made unique trade-offs in their development process and design decisions. So we've tried to be as fair and accurate as we can, and we've consulted experienced tab directors (other than us!) and chief adjudicators to help provide a balanced overview." +msgstr "" + +#: ../../guide/comparisons.rst:11 +msgid "At present, this guide just focuses on the major options available for the British Parliamentary format, although we'd like to expand this to incorporate the other formats that Tabbycat supports at some point in the future. As with all of our documentation, the source for this page `is on GitHub `_, and we welcome feedback and contributions." +msgstr "" + +#: ../../guide/comparisons.rst:14 +msgid "On feature lists" +msgstr "" + +#: ../../guide/comparisons.rst:16 +msgid "In the first draft of this document, we had a table that listed every feature we could think of, along with which software does and doesn't support it. This ended up not being a great idea, for a couple of reasons." +msgstr "" + +#: ../../guide/comparisons.rst:18 +msgid "Firstly, the largest feature disparities are for relatively niche features. All of the software discussed can do the basics necessary to run a tournament: generate draws, allocate adjudicators, enter results, etc. As a result, we will — like a good whip speech — be comparative and note key feature disparities when discussing each alternative software directly." +msgstr "" + +#: ../../guide/comparisons.rst:20 +msgid "Secondly, we felt that the 'checklist' approach to comparing tab software would do a disservice to the reasons you would actually choose one software over another. Except where a niche capability is essential, raw technical specifications rarely define the experience of using a product such as a phone, a car, or indeed, tabbing software. With Tabbycat, we've spent eight years continuously refining the tabbing workflow and smoothing out rough edges, and we believe you'll find the result extremely user-friendly and robust. As always, the best way to check this out is by :ref:`setting up a demo site and taking it for a spin `!" +msgstr "" + +#: ../../guide/comparisons.rst:23 +msgid "Comparison with Tabbie2" +msgstr "" + +#: ../../guide/comparisons.rst:26 +msgid "Centralised site vs individual sites" +msgstr "" + +#: ../../guide/comparisons.rst:28 +msgid "Tabbie2 and Tabbycat are both internet-based systems. Tabbie2 hosts all tournaments on a single site. However, when using Tabbycat, each tournament or organisation sets up its own site. Each model has its advantages and disadvantages in different areas:" +msgstr "" + +#: ../../guide/comparisons.rst:30 +msgid "**User identification**. Tabbie2's centralised model allows for site-wide user accounts for all tournament participants. This means that they can use the same login information for all tournaments, and perform tasks such as submitting ballots and feedback through that unified account. If you're in an established circuit, most of your participants probably already have user accounts which are identified and collected (via e-mail addresses) during registration. If you're in a newer circuit, or one where Tabbie2 is rarely used, most of your participants will probably need to create an account — a process which Tabbie2 handles by e-mailing them a request to do so when that person is added to your tournament." +msgstr "" + +#: ../../guide/comparisons.rst:32 +msgid "In Tabbycat's decentralised model, there is no persistent 'account' for tournament participants on each tab site or across different tab sites. Indeed, the only people who can log in to the site are those who have been given accounts by the tab director, such as tab staff and members of the adjudication core." +msgstr "" + +#: ../../guide/comparisons.rst:34 +msgid "For secure e-ballot and e-feedback submissions, Tabbycat assigns a \"private URL\" to each adjudicator or team. This is essentially a password that allows a participant to only submit data that they should have access to in that specific tournament. This means participants don't need user accounts and you don't need to collect user account information; however if your tournament uses e-ballots or e-feedback you will need to distribute those private URLs to participants. Tabbycat can e-mail these to participants for you, or print them to give them to participants, or you could distribute the URLs using your own means." +msgstr "" + +#: ../../guide/comparisons.rst:36 +msgid "**Control over data**. Some participant information in Tabbie2 is shared between tournaments, like their names and conflicts (discussed below). This means participants can manage it directly through their user accounts, without needing to go through you. On the other hand, this requires your participants to co-operate in keeping their accounts up to date, and to provide the correct e-mail address during registration (you'd be surprised how many don't). Furthermore, participants may look to you for assistance, and your ability to help is limited to directing them through Tabbie2 channels—easy enough if they forget their password, but not so much if they forget their account's e-mail address." +msgstr "" + +#: ../../guide/comparisons.rst:38 +msgid "Because each Tabbycat site is its own, you'll need to collect and import all participant details yourself. This might seem like more to do, but it also means there's no need to match your data to existing accounts, which can be time-consuming and prone to participant error. It also means you can freely change data, for example, to correct a participant's name or institution, or to add data like conflicts on an ad-hoc basis." +msgstr "" + +#: ../../guide/comparisons.rst:40 +msgid "**Data privacy**. Conflicts are typically entered into the tab, and are sensitive information. Tabbie2's centralisation allows for conflicts to be self-nominated by users and stored in their user accounts. This, in theory, saves the need for users to report conflicts to tab directors and other tournament staff. In practice, however, only special \"super\" users on Tabbie2 have access to the stored conflicts of users (otherwise anyone could access a user's conflicts by creating a new tournament and adding that user as a participant), so many tournaments need to collect this information from participants anyway." +msgstr "" + +#: ../../guide/comparisons.rst:42 +msgid "Tabbycat's decentralised model means that no-one will have access to conflict information except for the tab staff of each individual instance of Tabbycat. Unlike Tabbie2, Tabbycat's developers do not have any access to your tournament's data — conflicts or otherwise. However, to help us continually improve the software, Tabbycat does send error reports to its developers if there is a serious bug or crash in the code, which could potentially contain confidential information depending on which page triggered the report. As a result of Tabbycat's decentralised data storage, each tournament does need to collect and enter conflicts as part of their registration process." +msgstr "" + +#: ../../guide/comparisons.rst:44 +msgid "**When things go wrong**. In our view, this is probably the most important factor. Obviously, we all hope you never have to fix things. But no software is perfect, and software developed by volunteers in their spare time (as both Tabbie2 and Tabbycat are) is especially imperfect. On occasion, glitches or edge cases occur, and fixing them requires you to directly edit the offending data in the database. Being able to do this without assistance can be the difference between a delay of minutes and a delay of hours." +msgstr "" + +#: ../../guide/comparisons.rst:46 +msgid "In Tabbycat, because it's your site, you have full control of the database, and can edit it through Tabbycat's \"Edit Database\" area. This allows you to fix things (or break things, if you're not careful!). Tabbie2's centralisation prevents this—for obvious reasons, only Tabbie2's developers have direct database access, which makes their intervention necessary if direct database access is required to resolve a problem." +msgstr "" + +#: ../../guide/comparisons.rst:49 ../../guide/comparisons.rst:138 +msgid "Running your tournament" +msgstr "" + +#: ../../guide/comparisons.rst:51 +msgid "Tabbie2 and Tabbycat have broadly similar workflows for running rounds; at least on paper. Key differences are discussed below:" +msgstr "" + +#: ../../guide/comparisons.rst:53 +msgid "**Data import**. Tabbie2 takes CSV files for import. Tabbycat has a CSV file importer, but it's (for now) only accessible through a command-line interface and is only expected to be used for large tournaments by experienced tab directors. As a more user-friendly alternative, Tabbycat also has an import wizard that's designed to make it easy to copy and paste CSV data. This works well for small and medium scale tournaments, but is cumbersome for large ones." +msgstr "" + +#: ../../guide/comparisons.rst:55 +msgid "**Public interface**. Tabbycat can optionally publish the entire draw, as well as current team point standings and results of previous rounds, online. Tabbie2 shows to a logged-in user information about the debate that user is in for that round, but doesn't allow people to check up on people who are not themselves." +msgstr "" + +#: ../../guide/comparisons.rst:57 +msgid "**Position rotation**. Tabbie2 uses an algorithm known as the \"Silver Line algorithm\", which keeps swapping pairs of teams until no further improvement is found. Because it stops at any 'local optimum', this method isn't guaranteed to be the best possible distribution of positions, and for large tournaments it often isn't. Tabbycat instead uses the `Hungarian algorithm `_, an well-known algorithm that finds the (globally) optimal allocation of positions. (One might describe this algorithm, in technical terms, as 'powerful'.) Tabbycat also produces a position balance report, so that in every round you can see which teams have unbalanced position histories." +msgstr "" + +#: ../../guide/comparisons.rst:59 +msgid "**Venue allocations**. Both Tabbie2 and Tabbycat allow for debate venues to be automatically assigned and manually edited. Tabbycat also allows you to specify 'venue constraints' that can automatically match particular participants with their accessibility requirements, or alternatively allow for tournament staff, such as a convenor or chief adjudicator, to be allocated rooms close to the briefing hall or tab room." +msgstr "" + +#: ../../guide/comparisons.rst:61 +msgid "**Ballot entry**. Both Tabbie2 and Tabbycat support entering ballots online ('e-ballots') and entering ballots from paper from the tab room. Tabbie2 was built with e-ballots in mind, while Tabbycat was originally built for tab room staff, and the ballot entry paradigms reflect that. Both are flexible, just a little different—the best way to understand the difference is to try a demo of each. Also, Tabbycat takes note of the order in which speakers in a team spoke (i.e. who was PM and who was DPM), whereas Tabbie2 just records scores." +msgstr "" + +#: ../../guide/comparisons.rst:63 +msgid "As discussed earlier in *User identification*; Tabbie2's e-ballots are tied to unified user accounts, whereas Tabbycat's e-ballots are tied to per-tournament and per-adjudicator 'private URLs'." +msgstr "" + +#: ../../guide/comparisons.rst:65 +msgid "**Break and speaker categories**. Tabbie2 has ESL, EFL and novice markers, which you can enable in a tournament's settings. Tabbycat supports user-defined break and speaker categories, so if your tournament has ESL, EFL, novice or any other form of category, you can define and customise those categories as needed." +msgstr "" + +#: ../../guide/comparisons.rst:67 +msgid "**Adjudicator allocation algorithm**. Both Tabbie2 and Tabbycat use an algorithm to recommend an initial allocation of adjudicators to debates. In principle, they both work by assigning \"costs\" to allocations, and trying to find the minimum-cost assignment. Some notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:69 +msgid "Tabbie2 uses simulated annealing, which is not guaranteed to be optimal and technically needs to be tuned to be effective (which you're probably not doing). Tabbycat uses the Hungarian algorithm, which guarantees an optimal solution." +msgstr "" + +#: ../../guide/comparisons.rst:70 +msgid "On the other hand, the Hungarian algorithm can't account for relationships between adjudicators on a panel, so adjudicator-adjudicator conflicts aren't considered by Tabbycat's algorithm (though they are highlighted in the interface)." +msgstr "" + +#: ../../guide/comparisons.rst:71 +msgid "Tabbycat's cost function is simpler and more naive. On the other hand, Tabbie2's is more complicated and can be rather opaque (even if you read its source code)." +msgstr "" + +#: ../../guide/comparisons.rst:72 +msgid "Tabbie2 allows for single-gender panels to be charged an additional cost. Tabbycat's algorithm doesn't, but the interface does provide a way to easily check for this visually." +msgstr "" + +#: ../../guide/comparisons.rst:73 +msgid "Tabbie2 automatically calculates the importance of a room based on its bracket (team points). In Tabbycat, debate importance can be assigned for all debates automatically based on on a room's bracket or the quantity of live break categories inside it. Instead of — or subsequent to — automatic classification any importance value can be manually tweaked as desired. These options mean there is a greater flexibility in determining which debates the allocation algorithm should prioritise." +msgstr "" + +#: ../../guide/comparisons.rst:75 +msgid "**Adjudicator allocation interface**. While both interfaces use drag and drop interactions, and allow for color highlights to help identify adjudicators by gender, region, and feedback rating, Tabbycat's allocation interface was designed to be usable on both small screens and projectors, and has a number of extra features that can help inform allocations. These features include:" +msgstr "" + +#: ../../guide/comparisons.rst:77 +msgid "Clashes are shown directly in the interface when they apply, but dragging an adjudicator will also show you the potential conflicts that would occur if they were relocated in a new panel. This can make it much easier to avoid creating new clashes when shifting adjudicators around the draw." +msgstr "" + +#: ../../guide/comparisons.rst:78 +msgid "An inline display of an estimate of whether a team is 'live' for each of their break categories — i.e. whether they are 'safe' (have enough points to break); 'dead' (cannot gain enough points to break); or 'live' (still in contention)." +msgstr "" + +#: ../../guide/comparisons.rst:79 +msgid "'History' conflicts (where an adjudicator has seen a team before, or previously was on a panel with another judge) are displayed so they can be avoided." +msgstr "" + +#: ../../guide/comparisons.rst:80 +msgid "Each adjudicator is present as occupying a particular position (chair, panellist, trainee) rather than having those positions calculated automatically." +msgstr "" + +#: ../../guide/comparisons.rst:81 +msgid "Chairs can be 'swapped' by dragging adjudicators on top of each other, and an 'unallocated' area can be used to view and store adjudicators that have not been allocated." +msgstr "" + +#: ../../guide/comparisons.rst:83 +msgid "**Adjudicator feedback customisation**. Both Tabbie2 and Tabbycat have built-in adjudicator feedback forms, and allow you to specify the questions on the feedback form. Notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:85 +msgid "Setting up questions is painless on neither system. Tabbycat requires you to use the Edit Database area; Tabbie2 makes you click through a slightly more opaque maze of pages and forms." +msgstr "" + +#: ../../guide/comparisons.rst:86 +msgid "Tabbycat allows for a richer range of types of questions than Tabbie2 does." +msgstr "" + +#: ../../guide/comparisons.rst:87 +msgid "Tabbie2 allows you to specify different questionnaires for team-on-chair, chair-on-panellist and panellist-on-chair. Tabbycat only differentiates between team-on-adjudicator and adjudicator-on-adjudicator." +msgstr "" + +#: ../../guide/comparisons.rst:88 +msgid "Tabbycat gives you more control over who is expected to submit feedback on whom; e.g. whether teams submit on panellists, and whether panellists submit on each other. In Tabbie2, you can effect this with blank questionnaires, but only for the three options listed above." +msgstr "" + +#: ../../guide/comparisons.rst:89 +msgid "Tabbycat can, optionally, automatically incorporate feedback into adjudicator scores using a naive weighted average with the adjudicator base score. This can be disabled by simply setting feedback weight to zero, as some adjudication cores prefer. Tabbie2 has no ability to automatically incorporate feedback." +msgstr "" + +#: ../../guide/comparisons.rst:90 +msgid "Tabbycat produces a \"shame list\" of unsubmitted feedback, which you can optionally publish on the public-facing site to try to incentivise submission." +msgstr "" + +#: ../../guide/comparisons.rst:92 +msgid "(How participants access adjudicator feedback submission is discussed in *User identification* above.)" +msgstr "" + +#: ../../guide/comparisons.rst:95 ../../guide/comparisons.rst:149 +msgid "Other considerations" +msgstr "" + +#: ../../guide/comparisons.rst:97 +msgid "**Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface." +msgstr "" + +#: ../../guide/comparisons.rst:99 +msgid "**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:101 +msgid "**Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level." +msgstr "" + +#: ../../guide/comparisons.rst:103 +#, python-format +msgid "**Hosting location**. Tabbycat recommends using Heroku, an established cloud platform service for deploying web applications. Heroku is in turn hosted on Amazon Web Services (AWS). Both Heroku and AWS are highly reliable and widely used; downtime for both has historically been (at worst) less than 0.05% over an annual period. Tabbie2 is hosted on `Uberspace `_; a pay-what-you-want web hosting service. To the best of our knowledge, uptime statistics are not available." +msgstr "" + +#: ../../guide/comparisons.rst:105 +msgid "**Multi-format support**. If you are interested in tabbing both four- and two- team formats there may be some value in using and learning Tabbycat as it will let you use the same software in both settings." +msgstr "" + +#: ../../guide/comparisons.rst:108 +msgid "Comparison with Tournaman" +msgstr "" + +#: ../../guide/comparisons.rst:111 +msgid "Native app vs web app" +msgstr "" + +#: ../../guide/comparisons.rst:113 +msgid "The crucial strength — and limitation — of Tournaman is that it is a Windows desktop application. Naturally, being a desktop app limits the features it can offer, relative to web apps like Tabbycat or Tabbie2, since it can't offer any online access. On the other hand, working with a desktop app can often be simpler than a web app." +msgstr "" + +#: ../../guide/comparisons.rst:115 +msgid "**Installation**. You'll need to run (or emulate) a Windows machine to run Tournaman. Assuming you're using Windows, Tournaman's installation process is easy and familiar." +msgstr "" + +#: ../../guide/comparisons.rst:117 +#, python-format +msgid "Tabbycat has a simple one-click installation process if you're deploying online (:ref:`to Heroku `). However, if you want to run Tabbycat on your own computer rather than a website, this is substantially more complicated. Local installations of Tabbycat work by having your computer emulate a web server, and while we've tried to make this as accessible as possible, a technical background is definitely helpful for this. Using our :ref:`Docker-based method ` should be simple, but it's not 100% reliable, and if it fails it can be difficult to figure out why. If internet access is available, we recommend running Tabbycat on Heroku." +msgstr "" + +#: ../../guide/comparisons.rst:119 +msgid "**Online features**. Because Tournaman runs fully offline, it naturally can't support many internet-based features: electronic ballots, online publication of draws and live team standings, and integrated tab release. Typically, if you wanted to publish anything online from Tournaman, you'd do so by publishing the files that Tournaman generates locally. In Tabbycat, all of these are built in, so there's a single website for all tab information." +msgstr "" + +#: ../../guide/comparisons.rst:121 +msgid "**Multi-user access**. Tournaman can be configured to allow networked ballot entry, but in order to set it up, you need to be comfortable with basic computer networking. This works best on small isolated networks that you control directly, e.g. a dedicated router set up in the tab room. It's not a great idea to set this up on computers connected to a university-wide network: many IT departments won't permit it, and even if they do, it's insecure, since anyone on the network can access it." +msgstr "" + +#: ../../guide/comparisons.rst:123 +msgid "Tournaman's multi-user access is designed primarily to allow tab assistants to enter data. Key administrative tasks, such as draw generation and adjudicator allocation, must still be done on the computer on which Tournaman is installed. In contrast, web-based systems like Tabbycat and Tabbie2 allow users to login from any internet-connected device to access the functionality permitted by their account. This is often extremely useful if, say, you want to log in to a lectern computer, or have tab assistants work on mobile devices that they have with them." +msgstr "" + +#: ../../guide/comparisons.rst:125 +msgid "If you choose to install Tabbycat offline (rather than on Heroku), it's also possible to have the computer on which the local installation resides serve the website to other computers on the same network. This then permits anyone on the same network to access the \"local\" installation as if it were hosted on the internet. However, like Tournaman, such a configuration requires at least basic networking experience, and for security reasons is only advisable on small isolated networks that you control." +msgstr "" + +#: ../../guide/comparisons.rst:127 +msgid "**Backups and portability**. Both Tournaman and Tabbycat (unlike Tabbie2) store data in a way that is completely accessible to you. Tournaman does this by saving files on your computer's hard drive, while Tabbycat stores data in a SQL database that belongs to you." +msgstr "" + +#: ../../guide/comparisons.rst:129 +msgid "It should be emphasized that in both Tournaman and Tabbycat, actually needing to revert to a backup is extremely rare. Almost always, any glitch or error that breaks the tab can be resolved by editing data directly, without needing to \"roll back\" to a previous state. In Tournaman, this is done by editing the files that it writes to your hard drive (they're just XML files). In Tabbycat, this is done through the \"Edit Database\" area." +msgstr "" + +#: ../../guide/comparisons.rst:131 +msgid "Tournaman's storage of data as XML files makes backups easy, although effort should be made to have backups stored on other computers or the cloud (e.g. on Dropbox) in case the tab computer breaks or is lost. Restoring data from those backups (or transferring the tab to a different computer) is typically a simple process of copying the files back to the original location." +msgstr "" + +#: ../../guide/comparisons.rst:133 +msgid "As for Tabbycat, in online installations, backups can be taken easily using Heroku's `database backup capability `_. However, restoring backups requires you to have the Heroku command line interface installed. In offline installations, PostgreSQL's \"dump\" and \"restore\" commands are recommended, and may require some perseverance to get going reliability, particularly if you don't have prior SQL experience." +msgstr "" + +#: ../../guide/comparisons.rst:135 +msgid "Generally there is no need for data portability when working with an online copy of Tabbycat — the website can be accessed anywhere. However if working with an offline/local copy, a tab can be transferred between machines by creating a backup of the database and restoring it to the other machine's database (doing so requires technical knowledge)." +msgstr "" + +#: ../../guide/comparisons.rst:140 +msgid "**Adjudicator feedback**. Tournaman lets you assign judges rankings, however it does not directly manage or assist the process of collecting judge feedback. As such tab directors generally need to run a parallel feedback system, and then manually copy over changes to an adjudicator's ranking into Tournaman itself. In contrast, Tabbycat has integrated methods for collecting judge feedback that allow it to be more easily issued, collected, viewed, and automatically translated into modifications to an adjudicator's rank." +msgstr "" + +#: ../../guide/comparisons.rst:142 +msgid "**Adjudicator allocation**. Tournaman has a fixed judge ranking scale and (from what we understand) has a relatively fixed procedure for allocating panels according to their absolute ranks. We are unsure about the exact mechanics of how this works, but broad details are `available here `_." +msgstr "" + +#: ../../guide/comparisons.rst:144 +msgid "As with the discussion of allocation interfaces vis-à-vis Tabbie2, there are a number of features in the Tabbycat allocation interface that mean it is more easily used in a collaborative setting and can display additional information to inform draws." +msgstr "" + +#: ../../guide/comparisons.rst:146 +msgid "**Flexibility in draw rules**. As we've said, all major tab systems are WUDC-compliant. But if you want to deviate from WUDC rules, Tournaman has a few more options. Whereas Tabbycat allows you to use intermediate brackets (rather than pull-ups), Tournaman allows you to sacrifice power-pairing integrity for position balance (though this generally isn't necessary to achieve position balance), fold within brackets and avoid teams hitting their own institution. On the other hand, Tabbycat allows you to tune how position balance trades off between teams (which the WUDC constitution doesn't precisely specify)." +msgstr "" + +#: ../../guide/comparisons.rst:151 +msgid "**Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2." +msgstr "" + +#: ../../guide/comparisons.rst:153 +msgid "**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:155 +msgid "**Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed." +msgstr "" + +#: ../../guide/comparisons.rst:158 +msgid "Comparison with hand tabbing" +msgstr "" + +#: ../../guide/comparisons.rst:160 +msgid "Hand tabbing is easy, until it isn't. Traditionally, using a spreadsheet has been the go-to option for smallish tournaments because, hey, you're pretty handy with Excel, right? Making draws in spreadsheets (or on paper) seems like a pretty approachable task; ultimately it's all cells and formulae and numbers unlike the more arcane underpinnings of actual tab software." +msgstr "" + +#: ../../guide/comparisons.rst:162 +msgid "However, hand tabbing does require you to have a good working knowledge of how your format's rules work and how your spreadsheet software of choice can be made to work them. That process might be easy for you, or it might not be. But, either way, we'd like to think that Tabbycat offers a better alternative to hand-tabbing; regardless of how well you can actually hand-tab. The setup costs of creating a copy of Tabbycat are pretty low and you can speed through the process of draw creation, adjudicator allocation, and result entry at a pace. It's still not going to be as fast a spreadsheet for a small tournament, but we think it's getting pretty close. And in exchange for a little speed you get a much stronger guarantee of your draws being correct, options for online data entry, a more comprehensive and shareable final tab, and much more. Give it a shot!" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/guide/scaling.po b/docs/locale/bg/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..b203a070c78 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/guide/scaling.po @@ -0,0 +1,252 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: bg_BG\n" + +#: ../../guide/scaling.rst:5 +msgid "Scaling & Performance on Heroku" +msgstr "" + +#: ../../guide/scaling.rst:7 +msgid "If you expect your Tabbycat site to gain lots of traffic — either because it has lots of participants or will be followed by lots of people online — there are a number of strategies to ensure that it will remain fast despite this attention. This is typically only necessary for very large tournaments that will display information on the public-facing version of your Tabbycat site; and even then only minor amounts of 'scaling' are needed at particular moments. However, if your site does become slow you want to know what to do and how to do it ahead of time in order to prevent disruptions." +msgstr "" + +#: ../../guide/scaling.rst:9 +msgid "By default, a Tabbycat installation runs on Heroku's free tier. This is a resource-constrained environment and improving performance will typically require paying for higher levels of Heroku services. These services are billed on a per-minute (not monthly) basis, meaning that if you make use of any upgrades mentioned below, you will only be billed for the actual duration used — i.e. if an upgrade is listed at $100/month, but you only use it for 4 hours, the final bill will be around $0.50. As such you can make use of high-performing resources just when they are needed, without needing to pay the full monthly price to maintain the resource indefinitely." +msgstr "" + +#: ../../guide/scaling.rst:13 +msgid "This page was largely written before a number of improvements in the ``2.2`` release of Tabbycat that have significantly increased traffic capacity. Its recommendations may be overly cautious given these improvements." +msgstr "" + +#: ../../guide/scaling.rst:17 +msgid "Scaling for performance reasons is a separate issue to that of `upgrading the database capacity `_ of your tab which just provides the ability to store data. That said, typically only tournaments that are large enough to need an upgraded database will be the ones that ever need to consider scaling for performance anyway." +msgstr "" + +#: ../../guide/scaling.rst:20 +msgid "Introduction to Scaling" +msgstr "" + +#: ../../guide/scaling.rst:22 +msgid "Heroku's primary resource is that of a 'dyno'. Each dyno can be thought of as running a copy of Tabbycat. Following the 'many hands make light work' principle, running a greater number of dynos will generally improve the ability of your site to serve lots of pages simultaneously because traffic is divided up amongst all of the available dynos. In normal circumstances most Tabbycat pages on the public site are served by Heroku in under a second; however they can take noticeably longer than that when the quantity of incoming traffic exceeds the capacity of the existing dyno(s) to serve it. In such cases the delay accrues because the excess page loads need to first wait for an available dyno in addition to the standard wait for a page to be processed and transferred to the user." +msgstr "" + +#: ../../guide/scaling.rst:24 +msgid "Thus scaling is almost always a process of increasing *throughput* in order to decrease the chance that any page load needs to wait in order to be served by a dyno. On the flip side, having extra dynos or upgraded dynos won't make Tabbycat itself run any faster in general — they are essentially wasted unless there is sufficient large amounts of traffic that a single dyno cannot serve all of it without creating a queue." +msgstr "" + +#: ../../guide/scaling.rst:26 +msgid "Dynos can be scaled by adding more dynos ('horizontally') or by adding upgraded dynos ('vertically'). In general, horizontal scaling should be the first and most effective strategy — the problem traffic causes is due to *concurrency* or lots of people loading lots of pages all at once. The traffic on Tabbycat sites typically fluctuates a lot, with moments of high intensity clustering around draw releases, round advances, and the final tab release. As such you generally only need to scale your dynos for very short periods of time." +msgstr "" + +#: ../../guide/scaling.rst:28 +msgid "In order to increase the number of dynos you first need to be using at least the **Standard 1X** level of dyno. Once set the Heroku Dashboard will show you a slider that can be used to increase the dyno count. While dynos higher than the **Standard 1X** level may help serve pages a tiny bit faster, having *more* dynos is far more effective than having *upgraded* dynos. Upgrading beyond **Standard 1X** is generally only required if you need additional memory (as described below) or want to use auto-scaling (also described below)." +msgstr "" + +#: ../../guide/scaling.rst:32 +msgid "There should be no need to increase the number of 'worker' dynos. While 'web' dynos are responsible for serving traffic, the worker only handles a few rare tasks such as serving email and creating allocations." +msgstr "" + +#: ../../guide/scaling.rst:34 +msgid "At large tournaments you should always upgrade your existing '**Free**' dyno to a '**Hobby**'-level dyno. This upgrade is crucial as it will enable a \"Metrics\" tab on your Heroku dashboard that provides statistics which are crucial to understanding how your site is performing and how to improve said performance. If you are at all unsure about how your site will perform it is a good idea to do this pre-emptively and keep an eye on these metrics over the course of the tournament." +msgstr "" + +#: ../../guide/scaling.rst:38 +msgid "If pages are not loading it could be due to two things: your site being overloaded with traffic, or a bug in Tabbycat itself. Generally, if you see a generic or Heroku-branded 'application error' page that means it is the former problem, whereas a Tabbycat-branded page indicates the latter." +msgstr "" + +#: ../../guide/scaling.rst:41 +msgid "Scaling Dynos" +msgstr "" + +#: ../../guide/scaling.rst:43 +msgid "Once you have upgraded your dyno to the **Hobby** level, the metrics tab provides a number of graphs that can be used to help identify how your site is performing. The first graph, **Events** provides an overview of any problems that are occurring:" +msgstr "" + +#: ../../guide/scaling.rst:47 +msgid "Red marks, or those labelled *Critical* typically indicate some sort of problem. H13 errors are a good measure of the amount of pages failing to load during heavy traffic, however they can be triggered under normal conditions — you want to check how many are occurring within a given time period and ensure its more than a handful." +msgstr "" + +#: ../../guide/scaling.rst:50 +msgid "Response Time & Throughput" +msgstr "" + +#: ../../guide/scaling.rst:54 +msgid "The response time is the amount of time it takes a dyno to load a page and serve it to your users. Smaller response times are thus good, and long response times (over fifteen seconds) indicate that a site is struggling to serve its content due to a large amount of queueing." +msgstr "" + +#: ../../guide/scaling.rst:56 +msgid "Heroku dynos have a maximum response time of 30 seconds, at which point they will stop serving the request. To users this appears as an error page or as a page that never loads. Thus if you see the graph is at or approaching 30 seconds at any point you need to try and diagnose what is causing this and add more resources to reduce the response time." +msgstr "" + +#: ../../guide/scaling.rst:60 +msgid "You can toggle the percentiles in this graph. Problems are much more severe if it affects the 50th percentile which represents a site that is probably not loading for the majority of its users. There are also a couple of Tabbycat functions (like automatic adjudicator allocation) that naturally take 10-20 seconds which means that the maximum or 99th percentile metrics are not very reflective of general traffic." +msgstr "" + +#: ../../guide/scaling.rst:62 +msgid "Closely related to this is the **Throughput** graph (further down) which shows how many pages your site is serving per second. Normally this is not particularly interesting, however note that the red part of the bar graph shows the amount of failed page requests. Like the **Response Time** graph, this can indicate issues with the site — normally this red portion should be well below 1rps (and ideally 0rps). If it is above 0.5 it represents a site that is producing a significant number of failed page loads." +msgstr "" + +#: ../../guide/scaling.rst:64 +msgid "You can verify if pages are not being served to users by checking the **Events** graph and looking for H12 errors, although occasionally they are not reported properly. A large amount of H13 errors can also be a cause for concern." +msgstr "" + +#: ../../guide/scaling.rst:67 +msgid "Dyno Load" +msgstr "" + +#: ../../guide/scaling.rst:71 +msgid "This graph shows how well your dynos are being utilised. It is scaled relative to the total number of dynos you are running (or have run previously). So if you have 10 dynos and the bar graph is near the '10' this shows that each dyno is being utilised 100% (either on average over a 1-minute period or as the maximum use over a 1-minute period)." +msgstr "" + +#: ../../guide/scaling.rst:73 +msgid "If this bar graph is hitting the top it will usually mean that a site that is slow or failing to load pages — if each dyno is busy it can't serve a new page until it is finished. This issue can often compound, with more traffic coming in than it is possible to serve and clear." +msgstr "" + +#: ../../guide/scaling.rst:75 +msgid "If your average, rather than maximum, dyno load is approaching the upper limit of however many dynos you are running now (remember the y-axis will often exceed however many dynos you are currently running) that is a very good sign that you should increase the quantity of dynos being run. Continue adding dynos and evaluate how this effects load so that the bar is not hitting its limit." +msgstr "" + +#: ../../guide/scaling.rst:77 +msgid "If you are consistently needing to scale things (or having previously had issues and are expecting a very heavy burst of traffic) it may be worth upgrading to the **Performance-M** dyno type, which will then allow you to enable the *Auto-scaling* feature. This will automatically add dynos as needed to cope with traffic, and remove them when they become unnecessary. This is very effective; however, note that this dyno-type is $250/month per dyno and will self-add dynos (within an upper limit you can specify). While this is not a huge price on a per hour/minute basis (even running 10 for an hour is only $4) you definitely want to ensure you keep a close eye on it and turn it off when it is not necessary. Note that it also tends to be quite aggressive in how many dynos it 'thinks' you need — you may want to increase the default response time threshold to prevent it scaling so quickly." +msgstr "" + +#: ../../guide/scaling.rst:80 +msgid "Memory Usage" +msgstr "" + +#: ../../guide/scaling.rst:84 +msgid "It is very rare that Tabbycat sites will hit the memory limits of the Free or Hobby level dynos — its almost always hovering around 256MB of the (standard dyno) limit of 512MB. However, if the graph is approaching the dashed line you may want to first restart the dynos (in the *More* dropdown in the upper-right) and see if that resolves it." +msgstr "" + +#: ../../guide/scaling.rst:86 +msgid "You can also confirm that memory limits are causing the app to fail by checking for the presence of R14 errors in the Events chart. If your site continues to come very close to that memory limit you will want to upgrade your dynos to the higher level dynos which have increased memory." +msgstr "" + +#: ../../guide/scaling.rst:89 +msgid "Alerts" +msgstr "" + +#: ../../guide/scaling.rst:91 +msgid "If the site is really struggling to perform its usually relatively obvious. However, if you want to be pre-warned of this, or just ensure things are as fast as possible, you can use the \"Configure Alerts\" feature on the Metrics page to receive emails when things are getting slow. We would recommend creating a Response Time Threshold warning of ``15000ms`` and a Response Requests Percentage Threshold of ``5%``." +msgstr "" + +#: ../../guide/scaling.rst:94 +msgid "Understanding Caching" +msgstr "" + +#: ../../guide/scaling.rst:96 +msgid "When a page is 'cached' it means that Tabbycat has stored a copy of the final output of the page. It can then send that copy directly to a user who is loading that page without needing to go through the normal process of fetching the data from the database, running any calculations, and formatting the results. Pages that are cached will serve quickly — if a page is taking more than a few seconds to load it usually means that page has not been cached (or your site is having too much traffic to serve pages quickly in general). The downside is that changes to the underlying data won't update until the cache has 'expired' and is regenerated. So, for example, a cached copy of the draw will not immediately reflect change to panels and a newly-release motion or tab page will not show up in the menu immediately." +msgstr "" + +#: ../../guide/scaling.rst:98 +msgid "By default Tabbycat caches public pages according to three levels: a 1-minute timeout, a 3.5-minute timeout, and a 2-hour timeout. The only pages on the 2-hour timeout are those that come with a full tab release — such as speaker standings, the motions tab, etc. Public pages that need to update quickly, such as the draw and homepage, are on the 1-minute timeout to ensure data is up to date. Public pages that update less frequently such as Standings, Results, Participants, and Breaks are on the 3.5-minute timeout." +msgstr "" + +#: ../../guide/scaling.rst:100 +msgid "Caching means that a Tabbycat site should actually perform *faster* when it is being viewed by many people at once, as the caches are constantly up-to-date and can be used to serve the majority of requests. When there is less traffic the caches are more likely to be regenerated each time someone goes to a page resulting in slower page loads. Most often performance problems come when a popular page, such as a newly-released draw gains a large amount of traffic suddenly (such as by people constantly refreshing the draw). If the page hasn't finished caching it has to do a full page calculation for each of those new loads, which will spike the amount of resource use until the page load queue is cleared." +msgstr "" + +#: ../../guide/scaling.rst:102 +msgid "One way to help mitigate this is to try and load those pages first yourself to ensuring the cache is populated before other people access it. To do so you would generally open a new private browsing tab, and navigate to the specific page(s) immediately after you have enabled them. This may require going to the URL directly rather than relying on the homepage or menu (which may not have been updated to show the new information). In the case of draw releases, this can also be mitigated by not release online draws until they have been first shown on a projector (so that people aren't trying to get draw information ahead of time)." +msgstr "" + +#: ../../guide/scaling.rst:104 +msgid "You can also increase the 1-minute timeout for the pages that are popular during the in-rounds, by going to the **Settings** section of your Heroku dashboard, clicking *Reveal Config Vars*, and creating a new key/value of ``PUBLIC_FAST_CACHE_TIMEOUT`` and ``180`` (to set the timeout to be 3 minutes i.e. 180 seconds). This should only be necessary as a last resort. Turning off public pages is also an option." +msgstr "" + +#: ../../guide/scaling.rst:106 +msgid "If you ever need to clear the cache (say to force the site to quickly show an update to the speaker tab) you can install `Heroku's Command Line Interface `_ and run the following command, replacing ``YOUR_APP`` with your site's name in the Heroku dashboard::" +msgstr "" + +#: ../../guide/scaling.rst:111 +msgid "Postgres Limits" +msgstr "" + +#: ../../guide/scaling.rst:113 +msgid "The free tier of the Postgres database services has a limit of 20 'connections'. As with Redis, it is rare that a Tabbycat site will exceed this limit; most Australs-sized tournaments will see a maximum of 12 connections at any point in time." +msgstr "" + +#: ../../guide/scaling.rst:117 +msgid "You can monitor this in your Heroku Dashboard by going to the **Resources** tab and clicking on the purple Postgres link. The **Connections** graph here will show you how close you are to the limit. The first tier up from the 'free' Hobby tiers (i.e. ``Standard-0``) has a connection limit of 120 which can be used to overcome these limits if you do encounter them." +msgstr "" + +#: ../../guide/scaling.rst:120 +msgid "Mirror Admin Sites" +msgstr "" + +#: ../../guide/scaling.rst:122 +msgid "If you *really* want to be safe, or are unable to resolve traffic issues and unable to quickly complete tasks on the admin site, it is possible to create a 'mirror' of the tab site just for admin use. This site can be configured to share the same database as the primary site — meaning it is in effect always identical — but because it is at a separate URL it won't have to respond to public traffic and so can't be swamped with a large page load queue." +msgstr "" + +#: ../../guide/scaling.rst:124 +msgid "This requires some technical knowledge to setup and hasn't been rigorously tested. It works fine in our experience but we haven't tested it extensively. If using this make sure you backup (and now how to restore backups) before setting one up." +msgstr "" + +#: ../../guide/scaling.rst:126 +msgid "To do so you would deploy a new copy of Tabbycat on Heroku as you normally would. Once the site has been setup, go to it in the Heroku Dashboard, click through to the **Resources** tab and remove the Postgres and Redis Add-ons. Using the `Heroku Command Line Interface `_ run this command, substituting ``YOUR_APP`` with your *primary* tab site's name (i.e. the app that you had initially setup before this)::" +msgstr "" + +#: ../../guide/scaling.rst:130 +msgid "Here, make a copy of the ``DATABASE_URL`` and ``REDIS_URL`` values. They should look like ``postgres://`` or ``redis://`` followed by a long set of numbers and characters. Once you have those, go to the *Settings* tab of the Heroku dashboard for your *mirror* tab site. Click **Reveal Config Vars**. There should be no set ``DATABASE_URL`` or ``REDIS_URL`` values here — if there are check you are on the right app and that the add-ons were removed as instructed earlier. If they are not set, then add in those values, with ``DATABASE_URL`` on the left, and that Postgres URL from earlier on the right. Do the same for ``REDIS_URL`` and the Redis URL. Then restart the app using the link under **More** in the top right." +msgstr "" + +#: ../../guide/scaling.rst:132 +msgid "Once you visit the mirror site it should be setup just like the original one, with changes made to one site also affecting the other as if they were just a single site." +msgstr "" + +#: ../../guide/scaling.rst:135 +msgid "Estimated Costs" +msgstr "" + +#: ../../guide/scaling.rst:137 +msgid "As a quick and rough benchmark, here is a list of typical prices you would encounter if scaling to meet the performance needs of a high-team-count high-traffic tournament at the approximate scale of an Australs (~100 teams) or above. This is a probably an overly-conservative estimate in that it is based on tournaments run on the ``2.1`` version of Tabbycat. Versions ``2.2`` and above should perform dramatically better and thus have less need to scale using Standard and Performance dynos." +msgstr "" + +#: ../../guide/scaling.rst:139 +msgid "1x ``Hobby Basic Postgres Plan`` ($9/month) run all day for 14 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:140 +msgid "A tournament of this size will require an upgraded database tier for the time when you are adding new data; i.e. during registration and rounds. Once the tab is released (and no further data changes needed) however you can downgrade it back to the ``Hobby Dev`` tier." +msgstr "" + +#: ../../guide/scaling.rst:141 +msgid "1x ``Hobby Dyno`` ($7/month each) run all day for 7 days = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:142 +msgid "As recommended, 1 hobby dyno should be run as a baseline in order to see the metrics dashboard; but this can be downgraded a day or so after the tab has been released and traffic is sparse." +msgstr "" + +#: ../../guide/scaling.rst:143 +msgid "3x ``Standard 1X Dyno`` ($25/month each) run 10 hours a day for 4 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:144 +msgid "This higher quantity of dynos should only be necessary during traffic spikes (i.e. draw releases, immediately after round advances, and tab release) but unless you want to be constantly turning things on/off its usually easier just to upgrade them at the start of each day of in-rounds (or when the tab is published) and downgrade them at the end of each day. As mentioned earlier, you should occasionally check the *Dyno Load* in the Metrics area and adjust the number of dynos as needed." +msgstr "" + +#: ../../:1 +msgid "``Autoscaled Performance M Dynos`` ($250/month each) average of 5 run for 1 hour = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:146 +msgid "For just round 1 it is a good idea to upgrade to the ``Performance M`` tier so you can enable auto-scaling and thus have the site automatically adjust the number of dynos to the amount of traffic it's getting (rather than having to guess the number of dynos needed ahead of time). Doing so ensures that the first round runs smoothly and means that you can then review the Metrics graphs to see what your 'peak' load looks like and resume using whatever quantity of ``Standard 1X Dyno`` will accommodate this peak load in future rounds." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/bg/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..a516d748579 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/guide/tournament-logistics.po @@ -0,0 +1,1394 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:14\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: bg_BG\n" + +#: ../../guide/tournament-logistics.rst:5 +msgid "Tournament Logistics" +msgstr "" + +#: ../../guide/tournament-logistics.rst:7 +msgid "Unlike the rest of our documentation, this section does not deal with particular features or technical concerns with Tabbycat itself. Instead it is an attempt to outline the logistics of tab direction and aims to be of general relevance for people running major tournaments. At present, it is organised by the various ‘stages' of tabbing a tournament, and most of the content takes the form of check-lists or comments designed to highlight and provide guidance on common issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:9 +msgid "Whilst it aims for general relevance, we should note that this guide is relatively opinionated and mostly written from the perspective of people whose primary experience is tabbing at Australasian tournaments using Tabbycat. That said, we welcome feedback and additions that can account for different format and regional considerations. In the future, if the guide becomes more general and more extensive, it could be spun off into a separate project." +msgstr "" + +#: ../../guide/tournament-logistics.rst:11 +msgid "As with the rest of our documentation, this page is source-available and we welcome :ref:`feedback and contributions `. Note also that we've formatted this guide a single page to reduce clutter, but the sub-sections in the sidebar can be used to help navigate across sections." +msgstr "" + +#: ../../guide/tournament-logistics.rst:14 +msgid "Planning and Preparation" +msgstr "" + +#: ../../guide/tournament-logistics.rst:16 +msgid "This section aims to outline concerns that occur in the months before the tournament: after you have agreed to help with tabbing and while the organising committee and adjudication core are deciding how they want to run key processes such as registration and feedback. It is organised in terms of who you should coordinate with in order to plan for a well-tabbed tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:19 +msgid "General Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:21 +msgid "You should avoid being the sole person responsible for that tab unless it is a small tournament. There are many cases where you want to be in several places at once and the easiest way to accommodate that is by having co-directors or trusted assistants. Few tab decisions require a single source of authority; it is far better to have multiple people available to share responsibilities around." +msgstr "" + +#: ../../guide/tournament-logistics.rst:23 +msgid "In a similar manner, it is worth considering how you can use the tournament to help train other people. Typically, knowledge of tabbing is concentrated in relatively few people and gained mostly through on-the-ground experience; meaning that every tournament should be approached as rare opportunity to help spread knowledge about tabbing more widely in a circuit. Consider reaching out to institutions or the tournament as a whole to see if they have anyone who would be interested in helping out." +msgstr "" + +#: ../../guide/tournament-logistics.rst:26 +msgid "Convenors" +msgstr "" + +#: ../../guide/tournament-logistics.rst:28 +msgid "It might sound obvious but it will pay to have a very thorough conversation about the tab process (more or less the contents of this document) with the convenors a few months out from the tournament. Do this even if you know the convenors to be knowledgeable or experienced debaters. Key concerns are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:32 +msgid "Whether internet access will be available and whether participants can be presumed to have smart phones. This has an obvious impact on how online feedback, ballots, and draw release is done. Note that Eduroam is not necessarily a reliable guarantee of access; many participants will come from universities who don't have access to it or will need to follow a setup process that is onerous or requires them to be at their home institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:33 +msgid "What kind of room is the tab room going to be? Is it possible to optimize its placement when the bookings for rooms are made? Key details include: How large is it? Does it have a sufficient amount of desk space (for data entry)? Does it have a good projector (for allocations)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:34 +msgid "If they have the resources, having an adjacent room available for just the adjudication core to use can also be useful. While you want to work closely with the adjudication core, they may want to discuss sensitive information (motions, equity) in a space without volunteers present; or they might at times get in the way of things, such as by eating lunch in the middle of a frenetic ballot entry process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:35 +msgid "Ensure that plans are made for food to be brought to tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams." +msgstr "" + +#: ../../guide/tournament-logistics.rst:36 +msgid "What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible." +msgstr "" + +#: ../../guide/tournament-logistics.rst:37 +msgid "What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors." +msgstr "" + +#: ../../guide/tournament-logistics.rst:38 +msgid "Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:39 +msgid "You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense." +msgstr "" + +#: ../../guide/tournament-logistics.rst:40 +msgid "Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:41 +msgid "How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:42 +msgid "How will critical information be shared between the tab team, adjudication core, and logistics/convening teams? For smaller/medium sized tournaments a group chat augmented by phone calls (assuming everyone knows everyone else's number) can be sufficient, but even then, you need to ensure that any critical information conveyed privately (i.e. in a call or in person) is conveyed back to the group channel. At very large tournaments (or if you have the resources) walkie-talkies are an excellent way to manage communication — just make sure you have (ahead of time) reserve the different channels to a distinct and known purpose (i.e. general discussion; just the tab team & adjudication core; just convenors)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:43 +msgid "As part of this it is ideal if the organising committees can procure local SIM cards for members of the tab team and adjudication core who are not local. These should be relatively generous in their plans — you don't want to worry about running out of minutes or data if on a critical call or using a hotspot to make critical allocation adjustments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:44 +msgid "At major tournaments you want to arrive at least a day before check-in; and ideally whenever it is that the adjudication core is arriving for their own preparation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:47 +msgid "Registration" +msgstr "" + +#: ../../guide/tournament-logistics.rst:49 +msgid "Having effective registration systems and processes is one of the most important aspects of preparing to tab a large tournament. Bad registration data *will* make setting up a tab extremely painful and introduces the chance for mistakes or inconsistencies in tab data that will only come to light in the first round. As such:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:53 +msgid "You should check in with the registration team and see what they plan to do as soon as possible after being brought on-board. As part of this you should make it clear that you should be consulted on any decisions they make about what data to collect, when to collect it, and how to collect it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:54 +msgid "Registration data should be collected into a shared and live-updating source, such as a Google Sheet. There should be as few canonical sources (ideally one) of data as possible; i.e. there should be a single sheet for individual details, a single sheet for team details, etc; and these should be maintained all the way through to check-in. For both you, and the registration team, having multiple conflicting or outdated copies of data will lead to errors. However, for the registration team these errors can usually be easily sorted out in person (at check-in) but for you that information always needs to be reliable and up to date otherwise what is imported into the tab cannot be trusted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:56 +msgid "At this point our recommendation is to, in most cases, not use specialised registration systems as they are somewhat less intuitive and less flexible than setting up good Google Forms/Sheets." +msgstr "" + +#: ../../guide/tournament-logistics.rst:58 +msgid "If, for whatever reason, the registration team are not able to give you 'live' access to the data they have on hand, make sure they send you copies of it (even if it is incomplete) well before you need it to setup the tab itself. You want to be able to verify what data is actually being collected and how it is formatted well in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:60 +msgid "You should have access to *all* of the data collected; often registration teams will make (false) assumptions about what you do or do not need. It is better to have everything and then selectively filter out what is not relevant to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:61 +msgid "It is critical that the registration team should check in with you before setting up forms asking for information. Every additional time that registration asks for data there will be less and less participation in the process, so you should aim to gather all that you need at the first opportunity; typically during the canonical individual registration phase. Particular information that should not be overlooked for tab purposes:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:63 +msgid "Individual registration should ask whether a participant is a speaker or an adjudicator." +msgstr "" + +#: ../../guide/tournament-logistics.rst:64 +msgid "If that person is a speaker it should ask for their team name/number (reconciling these later is painful)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:65 +msgid "Individual registration should ask for any accessibility requirements of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:66 +msgid "Individual registration should ask for the previous institutions of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:67 +msgid "Individual registration should ask for the email addresses of all participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:68 +msgid "Individual registration should ask for the phone numbers of adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:69 +msgid "Individual registration should ask for the gender identity of both adjudicators and speakers. Even if you are not *planning* on using this to inform processes, such as adjudicator allocations, you want it on hand in case plans change." +msgstr "" + +#: ../../guide/tournament-logistics.rst:71 +msgid "Independent adjudicators and the adjudication core should follow normal registration procedures. Having them not go through the normal process makes it easy to overlook their data or not get a complete picture of it. For example, adjudication core members might forget to nominate conflicts, or neglect to provide their previous institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:72 +msgid "You should confirm how the registration team plans to manage how people check-in to the accommodation in particular. Check-in is when issues with registration data come to light and it is vital that these changes are noted and recorded. Some form of validation of registration data *must* occur at check-in — in particular all adjudicators should be (individually) verified as present and all members of a team should confirm their presence along with their team's name/number and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:73 +msgid "After check-in you need to have a definitive list of who is physically present at the tournament so you can run a first-round draw with confidence. Registration must know this and have processes in place for recording people individually as they arrive, and for that data to filter back to you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:75 +msgid "If you are using Tabbycat's secret links for feedback or ballots these are best distributed at check-in. The registration team should know about this, prepare for it, and be provided with the pdfs to print and distribute." +msgstr "" + +#: ../../guide/tournament-logistics.rst:78 +msgid "Adjudication cores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:80 +msgid "If there is a group chat for the adjudication core you probably want to be part of it; even if you don't contribute much. There are lots of small things that end up being discussed without consideration of how they will affect tab issues and it is also a chance to get to know — ahead of time — the people you will be working with closely over the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:82 +msgid "Members of the adjudication core will often leave tab-relevant decisions until the days prior to the first round or whenever it is that they can first meet with the tab team in person. This often wastes critical time and forces rushed decisions. Many considerations can instead be raised and discussed prior to the tournament. These could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:86 +msgid "How to manage the feedback process. This typically benefits from foresight and pre-planning, rather than being decided on the ground. Key considerations are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:90 +msgid "Who submits feedback on whom? Do trainees do so on their chairs? Do panellists do so on each other? (Presuming your tab software supports these options)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:91 +msgid "Is feedback mandatory? If so, how will this be enforced exactly?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:92 +msgid "How much weight does each adjudicator's test or CV score have over the course of the tournament? By Round 3, or by Round 8, what proportion of an adjudicator's score is derived from their test and what proportion is derived from their feedback?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:93 +msgid "Will the adjudication core tweak an adjudicator's score to 'artificially' increase or decrease it to where they think it should be. For example, this could be done by adjusting a test/CV score upwards in order to compensate for bad feedback that (for whatever reason) they did not think was reliable or fair? Depending on your adjudication core's preferences and your tab software's allowances it is not unheard of for them to maintain full manual control over scores by reading/processing feedback results but only ever manually adjusting scores as a result (rather than having it automatically adjust due to the ratings in the feedback)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:94 +msgid "What is the score scale going to be? What do each of those numbers represent? How will this be communicated to participants so they can score accurately and consistently?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:95 +msgid "What kind of questions will feedback forms ask? If using :ref:`customisable printed or online forms ` consider how these questions be used tactically to identify key issues (say discriminatory scoring) or more easily identify people who should be promoted/demoted. While managing feedback is often a messy and subjective task, it can often be improved by being more targeted in what data it collects." +msgstr "" + +#: ../../guide/tournament-logistics.rst:96 +msgid "How will feedback be monitored, and how will this information feed back into the scores and allocations? At large tournaments it is not unusual for an adjudication core member to sit off each round to review and process feedback — there isn't really a good stretch of available time to do so otherwise. However even if doing this note that there are communication issues to manage here, as each adjudication core member will each end up with a relatively incomplete overview of the total volume of feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:98 +msgid "If possible it's nice to plan in advance for when the tab will be released (i.e. on the last night; the day after; etc.) as this often gets left to the last minute to be decided. Also the possibility of whether people can redact themselves from tabs should be raised, as that might be useful to inform participants of during online registration or tournament briefings. In a similar fashion, some adjudication cores might also want to limit speaker tabs to only a certain number of places, particularly at novice-centric tournaments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:99 +msgid "How to handle conflict collection; see the following section." +msgstr "" + +#: ../../guide/tournament-logistics.rst:100 +msgid "How to handle the submission of scoresheets and feedback, primarily in terms of which parts of the process should be done online and offline. Some adjudication cores will have strong thoughts here; others will happily follow whatever you recommend. Key considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:104 +msgid "Paper-based feedback is much more taxing to enter than paper-based scoresheets — typically there is much more of it; it asks for a greater variety of data; and it is submitted at inconsistent times. The one advantage is that it is easier to make feedback mandatory with paper, as you can ensure all teams and adjudicators have done so prior to leaving the room. Thus, in most cases, a good online feedback system is much more preferable than paper. If using paper be aware that you will need a lot of volunteers to ensure the feedback is collected promptly. If internet or smartphone access is limited at your tournament it is probably best to accommodate both paper-based and online methods." +msgstr "" + +#: ../../guide/tournament-logistics.rst:105 +msgid "The consequences of having incorrect or missing ballots are much more severe than for feedback. As such major tournaments use paper ballots in some form as the final stage in a checking process to ensure that the results of a debate are definitely correct — adjudicators will always make mistakes and while digital ballots can catch/prevent some types of error (i.e. a low point win) they can't catch others (assigning the wrong scores to the wrong speaker, nominating the wrong winning team, etc.). Assuming your software supports both options, the choice is thus whether to use a hybrid approach (online submission followed by paper verification) or to rely entirely on paper. A fully-paper based approach will be simpler for both yourself and adjudicators, and can be almost as efficient if you have a sufficient number of volunteers. In contrast, a hybrid approach will be potentially much faster if you are short of volunteers and if you expect that almost all adjudicators will have access to the internet, a smartphone, and are capable of following instructions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:107 +msgid "In some circuits, and when using some particular tab software, tournaments might run a 'dual tab' where there is a second, independent, version of the tab software and database into which all data is *also* entered. From what we understand this performs a dual role, as both a backup system that can take over from the main one (say if internet access drops) and as a way of verifying ballot data (by comparing draws or databases between software rather than having a two-step entry process operating for a single tab). This practice seems obsolete when working with modern web-based tab software that is capable of backing up and restoring to an offline system, but we would like to hear your feedback if you think that is not the case." +msgstr "" + +#: ../../guide/tournament-logistics.rst:110 +msgid "Conflicts/Clashes (registration/equity/adjudication core)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:114 +msgid "There should always be a *single* means of collecting conflicts (i.e. a single Google Sheet/Form) and all conflicts should go through it. Because the nature of this data is sensitive and evolving, there must be a single location where it can be easily captured and verified as having been entered into the tab. Conflicts data should never be spread across a loose collection of emails/personal messages/spreadsheets; otherwise keeping track and knowing which ones have been entered into the system will be painful and error prone. Get in touch in with equity and registration in advance and make it clear that they should not make their own conflicts form; or if they've already made one, make sure you adopt it and have access/control of it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:115 +msgid "Conflicts should, ideally, *only be collected after a participants list has been published* and requests for people to nominate conflicts should also be sent out as few times as possible. Most people will only fill this form in once, so it is vital that when asked to nominate conflicts they have as much information as they need to do so comprehensively. Without a public and reasonably-complete participants list people will either nominate conflicts that are not present (wasting your time in cross-referencing data) or not realise someone is present and raise the conflict at a latter, less opportune time." +msgstr "" + +#: ../../guide/tournament-logistics.rst:116 +msgid "In some circuits only adjudicators are allowed to nominate conflicts because of the risk of teams using conflicts 'tactically' to block adjudicators that they think are terrible judges. However, having teams nominate conflicts can be useful: adjudicators may overlook a conflict or there may be equity-based reasons that a conflict is non-symmetrical. This trade-off can be handled in two ways:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:120 +msgid "Not allow teams to nominate conflicts during registration; but allow them to approach equity teams before, or during, the tournament to identify the conflict. Equity can then raise the issue with the tab team and adjudication core and it can be added to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:121 +msgid "Allow teams to nominate conflicts during registration; but have the adjudication core review the data for 'tactical' conflicts. These are usually relatively easily identified, although can be overlooked if the adjudication core does not know the participants or their region/circuit well. The adjudication core can then override the conflict, discuss it with the teams, or raise it with equity. However, if going down this route, the tab team should discuss with the adjudication core how to manage this process well-ahead of the tournament, and ensure they actually do review the conflicts prior to the first round — otherwise it will likely surface during an allocation and become a major distraction during a critical time period." +msgstr "" + +#: ../../guide/tournament-logistics.rst:123 +msgid "As mentioned in the previous section, the adjudication core (possibly with equity) should provide some degree of guidance about what kinds of debating-related conflicts should be provided. People should be able to self-define what constitutes a conflict, but there are circumstances where they are overly cautious and can be reassured that it is not necessary. The opposite problem may occur also, where many people may have a very high bar for what defines a conflict which could lead to perceptions of bias from other participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:124 +msgid "Generally, it is preferable that each form nominates a single conflict, and people are asked to re-submit for each conflict they are adding." +msgstr "" + +#: ../../guide/tournament-logistics.rst:126 +msgid "To save you some hassle the conflict form should make this very clear (i.e. that one conflict = one submission; ensure the field labels reinforce this)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:127 +msgid "The conflict form should also make clear that you shouldn't use the form if you don't have any conflicts (i.e. people will submit 'None', 'None' etc)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:128 +msgid "The conflicts form should also make clear that adjudicator's don't need to submit a conflict for their current institution and that team's don't need to submit conflicts for adjudicators from their current institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:130 +msgid "In poorly-structured conflict forms, identifying exactly who is doing the conflicting and who is being conflicted is a nightmare. You want to structure the questions to minimise this ambiguity. A form should definitely ask:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:132 +msgid "Who are you (the conflict-specifier)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:133 +msgid "Are you a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:134 +msgid "Which institution are you from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:135 +msgid "If part of a team, which team are you in?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:136 +msgid "Who are you conflicting?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:137 +msgid "Are they a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:138 +msgid "Which institution are they from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:139 +msgid "If they are in a team, which team is it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:140 +msgid "Have previously attended any other institutions; or have other reasons to conflict entire institutions? If so, specify those institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:142 +msgid "Note that this last question can be tricky to deal with; good tab software will let you conflict an adjudicator from an institution other than their own, but it is harder to mark an individual team as having members previously attending another institution. These circumstances are rare and typically very 'soft' conflicts but are probably best handled by creating individual conflicts between that team and adjudicators from the previous institution in question." +msgstr "" + +#: ../../guide/tournament-logistics.rst:143 +msgid "Adjudication core members will often not nominate their own conflicts; presuming that they will notice and correct them during allocations. They often forget or overlook this. Their conflicts should be entered as per normal." +msgstr "" + +#: ../../guide/tournament-logistics.rst:146 +msgid "Scheduling (convenors / venue organisers)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:148 +msgid "One of the easiest ways to have things run late is to set an unrealistic schedule. As much as possible the timing allocated to rounds (inclusive of events such as lunch or committee forums) should conform to an even distribution of how long it takes to process results and create a draw/allocation — you don't want to be in a position where particular rounds have too much time and others too little time to spend on allocations and other crucial tasks. This is something that should definitely be working on in conjunction with convenors and other critical parties before they lock down timing details with food suppliers or the operators of the debating venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:150 +msgid "Note also that in most circumstances it is preferable to create a draw and allocation for the first day of the next round at the night before. This time should be built in to the schedule of the previous day, and raised with the adjudication core so they don't expect to be able to immediately depart after the day's rounds are done." +msgstr "" + +#: ../../guide/tournament-logistics.rst:152 +msgid "Below is the time taken within each round at Australs 2017. For context, this was neither a particular efficiently or inefficiently tabbed tournament. Notable details:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:156 +msgid "The tournament was ~40 rooms each round and had access to 3-6 runners and data enterers. Paper ballots were pre-printed and distributed by runners to rooms prior to the debates starting, then collected sometime after the 15 minute deliberation period. Feedback was submitted online. At Australs all adjudicators (excluding trainees) submit their own ballots." +msgstr "" + +#: ../../guide/tournament-logistics.rst:157 +msgid "The adjudication core were neither particular slow nor fast in allocating adjudicators compared to other adjudication cores. At Australs most adjudication cores will create allocations by using first running an automatic allocation then extensively tweak the results." +msgstr "" + +#: ../../guide/tournament-logistics.rst:158 +msgid "There were no serious issues that delayed the tabbing of any particular round beyond the routine and expected issues of last-minute draw changes, adjudicators producing incomprehensible ballots, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:159 +msgid "Whilst the tab ran relatively quickly, there were minor delays because of mismatches between the planned schedule and the optimal schedule from a tab perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:160 +msgid "A round at Australs takes around 2 hours from a debater's perspective: 30m of prep, ~60m for a debate, ~15m for deliberation, and ~15m for the oral adjudication and feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:161 +msgid "We didn't note the timing of data-entry in Round 8 as there was no time pressure. After data entry was finished, finalising and double-checking the breaks took through to ~7-8pm." +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Day" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "One" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Two" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Three" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "Round" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "1" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "2" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "3" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "4" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "5" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "6" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "7" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "8" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "Draw generated" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +#: ../../guide/tournament-logistics.rst:169 +msgid "*Night prior**" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:43" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "16:12" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:17*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:05" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "15:46" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:10*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:07" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "Allocation finished" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:17 ``+34m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:36 ``+24m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "20:28* ``+71m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "12:58 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:24 ``+38m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "21:30* ``+140m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:25 ``+78m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "Motions released" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:28" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:50 ``+33m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:47 ``+11m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:22" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:14 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:40 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "9:30" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "14:18 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "First ballot received" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:51 ``+143m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:46 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:52 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:18 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:13 ``+119m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:40 ``+120m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:35 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +#: ../../guide/tournament-logistics.rst:172 +msgid "?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "Last ballot confirmed" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:38 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "16:07 ``+21m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:15 ``+23m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:05 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "15:44 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:09 ``+29m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:06 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:176 +msgid "Tab Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:178 +msgid "Setting up a tab site is the most technically challenging (or at least annoying) part of tabbing. It is where you need to reconcile large amounts of data and configure a variety of settings to ensure everything will run without issues during rounds. While this is often done a day or two before the tournament, ideally you should look to do as much as possible in the week or two beforehand where there is much less time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:181 +msgid "Importing data: workflow" +msgstr "" + +#: ../../guide/tournament-logistics.rst:185 +msgid "First check with registration people if their data is complete, and if not who is missing. If it's only a few people it's viable (for tab purposes) to use place-holders for them, as long as you remember to follow up and edit their data manually later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:186 +msgid "Familiarise yourself with the different methods for importing data into your tabbing program. Typically, these include options for bulk-importing spreadsheets, for adding information piece-by-piece through a graphical interface, or a hybrid systems. Depending on your tabbing software it may be easiest to first setup your tournament on a local copy of the tab (where it will be faster to rectify mistakes) and transfer the data to the live site when everything is mostly complete." +msgstr "" + +#: ../../guide/tournament-logistics.rst:188 +msgid "If you are using Tabbycat our spreadsheet importer is definitely easiest to use on a local copy; however using the visual importer is perfectly viable for larger tournaments if you are not comfortable with the command line. When using the spreadsheet importer note that it will likely take several iterations to get the data to import cleanly as there will typically be small mismatches in speaker/institution names and the like." +msgstr "" + +#: ../../guide/tournament-logistics.rst:190 +msgid "If the tournament (or the host society) has their own domain name and your tab software is self-hosted consider whether you want to setup the tab site on their domain so that the URL is nicer and/or easier to type." +msgstr "" + +#: ../../guide/tournament-logistics.rst:192 +msgid "If you are using Tabbycat, and deploying to Heroku, be sure to read our documentation about the size of Postgres database your tournament will require. Setting up the correct size of database from the start is the best way to go, as transferring information at a later stage is a hassle and could delay the tab at inopportune times." +msgstr "" + +#: ../../guide/tournament-logistics.rst:195 +msgid "Importing data: regions/societies" +msgstr "" + +#: ../../guide/tournament-logistics.rst:199 +msgid "Societies will often have special names that they like to use in draws (that are not the same as their institution's name or acronym). These can be gathered from institutional reps or from prior tabs. When in doubt err on the colloquial / most recognisable name; particularly for formats where teams need to find each other prior to the debate." +msgstr "" + +#: ../../guide/tournament-logistics.rst:200 +msgid "If your tabbing software has methods for assigning region information to teams and adjudicators (for diversity purposes) determine with the adjudication core the types of regions that will be used." +msgstr "" + +#: ../../guide/tournament-logistics.rst:203 +msgid "Importing data: participants" +msgstr "" + +#: ../../guide/tournament-logistics.rst:207 +msgid "Check you have emails/phone numbers included in your data that will be imported (presuming your tabbing software supports this) there are useful to have on hand later for either emailing out information or quickly following up errant adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:208 +msgid "Often, the easiest way to prepare registration data for tab imports is to create new tabs in the registration spreadsheet, and use referencing to automatically order and arrange their data into the format your tab software wants. If the registration data changes significantly this will also make it easier to re-import things." +msgstr "" + +#: ../../guide/tournament-logistics.rst:209 +msgid "Often some adjudicators, typically local independents, may not be available for all rounds. Try and find out who this affects and when; once data has been imported you can :ref:`pre-check these adjudicators in and out of rounds ` (if your tab software supports this; otherwise note it for later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:210 +msgid "Remember that the swing team(s) probably also need to be imported into the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:213 +msgid "Data import: rooms" +msgstr "" + +#: ../../guide/tournament-logistics.rst:217 +msgid "Ideally you want not just a list of rooms, but also of their types and categories — i.e. what building a room is in and/or it will be coded so that participants can find it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:218 +msgid "You want to know if access to some rooms is conditional; i.e. if some rooms are only available for some rounds. Again, if your tab software supports it you can :ref:`record this availability information into the system ` (once data is imported) otherwise you can note it for later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:219 +msgid "Registration should have collected information about accessibility requirements; they should be imported into your tab software (if it :ref:`supports automatically matching accessibility requirements `) or note for later. In general you will also want to use a similar process to ensure that members of the adjudication core are assigned rooms that are close to the tab room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:220 +msgid "You also want some idea of priority; that is to say if some rooms are inconvenient (and you have more rooms than you need) they should be marked as a low priority so they will be allocated only if needed. Again, this might be automatically done by your tab software or something you will need to note and manually change after each draw is made." +msgstr "" + +#: ../../guide/tournament-logistics.rst:223 +msgid "Data import: adjudicator test/CV scores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:225 +msgid "Ideally the adjudication core should do this themselves as they are marking the test or scoring CVs. If they won't, or you don't trust them with full tab access, be prepared to do so yourself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:228 +msgid "Data import: tab access" +msgstr "" + +#: ../../guide/tournament-logistics.rst:230 +msgid "Set up user accounts for the adjudication core with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:231 +msgid "Set up user accounts for runners/assistants with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:233 +msgid "If using Tabbycat and using online ballots or feedback with the private URLs method, participants should be emailed out their private URLs before they start travelling to arrive at the tournament (i.e. when they have a reasonable chance of checking their email). This can be done using the inbuilt pages on Tabbycat, or by importing participants data into a service such as Mailchimp." +msgstr "" + +#: ../../guide/tournament-logistics.rst:236 +msgid "Pre-Rounds Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:239 +msgid "Setting up the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:241 +msgid "This is typically the first order of business, as all future pre-round setup tasks (i.e. training the adjudication core, testing printing, etc.) are better for being done in the same space that will be used throughout the rounds. Once you're in the space there are a couple of small checks to run through before the larger question of how to arrange and use the space should be tackled:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:245 +msgid "Check with convenors whether things can be left in the tab room overnight. If they can't you'll need to make plans for how to move any big items (printers; ballot stacks) to and from the tab room each day." +msgstr "" + +#: ../../guide/tournament-logistics.rst:246 +msgid "Check that the internet access in the tab room is reliable." +msgstr "" + +#: ../../guide/tournament-logistics.rst:247 +msgid "Check that the projector system works, both with whatever wired-in computer is in the room and when connected to your laptop." +msgstr "" + +#: ../../guide/tournament-logistics.rst:248 +msgid "Check what items either yourself, or the organisers, have at hand and check if anything needs to be acquired before the next day. Critical items for tab rooms are typically:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:252 +msgid "An extension cord with multi box; ideally a pair of each." +msgstr "" + +#: ../../guide/tournament-logistics.rst:253 +msgid "Whiteboard markers (assuming there is a whiteboard) otherwise permanent markers and large sheets of paper (i.e. A2) can suffice." +msgstr "" + +#: ../../guide/tournament-logistics.rst:254 +msgid "Boxes. Lots of boxes. Loose ballots are a source of confusion and error, so you want some way of temporarily storing ballots as they proceed through the entering and checking process. You probably want at least three large boxes (for ballots to-enter, ballots to-check, and finished ballots) but more will be useful." +msgstr "" + +#: ../../guide/tournament-logistics.rst:255 +msgid "Spare printing ink/toner, and paper for the printer. Ideally your paper would be multi-coloured, with each colour being used for a different round. Pastel colours are ideal, and you ideally want at least three different colours so that you don't have to repeat a colour within the same day. Be sure to calculate how many sheets you will need per round and ensure you have a generous number of spares." +msgstr "" + +#: ../../guide/tournament-logistics.rst:256 +msgid "If tabbing a format that can produce multiple ballots per-debate, staplers are essential to keep those ballots organised. Buy at least two sturdy ones." +msgstr "" + +#: ../../guide/tournament-logistics.rst:258 +msgid "Non-essential, but often useful to have items:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:262 +msgid "Whatever dongles/adapters you need to connect your laptop to the projectors, both in the tab room and in the briefing room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:263 +msgid "An Ethernet cable (or two) as a backup option if WiFi drops or is overloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:264 +msgid "Post-it notes are a great way to temporarily mark ballots with information; typically used to indicate ballots that need correcting." +msgstr "" + +#: ../../guide/tournament-logistics.rst:265 +msgid "You'll often need to make impromptu signs; sticky tape and/or blu-tack are good here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:266 +msgid "Spare pens for the people doing data entry to use" +msgstr "" + +#: ../../guide/tournament-logistics.rst:267 +msgid "Trash bags for collecting rubbish as it accumulates" +msgstr "" + +#: ../../guide/tournament-logistics.rst:268 +msgid "A Chrome Cast can occasionally be very useful if a projector or screen doesn't have accessible input cables or so that you can use a projector without having your laptop tethered to a particular podium and desk." +msgstr "" + +#: ../../guide/tournament-logistics.rst:270 +msgid "If you haven't already it's a good idea to check your printing setup by printing off a bunch of generic ballots and feedback forms to have on hand if the need arises (i.e. a ballot is missing and needs to go out ASAP; or if someone can't do feedback online and needs to do so on paper). At worst, the blank ballots you print can be used for the out-rounds. While printing these off, time how long it takes the printer to print say 25 ballots and extrapolate from that to figure out how long it will take to print the entire round's worth of ballots. Note that if printing off a round's ballots is relatively quick it can be useful to delay it in order to better accommodate any last-minute changes to the draw that happen post-announcement. It's also worth thinking about how you (or at least who will) group up the printed ballots in order to distribute them to runners." +msgstr "" + +#: ../../guide/tournament-logistics.rst:272 +msgid "At this point you should also setup whatever process you need for managing runners and the ballot collection process. At a minimum, this should probably be a spreadsheet or a list on a whiteboard outlining the different groups of rooms with spaces to mark in which runners are delivering/collecting ballots for each location. Who is running where might change from day to day and should be kept updated. It should also have some method for contacting each runner (i.e. a cell phone number)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:274 +msgid "The question of how to arrange the actual room is one with many answers, and is obviously shaped by the peculiarities of the space itself. However there needs to be some system behind it so that people know exactly where to go and what to do when there is time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:276 +msgid "The key consideration behind this system is typically the 'flow' of ballots: what happens after they are brought back from runners, but before they are completely entered into the system. Think through how you want this process to operate and how the space can be arranged to make each step as smooth as possible. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:280 +msgid "When runners initially return a big stack of ballots, what happens? They could be transferred directly to the data-enterers to start on, but it is often useful to have preliminary checks here in order to keep the job of the data-enterers as simple as possible. These checks could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:284 +msgid "For formats with multiple ballots per-debate, you typically want to identify and staple together all the ballots from a given panel." +msgstr "" + +#: ../../guide/tournament-logistics.rst:285 +msgid "For tournaments where ballots are liable to go missing (or for when you have plenty of data-enterers and want peace of mind) it is worth using the :ref:`ballot 'check-in' system of your tab software ` (if it has one) to mark off ballots as physically present in the tab room. This allows you to quickly identify which ballots are missing and begin tracking them down earlier than you would do otherwise if just waiting for the 'to enter' pile to be exhausted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:286 +msgid "Depending on your preferences and resources, ballots could at this stage be checked for errors. This could include a basic sweep for missing information (i.e. totals) or a comprehensive sweep that includes checking math errors, ambiguous handwriting, low-point wins, etc.). While this will delay the time between ballots arriving and being entered, it will mean that you can start correcting ballots sooner, and lessens the burden on (potentially inexperienced) data-enterers to check and catch these. If you have many runners, and they are familiar with how debating scoring works, this is recommended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:288 +msgid "Once this preliminary step has occurred the next task is actually entering the ballots. The number of steps here is dependent on your tab software and tab settings; you might have had the 'draft' ballot be submitted online by chairs or you might have the whole two-step process of a 'draft' ballot entry and the 'confirmed' ballot entry taking place within the tab room. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:292 +msgid "Regardless of whether you are working with a one-step or a two-step process, you want to arrange the tables where data-enterers are sitting such that their need to move is minimised. That might mean either have a central inbox of ballots to enter in the centre of the tables (such that everyone can reach it) or having multiple 'clusters' of enterers around boxes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:293 +msgid "If work with a two-step process you want those two steps to be an active part of the spatial arrangement. That is to say, typically there will be a grouping of enterers who are working on the initial ballot entry (clustered around a box or boxes) and then a separate 'downstream' grouping of enterers that work on confirming/validating those entries. Depending on the size of tournament and quantity of runners, you either want it so that individuals from the first group can easily pass their ballots to the box of the second group; i.e. by reaching across the table or walking a short distance. At huge tournaments, you might want a dedicated person to transfer ballots between boxes to prevent enterers having to get up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:294 +msgid "In a two-step process people may need to transfer roles, as generally you want to prioritise entry and then validation. Often this isn't necessarily much more efficient, but if 'rebalancing' the roles make sure that the spaces assigned to each role can accommodate extra people, and that people physically move to occupy each role." +msgstr "" + +#: ../../guide/tournament-logistics.rst:295 +msgid "In general, you want to minimise the number of ballots that each enterer feels the need to 'hoard' to work through to keep the work evenly distributed. If people are taking a large number of ballots to process, at the final stages of entering some people will have a bunch to work through while others will be finished. Making it easy to collect and pass on ballots in the space itself helps cut down on this while keeping entry efficient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:296 +msgid "While the exact spatial arrangement depends on your numbers and what furniture is available, a long rectangle is a good starting point as the ballot process is in general linear (check, enter, validate, finish). Typically, this might look like a series of tables in a row with enterers sitting on either side and with the various ballot boxes in the middle." +msgstr "" + +#: ../../guide/tournament-logistics.rst:297 +msgid "When ballots have finished being enter/validated there definitely should be some sort of final 'done' box. Take care how ballots are put here, a common source of error is people putting ballots there before they are fully finished." +msgstr "" + +#: ../../guide/tournament-logistics.rst:298 +msgid "When ballots need to be corrected you generally want to 'extract' them from this process and hand them off to a tab-director or assistant to chase up and collect. There should be a forethought process for managing this; and ideally a dedicated space for it to prevent ballots being lost and to make it easy to identify ongoing issues. This might look like a process of sticking a post-it note (outlining the error) to the ballot, and then pulling it from entry/validation and placing it on a desk. Ideally you also want one of the tab directors always *not* doing data entry so that they are immediately available to manage this process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:301 +msgid "Training volunteers" +msgstr "" + +#: ../../guide/tournament-logistics.rst:303 +msgid "If at all feasible you want to train that volunteers acting as runners and/or data enterers the day *before* the tournament starts otherwise the first round will be rough. It's generally a good idea for this training session to generally mirror the process of running a round. It's also generally a good idea that — even if you have enough people for dedicated runner and data-enterer roles — to train all volunteers so that they are familiar with each role and can fill in if needed. This has a couple of stages:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:307 +msgid "Introductions and details" +msgstr "" + +#: ../../guide/tournament-logistics.rst:311 +msgid "Volunteering is typically thankless and often stressful. It's also quite a dull and mechanical process: deliver paper; collect paper; enter numbers; check numbers. Given the rather unglamorous nature of their role you want your volunteers to feel welcome and a crucial part of a wider team. When meeting everyone for the first time try and run the introductions in a non-perfunctory manner and get to know people's background/interests and outline how valuable they are to the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:312 +msgid "As part of this process you should, note their cell phone numbers or whatever means you will use to coordinate communication between the team." +msgstr "" + +#: ../../guide/tournament-logistics.rst:313 +msgid "Figure out what will be happening during downtime and how you can make it more enjoyable. Would volunteers like to watch debates, work in the tab room, etc. Is there anything they would like during those down times (music, snacks, coffee, etc.)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:315 +msgid "Rooms and Running" +msgstr "" + +#: ../../guide/tournament-logistics.rst:319 +msgid "If runners are unfamiliar with debating in general, outline the basics of what draws are, what ballots are actually for, and what this process looks like from a debater's perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:320 +msgid "Outline how/when the printing process occurs and who will sort/assign the ballots. Now is a good time to assign different runners to the different groups/rooms that they will be working with." +msgstr "" + +#: ../../guide/tournament-logistics.rst:321 +msgid "It is critical that, as a group, you actually go to everyone one of the venue groups and identify all of the venue rooms that are listed so that everyone knows exactly where to go. This may take some time. But it is a good chance to both check those rooms actually exist and pre-identify any problems that might occur with runners and debaters finding them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:322 +msgid "Outline in general what happens during ballot collecting: when to do it, how to approach chairs, what do to if they are slow or delaying. You should raise the chance of chairs being belligerent and outline how they (and you) should deal with this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:323 +msgid "If you are having runners pre-check ballots it's a good idea to fill out a few 'bad' ballots to demonstrate the kinds of checking required. If you are using any communication systems (i.e. having runners mark of buildings as 'done' in an online system) go through that now also." +msgstr "" + +#: ../../guide/tournament-logistics.rst:325 +msgid "Data entry and checking" +msgstr "" + +#: ../../guide/tournament-logistics.rst:329 +msgid "Before starting, setup logins for everyone and show them how to login. Also get an idea of what devices they will be using, or can bring, for data entry purposes. Check/ensure that they will have internet access on those devices." +msgstr "" + +#: ../../guide/tournament-logistics.rst:330 +msgid "Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots which they will occur." +msgstr "" + +#: ../../guide/tournament-logistics.rst:331 +msgid "Run through how the seating/table/box arrangement works and the types of roles at different positions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:332 +msgid "Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else." +msgstr "" + +#: ../../guide/tournament-logistics.rst:333 +msgid "Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:336 +msgid "Training the adjudication core" +msgstr "" + +#: ../../guide/tournament-logistics.rst:338 +msgid "Typically making the first-round's draw and allocation is the best time to really run through how your tab software and processes work in a 'real' environment as well as the expectations surrounding their and your role. Generous amounts of time should be budgeted for this; it's not uncommon for it to take up most of an evening. It's also worth having an older tab, or a tab full of fake data handy in order to show them how, say, the feedback or allocation interfaces look like when full of data." +msgstr "" + +#: ../../guide/tournament-logistics.rst:340 +msgid "To kick off you should probably setup tab logins for the adjudication core as necessary, outline what kinds of access they have, and (particularly if they haven't used your tab software before) outline broadly what pages they should and shouldn't access. In particular, show them how to find and parse feedback as that is often the interface where they will be spending most of their time individually. As part of this tour outline (if you haven't already) how feedback will work, as well as the means by which the adjudication core can use the tab software to keep track of feedback as it comes in. Ideally some sort of general strategy should be formed for this, so that particular people sit out rounds, or are delegated the task of catching up on feedback at other points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:342 +msgid "Depending on how many runners you have it may be necessary, or beneficial, if the adjudication core helps out with data entry. However, if you go down this route the adjudication core need to be highly trained; they are often much more likely than volunteers (who are less self-confident and have more experience) to make errors. Whether you do or don't do this, ensure that adjudication core members know to come to the tab room ASAP after they have finished adjudications rather than swanning around socialising or going to lunch. Draws will often be held up just by the fact that not enough adjudication core members are present to start or finish an allocation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:344 +msgid "The first-round allocation is the last thing you want to cover. It is typically your only change to slowly and comprehensively walk the adjudication core through the allocation interface and the allocation system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:346 +msgid "Allocation interfaces, while often complex, should be stepped through so that the adjudication core knows precisely how to operate it themselves (if needed). They should know what it can (and can't do) and how the different features can be used and activated. For example, diversity highlights might be an optional toggle (in which case you explain how to active it, when to do so, and what it represents) or there might be parts of the interface that detail information such as a room's liveness, energy, or bracket which should be highlighted and explained (i.e. how 'liveness' is determined)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:348 +msgid "Secondly, and most importantly, is outlining how the automated process of adjudicator allocation operates, and how this can be made to match the adjudication core's preferences. Typically, you want to rely on automatic adjudicator allocations as much as possible in order to decrease the time taken to do an allocation; however every adjudication core has a different philosophy on what their perfect allocation looks like, and it is your job to try and align that ideal with what the automated system produces as much as is possible. The precursor to this is yourself knowing how your tab system allocation works: what is the relationship between a debate's bracket (or assigned priority/energy) and the numeric ranking of the automatically generated panel? Does the software optimise panel strength for a voting majority, or across all panellists? When does the software allocate solo chairs over panels? How does it avoid conflicts? Does it have (and enforce) particular expectations for a given adjudicator's score; or does it rely on a more relative comparison? The answers to the questions will often be dramatically different between different programs and you should know them in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:350 +msgid "Most tab software will have at least some options for you to configure those automated processes — either by changing the automatic allocation's parameters directly or by controlling the ranking and feedback systems that feed into it. The first round is the prime opportunity to configure these options so that they align as close as possible with what the priorities of the adjudication core. If your feedback ranking system is mismatched with how you expect the automatic allocation to place adjudicators, or if the distribution of adjudicators across the draw is not what you expect, the adjudication core will end up wasting significant amounts of time adjusting allocations. Even if things work well using the default settings, ensure you experiment and demonstrate the consequences of changing the settings just to show that it can be done, what the general effects are, and to see if there are even-better configurations." +msgstr "" + +#: ../../guide/tournament-logistics.rst:352 +msgid "This process of tweaking the automatic allocation settings is one you should also revisit as the rounds progress." +msgstr "" + +#: ../../guide/tournament-logistics.rst:354 +msgid "How to approach diversity (typically in terms of region and gender) across an allocation in particular is something that some members of an adjudication core will not have had to consider in the context of a large tournament with time pressure or in terms of having to make explicit trade-offs. Again, you should make it clear how the software can accommodate this, and get the adjudication core to plan for how (in general) they want to approach this. Often it will form the final phase of the allocation process, and so can easily be forgotten or skipped over; or people will have different philosophies of how to approach this which are only raised at critical points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:356 +msgid "Outline that there will usually be a trade-off between the quality of each allocations and the speed at which the tournament runs. When time is not a factor, many adjudication cores will often take an hour or more in order to create a perfect allocation; but they should know though that aiming for perfect during many rounds will break the schedule. You should try and get them to set some sort of time goal for allocations, and (during the rounds) ensure that they are aware of when they are going too fast or too slow. Depending on your personal preferences and the norms surrounding tab direction in your circuit you may want to actual enforce these time limits." +msgstr "" + +#: ../../guide/tournament-logistics.rst:358 +msgid "Finally, outline how you will all communicate. Again, there should be a single medium for this so that everyone knows what is going on; and this is ideally something that has been planned out beforehand with them and the organising committee. But at this point the tab team may have expanded, or there may be better options than what was being used previously. It's also worth outlining which parts of the tab team will generally be doing what roles and where — i.e. who will be rolling the draw, who will be chasing up people, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:361 +msgid "Preparing a briefing" +msgstr "" + +#: ../../guide/tournament-logistics.rst:365 +msgid "At large tournaments there should be some form of briefing covering ballots and feedback process, even if it is just quick one. Usually you will want to be the person to design and deliver this; other people less-familiar with the system may miss details." +msgstr "" + +#: ../../guide/tournament-logistics.rst:366 +msgid "Liaise with convenors and the other people doing briefings to ensure (a) they know you're doing one; and (b) you are not overlapping in terms of content." +msgstr "" + +#: ../../guide/tournament-logistics.rst:367 +msgid "See the last section of this document for notes on what can be useful to include here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:370 +msgid "Final checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:374 +msgid "Check if the convenors have made a map that clearly outlines where the rooms are. Ensure it's clear and post it to either the tab site (ideally) or somewhere like Facebook." +msgstr "" + +#: ../../guide/tournament-logistics.rst:375 +msgid "Check that convenors have some sort of way-finding system in place, i.e. chalked directions or colour-coded signs. Check these colour codes match the names of your venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:376 +msgid "Check that the draw types are correct for each round in the tab system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:377 +msgid "Check with adjudication core if/when there are secret rounds and that these are correct in the edit data base area." +msgstr "" + +#: ../../guide/tournament-logistics.rst:378 +msgid "Check how the draw will be displayed and managed. Is the projector good; how big does the text size need to be? How fast is the scroll?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:379 +msgid "If you will pre-print ballots check that you've set the \"return ballots to\" configuration setting; even if it just says \"to runners\"." +msgstr "" + +#: ../../guide/tournament-logistics.rst:382 +msgid "Managing Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:384 +msgid "Once everything has been setup and everyone knows what they should do, the actual process of running each round should go smoothly. It probably won't though. The earlier sections should have laid out what the ideal process for managing data entry and allocations, so this section will instead focus on what can go wrong and what to keep an eye out for." +msgstr "" + +#: ../../guide/tournament-logistics.rst:387 +msgid "Disaster scenarios" +msgstr "" + +#: ../../guide/tournament-logistics.rst:389 +msgid "There are two broad classes of disaster scenario here. The first, and more rare case is when either internet access at the venue goes out or if a web service that your tab software depends on has an outage (for example, both Tabbie 2 and Heroku-deployed Tabbycat instances depend on Amazon Web Services). The first can at least be solved temporarily if tethering is available, but if that is not possible (or the latter case occurs) you may need to switch to using an offline copy of that tab by restoring from a backup if the outage is non-transient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:391 +msgid "Obviously, for this to work, you should be taking regular backups using whatever mechanism your tab software allows. Key times to do so are critical events such as finishing entering a round's data or finalising an adjudication allocation as these are especially difficult to recreate. Importantly, these backups are only useful to you if you have a downloaded copy of them; ideally download to a Dropbox or some other cloud service that will spread them across multiple computers and an online service." +msgstr "" + +#: ../../guide/tournament-logistics.rst:393 +msgid "Having an outage of internet access or a key web service go down to the point of having to switch to an offline tab is an exceedingly rare event, but one worth planning for at large tournaments. That is to say you should have ideally have an offline copy of your tabbing software setup on your local machine, and know how to restore a backup to it if necessary." +msgstr "" + +#: ../../guide/tournament-logistics.rst:395 +msgid "Backups are also useful as guards against a much more common source of error: data loss caused by user error. It is not unheard of for even experienced tab directors (or inexperienced adjudication core members) to accidentally delete an entire allocation, delete a round, or some other form of destructive action that would require a lot of work to redo. Taking backups at key points, and knowing how to restore them (to the online copy of the tab) is a useful — and occasionally essential — skill." +msgstr "" + +#: ../../guide/tournament-logistics.rst:397 +msgid "The much more common source of a major tab disruption is a major user-error or a bug within your tab software itself. Fixing these will be highly-context dependent and the best way you can prepare for them is to know your tab software well enough to understand what might have caused it or be able to contact someone else who does. That said, having backups on hand can also allow you to restore your database to before the bug or user-error occurred and try to proceed without re-triggering it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:400 +msgid "Expected problems" +msgstr "" + +#: ../../guide/tournament-logistics.rst:402 +msgid "Incorrect ballots are an inevitable tragedy. Many more optimistic tab directors will imagine that these can be prevented through sufficiently detailed briefings, recurring public shamings, or fool-proof ballot designs. While these might help in cutting down the number of errors, eliminating them entirely seems to be an unachievable goal. Note that this is particularly true at international tournaments and/or at tournaments that draw participants from circuits which have more than one predominant format." +msgstr "" + +#: ../../guide/tournament-logistics.rst:404 +msgid "While debaters as a whole display astonishing levels of innovation in discovering new ways to incorrectly fill in a ballot, there are a couple of broad cases that you should look out for an prepare people to deal with:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:408 +msgid "Not adding up score correctly. Pretty much everyone who does this will note that this is the first time that it has ever happened to them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:409 +msgid "Omitting some information. Most common are not filling in total scores, the nominating winner, or the margin. Having omitted an entire team's scores or speaker names is not uncommon." +msgstr "" + +#: ../../guide/tournament-logistics.rst:410 +msgid "Scores that are outside the range." +msgstr "" + +#: ../../guide/tournament-logistics.rst:411 +msgid "Low-point wins, or tied-point wins. Typically occurs in conjunction with (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:412 +msgid "Poor handwriting rendering numbers illegible. While one could 'guess' whether a number is in fact a 6 or a 5 based on a team's total score, doing so is dangerous as it assumes that the person hasn't also done (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:413 +msgid "'Correcting' information in an ambiguous way. For example, using arrows to swap a speaker's order (which is typically circular/ambiguous) or drawing numbers over other numbers in a way that makes it unclear which is the original and which is the replacement." +msgstr "" + +#: ../../guide/tournament-logistics.rst:414 +msgid "Ballots just going entirely missing because either a runner missed the room, the chair forgot to return it, or the chair just left it in the room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:416 +msgid "Ballots aside, there are a number of other common occurrences that will necessitate changes to the drawn and allocations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:420 +msgid "Teams will not turn up to debates, or turn up to debates extremely late. In both cases they will often not notifying anyone. Aside from needing to swap in a swing team in their place in the draw, it's worth keeping in mind that the necessity of a swing team might not be known until right when debates are about to start (which can lead to issues if you assume trainees or runners will be filling up the 'spare' swing team)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:421 +msgid "Adjudicators will also go missing. As with teams this can usually be caught during roll call; but might also not be known up until debates start. If the adjudication core is available they can make adjustments, but often you will need to make a call as to whether to form an even-sized panel or to redistribute adjudicators from elsewhere." +msgstr "" + +#: ../../guide/tournament-logistics.rst:422 +msgid "When a draw is released there will often be conflicts that were unknown to the tab system, and will necessitate making changes to the draw post-release. It's important that when making these changes you keep a clear record of what needs to change (if there are multiple swaps needed it can get tricky to keep track of) and ensure that all parties involved know about where they are being swapped to." +msgstr "" + +#: ../../guide/tournament-logistics.rst:425 +msgid "Ongoing checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:427 +msgid "You will have a decent amount of downtime during rounds when debates are happening. A couple of things its worth keeping an eye on during that time:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:431 +msgid "Ensuring your backups have been taken and downloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:432 +msgid "Ensuring the tab room isn't devolving into mess." +msgstr "" + +#: ../../guide/tournament-logistics.rst:433 +msgid "If you can be bothered (and if no adjudication core member is doing so) reviewing feedback for critical issues (i.e. comments highlighting severe issues, or chairs getting very low scores) is a good way to be useful. If using paper-based feedback this can look like physically separating out these feedback forms for the attention of the adjudication core; while if using online feedback systems you may want to keep a collection of browser tabs to show." +msgstr "" + +#: ../../guide/tournament-logistics.rst:434 +msgid "Chasing up the language committee (if one exists for this tournament) to confirm which teams are in which category and what their break preferences are (if multiple breaks are not allowed). You want to have this information confirmed as soon as possible as it becomes of critical value to allocations once the draw starts segmenting into live/dead rooms." +msgstr "" + +#: ../../guide/tournament-logistics.rst:435 +msgid "Reviewing how efficiently things are running and whether there are any bottlenecks that can be better addressed in the next round. It's generally a good idea to (on a whiteboard or a spreadsheet) keep track of how long each stage of a round is taking (running, data-entry, allocation) and what (if anything) is causing delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:437 +msgid "If hosting Tabbycat on Heroku keep an eye on the metrics section of the dashboard area, noting if there are 'timeout errors' and what the average response times are. Adding more dynos should help with both." +msgstr "" + +#: ../../guide/tournament-logistics.rst:440 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:443 +msgid "Generating the adjudicator's break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:445 +msgid "Determining the adjudicator break generally involves a complex set of considerations rather than strictly ranking based on feedback. As such most adjudication cores will use whiteboards or Google docs to draft and discuss the possible options. One thing to note here is that breaking adjudicators will need to be marked as such in the tab at some point (both so they can be on future draws, and for publication) so you want to be careful that the tab is the final source of authority here — it is easy for information to get out of sync between what the adjudication core is using to draft the break and the system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:447 +msgid "When the adjudication core is determining the break ensure that they have an idea of the *quantity* of adjudicators needed (breaking too few or too many will cause issues) and whether there are any special considerations (such as having conflicts with large portions of the draw, or leaving at a given point) that involve a specific adjudicator being considered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:450 +msgid "Generating the team break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:452 +msgid "Before doing so in an automated fashion, first check in your tab software whether all teams are assigned to the right break categories. Depending on whether your software supports multiple formats you probably also want to check that each break category is using the right 'rule' specified by the tournament (i.e. a WUDC- or Australs- compliant break ranking). Also double check the break size itself is correct in the software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:454 +msgid "Hopefully the automated system will generate a correct break, but this should always be checked against what you'd expect the results to be from standings. Note also that there are cases, such as when a team has to leave, or when teams are or are not double-breaking, that mean the automated break results need to be overridden (typically in Tabbycat you would add a marker or note to include their ranking, but exclude them from having a break rank)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:457 +msgid "Announcing the break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:459 +msgid "Mistakes are made surprisingly often during results announcements. Again, this is often a problem with incomplete or out of sync data, where print-outs, slides, or the tab site itself might not reflect (for example) last minute changes about breaks or have potentially mixed up teams or adjudicators with similar names. Things that can help:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:463 +msgid "Have a single source for what is being read out — i.e. a printed list (recommended) or the tab site itself — but don't mix and match. If making slides (often a good idea for large/crowded venues) copy the data from the canonical source being announced." +msgstr "" + +#: ../../guide/tournament-logistics.rst:464 +msgid "Double check what is being read out against the tab site, and/or whatever draft lists were used to determine the adjudicator's break. Verify with the adjudication core that everyone who should be there is, and that nobody is missing." +msgstr "" + +#: ../../guide/tournament-logistics.rst:465 +msgid "Clarify what information should be on the print-outs and the general order in which things are read. For example, it might be easy to omit breaking adjudicator's institutions, to use ambiguous abbreviations over full institution names, or to have an inconsistent approach to how the information is read (i.e. whether it is read as *wins* then *team points* then *team name*)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:466 +msgid "Without revealing any details try and get at least some guidance on how to pronounce names that people are not familiar with pronounce." +msgstr "" + +#: ../../guide/tournament-logistics.rst:467 +msgid "Have backup copies of whatever is being read from and clarify who is reading off what portions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:468 +msgid "Try to publish the break list on the tab website (or via some other online method) shortly after it is announced in order to minimise the chance of misinformation spreading." +msgstr "" + +#: ../../guide/tournament-logistics.rst:471 +msgid "Managing the out-rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:473 +msgid "Out-rounds are generally under less time pressure and can be managed by just one or two members of the tab team. However, they tend to be run in a more haphazard fashion, so there are a couple of things to keep on top of:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:477 +msgid "You should keep track of which adjudicators have or have not been used throughout the finals allocations. It is easy for adjudication cores to forget to allocate someone and have to either drop them or promote them beyond what they had originally intended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:478 +msgid "It is very easy for ballots to get lost in break rounds as chairs have less defined roles and processes in what they do with their ballots. While having correct speaker scores correctly entered for break rounds isn't a strict necessity, it is nice to have and the alternative (using fake speaks just to record the winner) can cause confusion. Closely manage distributing ballots to the chairs and collecting them as soon as possible afterwards; especially if there is any time pressure. Generally it is not worth printing off per-debate ballots; just print a stack of generic ballots at the start of the out-rounds and distribute as needed." +msgstr "" + +#: ../../guide/tournament-logistics.rst:479 +msgid "You should know, in addition to when the break rounds are, when the results announcements are. Often these announcements are saved (for suspense or logistics reasons) until particular points of time (i.e. until the evening social; or until other out-rounds are finished). Obviously it's important not to accidentally release results; but often convenors and the adjudication core will often have different ideas about when results are meant to be released." +msgstr "" + +#: ../../guide/tournament-logistics.rst:481 +msgid "If using Tabbycat to manage out-rounds with multiple break categories, note that the round progression is no longer strictly linear. So be careful with when/if results are released online and note that often you can't rely on online interface to release draws publicly." +msgstr "" + +#: ../../guide/tournament-logistics.rst:484 +msgid "Preparing for tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:486 +msgid "At some point, if you haven't already, have a discussion with the adjudication core about when the tab itself will be released and what data will be released. Well before the tab is due to be released you want to check that anonymisations and any speaker flags (i.e. Novice, ESL) are up to date in your tab software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:489 +msgid "Managing the tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:491 +msgid "Almost there!" +msgstr "" + +#: ../../guide/tournament-logistics.rst:493 +msgid "If hosting Tabbycat on Heroku it's worth increasing the resources available to the server for the ~12 hour period following tab release; it's by far the most concentrated burst of traffic the site will receive. Because Heroku bills by the hour, even going to a relatively expensive option, such as performance dynos with auto-scaling, will be very cheap if run just for this period. That said the site should be relatively resilient even in the face of large amounts of traffic; even running with the most basic resources allocated, at worst pages will be temporarily slow or not load." +msgstr "" + +#: ../../guide/tournament-logistics.rst:495 +msgid "To get an idea of how the site is performing in the Heroku dashboard keep an eye on the average request time number and adjust the number of dynos to try and keep it under say two seconds; ideally just one. When you first turn on the tab release settings, make sure you go through and load every page before announcing it to the public, doing so will trigger the caching mechanism that means potentially complex pages (say the speaker tab) don't need to be calculated from scratch each time someone loads the page." +msgstr "" + +#: ../../guide/tournament-logistics.rst:498 +msgid "Post-tournament" +msgstr "" + +#: ../../guide/tournament-logistics.rst:500 +msgid "Once you have sufficiently recovered, consider writing up and sharing a post-script about how things went; noting things that did or didn't go well. Next year's tab directors would certainly appreciate it, and it would be great to see this kind of knowledge spread more widely. The developers of your tab software would also appreciate hearing your feedback; particularly if there were issues that could have been prevented or ameliorated by the software itself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:503 +msgid "Appendix: Briefing Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:505 +msgid "This is a very loose, but not exhaustive, collection of things that are useful to communicate to speakers and adjudicators in a tab briefing. While briefing fatigue is real, having clear expectations about how things like ballots and feedback work are highly valuable uses of the tournament's time if they can at all help cut down the kinds of problems that delay the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:508 +msgid "How feedback works" +msgstr "" + +#: ../../guide/tournament-logistics.rst:510 +msgid "Is it online, or offline? If online did people receive links? What do they do if they have lost it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:511 +msgid "Is feedback mandatory? What accountability mechanisms are there? Will you publish the shame list online or raise it in between rounds?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:512 +msgid "Who will be submitting feedback on who? Do trainees do so?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:513 +msgid "Remind teams that only one of their feedbacks count; they should coordinate who is doing it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:514 +msgid "What is the feedback scale? What does it correspond to? Common sources of confusion:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:516 +msgid "Feedback scales are not like Uber. You do not get five stars for being adequate and generic." +msgstr "" + +#: ../../guide/tournament-logistics.rst:517 +msgid "Feedback scales are not relative to position; it is an absolute scale. That is to say, if your trainee was good, they probably do not deserve the highest rating; they get whatever rating indicates they should be a panellist or low-chair." +msgstr "" + +#: ../../guide/tournament-logistics.rst:518 +msgid "Consider accompanying the score/scale with a statement characterising how these numbers correspond to positions - e.g. a 4.0 means 'should continue on good panels, should chair low rooms'" +msgstr "" + +#: ../../guide/tournament-logistics.rst:520 +msgid "If using online submission options, what should people without phones or internet access do?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:523 +msgid "How ballots work" +msgstr "" + +#: ../../guide/tournament-logistics.rst:525 +msgid "This part of the presentation will be condescending. It is also necessary. The two causes of delays in the draw running late, and thus the tournament running late are (1) people not filling out ballots correctly or (2) people's ballots going missing. Emphasise that this should be taken seriously; minutes spent chasing bad ballots are often minutes that delay every single person at the tournament from doing what they are actually here to do. You should highlight, ideally with illustrated examples:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:529 +msgid "Which parts of the ballot *must* be filled in; people will often overlook margins, or special fields such as motion vetoes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:530 +msgid "That people must specify the full names of speakers; not nicknames or just-first names. Often names will be written poorly or have ambiguities (i.e. two speakers on a team called James) and having the full name is the only way to resolve it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:531 +msgid "That people should **not draw arrows to swap the order of speakers** as these are impossible to decipher. Here, and in other areas, always *cross-out* information clearly and write it again rather than using arrows or drawing over what is there." +msgstr "" + +#: ../../guide/tournament-logistics.rst:532 +msgid "That people should try and write numbers in a manner that makes them crystal clear. Put cross-bars in 7s; bases on 1's. Make 8's actually look like two circles. If people know they have poor handwriting maybe consider writing the literal words — *seventy-one* below the numbers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:533 +msgid "That for styles that do not have a single ballot for a panel, reiterate that everyone fills in their own ballots. At Australs, if this isn't made absolutely clear someone will average their panels ballots in order to try and 'help' you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:534 +msgid "That runners do not fill out ballots. In BP, remind them that only chairs should fill out ballots (i.e. it cannot be deputised to a wing). In formats with individual ballots, remind chairs to make sure their wings have actually filled out a ballot, and get them to check for errors or ambiguities." +msgstr "" + +#: ../../guide/tournament-logistics.rst:535 +msgid "That everyone is bad at math. People who think they are good at math just haven't messed up their ballot *yet*. Emphasize that people should always use their phone's calculators to check totals. At typical tournaments using exclusively paper ballots math errors happen multiple times a round, almost every round." +msgstr "" + +#: ../../guide/tournament-logistics.rst:536 +msgid "How long people have to fill out their ballots. Suggest that chairs actually keep track of this time during a stopwatch, and start moving towards critical steps (i.e. scoring) well *before* the time is up, not *once* it is up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:537 +msgid "Outline what chairs should do to return ballots. If ballots are being run by runners, outline what they should do if a runner doesn't appear. If they are not being run by runners remind people that returning ballots should be there number one priority, over say giving a lengthy adjudication or team feedback. Or getting lunch." +msgstr "" + +#: ../../guide/tournament-logistics.rst:538 +msgid "Remind people to *be nice to runners* and that being mean to runners will have serious consequences." +msgstr "" + +#: ../../guide/tournament-logistics.rst:539 +msgid "Remind people that the tab team and adjudication core will not, except for absolutely exceptional circumstances, accept photos or messaged descriptions of ballots; that all results must be on paper and handled in the same manner. The adjudication core should also be reminded of this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:542 +msgid "How to locate the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:544 +msgid "People should know how to get to the tab room, either to raise issues with the adjudication core or to correct ballot errors. Make it crystal clear where it is and how to get there. Also ensure people know not to barge in; that they should knock and wait." +msgstr "" + +#: ../../guide/tournament-logistics.rst:546 +msgid "Clearly communicate the contact details of the tab directors and get people to take them down. In most cases you do not want people going through convenors or the adjudication core for any tab-related issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:549 +msgid "Misc" +msgstr "" + +#: ../../guide/tournament-logistics.rst:551 +msgid "Now is a good time to encourage people to consider getting involved with tabbing and tab-development. Emphasize that both do not necessarily require technical skills and that tabbers are (or should be) open to feedback and ideas from the wider community. Tell people to come find you and chat if they are interested and put up a link to the `Facebook tabbing group `_." +msgstr "" + +#: ../../guide/tournament-logistics.rst:553 +msgid "If you appreciated this guide we'd appreciate a slide promoting `Timekept `_ and `Debatekeeper `_. This would also be a good point to remind people that their timekeeping apps shouldn't be making noise *unless* they have been explicitly assigned to keep time by the chair." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/guide/upgrading.po b/docs/locale/bg/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..e6583ed2b42 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/guide/upgrading.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: bg_BG\n" + +#: ../../guide/upgrading.rst:5 +msgid "Upgrading Tabbycat" +msgstr "" + +#: ../../guide/upgrading.rst:7 +msgid "Generally only want to upgrade copies of tab sites that are used on an ongoing basis for multiple tournaments, or if there is a bugfix release between when you setup your site and when the tournament is running." +msgstr "" + +#: ../../guide/upgrading.rst:11 +msgid "Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade." +msgstr "" + +#: ../../guide/upgrading.rst:14 +msgid "Upgrading a Local Copy" +msgstr "" + +#: ../../guide/upgrading.rst:16 +msgid "Assuming you haven't made any changes to the Tabbycat code, upgrading a locally installed copy should just be a matter of `downloading the latest source code `_ and replacing the existing files with the new ones. If you used git to download these files initially you can just pull down the latest copy of the master branch to do this." +msgstr "" + +#: ../../guide/upgrading.rst:18 +msgid "You would then repeat the \"Install Tabbycat\" instructions for your original installation method." +msgstr "" + +#: ../../guide/upgrading.rst:21 +msgid "Upgrading on Heroku" +msgstr "" + +#: ../../guide/upgrading.rst:23 +msgid "The easiest way to upgrade a Heroku site is to create an account on Github and then to `'fork' `_ the `Tabbycat repository `_." +msgstr "" + +#: ../../guide/upgrading.rst:25 +msgid "Once you have done this you can login to your Heroku Dashboard, go to your app, and then navigate to the Deploy tab. In this tab, adjacent to *Deployment method* select the GitHub option. This will bring up a new 'Connect to GitHub' section where you can search for 'Tabbycat' to find the copy of the repository you made earlier and connect it." +msgstr "" + +#: ../../guide/upgrading.rst:29 +msgid "Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/index.po b/docs/locale/bg/LC_MESSAGES/index.po new file mode 100644 index 00000000000..69b8fa039d0 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/index.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:34\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: bg_BG\n" + +#: ../../index.rst:18 +msgid "Installation" +msgstr "Инсталиране" + +#: ../../index.rst:32 +msgid "Using Tabbycat" +msgstr "Използване на Табикат" + +#: ../../index.rst:41 +msgid "Tabbing Guide" +msgstr "" + +#: ../../index.rst:52 +msgid "Feature notes" +msgstr "" + +#: ../../index.rst:75 +msgid "About" +msgstr "Относно" + +#: ../../index.rst:8 +msgid "Tabbycat User Guide" +msgstr "Наръчник за употреба на Табикат" + +#: ../../index.rst:10 +msgid "Tabbycat is a draw tabulation system for parliamentary debate tournaments. It supports two-team formats such as Australs, World Schools, Asians, Australian Easters and all New Zealand formats, as well as British Parliamentary (WUDC). It is also highly configurable, supporting many custom variations of the above formats too. If you're looking for a general overview of the software, check out our `README on Github `_." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/docker.po b/docs/locale/bg/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..12e5b639176 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/docker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: bg_BG\n" + +#: ../../install/docker.rst:5 +msgid "Installing Locally using Docker" +msgstr "" + +#: ../../install/docker.rst:7 +msgid "Is this the best install method for you?" +msgstr "" + +#: ../../install/docker.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/docker.rst:12 +#, python-format +msgid "If you need an offline copy of Tabbycat, installing using Docker should be simpler and quicker than using the \"Install Locally on…\" instructions for your operating system. However if a Docker installation doesn't work as outlined below, it's harder to address what isn't working. If you encounter any problems with Docker, we recommend using the \"Install Locally on…\" option as a fallback, but if you need to do so, `please also report the issue you're having on GitHub `_ or :ref:`contact the developers `." +msgstr "" + +#: ../../install/docker.rst:14 +msgid "Docker is an application that makes it very easy to load and run a specific collection of software. It allows us to bundle everything necessary to run Tabbycat into a single package rather than have users install everything needed step-by-step. Once set up, Docker will allow you to start and stop a webserver (that in turn runs Tabbycat) on your computer whenever you want and without the need for internet access." +msgstr "" + +#: ../../install/docker.rst:18 +msgid "1. Download Tabbycat" +msgstr "" + +#: ../../install/docker.rst:20 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/docker.rst:22 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/docker.rst:24 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/docker.rst:28 +msgid "2. Install Docker" +msgstr "" + +#: ../../install/docker.rst:31 +msgid "If using macOS or Linux" +msgstr "" + +#: ../../install/docker.rst:33 +msgid "Install the **Docker Community Edition (stable)** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:36 +msgid "If using Windows 10 Pro, Enterprise, or Education Edition" +msgstr "" + +#: ../../install/docker.rst:40 +msgid "Install the ****Docker Community Edition (stable)*** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:41 +msgid "Before or shortly after installing it, Docker may ask you to enable hypervisor and restart your PC. If it asks you this follow the prompts and restart as asked." +msgstr "" + +#: ../../install/docker.rst:42 +msgid "Once Docker has finished installing, open up the newly-installed Docker application, then right-click the app's icon (the whale) in the Taskbar." +msgstr "" + +#: ../../install/docker.rst:43 +msgid "From there, hit *Settings* in the menu and *Shared Drives* in the sidebar. Tick the checkbox next to your hardrive and then click *Apply*. After that has applied exit and reopen the docker app (ie right-click the taskbar icon and hit exit) and verify that the checkbox is still there." +msgstr "" + +#: ../../install/docker.rst:49 +msgid "If using Windows 7, Windows 8, or Windows 10 Home Edition" +msgstr "" + +#: ../../install/docker.rst:51 +msgid "Install the **Docker Toolbox** from the `Docker Toolbox downloads page `_." +msgstr "" + +#: ../../install/docker.rst:53 +msgid "Not sure which edition of Windows you have? Click Start, search for \"System\", and open the Control Panel item \"System\"." +msgstr "" + +#: ../../install/docker.rst:57 +msgid "3. Run Tabbycat in Docker" +msgstr "" + +#: ../../install/docker.rst:60 +msgid "If using the Docker App" +msgstr "" + +#: ../../install/docker.rst:62 +msgid "*These instructions apply if you installed the Docker App, i.e., if you are using macOS, Linux or Windows Pro/Enterprise/Education.*" +msgstr "" + +#: ../../install/docker.rst:66 +msgid "Ensure that Docker application is open (there should be a whale icon in your menu/task bar) and that it says that Docker is running." +msgstr "" + +#: ../../install/docker.rst:68 +msgid "Browse to the location where you extracted Tabbycat to. Open up the **bin** folder there. Within that folder:" +msgstr "" + +#: ../../install/docker.rst:70 +msgid "If you're on macOS, press the Control key, click the icon for **osx_docker_start.command**, then choose Open from the shortcut menu." +msgstr "" + +#: ../../install/docker.rst:71 +msgid "If you're on Windows, open **windows_docker_start.bat**." +msgstr "" + +#: ../../install/docker.rst:72 +msgid "If you're on Linux, open up a terminal in the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:74 +msgid "A terminal window should popup and bunch of text scroll by. If this is your first time running Docker it may take a while (30 minutes or more) to download the virtual machine. When the text has stopped scrolling by you should see a `Finished building Tabbycat!` message." +msgstr "" + +#: ../../install/docker.rst:76 +msgid "Open up http://localhost:8000/ (Windows) or http://0.0.0.0:8000 (OSX/Linux) in a browser of your choice!" +msgstr "" + +#: ../../install/docker.rst:78 ../../install/docker.rst:100 +msgid "If you want to reopen Tabbycat at a later time (say after restarting) repeat steps 1 through 4 here." +msgstr "" + +#: ../../install/docker.rst:81 +msgid "If using the Docker Toolbox" +msgstr "" + +#: ../../install/docker.rst:83 +msgid "*These instructions apply if you installed the Docker Toolbox, i.e., if you are using Windows 7, Windows 8 or Windows 10 Home.*" +msgstr "" + +#: ../../install/docker.rst:87 +msgid "Start the **Docker Quickstart Terminal**." +msgstr "" + +#: ../../install/docker.rst:89 +msgid "Run the command ``docker-machine ip``. Take note of the IP address it shows, for example::" +msgstr "" + +#: ../../install/docker.rst:94 +msgid "Navigate to the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:96 +msgid "Open a browser and go to http://192.168.99.100:8000/, replacing \"192.168.99.100\" with whatever IP address was shown in step 2." +msgstr "" + +#: ../../install/docker.rst:98 +msgid "Once you're done and want to stop the Tabbycat server, press Ctrl+C, wait until the next prompt appears, and then run ``docker-machine stop``." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/heroku.po b/docs/locale/bg/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..942abce3c4b --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/heroku.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: bg_BG\n" + +#: ../../install/heroku.rst:5 +msgid "Installing on Heroku" +msgstr "" + +#: ../../install/heroku.rst:7 +msgid "When running Tabbycat on the internet, we set it up on `Heroku `_. The project is set up to be good to go on Heroku, and it works well for us, so if you'd like to run it online, we recommend that you do the same. Naturally, this requires you to have a Heroku account." +msgstr "" + +#: ../../install/heroku.rst:9 +msgid "There are two ways to do this: a **short way** and a **long way**. Most people should use the short way. The long way requires some familiarity with command-line interfaces and Git, and requires a :ref:`local installation ` as a prerequisite, but makes it easier to :ref:`upgrade versions ` later on and (unlike the short way) allows you to import data from CSV files." +msgstr "" + +#: ../../install/heroku.rst:12 +msgid "The short way" +msgstr "" + +#: ../../install/heroku.rst:13 +msgid "Click this button:" +msgstr "" + +#: ../../install/heroku.rst:18 +msgid "This is the easiest way to deploy an instance of Tabbycat online. It requires no technical background." +msgstr "" + +#: ../../install/heroku.rst:20 +msgid "If you don't already have a Heroku account, it'll prompt you to create one. Once you're logged in to Heroku, choose a name for your installation, then scroll down and click **Deploy**. Once it's finished, click **View** and follow the prompts. Once finished, open the site and from there you can easily set up a demo data set (if you just want to learn Tabbycat) or use the data importer to set up a real tournament." +msgstr "" + +#: ../../install/heroku.rst:22 +msgid "During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard." +msgstr "" + +#: ../../install/heroku.rst:24 +msgid "If you can't access a credit card, you can instead install a limited version, which we call \"Tabbykitten\". However, Tabbykitten cannot send any e-mails or handle as much public traffic. We therefore strongly recommend it only as a last resort, and even then only for small tournaments. `Use this link to set up a Tabbykitten site `_." +msgstr "" + +#: ../../install/heroku.rst:27 +msgid "The long way" +msgstr "" + +#: ../../install/heroku.rst:28 +msgid "The long way sets you up with more control over your environment. Because you'll clone `our GitHub repository`_, it'll be easier for you to :ref:`upgrade your app ` when a new version is released. You'll also have the flexibility to make and contribute updates to the source code. We recommend it if you have experience with Git. It's also easier with this method to import CSV files using the command-line importer, so if you have a very large tournament, this might make importing initial data easier." +msgstr "" + +#: ../../install/heroku.rst:30 +msgid "We've tested these instructions successfully on Windows, Linux and macOS." +msgstr "" + +#: ../../install/heroku.rst:33 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/heroku.rst:35 +msgid "You need to have at least a passing familiarity with command-line interfaces to get through the longer traditional method. We'll talk you through the rest." +msgstr "" + +#: ../../install/heroku.rst:37 +msgid "When we say \"command shell\", on Windows we mean **Command Prompt**, and on Linux and macOS we mean **Terminal** (or your favourite command shell)." +msgstr "" + +#: ../../install/heroku.rst:39 ../../install/heroku.rst:100 +msgid "Advanced users" +msgstr "" + +#: ../../install/heroku.rst:42 +msgid "Tabbycat is a `Django `_ project. As such, it can be installed on any web platform that supports Django, using any SQL system that Django supports. Just be aware that we haven't tried any other platform." +msgstr "" + +#: ../../install/heroku.rst:45 +msgid "Short version of the long way" +msgstr "" + +#: ../../install/heroku.rst:47 +msgid "We provide a \"short version\" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below." +msgstr "" + +#: ../../install/heroku.rst:56 +msgid "If you want to :ref:`import tournament data ` from CSV files, :ref:`install Tabbycat locally `, put your CSV files in ``data/yourtournamentname``, then::" +msgstr "" + +#: ../../install/heroku.rst:68 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/heroku.rst:70 +msgid "Install the `Heroku Command Line Interface (CLI) `_, then log in with the command ``heroku login``." +msgstr "" + +#: ../../install/heroku.rst:72 +msgid "If you don't already have **Git**, follow the `instructions on the GitHub website `_ to set up Git." +msgstr "" + +#: ../../install/heroku.rst:75 +msgid "2. Set up a local installation" +msgstr "" + +#: ../../install/heroku.rst:77 +msgid "If you don't already have a local installation, follow the instructions on the page for your operating system, listed below, to set up a local installation." +msgstr "" + +#: ../../install/heroku.rst:79 +msgid "When downloading the source code, you **must** take the option involving cloning the GitHub repository using Git. In the macOS and Windows instructions, this means the option described in the \"Advanced users\" box. To do so, use these commands:" +msgstr "" + +#: ../../install/heroku.rst:86 +msgid "Do not download the .tar.gz or .zip file and extract it." +msgstr "" + +#: ../../install/heroku.rst:88 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/heroku.rst:89 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/heroku.rst:90 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/heroku.rst:91 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/heroku.rst:93 +msgid "If you do already have a local installation, update to the latest version using:" +msgstr "" + +#: ../../install/heroku.rst:103 +msgid "It's not *strictly* necessary to have a fully functional local installation if you don't want to import data from CSV files. But it certainly helps." +msgstr "" + +#: ../../install/heroku.rst:106 +msgid "3. Deploy to Heroku" +msgstr "" + +#: ../../install/heroku.rst:110 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/heroku.rst:114 +msgid "Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``." +msgstr "" + +#: ../../install/heroku.rst:120 +msgid "This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details." +msgstr "" + +#: ../../install/heroku.rst:122 +msgid "When this script finishes, it will open the app in your browser. It should look something like this:" +msgstr "" + +#: ../../install/heroku.rst:127 +msgid "4. Import tournament data locally" +msgstr "" + +#: ../../install/heroku.rst:129 +msgid "Steps 4 and 5 are optional; there are other methods of :ref:`importing data `. However the following method is most useful for large tournaments where manual entry would be tedious." +msgstr "" + +#: ../../install/heroku.rst:131 +msgid "Step 4 is the same as the process described in :ref:`importtournament-command`." +msgstr "" + +#: ../../install/heroku.rst:135 +msgid "Place your CSV files in ``data/yourtournamentname``, as described in :ref:`importing-initial-data`." +msgstr "" + +#: ../../install/heroku.rst:137 +msgid "Create a new, blank local database::" +msgstr "" + +#: ../../install/heroku.rst:141 +msgid "It's normally easiest to name your local database after your app name, so that if you have multiple sites, you know which one relates to which." +msgstr "" + +#: ../../install/heroku.rst:143 +msgid "Reconfigure ``DATABASES`` in your settings_local.py file to point to this new database." +msgstr "" + +#: ../../install/heroku.rst:145 +msgid "Activate your virtual environment::" +msgstr "" + +#: ../../install/heroku.rst:149 +msgid "Run initial migrations on your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:154 +msgid "Import your tournament data into your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:158 +msgid "If your data's not clean, it might take a few attempts to get this right. We recommend either destroying and recreating the database (``dropdb``, ``createdb``), or wiping it using ``dj flush``, before retrying." +msgstr "" + +#: ../../install/heroku.rst:160 +msgid "Check it looks like how you expect it to look, by starting your local installation::" +msgstr "" + +#: ../../install/heroku.rst:165 +msgid "5. Push the local database to Heroku" +msgstr "" + +#: ../../install/heroku.rst:167 +msgid "Once you're happy with how your local import went, you can push the local database to Heroku." +msgstr "" + +#: ../../install/heroku.rst:169 +msgid "This step wipes the Heroku database clean, and replaces it with the contents of your local database. If you have any data on the Heroku site that isn't also in your local database, **that data will be lost** and will not be recoverable." +msgstr "" + +#: ../../install/heroku.rst:171 +msgid "If you have multiple Heroku sites, you may find that the ``heroku`` commands refuse to run, prompting you to specify an app. If so, add ``--app yourappname`` to each ``heroku`` command." +msgstr "" + +#: ../../install/heroku.rst:173 +msgid "Enable maintenance mode. This takes the site offline, to ensure that no-one can possibly create or change any data on the site while you're pushing a new database up::" +msgstr "" + +#: ../../install/heroku.rst:177 +msgid "Reset the database. (Caution: This permanently deletes all information on your Heroku database!)" +msgstr "" + +#: ../../install/heroku.rst:183 +msgid "Push your local database to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:187 +msgid "You might need to specify your local PostgreSQL credentials by adding ``PGUSER=yourusername PGPASSWORD=******** PGHOST=localhost`` to the *beginning* of that command. (This sets environment variables to those values for the duration of that one command.)" +msgstr "" + +#: ../../install/heroku.rst:189 +msgid "Disable maintenance mode::" +msgstr "" + +#: ../../install/heroku.rst:195 +msgid "Heroku options you may want to change" +msgstr "" + +#: ../../install/heroku.rst:197 +msgid "If you have a large tournament, you may want to customize your Heroku app. This section provides some guidance on upgrades and settings you may wish to consider. Some of these configurations require you to have the `Heroku Command Line Interface (CLI) `_ installed." +msgstr "" + +#: ../../install/heroku.rst:202 +msgid "Upgrading your database size" +msgstr "" + +#: ../../install/heroku.rst:204 +msgid "The free plan of `Heroku Postgres `_, \"Hobby Dev\", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea:" +msgstr "" + +#: ../../install/heroku.rst:206 +msgid "Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows." +msgstr "" + +#: ../../install/heroku.rst:207 +#, python-format +msgid "The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows." +msgstr "" + +#: ../../install/heroku.rst:208 +msgid "A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows" +msgstr "" + +#: ../../install/heroku.rst:210 +msgid "If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, \"Hobby Basic\", should certainly be more than sufficient." +msgstr "" + +#: ../../install/heroku.rst:212 +msgid "If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity." +msgstr "" + +#: ../../install/heroku.rst:215 +msgid "Custom domain names" +msgstr "" + +#: ../../install/heroku.rst:217 +msgid "Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center:" +msgstr "" + +#: ../../install/heroku.rst:219 +msgid "`Custom Domain Names for Apps `_" +msgstr "" + +#: ../../install/heroku.rst:220 +msgid "`Heroku SSL `_" +msgstr "" + +#: ../../install/heroku.rst:222 +msgid "The custom domain name basically requires two things: a DNS ``CNAME`` entry on your website targeting ``yourappname.herokuapp.com``, and the custom domain configured on Heroku using ``heroku domains:add tab.yourwebsite.com``. You'll also need to provide an SSL certificate for your custom domain and add it using the ``heroku certs:add`` command." +msgstr "" + +#: ../../install/heroku.rst:225 +msgid "HTTPS" +msgstr "" + +#: ../../install/heroku.rst:227 +msgid "All Tabbycat sites deployed to Heroku redirect all traffic to HTTPS by default." +msgstr "" + +#: ../../install/heroku.rst:229 +msgid "For a myriad of reasons, we strongly advise against disabling this. But if for some reason you need to run on plain HTTP, you can do this by setting the ``DISABLE_HTTPS_REDIRECTS`` config variable in Heroku to ``disable`` (see `Heroku documentation on config vars `_). The value of the config var must be ``disable``; if it's anything else, HTTPS redirects will remain in place." +msgstr "" + +#: ../../install/heroku.rst:231 +msgid "Most modern browsers, after having been redirected by a site to HTTPS once, remember that that site requires HTTPS and go there for all subsequent visits even if the user typed in a plain http\\:// address. It may do this because it cached the HTTP 301 permanent redirect, stored an HSTS entry and/or tagged its session cookie to require HTTPS. If, after disabling HTTPS on your Tabbycat site, you find that you're still being redirected to HTTPS, first try a browser or computer that *hasn't* visited the site before. If that works, then remove the relevant entry from your (original) browser's cache, HSTS set and cookies, and try again." +msgstr "" + +#: ../../install/heroku.rst:234 +msgid "Time zone" +msgstr "" + +#: ../../install/heroku.rst:236 +msgid "If you want to change the time zone you nominated during deployment, you can do so by going to the `Heroku Dashboard `_, clicking on your app, going to the **Settings** tab, clicking **Reveal Config Vars** and changing the value of the ``TIME_ZONE`` variable. This value must be one of the names in the IANA tz database, *e.g.* ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``. You can find a `list of these on Wikipedia `_ in the 'TZ\\*' column." +msgstr "" + +#: ../../install/heroku.rst:239 +msgid "SendGrid account details" +msgstr "" + +#: ../../install/heroku.rst:241 +msgid "By default, Heroku will automatically create a SendGrid account for you. For small tournaments, this should work fine. For larger ones, though, SendGrid typically doesn't allow new accounts to send so many emails without additional vetting. This vetting is separate to the verification you did for your Heroku account, and as far as we're aware, it can't be done until you send your first email, by which time it's probably too late." +msgstr "" + +#: ../../install/heroku.rst:243 +msgid "If you're running a large tournament, you may wish to use your own SendGrid account instead. The free tier probably won't suffice after the trial period, but the Essentials tier should be more than adequate. If you're a student and have the `GitHub Education Pack `_, you might find the SendGrid plan here useful." +msgstr "" + +#: ../../install/heroku.rst:245 +msgid "If you set up and use your own SendGrid account, you can remove the SendGrid add-on from your Heroku app. The SendGrid add-on is only necessary if you wish to use Heroku's auto-created SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:247 +msgid "To set up your app to use your own SendGrid account:" +msgstr "" + +#: ../../install/heroku.rst:251 +msgid "`Sign up for a SendGrid account `_, if you don't already have one." +msgstr "" + +#: ../../install/heroku.rst:253 +msgid "`Create an API key `_ in your SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:255 +msgid "There are `instructions for how to do this in the SendGrid documentation `_. The only permission that is needed is the \"Mail Send\" permission, so you can turn off all others if you want to be safe." +msgstr "" + +#: ../../install/heroku.rst:257 +msgid "Set the following config vars in Heroku Dashboard (or using the Heroku CLI, if you have it):" +msgstr "" + +#: ../../install/heroku.rst:259 +msgid "``SENDGRID_USERNAME`` should be set to ``apikey`` (not your username)." +msgstr "" + +#: ../../install/heroku.rst:260 +msgid "``SENDGRID_PASSWORD`` should be set to your API key, which will start with ``SG*******``." +msgstr "" + +#: ../../install/heroku.rst:262 +msgid "The `Heroku SendGrid instructions `_ to do something with ``SENDGRID_API_KEY`` are **incorrect**. We figured this out by contacting SendGrid support staff. Use the above config vars instead." +msgstr "" + +#: ../../install/heroku.rst:268 +msgid "Upgrading an existing Heroku app" +msgstr "" + +#: ../../install/heroku.rst:270 +msgid "For most users, we recommend starting a new site for every tournament, when you set up the tab for that tournament. There's generally not a pressing need to upgrade Tabbycat after a tournament is concluded, and every time you deploy a new site, you'll be using the latest version at the time of deployment." +msgstr "" + +#: ../../install/heroku.rst:272 +msgid "To upgrade an existing Heroku-based Tabbycat app to the latest version, you need to *deploy* the current version of Tabbycat to your Heroku app. There are several ways to do this. We list one below, primarily targeted at users with some background in Git." +msgstr "" + +#: ../../install/heroku.rst:274 +msgid "The essence of it is that you need to `create a Git remote `_ for your Heroku app (if you don't already have one), then `push to it `_." +msgstr "" + +#: ../../install/heroku.rst:276 +msgid "You should **always** :ref:`back up your database ` before upgrading Tabbycat." +msgstr "" + +#: ../../install/heroku.rst:278 +msgid "You'll need both Git and the Heroku CLI, and you'll need to be logged in to the Heroku CLI already." +msgstr "" + +#: ../../install/heroku.rst:280 +msgid "Take a backup of your database::" +msgstr "" + +#: ../../install/heroku.rst:284 +msgid "If you haven't already, clone our Git repository and check out the master branch::" +msgstr "" + +#: ../../install/heroku.rst:289 +msgid "If you've already cloned our Git repository, don't forget to pull so you're up to date::" +msgstr "" + +#: ../../install/heroku.rst:294 +msgid "Check to see if you have a Git remote already in place::" +msgstr "" + +#: ../../install/heroku.rst:300 +msgid "If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``." +msgstr "" + +#: ../../install/heroku.rst:302 +msgid "If a Git remote URL for your Tabbycat site *doesn't* appear, then create one::" +msgstr "" + +#: ../../install/heroku.rst:307 +msgid "If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments." +msgstr "" + +#: ../../install/heroku.rst:309 +msgid "Push to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:313 +msgid "This will take a while to complete." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/linux.po b/docs/locale/bg/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..671e822bce0 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/linux.po @@ -0,0 +1,249 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: bg_BG\n" + +#: ../../install/linux.rst:5 +msgid "Installing Locally on Linux" +msgstr "" + +#: ../../install/linux.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/linux.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/linux.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Linux, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/linux.rst:14 +msgid "The instructions apply to both Linux, and :ref:`Linux on Windows `." +msgstr "" + +#: ../../install/linux.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/linux.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/linux.rst:21 ../../install/linux.rst:56 +#: ../../install/linux.rst:130 +msgid "Advanced users" +msgstr "" + +#: ../../install/linux.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/linux.rst:27 +msgid "Short version" +msgstr "" + +#: ../../install/linux.rst:38 +msgid "Then create **settings/local.py** as described :ref:`below `, then::" +msgstr "" + +#: ../../install/linux.rst:53 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/linux.rst:54 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/linux.rst:59 +msgid "These instructions are for Ubuntu, and are targeted at Ubuntu 18.04. If you have another distribution of Linux, we trust you'll know how to navigate the package manager for your distribution to install the dependencies." +msgstr "" + +#: ../../install/linux.rst:64 +msgid "1(a). Python" +msgstr "" + +#: ../../install/linux.rst:65 +msgid "Tabbycat requires Python 3.6 or later. You probably already have Python 3.6, but you'll also need the development package in order to install Psycopg2 later. The ``venv`` module will come in handy too. Install::" +msgstr "" + +#: ../../install/linux.rst:69 +msgid "Check the version::" +msgstr "" + +#: ../../install/linux.rst:74 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/linux.rst:77 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/linux.rst:78 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/linux.rst:80 +msgid "Install PostgreSQL using the `PostgreSQL installation instructions here `_." +msgstr "" + +#: ../../install/linux.rst:82 +msgid "Normally, installing the latest stable version should be best, but if you're having issues, install the same version as the current `default version on Heroku `_, as that will be what is currently most commonly used with Tabbycat. If you're planning on pushing data between your local installation and a Heroku site, it's best to match the Heroku's current default version." +msgstr "" + +#: ../../install/linux.rst:84 +msgid "You'll also need the ``libpq-dev`` package in order to install Psycopg2 later::" +msgstr "" + +#: ../../install/linux.rst:91 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/linux.rst:92 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/linux.rst:94 +msgid "Tabbycat requires Node and its package manager to compile front-end dependencies. Install using:" +msgstr "" + +#: ../../install/linux.rst:104 +msgid "1(d). Other development tools" +msgstr "" + +#: ../../install/linux.rst:105 +msgid "Some of the Python packages require GCC, G++ and Make in order to install::" +msgstr "" + +#: ../../install/linux.rst:112 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/linux.rst:114 +msgid "Choose either of the following two methods." +msgstr "" + +#: ../../install/linux.rst:117 +msgid "Method 1 (Git clone)" +msgstr "" + +#: ../../install/linux.rst:119 +msgid "If you have Git, life will be easier if you clone `our GitHub repository`_:" +msgstr "" + +#: ../../install/linux.rst:126 +msgid "(You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.)" +msgstr "" + +#: ../../install/linux.rst:128 +msgid "The default branch is ``develop``, so you need to explicitly change the branch to ``master``, which is what the ``git checkout master`` line does." +msgstr "" + +#: ../../install/linux.rst:133 +msgid "You might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/linux.rst:136 +msgid "Method 2 (tarball)" +msgstr "" + +#: ../../install/linux.rst:138 +msgid "If you don't want to use Git, simply download and extract:" +msgstr "" + +#: ../../install/linux.rst:147 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/linux.rst:149 +msgid "You can skip step 1 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/linux.rst:151 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``. Grant this user the ability to create databases, since this'll make it easier to spin up new instances of Tabbycat in the future." +msgstr "" + +#: ../../install/linux.rst:157 +msgid "If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*." +msgstr "" + +#: ../../install/linux.rst:159 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/linux.rst:167 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/linux.rst:168 +msgid "Almost there!" +msgstr "" + +#: ../../install/linux.rst:170 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/linux.rst:176 +msgid "Start a new virtual environment. We suggest the name ``venv``, though it can be any name you like:" +msgstr "" + +#: ../../install/linux.rst:182 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/linux.rst:186 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/linux.rst:192 +msgid "Navigate to the **tabbycat/settings** sub folder and copy **local.example** to **local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/linux.rst:207 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/linux.rst:211 +msgid "Navigate to the **tabbycat** sub-directory, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/linux.rst:219 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/linux.rst:225 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/linux.rst:229 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/linux.rst:234 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/linux.rst:237 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/linux.rst:238 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/local.po b/docs/locale/bg/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..7d91ab3b6a1 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/local.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: bg_BG\n" + +#: ../../install/local.rst:5 +msgid "Local Installations" +msgstr "" + +#: ../../install/local.rst:8 +msgid "What is a local installation?" +msgstr "" + +#: ../../install/local.rst:10 +msgid "Tabbycat is a web-based system: it's designed to run as a web site. However, instead of installing it on a web server, you can install it on your computer, serving web pages to yourself. This is called a local installation." +msgstr "" + +#: ../../install/local.rst:12 +msgid "Then, when you open your browser, you can use Tabbycat like any other web site. The only difference is that this one is on **your** computer, not some computer in a data centre in a far-away land. In effect, you are getting your computer to behave like a web server." +msgstr "" + +#: ../../install/local.rst:17 +msgid "Should I use a local installation?" +msgstr "" + +#: ../../install/local.rst:19 +msgid "In most cases, you should make an online Tabbycat installation by :ref:`setting up an instance on Heroku `. This has a number of major advantages:" +msgstr "" + +#: ../../install/local.rst:21 +msgid "The installation process is easier." +msgstr "" + +#: ../../install/local.rst:22 +msgid "You can enter ballots and manage your tournament from multiple computers." +msgstr "" + +#: ../../install/local.rst:23 +msgid "Participants can access the draw, motions, results and more online." +msgstr "" + +#: ../../install/local.rst:24 +msgid "Heroku's data centers are less likely to fail than your computer is." +msgstr "" + +#: ../../install/local.rst:25 +msgid "Heroku e-mails Tabbycat's developers error reports to help us fix bugs." +msgstr "" + +#: ../../install/local.rst:27 +msgid "In some cases, you might have a good reason to use a local installation. We can think of just one such reason: If you won't have access to the internet at your tournament, or if internet access will be flaky, then you should use a local installation." +msgstr "" + +#: ../../install/local.rst:32 +msgid "You'll need internet access to download dependencies during the local installation process. So if you're not expecting to have reliable internet access at your tournament, be sure to have Tabbycat installed *before* you get there!" +msgstr "" + +#: ../../install/local.rst:37 +msgid "Advanced users" +msgstr "" + +#: ../../install/local.rst:40 +msgid "Tabbycat is a `Django `_ project, so if you have your own preferred method of running Django projects, you can also do that. Just be aware that we haven't tried it." +msgstr "" + +#: ../../install/local.rst:45 +msgid "Okay, so how do I do it?" +msgstr "" + +#: ../../install/local.rst:47 +msgid "The easiest option is to :ref:`install Tabbycat using Docker `. This method should work across all operating systems and is by far the easiest way to get a local copy running." +msgstr "" + +#: ../../install/local.rst:49 +msgid "If installing using Docker does not work, or if you want to be able to modify Tabbycat's code we also have a number of instructions for manually setting up a copy of Tabbycat. There instructions are here:" +msgstr "" + +#: ../../install/local.rst:51 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/local.rst:52 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/local.rst:53 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/local.rst:54 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/local.rst:57 +msgid "Advanced uses" +msgstr "" + +#: ../../install/local.rst:60 +msgid "Can others access my local install?" +msgstr "" + +#: ../../install/local.rst:62 +msgid "Local installations can also take advantage of multiple-computer site access, including data entry---it's just takes more work than a Heroku installation to set up." +msgstr "" + +#: ../../install/local.rst:64 +msgid "Since a local installation is just having your computer run a web server, it can serve other computers too. You can make this work even if you don't have internet access: all you need is a router that you can use to connect a few computers together. Then other computers on your local network can access the Tabbycat site hosted on your computer. We did this at Victoria Australs 2012." +msgstr "" + +#: ../../install/local.rst:66 +msgid "We don't provide detailed instructions for this; we leave it for advanced users to set up themselves. As a rough guide:" +msgstr "" + +#: ../../install/local.rst:68 +msgid "You need to pass in your computer's IP address and port to the `runserver` command, for example, if your computer (the one acting as a server) is 196.168.0.2 and you want to run it on port 8000: ``dj runserver 192.168.0.2:8000``" +msgstr "" + +#: ../../install/local.rst:69 +msgid "You need to configure your firewall settings to allow incoming connections on the IP address and port you specified in that command." +msgstr "" + +#: ../../install/local.rst:70 +msgid "Be aware that local installs use the Django development server, whose **security is not tested**. Therefore, it's a good idea to make sure your firewall **only lets in computers on your local network** (or, if you're really paranoid, isolate the network from the internet completely)." +msgstr "" + +#: ../../install/local.rst:73 +msgid "Can I run an internet-accessible website from a local installation?" +msgstr "" + +#: ../../install/local.rst:75 +msgid "Probably not. Even if you disable your firewall, chances are your home router (or university router) will block any connections from the outside world to you. Even if you can though, **you really shouldn't**. The local installation uses the *Django development server*, which is a lightweight server designed for developers. Specifically, Django **does not test the security of its development server** in the way that proper web servers do. That is: It's a security risk to run a local installation as an internet-accessible site. Don't do it. `Install Tabbycat on Heroku `_ instead." +msgstr "" + +#: ../../install/local.rst:77 +msgid "Alternatively, if you have a background in web development, you might choose to install Tabbycat on your own production server. It's a Django project, so any means of supporting Django projects should work fine." +msgstr "" + +#: ../../install/local.rst:79 +msgid "It's safe to run on a small, isolated network (see above) with your firewall correctly configured because you presumably trust everyone you let on the network!" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/osx.po b/docs/locale/bg/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..769af073353 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/osx.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: bg_BG\n" + +#: ../../install/osx.rst:5 +msgid "Installing Locally on macOS" +msgstr "" + +#: ../../install/osx.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/osx.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/osx.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on macOS, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/osx.rst:15 +msgid "Requisite technical knowledge" +msgstr "" + +#: ../../install/osx.rst:17 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/osx.rst:19 +msgid "Every line in the instructions that begins with ``$`` is a command that you need to run in a **Terminal**, but without the ``$``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/osx.rst:21 ../../install/osx.rst:42 ../../install/osx.rst:68 +msgid "Advanced users" +msgstr "" + +#: ../../install/osx.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/osx.rst:27 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/osx.rst:29 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/osx.rst:32 +msgid "1(a). Python" +msgstr "" + +#: ../../install/osx.rst:33 +msgid "Tabbycat requires Python 3.6 or later. macOS only comes with Python 2.7, so you'll need to install this. You can download the latest version from the `Python website `_." +msgstr "" + +#: ../../install/osx.rst:35 +msgid "The executable will probably be called ``python3``, rather than ``python``. Check::" +msgstr "" + +#: ../../install/osx.rst:40 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/osx.rst:45 +msgid "These instructions will use the ``venv`` module. If you prefer, you can use `Virtualenv `_ instead." +msgstr "" + +#: ../../install/osx.rst:48 +msgid "1(b). Postgres.app" +msgstr "" + +#: ../../install/osx.rst:50 +msgid "Download `Postgres.app `_, move it to your Applications folder, and open it. This should place an icon in your menu bar, showing that the postgres database is running. Whenever you are running Tabbycat you'll need to have this app running." +msgstr "" + +#: ../../install/osx.rst:52 +msgid "You'll need to use the PostgreSQL command-line tools, so run the command that the Postgres.app suggests in its `installation instructions `_ for adding them to your ``$PATH``. As of February 2018, it was::" +msgstr "" + +#: ../../install/osx.rst:57 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/osx.rst:59 +msgid "Download and run the `node.js 8 macOS Installer (.pkg) `_" +msgstr "" + +#: ../../install/osx.rst:62 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/osx.rst:64 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/osx.rst:65 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/osx.rst:66 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/osx.rst:71 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/osx.rst:73 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/osx.rst:76 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/osx.rst:78 +msgid "You can skip steps 1--3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/osx.rst:80 +msgid "Open up a copy of the Terminal app, then copy/paste or type in::" +msgstr "" + +#: ../../install/osx.rst:84 +msgid "Hit enter then quit and reopen the Terminal app." +msgstr "" + +#: ../../install/osx.rst:86 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``." +msgstr "" + +#: ../../install/osx.rst:92 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/osx.rst:96 +msgid "In terminal type in::" +msgstr "" + +#: ../../install/osx.rst:101 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/osx.rst:102 +msgid "Almost there!" +msgstr "" + +#: ../../install/osx.rst:104 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/osx.rst:108 +msgid "Copy **settings/local.example** to **settings/local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/osx.rst:123 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/osx.rst:127 +msgid "Ensure you are in the main Tabbycat directory (not the config folder where **settings_local.py** is and start a new virtual environment. We suggest the name ``venv``, though it can be any name you like::" +msgstr "" + +#: ../../install/osx.rst:131 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/osx.rst:135 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/osx.rst:141 +msgid "Navigate to the **tabbycat** sub folder, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/osx.rst:149 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/osx.rst:155 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/osx.rst:159 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/osx.rst:164 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/osx.rst:167 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/osx.rst:168 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/windows.po b/docs/locale/bg/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..00e3a5af5d2 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/windows.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: bg_BG\n" + +#: ../../install/windows.rst:5 +msgid "Installing Locally on Windows" +msgstr "" + +#: ../../install/windows.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/windows.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/windows.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/windows.rst:14 +msgid "If you have Windows 10 and any experience with Linux, we recommend installing it on :ref:`Linux on Windows (WSL) ` instead, which is much easier than the process below." +msgstr "" + +#: ../../install/windows.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/windows.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/windows.rst:21 +msgid "In these instructions, we'll use **Windows PowerShell**, a command-line interface that comes with every installation of Windows (since XP). The easiest way to find it (on Windows 7 and later) is to search for it in your Start Menu. Every line in the instructions that begins with ``>`` is a command that you need to run in PowerShell, but without the ``>``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/windows.rst:23 ../../install/windows.rst:81 +#: ../../install/windows.rst:104 +msgid "Advanced users" +msgstr "" + +#: ../../install/windows.rst:26 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/windows.rst:29 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/windows.rst:31 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/windows.rst:36 +msgid "1(a). Python" +msgstr "" + +#: ../../install/windows.rst:37 +msgid "*Python is a popular programming language, and the language in which the core of Tabbycat is coded.*" +msgstr "" + +#: ../../install/windows.rst:39 +msgid "Download and install the latest version of Python 3.6 from the `Python website `_. In the installer, check the box to add Python to your PATH (see box below)." +msgstr "" + +#: ../../install/windows.rst:42 +msgid "Which file should I download?" +msgstr "" + +#: ../../install/windows.rst:44 +msgid "Regardless of if you have 64-bit or 32-bit Windows, choose the \"Windows x86 executable installer\"." +msgstr "" + +#: ../../install/windows.rst:46 +msgid "**Please take note:** Just after you open the installer, **check the \"Add Python 3.6 to PATH\" box**:" +msgstr "" + +#: ../../install/windows.rst:51 +msgid "To check that Python is installed correctly, open Windows PowerShell, type ``python`` and press Enter. It should look something like this. If you installed the 32-bit version, it will say ``32 bit`` instead of ``64 bit``." +msgstr "" + +#: ../../install/windows.rst:55 +msgid "(To exit Python, type ``exit()`` then press Enter.)" +msgstr "" + +#: ../../install/windows.rst:57 +msgid "**If you already have Python**, great! Some things to double-check:" +msgstr "" + +#: ../../install/windows.rst:59 +msgid "You must have at least Python 3.6 (Python 2 is not supported.)" +msgstr "" + +#: ../../install/windows.rst:60 +msgid "Your installation path must not have any spaces in it." +msgstr "" + +#: ../../install/windows.rst:61 +msgid "If that doesn't work, note that the following must be part of your ``PATH`` environment variable: ``C:\\Python36;C:\\Python36\\Scripts`` (or as appropriate for your installation directory). Follow `the instructions here `_ to add this to your path." +msgstr "" + +#: ../../install/windows.rst:66 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/windows.rst:67 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/windows.rst:69 +msgid "Go to the `PostgreSQL downloads page `_, then follow the link through to EnterpriseDB to download and install the latest version of PostgreSQL." +msgstr "" + +#: ../../install/windows.rst:71 +msgid "Once PostgreSQL is installed, the PostgreSQL service will run on your computer whenever you are using it. You might prefer to configure it so that it only runs when you want to run Tabbycat. To do this, open \"Services\" in your Control Panel on Windows, find the PostgreSQL service, and change its startup type to \"Manual\". This will tell it not to start whenever you log in. Then, if you want to run the server (so you can use Tabbycat), you can do so from \"Services\" by selecting the PostgreSQL service and clicking \"Start the service\"." +msgstr "" + +#: ../../install/windows.rst:74 +msgid "1(c). Git" +msgstr "" + +#: ../../install/windows.rst:75 +msgid "*Git is a version control system.*" +msgstr "" + +#: ../../install/windows.rst:77 +msgid "We won't use Git directly, but Node.js (which we install in the next step) requires Git to work. So, install the latest version for Windows from the `Git website `_." +msgstr "" + +#: ../../install/windows.rst:84 +msgid "If you already have `GitHub Desktop `_ installed, you might think that this would be good enough. Unfortunately, it's not---GitHub Desktop installs a portable version of Git. Node.js, on the other hand, requires the ``git`` to be in the ``PATH``, so it can call it directly. The easiest (but not only) way to do this is just to install Git from the link above." +msgstr "" + +#: ../../install/windows.rst:92 +msgid "1(d). Node.js/NPM" +msgstr "" + +#: ../../install/windows.rst:93 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/windows.rst:95 +msgid "Download and run the node.js 8 Installer (.msi) for either `x64 versions `_ of Windows or `x86 versions `_." +msgstr "" + +#: ../../install/windows.rst:98 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/windows.rst:100 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/windows.rst:101 +msgid "Download the zip file." +msgstr "" + +#: ../../install/windows.rst:102 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/windows.rst:107 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/windows.rst:109 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/windows.rst:114 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/windows.rst:116 +msgid "You can skip steps 2 and 3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/windows.rst:118 +msgid "Open the **pgAdmin** tool, which you installed as part of installing PostgreSQL. In the object browser on the left, double-click the server marked \"(localhost:5432)\". Log in using the password you set during installation." +msgstr "" + +#: ../../install/windows.rst:120 +msgid "Right-click Login Roles, and click \"New Login Role…\"" +msgstr "" + +#: ../../install/windows.rst:124 +msgid "Fill in the New Login Role box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:126 +msgid "In the **Properties** tab, in **Role Name**, choose a user account name. (If you don't know what to pick, we suggest \"tabbycat\".)" +msgstr "" + +#: ../../install/windows.rst:127 +msgid "In the **Definition** tab, choose a **Password** and type it in **Password (again)**." +msgstr "" + +#: ../../install/windows.rst:129 +msgid "Then click OK. (Remember this user name and password, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:131 +msgid "Right-click Databases, and click \"New Database…\"" +msgstr "" + +#: ../../install/windows.rst:135 +msgid "Fill in the New Database box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:137 +msgid "In the **Properties** tab, in **Name**, choose a database name (with no spaces in it)." +msgstr "" + +#: ../../install/windows.rst:138 +msgid "In the **Properties** tab, in **Owner**, type the name of the login role you just created." +msgstr "" + +#: ../../install/windows.rst:140 +msgid "Then click OK. (Remember the database name, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:143 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/windows.rst:145 +msgid "Almost there!" +msgstr "" + +#: ../../install/windows.rst:147 +msgid "Open a Windows PowerShell. Navigate to the folder where you cloned/extracted Tabbycat. For example, if you installed it in ``C:\\Users\\myusername\\Documents\\GitHub\\tabbycat``, then run::" +msgstr "" + +#: ../../install/windows.rst:151 +msgid "Make a copy of **settings\\\\local.example** and rename it to **settings\\\\local.py**. Open your new **local.py** file. Find this part, and fill in the blanks (the empty quotation marks) as indicated:" +msgstr "" + +#: ../../install/windows.rst:166 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/windows.rst:170 +msgid "Start a new virtual environment. We suggest the name `venv`, though it can be any name you like::" +msgstr "" + +#: ../../install/windows.rst:174 +msgid "Run the `Activate.ps1` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/windows.rst:178 +msgid "If you get an error message saying that the script isn't digitally signed, open a PowerShell with administrator privileges by right-clicking PowerShell in the Start meny and clicking \"Run as administrator\". Then run this command::" +msgstr "" + +#: ../../install/windows.rst:182 +msgid "Read the warning message, then type ``y`` to confirm. By default, the execution policy on Windows is ``Restricted``, which does not permit scripts like ``activate`` to be run. Changing it to ``RemoteSigned`` relaxes it to allow local scripts to be run without checking the signature." +msgstr "" + +#: ../../install/windows.rst:184 +msgid "Install Tabbycat's requirements." +msgstr "" + +#: ../../install/windows.rst:186 +msgid "If you installed **32-bit Python**::" +msgstr "" + +#: ../../install/windows.rst:192 +msgid "You might be wondering: I thought I already installed the requirements. Why am I installing more? And the answer is: Before, you were installing the requirements to create a Python virtual environment for Tabbycat to live in. Now, you're *in* the virtual environment, and you're installing everything required for *Tabbycat* to operate." +msgstr "" + +#: ../../install/windows.rst:194 +msgid "Initialize the database and create a user account for yourself::" +msgstr "" + +#: ../../install/windows.rst:202 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/windows.rst:208 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/windows.rst:212 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000/). It should look something like this:" +msgstr "" + +#: ../../install/windows.rst:216 +msgid "If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/windows.rst:218 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/windows.rst:221 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/windows.rst:223 +msgid "To start your Tabbycat instance up again next time you use your computer, open a PowerShell and::" +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/install/wsl.po b/docs/locale/bg/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..c51e0d1f389 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/install/wsl.po @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: bg_BG\n" + +#: ../../install/wsl.rst:5 +msgid "Installing Locally on Linux on Windows (WSL)" +msgstr "" + +#: ../../install/wsl.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/wsl.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/wsl.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/wsl.rst:14 +msgid "Windows Subsystem for Linux is only available on Windows 10. If you have an older version of Windows, :ref:`install Tabbycat locally on Windows ` instead." +msgstr "" + +#: ../../install/wsl.rst:18 +msgid "Windows Subsystem for Linux (WSL) was taken out of beta in the `Windows 10 Fall Creators Update `_, which was released in October 2017. On Windows 10 computers, we now recommend this local installation method over :ref:`installing it directly on Windows `." +msgstr "" + +#: ../../install/wsl.rst:21 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/wsl.rst:23 +msgid "It will help a lot if you have some experience with Linux, but mainly you need to be familiar with command-line interfaces, and you should be willing to install and work with the `Windows Subsystem for Linux `_. You might need to be prepared to familiarise yourself with aspects of WSL not covered in these instructions. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/wsl.rst:27 +msgid "A. Install Ubuntu on Windows" +msgstr "" + +#: ../../install/wsl.rst:29 +msgid "*If you already have a Linux distribution installed on your PC, skip to* :ref:`part B `." +msgstr "" + +#: ../../install/wsl.rst:31 +msgid "First, `check that you have the Fall Creators Update (build 1709) `_. If you don't, update Windows." +msgstr "" + +#: ../../install/wsl.rst:33 +msgid "Then, install the Windows Subsystem for Linux. For most people, this involves the following:" +msgstr "" + +#: ../../install/wsl.rst:35 +msgid "Enable the Windows Subsystem for Linux feature, by finding **Turn Windows features on or off** on the Start Menu, then checking the box for **Windows Subsystem for Linux** and clicking **OK**. You'll be prompted to restart your computer to make the changes take effect." +msgstr "" + +#: ../../install/wsl.rst:39 +msgid "Install Ubuntu by finding it on the Microsoft Store. For your convenience, `here's a direct link to Ubuntu on the Microsoft Store `_." +msgstr "" + +#: ../../install/wsl.rst:41 +msgid "Launch Ubuntu and follow the instructions. You'll be prompted to create a user account for your Ubuntu system." +msgstr "" + +#: ../../install/wsl.rst:43 +msgid "Some more detailed instructions, including some troubleshooting, are `available on Microsoft's website `_." +msgstr "" + +#: ../../install/wsl.rst:45 +msgid "Advanced users" +msgstr "" + +#: ../../install/wsl.rst:48 +msgid "You can, of course, use any Linux distribution that Windows supports. We just suggest Ubuntu because it's the most well-known (and the one that we use)." +msgstr "" + +#: ../../install/wsl.rst:53 +msgid "B. Install Tabbycat" +msgstr "" + +#: ../../install/wsl.rst:55 +msgid "You now have a Linux subsystem running on your computer, so head over to the :ref:`instructions to install Tabbycat locally on Linux ` and follow those (in full)." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/bg/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..62d359a1e02 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/use/finishing-a-tournament.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: bg_BG\n" + +#: ../../use/finishing-a-tournament.rst:5 +msgid "Finishing a Tournament" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:7 +msgid "This page outlines some final steps to take after the conclusion of outrounds." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:10 +msgid "Tab Release" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:12 +msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:14 +msgid "Team Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:15 +msgid "Speakers Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:16 +msgid "Replies Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:17 +msgid "Motions Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:19 +msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:21 +msgid "If you defined any speaker categories (for example, Novice, ESL or EFL), a tab for each category marked \"public\" can also be released using the **Release speaker category tabs to public**. You can similarly limit each of these tabs to display just the top few speakers, in the definition of the speaker categories. The speaker categories not marked public are *not* released by this option." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:23 +msgid "You can also redact individual speaker's identifying details (name, team, and institution) from the public individual tabs. You can do so by going into the **Edit Database** area, going to *Participants > Speakers*, finding the speaker and clicking the **Anonymous** box (and saving)." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:25 +msgid "Public tab pages are cached for performance reasons. This means that any changes that affect a tab page (say redacting a speaker or changing a speaker score) may not show up on the public site for up to an hour." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:28 +msgid "Wrapping Up" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:30 +msgid "You probably want to turn off the *Public ballots*, *Public feedback*, *Feedback progress*, and *Public draw* features under **Configuration** at this stage as they no longer have any use." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:32 +msgid "You also want to go into the **Edit Database** area, find the tournament and hit \"release all\" so that the results for the final round can be released." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/use/importing-data.po b/docs/locale/bg/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..eaaf7c0d418 --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/use/importing-data.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: bg_BG\n" + +#: ../../use/importing-data.rst:5 +msgid "Importing Initial Data" +msgstr "" + +#: ../../use/importing-data.rst:7 +msgid "Once you've got Tabbycat installed, the next step is to import data for the tournament: that is, import details of teams, speakers, adjudicators and rounds. There are a few ways to do this, each with their advantages and disadvantages." +msgstr "" + +#: ../../use/importing-data.rst:9 +msgid "To help you decide which to choose, here's a summary:" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Method" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Best for" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawcard" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawback" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "**Demonstration data**" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Trying out Tabbycat" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Loads sample data in one click" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Not for use with real tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "**Simple importer**" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Small and medium-sized tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Easy to use" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Only deals with basic data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "**Edit database**" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding data not handled by the simple importer or editing existing data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Can handle all types of information" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding large amounts of data is time consuming" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "``importtournament`` **command**" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Large tournaments" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Easier to repeat, can handle most formats of information" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Requires basic knowledge of how to use a command line interface" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "**Developing your own importer**" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Large tournaments with custom needs" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Easier to repeat, will take information in whatever format it is already in" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Requires background in Python and and learning about the importer classes" +msgstr "" + +#: ../../use/importing-data.rst:41 +msgid "Demonstration data" +msgstr "" + +#: ../../use/importing-data.rst:42 +msgid "If you're just learning or experimenting with Tabbycat, there are two demonstration datasets available, each with a sample set of teams, adjudicators, *etc.*, so that you can immediately start running rounds. Just be aware that these probably won't relate to anyone at your real-life tournament." +msgstr "" + +#: ../../use/importing-data.rst:44 +msgid "To load a demonstration dataset, click **New Tournament** link on the home page (once logged in as admin). You'll see a page titled \"Create New Tournament\". Scroll to the bottom of this page and click on one of the links at the bottom." +msgstr "" + +#: ../../use/importing-data.rst:47 +msgid "Simple importer" +msgstr "" + +#: ../../use/importing-data.rst:48 +msgid "The simple importer is the easiest way to get a tournament going, and we recommend it for small- and medium-sized tournaments. It allows you to add institutions, teams, adjudicators, venues, venue categories and venue constraints. (If you need to add anything else, use the :ref:`Edit Database area ` instead.)" +msgstr "" + +#: ../../use/importing-data.rst:50 +msgid "To get started, create a new tournament using the **New Tournament** link on the home page (once logged in as admin). It'll ask you for a few basic pieces of information." +msgstr "" + +#: ../../use/importing-data.rst:54 +msgid "Then, once you're in your tournament, click **Setup** in the left-hand menu, then **Import Data**, to open the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:58 +msgid "You first need to add institutions. Once institutions are added, you can then add teams and adjudicators in the relevant sections. Each of these is a two-step process:" +msgstr "" + +#: ../../use/importing-data.rst:60 +msgid "For **institutions** and **venues**, it will first ask you to copy-paste a list of names and properties in a comma-separated table format. The second step is to confirm individual fiels." +msgstr "" + +#: ../../use/importing-data.rst:61 +msgid "For **teams** and **adjudicators**, it will first ask you how many teams/adjudicators to add for each institution (or who lack an institutional affiliation). The second step is to fill in their details, for example, names." +msgstr "" + +#: ../../use/importing-data.rst:69 +msgid "Finally, if you would like to use venue categories and/or :ref:`venue constraints `, you can do so using the two last sections of the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:71 +msgid "If copying and pasting from a spreadsheet, an easy way to make a comma-separated table is to save a spreadsheet with the relevant information as a \\*.csv file, then open this file in a plain text editor (such as Notepad or TextEdit), and copying it from there." +msgstr "" + +#: ../../use/importing-data.rst:76 +msgid "Editing the database" +msgstr "" + +#: ../../use/importing-data.rst:77 +msgid "Sometimes, the simple importer just isn't enough---whether because you need more customization than the simple importer handles (*e.g.* adjudicator feedback questions), or because some participants changed their details after you imported the inital data. In this case, the easiest thing to do is to edit the database via the Django administrative interface (under Setup > Edit Database)." +msgstr "" + +#: ../../use/importing-data.rst:79 +msgid "The general pattern goes like this: Go to **Setup > Edit Database**, find the type of object you wish to add/change, and click \"Add\" or \"Change\". Then, fill in what you need to and save the object." +msgstr "" + +#: ../../use/importing-data.rst:81 +msgid "The Edit Database area is very powerful, and naturally if you mess things up, you can insert potentially catastrophic inconsistencies into the database. For participant information this is hard to do, but it's worth keeping in mind." +msgstr "" + +#: ../../use/importing-data.rst:86 +msgid "The ``importtournament`` command on local installations" +msgstr "" + +#: ../../use/importing-data.rst:88 +msgid "We've written a management command called ``importtournament`` to help automate the tournament set-up. The script, however, is neither foolproof nor comprehensive, so you might find you need to modify things slightly if your tournament structure is different from ours. Be prepared to try this a few times to get it to work. Nonetheless, this is probably the fastest way to set up a tournament." +msgstr "" + +#: ../../use/importing-data.rst:90 +msgid "Copy and rename the ``data/demo`` folder" +msgstr "" + +#: ../../use/importing-data.rst:91 +msgid "See the CSV files in the new folder, and add/replace the data as per your tournament. Note that the institutions (*i.e.* first column) in the ``speakers.csv`` and ``adjudicators.csv`` files must match the institutions in the second column of the ``institutions.csv`` file. And that all CSV files must end with a blank line." +msgstr "" + +#: ../../use/importing-data.rst:92 +msgid "Use this command, replacing ``YOUR_DATA_DIR`` with your new folder's name. (Square brackets indicate optional arguments; if you use them, omit the square brackets. All of them relate to the name of your tournament.)" +msgstr "" + +#: ../../use/importing-data.rst:98 +msgid "This script has a number of options. They're worth taking a look at before you run the script. For details, see::" +msgstr "" + +#: ../../use/importing-data.rst:102 +msgid "Assuming the command completes successfully without errors, you should double check the data in the Django interface, as described above in :ref:`import-edit-database`. In particular you should check that the *Rounds* have the correct draw types and that silent rounds have been marked correctly." +msgstr "" + +#: ../../use/importing-data.rst:105 +msgid "``importtournament`` on Heroku installs" +msgstr "" + +#: ../../use/importing-data.rst:107 +msgid "Instructions for using the ``importtournament`` command on Heroku installations are in steps 4 and 5 of :ref:`install-heroku`. The recommended procedure is first to import the tournament into a local installation, :ref:`as described above `, and then to push the local database to Heroku using the ``heroku pg:push`` command." +msgstr "" + +#: ../../use/importing-data.rst:110 +msgid "Developing your own importer" +msgstr "" + +#: ../../use/importing-data.rst:112 +msgid "If our suggested file formats cause you headaches, it might be easier to write your own importer. We have a generic importer framework that should make this easier, so for some tournaments it might (very conceivably) be faster to write your own importer to conform to your data, than it is to make your data conform to our importer. You need a background in Python in order to do this. For more details, see :ref:`tournament-data-importers`." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/bg/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..616091590ad --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/use/running-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: bg_BG\n" + +#: ../../use/running-a-tournament.rst:5 +msgid "Running a Tournament" +msgstr "" + +#: ../../use/running-a-tournament.rst:7 +msgid "Once you've finished the steps in :ref:`starting-a-tournament`, you're ready to go! This page outlines what you would do for each round during the tournament. After the tournament, proceed to :ref:`finishing-a-tournament`." +msgstr "" + +#: ../../use/running-a-tournament.rst:9 +msgid "This is all done from the admin area (*i.e.*, by the tab director or adjudication core member). In the admin area, tournament-wide pages (feedback, standings, and break) are at the top of the left-hand menu, while round-specific pages (availability, draw, display, motions, and results) are in dropdown's organised by each round's abbreviation." +msgstr "" + +#: ../../use/running-a-tournament.rst:11 +msgid "The basic workflow for each round is:" +msgstr "" + +#: ../../use/running-a-tournament.rst:13 +msgid ":ref:`Mark the teams, adjudicators, and venues present as available `" +msgstr "" + +#: ../../use/running-a-tournament.rst:14 +msgid ":ref:`Generate the draw ` and allocate the adjudicators" +msgstr "" + +#: ../../use/running-a-tournament.rst:15 +msgid ":ref:`Show/release the draw `" +msgstr "" + +#: ../../use/running-a-tournament.rst:16 +msgid ":ref:`Release/enter ` the motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:17 +msgid "Have the debates" +msgstr "" + +#: ../../use/running-a-tournament.rst:18 +msgid ":ref:`Enter results `" +msgstr "" + +#: ../../use/running-a-tournament.rst:19 +msgid ":ref:`Advance to the next round `" +msgstr "" + +#: ../../use/running-a-tournament.rst:24 +msgid "Availability" +msgstr "" + +#: ../../use/running-a-tournament.rst:26 +msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." +msgstr "" + +#: ../../use/running-a-tournament.rst:28 +msgid "To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance." +msgstr "" + +#: ../../use/running-a-tournament.rst:34 +msgid "You can set availabilities in advance of the current round — ie if you know the venue/adjudicator schedules their availabilities can be set ahead of time." +msgstr "" + +#: ../../use/running-a-tournament.rst:37 +msgid "Generating the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:39 +msgid "**Confirm the draft draw**. After advancing from availability section you will first be shown a draft draw that details how the draw was formulated, pointing out pull-ups and conflict swaps and the like." +msgstr "" + +#: ../../use/running-a-tournament.rst:43 +msgid "The draft draw is for you to double-check. While there are some basic tests on the draw algorithm, it never hurts to sanity-check it again." +msgstr "" + +#: ../../use/running-a-tournament.rst:45 +msgid "If you *do* find something wrong with a draft draw, you can edit the match-ups, but please also let us know what the problem was! You can find our contact details in the :ref:`authors` section." +msgstr "" + +#: ../../use/running-a-tournament.rst:47 +msgid "Once on the confirmed draw page you can click **Edit Adjudicators**." +msgstr "" + +#: ../../use/running-a-tournament.rst:51 +msgid "**Allocate the adjudicators**. Changes here will auto-save; feel free to return to the **Draw** when needed. See :ref:`adjudicator allocation ` for more details about the allocation process." +msgstr "" + +#: ../../use/running-a-tournament.rst:55 +msgid "If you are using venue constraints the **Draw** page may prompt you to Auto Allocate the venues used to satisfy those constraints; see :ref:`venue-constraints ` for more details. Regardless of whether you are using venue constraints or not you can change the Venues per-debate in the **Edit Venues** area." +msgstr "" + +#: ../../use/running-a-tournament.rst:60 +msgid "Releasing the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:62 +msgid "Once you're happy with your adjudicator allocation, you're ready to start the round." +msgstr "" + +#: ../../use/running-a-tournament.rst:64 +msgid "**Release to general assembly.** From the *Display* page for that round, go to **Show by Venue** or **Show by Team** (whichever you prefer). Then put it up on the projector. There are automatic scroll buttons and buttons for changing text sizing." +msgstr "" + +#: ../../use/running-a-tournament.rst:68 +msgid "**Release to public.** If you're using the public draw function (where the draw is posted publicly to your Tabbycat website) use the **Release to Public** button to allow the page to display." +msgstr "" + +#: ../../use/running-a-tournament.rst:72 +msgid "To avoid the site from being overloaded by anxious refreshers, we recommend that large tournaments not release the draw to the public until after it's been seen by general assembly. That said, note that due to caching there can be a delay of up to 1 minute between when a draw is released and when it first shows up on the public site." +msgstr "" + +#: ../../use/running-a-tournament.rst:73 +msgid "Tabbycat can be set to send emails once the draw is released to adjudicators informing them of their assignments for convenience." +msgstr "" + +#: ../../use/running-a-tournament.rst:78 +msgid "Entering and Releasing Motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:80 +msgid "Tabbycat is agnostic as to whether you enter motions into Tabbycat before or after they are shown publicly. However, they must be entered *at some point* before ballots are entered." +msgstr "" + +#: ../../use/running-a-tournament.rst:82 +msgid "**Enter the motion text.** Either before or after their public release motions can be entered in the **Motions** section for that round." +msgstr "" + +#: ../../use/running-a-tournament.rst:84 +msgid "**Release to general assembly.** If you are entering motions *before* they are publicly revealed note that there is a *Display Motions* button in the **Display** area that allows you to do a Power Point style motion release." +msgstr "" + +#: ../../use/running-a-tournament.rst:86 +msgid "**Release to public.** As with draws, if you have the *enable public view of motions* setting configured your Tabbycat website will display a running list of motions from the tournament. When this is on, using the **Release Motions to Public** button on the **Motions** page will mark the current set of motions as able to be displayed on this page." +msgstr "" + +#: ../../use/running-a-tournament.rst:91 +msgid "Entering Results" +msgstr "" + +#: ../../use/running-a-tournament.rst:93 +msgid "Enter debate results and feedback as they come in (and/or allow online entry of results and feedback)." +msgstr "" + +#: ../../use/running-a-tournament.rst:95 +msgid "Both results and feedback entered in the tab room or online need to be confirmed before the results are counted. To confirm a debate ballot and the debate as a whole, the confirmed checkbox under *Ballot Status* should be ticket in addition to the *Debate Status* being set to Confirmed." +msgstr "" + +#: ../../use/running-a-tournament.rst:97 +msgid "Note that you can track data entry progress from the **Overview** page for the tournament." +msgstr "" + +#: ../../use/running-a-tournament.rst:99 +msgid "See :ref:`data-entry` for more details about the data entry process." +msgstr "" + +#: ../../use/running-a-tournament.rst:101 +msgid "We strongly recommend entering all data using the assistant area, not the admin area. This is because the admin area (intentionally) does not enforce the data confirmation procedure." +msgstr "" + +#: ../../use/running-a-tournament.rst:106 +msgid "Advancing to the next round" +msgstr "" + +#: ../../use/running-a-tournament.rst:108 +msgid "Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button." +msgstr "" + +#: ../../use/running-a-tournament.rst:112 +msgid "When you advance to the next round, if you've enabled public results, the results for the current round (which is now the previous round) will be released to the public **unless** the round is marked as \"silent\" in the database. So if you're careful about when results should be released, don't change the current round until you're ready to release those results." +msgstr "" + +#: ../../use/running-a-tournament.rst:114 +msgid "There is a design assumption that you will always want to release results for non-silent rounds before you start working on the draw for the next round. If this isn't true for you, please get in touch with us so that we know. The workaround is to make all rounds silent, then unsilent them when you're ready to release results." +msgstr "" + +#: ../../use/running-a-tournament.rst:116 +msgid "Emails can be sent to speakers informing them of their team's win/loss/points record before advancing rounds. This is independent from whether the whole round's results are released to the public." +msgstr "" + diff --git a/docs/locale/bg/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/bg/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..d304e61c76b --- /dev/null +++ b/docs/locale/bg/LC_MESSAGES/use/starting-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-31 10:15\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: bg_BG\n" + +#: ../../use/starting-a-tournament.rst:5 +msgid "Starting a Tournament" +msgstr "" + +#: ../../use/starting-a-tournament.rst:7 +msgid "This page outlines a few things you should do at the start of a tournament, after you've :ref:`imported the initial data `. Once you've done these, proceed to :ref:`running a tournament `." +msgstr "" + +#: ../../use/starting-a-tournament.rst:9 +msgid "Tabbycat is developed for — and tested on — modern web browsers. If you are using **Internet Explorer versions 8, 7, or 6** the interface may look odd or not function properly. Switch to a newer browser if possible." +msgstr "" + +#: ../../use/starting-a-tournament.rst:13 +msgid "Tournament configuration" +msgstr "" + +#: ../../use/starting-a-tournament.rst:15 +msgid "After importing all your data you can log into the site as an administrator by loading up the homepage and then using the **Login** button in the lower-right. From there you should go to the administration section of your tournament, and then go to the tournament configuration page by clicking **Setup** then **Configuration** in the menu." +msgstr "" + +#: ../../use/starting-a-tournament.rst:17 +msgid "Here you can adjust the debate rules and interface options to your liking then hit **Save** when finished. We also offer a number of presets that apply particular rule sets (such as the Australs rules) or feature sets (such as displaying information normally released during briefs on the website)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:20 +msgid "Special data types and options" +msgstr "" + +#: ../../use/starting-a-tournament.rst:22 +msgid "There are a few optional fields that are not covered in the initial data templates, in the visual importer, or that may only be relevant in particular scenarios. It's worth going over these quickly to see if they are needed for your tournament. You can view and edit these fields in the **Edit Database** area (link is in the menu under **Setup**)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "Adjudicator Feedback > Adj Feedback Questions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "As described in :ref:`adjudicator-feedback`, the types of questions that can be posed for adjudicator feedback are able to be heavily customised. If you are customising your feedback form it should be done here, and before the tournament starts." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "Authentication and Authorisation > Users" +msgstr "" + +#: ../../use/starting-a-tournament.rst:28 +msgid "Here you can add new admin users (those with full access) as well as new assistant users those (who can only do common data-entry tasks but not edit or view the full tab interface). See :ref:`user-accounts` for information on how to do this." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "The people you're adding accounts for should be physically present when you do this, so that they can enter their password." +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Participants > Regions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Optionally, each institution may belong to a *Region*. An institution's region is used within the adjudicator allocation process to visually identify teams and adjudicators for the purposes of highlighting diversity issues. These have traditionally been used for geographic regions (such as Oceania), although could be repurposed as arbitrary markers of information — for example they could be used to denote teams from a particular State, institutional size, or circuit." +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Participants > Adjudicators" +msgstr "" + +#: ../../use/starting-a-tournament.rst:36 +msgid "An adjudicators *Base Score* represents their relative ability to judge important rooms, where adjudicators with higher numbers will, relative to the other adjudicators, be placed in better roles (ie as Chairs) and in the rooms you deem most important in each round. If you are running a small tournament, and plan to do your allocations manually, you can set everyone's number to the same amount." +msgstr "" + +#: ../../use/starting-a-tournament.rst:37 +msgid "For larger tournaments, particularly those that collect feedback, see the :ref:`adjudicator-feedback` section for more information on how base scores and other variables influence the automated allocation process." +msgstr "" + +#: ../../use/starting-a-tournament.rst:38 +msgid "Regardless of how you score the adjs, if you have changed the minimimum chairing score in settings, you'll want to make sure there are enough adjudicators that meet this minimum threshold or the automated allocator may not function effectively." +msgstr "" + +#: ../../use/starting-a-tournament.rst:39 +msgid "All types of conflicts are assigned to the relevant adjudicator. Adjudicator's can be conflicted against particular teams, particular institutions, and other adjudicators. Each of these is a located in a tab at the top of the page." +msgstr "" + +#: ../../use/starting-a-tournament.rst:40 +msgid "Each adjudicator's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Each adjudicator's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "Participants > Teams" +msgstr "" + +#: ../../use/starting-a-tournament.rst:44 +msgid "Note the distinction here between full name and short name. The latter is used on pages where space is tight, such as the draw displays or the adjudicator allocation interface." +msgstr "" + +#: ../../use/starting-a-tournament.rst:45 +msgid "Note that \"Uses institutional prefix\" option. With this option on, a team from the 'MUDS' insttution named '1' or 'Gold' would be displayed as 'MUDS 1' or 'MUDS Gold'." +msgstr "" + +#: ../../use/starting-a-tournament.rst:46 +msgid "At present, setting a team's type to Bye, Swing, or Composite only affects very particular circumstances, and should be considered unnecessary." +msgstr "" + +#: ../../use/starting-a-tournament.rst:47 +msgid "If you do have composite teams, and wish to have them be conflicted by adjudicators from each respective instutution, you'll need to add a new team conflict to each adjudicator from each institution." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "If you do have swing teams, or teams that are otherwise ineligible for breaking, this is typically handled through the breaks interface in the main site" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Participants > Speakers" +msgstr "" + +#: ../../use/starting-a-tournament.rst:51 +msgid "Each speaker's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Each speaker's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "Tournaments > Divisions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "At the moment divisions are only useful for running tournaments that use round-robin style draws. Here, each division represents a draw pool within a round. Division support here is under development and not tested in many scenarios." +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Tournaments > Tournaments" +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Note that tournaments can have a welcome message (useful for displaying maps and other information on the homepage)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "Venues > Venues" +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "A venue's priority determines its priority in being allocated. If there are 20 debates, and 30 rooms, the 20 rooms with the highest priorities will be chosen. Furthermore, if particular debates are marked as important during the draw process, those debates will receive the rooms with the highest priorities. In this way you can give close rooms to members of the adj core, or give larger rooms to debates that will draw a large audience." +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venues > Venue Categories" +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venue categories are not needed for most kinds of tournaments. Their purpose is to classify particular venues, such as venues all within one building or venues that are accessible. Once assigned these categories can display in the venue's name — ie \"Red 01.01\" or be used to assign Venue Constraints that match particular teams, institutions, or adjudicators to particular types of venues." +msgstr "" + +#: ../../use/starting-a-tournament.rst:67 +msgid "Information for the briefing" +msgstr "" + +#: ../../use/starting-a-tournament.rst:69 +msgid "If you're using the online submissions feature, some things you should probably mention in the briefing:" +msgstr "" + +#: ../../use/starting-a-tournament.rst:71 +msgid "Adjudicators must fill out ballots completely, including motions and venues—they are entered into the system." +msgstr "" + +#: ../../use/starting-a-tournament.rst:72 +msgid "There is a static URL for each person's ballots and feedback forms. It can be bookmarked, or the page can refreshed after each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:73 +msgid "If people submit a result or feedback online, they should indicate that they have done so on the paper copy of their ballot." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/authors.po b/docs/locale/ca/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..65f90133d1e --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/authors.po @@ -0,0 +1,72 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: ca_ES\n" + +#: ../../../AUTHORS.rst:3 +msgid "Authors & Acknowledgements" +msgstr "" + +#: ../../../AUTHORS.rst:6 +msgid "Authors" +msgstr "" + +#: ../../../AUTHORS.rst:8 +msgid "Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:" +msgstr "" + +#: ../../../AUTHORS.rst:10 +msgid "Philip Belesky (`pb-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:11 +msgid "Chuan-Zheng Lee (`cz-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:13 +msgid "Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:16 +msgid "Contributors" +msgstr "" + +#: ../../../AUTHORS.rst:18 +msgid "Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:19 +msgid "Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category." +msgstr "" + +#: ../../../AUTHORS.rst:20 +msgid "Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced." +msgstr "" + +#: ../../../AUTHORS.rst:21 +msgid "Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the \"Tournament Logistics\" section of our documentation." +msgstr "" + +#: ../../../AUTHORS.rst:24 +msgid "Sponsors" +msgstr "" + +#: ../../../AUTHORS.rst:26 +msgid "Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/changelog.po b/docs/locale/ca/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..974aa4139e4 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/changelog.po @@ -0,0 +1,1922 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: ca_ES\n" + +#: ../../../CHANGELOG.rst:3 +msgid "Change Log" +msgstr "" + +#: ../../../CHANGELOG.rst:6 +msgid "2.4.0 (Maine)" +msgstr "" + +#: ../../../CHANGELOG.rst:7 +msgid "*Release date: ?*" +msgstr "" + +#: ../../../CHANGELOG.rst:9 +msgid "Added support for Russian, and shortened the language selector" +msgstr "" + +#: ../../../CHANGELOG.rst:10 +msgid "Renamed 'test score' to 'base score'" +msgstr "" + +#: ../../../CHANGELOG.rst:11 +msgid "Divisions-specific features have been deprecated and removed" +msgstr "" + +#: ../../../CHANGELOG.rst:12 +msgid "Moved the 'Edit Database' menu item to the dropdown with the logo in the admin navigation" +msgstr "" + +#: ../../../CHANGELOG.rst:13 +msgid "Pull-ups can now be restricted to teams with the lowest draw strength (by speaker or team points) of their bracket" +msgstr "" + +#: ../../../CHANGELOG.rst:14 +msgid "The number of pull-ups and draw strength by speaker score are now available as team standing metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:15 +msgid "Added the new emoji that come along with Unicode 11 — thanks to Viran Weerasekera for this addition!" +msgstr "" + +#: ../../../CHANGELOG.rst:16 +msgid "The 'Show adjudicator institutions' preference now covers a wider range of cases; meaning that if it is unchecked then all adjudicator's institutional affiliations should be hidden from the public" +msgstr "" + +#: ../../../CHANGELOG.rst:20 +msgid "2.3.2" +msgstr "" + +#: ../../../CHANGELOG.rst:21 +msgid "*Release date: 19 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:23 +msgid "Fixed issue where teams would appear to be unavailable in break rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:24 ../../../CHANGELOG.rst:294 +#: ../../../CHANGELOG.rst:302 ../../../CHANGELOG.rst:314 +msgid "Other minor fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:28 +msgid "2.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:29 +msgid "*Release date: 6 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:31 +msgid "Fixed issue where the institutions list would count teams/adjudicators outside of the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:32 +msgid "Fixed issue where a rejected ballot form would crash rather than providing an error message" +msgstr "" + +#: ../../../CHANGELOG.rst:33 +msgid "Fixed issue where the javascript bundle would not build on a local windows install" +msgstr "" + +#: ../../../CHANGELOG.rst:34 +msgid "Fixed issue where the adjudicator record pages would show an unreleased motion if that round's draw was released" +msgstr "" + +#: ../../../CHANGELOG.rst:38 +msgid "2.3.0 (LaPerm)" +msgstr "" + +#: ../../../CHANGELOG.rst:39 +msgid "*Release date: 27 September 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:42 +msgid "Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation" +msgstr "" + +#: ../../../CHANGELOG.rst:43 +msgid "Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates" +msgstr "" + +#: ../../../CHANGELOG.rst:45 +msgid "By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:47 +msgid "These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core" +msgstr "" + +#: ../../../CHANGELOG.rst:48 +msgid "A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information" +msgstr "" + +#: ../../../CHANGELOG.rst:49 +msgid "The unused panel is now able to sort adjudicators by name, score, or drag order" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Average scores for all adjudicators, and a voting majority, are now shown next to the panel" +msgstr "" + +#: ../../../CHANGELOG.rst:51 +msgid "Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values" +msgstr "" + +#: ../../../CHANGELOG.rst:52 +msgid "The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)" +msgstr "" + +#: ../../../CHANGELOG.rst:55 +msgid "Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "A range of improvements to the email notifications contributed by Étienne Beaulé:" +msgstr "" + +#: ../../../CHANGELOG.rst:57 +msgid "Ballot receipt emails now provide more information about team scores/points" +msgstr "" + +#: ../../../CHANGELOG.rst:58 +msgid "Emails are now in a rich-text format" +msgstr "" + +#: ../../../CHANGELOG.rst:59 +msgid "Custom emails may be sent out to select participants through the web-interface" +msgstr "" + +#: ../../../CHANGELOG.rst:60 +msgid "Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "Teams can be sent emails with their draw details" +msgstr "" + +#: ../../../CHANGELOG.rst:62 +msgid "Emails can be tracked to determine if sent or read (SendGrid-specific)" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Expanded the use of private URLs (Encore Étienne Beaulé):" +msgstr "" + +#: ../../../CHANGELOG.rst:64 +msgid "QR codes are now included in addition to the URL when printing private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:66 +msgid "Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Reworked how conflicts are determined to support double-past institutional conflicts:" +msgstr "" + +#: ../../../CHANGELOG.rst:68 +msgid "Added a \"team-institution conflict\" model" +msgstr "" + +#: ../../../CHANGELOG.rst:69 +msgid "Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter" +msgstr "" + +#: ../../../CHANGELOG.rst:71 +msgid "An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties" +msgstr "" + +#: ../../../CHANGELOG.rst:72 +msgid "When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions" +msgstr "" + +#: ../../../CHANGELOG.rst:73 +msgid "Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:74 +msgid "Info-slides can now be split into paragraphs" +msgstr "" + +#: ../../../CHANGELOG.rst:75 +msgid "Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:76 +msgid "Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:77 +msgid "Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``" +msgstr "" + +#: ../../../CHANGELOG.rst:78 +msgid "Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally." +msgstr "" + +#: ../../../CHANGELOG.rst:82 +msgid "2.2.10" +msgstr "" + +#: ../../../CHANGELOG.rst:83 +msgid "*Release date: 10 February 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:85 +msgid "Fixed the display of feedback quantities on the Feedback Overview Page" +msgstr "" + +#: ../../../CHANGELOG.rst:86 +msgid "Fixed issue where 'ignored' feedback would hide the result from the feedback graph but not affect an adjudicator's current score. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:90 +msgid "2.2.9" +msgstr "" + +#: ../../../CHANGELOG.rst:91 +msgid "*Release date: 24 January 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:93 +msgid "Fixed an issue that could cause errors for tournaments when using an atypical number of rounds and break sizes. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:94 +msgid "Fixed an issue where the display of adjudicator's record links would display their name twice" +msgstr "" + +#: ../../../CHANGELOG.rst:98 +msgid "2.2.8" +msgstr "" + +#: ../../../CHANGELOG.rst:99 +msgid "*Release date: 14 December 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:101 +msgid "Fix issue where the check-in buttons were always disabled on admin and assistant pages" +msgstr "" + +#: ../../../CHANGELOG.rst:102 +msgid "Other minor fixes. Thanks to Étienne for these and for the check-in button fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:106 +msgid "2.2.7" +msgstr "" + +#: ../../../CHANGELOG.rst:107 +msgid "*Release date: 16 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:109 +msgid "Lock redis-py version to 2.10.6, as workaround for `compatibility issue between django-redis and redis-py `_" +msgstr "" + +#: ../../../CHANGELOG.rst:110 +msgid "Fix login link on page shown after a user logs out" +msgstr "" + +#: ../../../CHANGELOG.rst:114 +msgid "2.2.6" +msgstr "" + +#: ../../../CHANGELOG.rst:115 +msgid "*Release date: 14 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:117 +msgid "Fix issue where check-ins could not be revoked" +msgstr "" + +#: ../../../CHANGELOG.rst:118 +msgid "Fix issue where the standings overview 'dashboard' included scores from elimination rounds. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:119 +msgid "Fix issue where the Average Individual Speaker Score metric would fail to calculate in some circumstances. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:120 +msgid "Fix issue where draw emails would crash if venues were unspecified. Thanks, again, to Étienne for this fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:124 +msgid "2.2.5" +msgstr "" + +#: ../../../CHANGELOG.rst:125 +msgid "*Release date: 21 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:127 +msgid "Remove the buttons from the public check-ins page (as these do nothing unless the user is logged in)" +msgstr "" + +#: ../../../CHANGELOG.rst:128 +msgid "Hopefully fixed error that could cause Team- and Adjudicator- Institutional conflicts to not show properly on Allocation pages" +msgstr "" + +#: ../../../CHANGELOG.rst:129 +msgid "Thanks to Étienne for pull requests fixing rare bugs in the user creation form and break generation when rounds are not present" +msgstr "" + +#: ../../../CHANGELOG.rst:133 +msgid "2.2.4" +msgstr "" + +#: ../../../CHANGELOG.rst:134 +msgid "*Release date: 9 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:136 +msgid "Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:140 +msgid "2.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:141 +msgid "*Release date: 28 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:143 +msgid "*Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:144 +msgid "Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:145 +msgid "Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:149 +msgid "2.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:150 +msgid "*Release date: 22 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:152 +msgid "*Actually* fix the issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:156 +msgid "2.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:157 +msgid "*Release date: 21 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:159 +msgid "Fix issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:163 +msgid "2.2.0 (Khao Manee)" +msgstr "" + +#: ../../../CHANGELOG.rst:164 +msgid "*Release date: 20 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Implemented a new server architecture on Heroku along with other optimisation that should significantly improve the performance of sites receiving lots of traffic. Note that if you are upgrading an existing Heroku instance this requires a few tweaks before you deploy the update:" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Add the `https://github.com/heroku/heroku-buildpack-nginx.git` build pack under the Settings area of the Heroku Dashboard and positioning it first" +msgstr "" + +#: ../../../CHANGELOG.rst:168 +msgid "If your Heroku Stack is not \"heroku-16\" (noted under that same Settings page) it will need to be set as such using the Heroku CLI and the ``heroku stack:set heroku-16 --app APP_NAME`` command" +msgstr "" + +#: ../../../CHANGELOG.rst:169 +msgid "Added a page to the documentation that details how to scale a Tabbycat site that is receiving large amounts of traffic; and another page that documents how to upgrade a Tabbycat site to a new version" +msgstr "" + +#: ../../../CHANGELOG.rst:170 +msgid "Added support for Japanese and Portuguese. Let us know if you'd like to help contribute translations for either language (or a new one)!" +msgstr "" + +#: ../../../CHANGELOG.rst:171 +msgid "The results-entry page now updates its data live, giving you a more up to date look at data entry progress and reducing the cases of old data leading people to enter new ballots when they meant to confirm them" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "A huge thanks to Étienne Beaulé for contributing a number of major new features and bug fixes. Notably:" +msgstr "" + +#: ../../../CHANGELOG.rst:173 +msgid "Added a means to mark feedback as 'ignored' so that it still is recorded as having been submitted, but does not affect the targeted-adjudicator's feedback score" +msgstr "" + +#: ../../../CHANGELOG.rst:174 +msgid "Added email notification to adjudicators on round release" +msgstr "" + +#: ../../../CHANGELOG.rst:175 +msgid "Implemented participant self-check-in through the use of their private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:176 +msgid "Gave all participants to a tournament a private URL key rather than being by team, and added a landing page for the participants using this key" +msgstr "" + +#: ../../../CHANGELOG.rst:177 +msgid "Implemented templated email notifications with ballot submission and round advance with the messages in a new settings panel. Private URL emails are now also customizable" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "Added the \"average individual speaker score\" metric which averages the scores of all substantive speeches by the team within preliminary rounds. The old \"average speaker score\" metric has been renamed to to \"average total speaker score\"" +msgstr "" + +#: ../../../CHANGELOG.rst:179 +msgid "Reworked the ballots status graph to be an area chart" +msgstr "" + +#: ../../../CHANGELOG.rst:180 +msgid "Added the ability to hide motions on printed ballots (even if they have been entered). Thanks to Github user 0zlw for the feature request!" +msgstr "" + +#: ../../../CHANGELOG.rst:181 +msgid "Added the ability to unconfirm feedback from any of the views that show it" +msgstr "" + +#: ../../../CHANGELOG.rst:182 +msgid "BP motion statistics now also show average points split by bench and half" +msgstr "" + +#: ../../../CHANGELOG.rst:183 +msgid "Added a warning when users are close to their free-tier database limit on Heroku that makes it clear not to create new tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:184 +msgid "Added ``exportconfig`` and ``importconfig`` management commands to export and import tournament configurations to a JSON file" +msgstr "" + +#: ../../../CHANGELOG.rst:185 +msgid "Upgraded `django-dynamic-preferences `_ to version 1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:187 +msgid "This won't affect most users, but advanced users previously having problems with a stray ``dynamic_preferences_users_userpreferencemodel`` table who are upgrading an existing instance may wish to run the SQL command ``DROP TABLE dynamic_preferences_users_userpreferencemodel;`` to remove this stray table. When this table was present, it caused an inconsistency between migration state and database schema that in turned caused the ``python manage.py flush`` command to fail. More information is available in the `django-dynamic-preferences changelog `_" +msgstr "" + +#: ../../../CHANGELOG.rst:191 +msgid "2.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:192 +msgid "*Release date: 21 August 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:194 +msgid "Added an alert for British Parliamentary format grand-final ballots that explains the workaround needed to nominate a sole winner" +msgstr "" + +#: ../../../CHANGELOG.rst:195 +msgid "Improved display of images shown when sharing Tabbycat links on social media" +msgstr "" + +#: ../../../CHANGELOG.rst:196 +msgid "Optimised the performance of several commonly-loaded pages. Thanks to Étienne Beaulé for the pull request!" +msgstr "" + +#: ../../../CHANGELOG.rst:197 +msgid "Prevented the entry of integer-scale feedback questions without the required min/max attributes" +msgstr "" + +#: ../../../CHANGELOG.rst:198 +msgid "Provided a shortcut link to editing a round's feedback weight" +msgstr "" + +#: ../../../CHANGELOG.rst:199 +msgid "Prevented standings from crashing when only a single standings metric is set" +msgstr "" + +#: ../../../CHANGELOG.rst:203 +msgid "2.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:204 +msgid "*Release date: 14 July 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:206 +msgid "Fixed an error caused when calculating breaks including teams without institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:207 +msgid "Improved display of long motions and info slides" +msgstr "" + +#: ../../../CHANGELOG.rst:208 +msgid "Fixed bug in feedback progress tracking with UADC-style adjudication" +msgstr "" + +#: ../../../CHANGELOG.rst:209 +msgid "Fixed bug where the public checks page would cause large amounts of failing requests" +msgstr "" + +#: ../../../CHANGELOG.rst:210 +msgid "Fixed visual issue with adjudicator lists wrapping poorly on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:211 +msgid "Limited the time it takes to serve requests to match Heroku's in-built limit; this may help improve the performance of sites under heavy load" +msgstr "" + +#: ../../../CHANGELOG.rst:215 +msgid "2.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:216 +msgid "*Release date: 19 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:218 +msgid "The Scan Identifiers page now orders check-ins from top to bottom" +msgstr "" + +#: ../../../CHANGELOG.rst:219 +msgid "The Scan Identifiers now plays different sounds for failed check-ins" +msgstr "" + +#: ../../../CHANGELOG.rst:220 +msgid "The Scan Identifiers now has a toggle for sounds; allowing it to work in browsers like Safari that block auto-playing audio" +msgstr "" + +#: ../../../CHANGELOG.rst:224 +msgid "2.1.0 (Japanese Bobtail)" +msgstr "" + +#: ../../../CHANGELOG.rst:225 +msgid "*Release date: 7 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:227 +msgid "Added an introductory modal for the adjudicator allocation page to help outline how the features and workflow operate" +msgstr "" + +#: ../../../CHANGELOG.rst:228 +msgid "Added an automated method for assigning importances to debates using their bracket or 'liveness'. This should allow smaller tournaments to more easily assign importances and save time for larger tournaments that do so" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "Added the ability to switch between using 'team codes' and standard team names" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "By default team codes are set to match that team's emoji, but team codes are editable and can be imported like standard data" +msgstr "" + +#: ../../../CHANGELOG.rst:231 +msgid "Team codes can be swapped in an out for standard team names at will, with precise control over the contexts in which either is used — i.e. in public-facing pages, in admin-facing pages, in tooltips, *etc.*" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Added a range of 'check-in' functionality" +msgstr "" + +#: ../../../CHANGELOG.rst:233 +msgid "This includes barcode assignment, printing, and scanning. Scanning methods are optimised both for manual entry, entry with barcodes scanners, and for a 'live' scanning view that uses your phone's camera!" +msgstr "" + +#: ../../../CHANGELOG.rst:234 +msgid "This includes new people and venue status pages that show an overview of check-in status and allow for easy manual check-ins; ideal for a roll-calls!. This page can also be made public" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Ballot check-ins have been converted to this new method, and now all printed ballots will contain the barcodes needed to scan them" +msgstr "" + +#: ../../../CHANGELOG.rst:236 +msgid "Venue check-ins have been added alongside the standard 'person' check-ins to allow you to track a room's status at the start of the day or round-by-round" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Added (partial) translations in French, Spanish and Arabic" +msgstr "" + +#: ../../../CHANGELOG.rst:238 +msgid "Users can now use a link in the footer to switch the site's language into French, Spanish, or Arabic. By default Tabbycat should also match your browser's language and so automatically apply those languages if it matches" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Our translations are generously provided by volunteers, but (so far) do not cover all of the interface text within Tabbycat. If you're interested in helping to translate new or existing languages please get in touch!" +msgstr "" + +#: ../../../CHANGELOG.rst:240 +msgid "Thanks to the excellent team at QatarDebate for contributing the Arabic translations, and to Alejandro, Hernando, Julian and Zoe for contributing the Spanish translations." +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Added a new (beta) feature: allocation 'sharding'" +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Sharding allows you to split up the Adjudicator Allocation screen into a defined subset of the draw. This has been designed so that you can have multiple computers doing allocations simultaneously; allowing the adjudication core to split itself and tackle allocations in parallel." +msgstr "" + +#: ../../../CHANGELOG.rst:243 +msgid "Shards can be assigned into defined fractions (i.e. halves or fifths) according to specific criteria (i.e. bracket or priority) and following either a top-to-bottom sorting or a mixed sorting that ensures each bracket has an even proportion of each criteria." +msgstr "" + +#: ../../../CHANGELOG.rst:244 +msgid "Added an option to show a \"Confirm Digits\" option to pre-printed ballots that asks adjudicators to confirm their scores in a manner that may help clarify instances or bad handwriting. This can be enabled in the \"Data Entry\" settings area." +msgstr "" + +#: ../../../CHANGELOG.rst:245 +msgid "Added a 'liveness' calculator for BP that will estimate whether each team has, can, or can't break in each of their categories (as previously existed for 2-team formats)" +msgstr "" + +#: ../../../CHANGELOG.rst:246 +msgid "Added draw pull-up option: pull up from middle" +msgstr "" + +#: ../../../CHANGELOG.rst:247 +msgid "Added new draw option: choose pull-up from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../../CHANGELOG.rst:248 +msgid "Added the ability to have different 'ballots-per-debates' for in/out rounds; accommodating tournaments like Australian Easters that use consensus for preliminary rounds but voting for elimination rounds." +msgstr "" + +#: ../../../CHANGELOG.rst:249 +msgid "Added time zone support to the locations where times are displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:250 +msgid "Administrators can now view pages as if they were Assistants; allowing them to (for example) use the data entry forms that enforce double-checking without needed to create a separate account" +msgstr "" + +#: ../../../CHANGELOG.rst:251 +msgid "Fixed χ² test in motion statistics, and refactored the motion statistics page" +msgstr "" + +#: ../../../CHANGELOG.rst:252 +msgid "Teams, like adjudicators, no longer need to have an institution" +msgstr "" + +#: ../../../CHANGELOG.rst:253 +msgid "Added a page allowing for bulk updates to adjudicator scores" +msgstr "" + +#: ../../../CHANGELOG.rst:254 +msgid "Added break categories to team standings, and new team standings pages for break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Made speaker standings more configurable" +msgstr "" + +#: ../../../CHANGELOG.rst:256 +msgid "Second-order metrics can now be specified" +msgstr "" + +#: ../../../CHANGELOG.rst:257 +msgid "Added trimmed mean (also known as high-low drop)" +msgstr "" + +#: ../../../CHANGELOG.rst:258 +msgid "Added ability to set no limit for number of missed debates" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Standard deviation is now the population standard deviation (was previously sample), and ranks in ascending order if used to rank speakers." +msgstr "" + +#: ../../../CHANGELOG.rst:273 ../../../CHANGELOG.rst:386 +msgid "Quality of life improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:262 +msgid "Added a \"☆\" indicator to more obviously liveness in the adjudicator allocation screen" +msgstr "" + +#: ../../../CHANGELOG.rst:263 +msgid "Added WYSIWYG editor for tournament welcome message, and moved it to tournament configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:264 +msgid "Added \"appellant\" and \"respondent\" to the side name options" +msgstr "" + +#: ../../../CHANGELOG.rst:265 +msgid "Added a two new columns to the feedback overview page: one that displays the current difference between an adjudicator's test score and their current weighted score; another the displays the standard deviation of an adjudicator's feedback scores" +msgstr "" + +#: ../../../CHANGELOG.rst:266 +msgid "Added an 'important feedback' page that highlights feedback significantly above or below an adjudicator's test score" +msgstr "" + +#: ../../../CHANGELOG.rst:267 +msgid "Added a means to bulk-import adjudicator scores (for example from a CSV) to make it easier to work with external feedback processing" +msgstr "" + +#: ../../../CHANGELOG.rst:268 +msgid "Speakers and speaker's emails in the simple importer can now be separated by commas or tabs in addition to new lines" +msgstr "" + +#: ../../../CHANGELOG.rst:269 +msgid "The \"shared\" checkbox in the simple importer is now hidden unless the relevant tournament option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:270 +msgid "Current team standings page now shows silent round results if \"Release all round results to public\" is set" +msgstr "" + +#: ../../../CHANGELOG.rst:271 +msgid "The Consensus vs Voting options for how ballots work has now been split into two settings: one option for preliminary rounds and one option for elimination rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:272 +msgid "Speaker scores now show as integers (without decimals) where the tournament format would not allow decimals" +msgstr "" + +#: ../../../CHANGELOG.rst:273 +msgid "Added a page showing a list of institutions in the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:274 +msgid "On the assistant \"enter results\" page, pressing \"/\" jumps to the \"Find in Table\" box, so data entry can be done entirely from your keyboard" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "Switched to using a Websockets/Channels based infrastructure to better allow for asynchronous updates. This should also ameliorate cases where the Memcachier plugin expired due to inactivity which would then crash a site. Notes for those upgrading:" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "On Heroku: You should remove the Memcachier plugin and instead add 'heroku-redis' to any instances being upgraded" +msgstr "" + +#: ../../../CHANGELOG.rst:277 +msgid "Locally: You should recreate your `local_settings.py` from the `local_settings.example` file" +msgstr "" + +#: ../../../CHANGELOG.rst:280 +msgid "Upgraded to Django 2.0" +msgstr "" + +#: ../../../CHANGELOG.rst:279 +msgid "Converted most raw SQL queries to use the new ``filter`` keyword in annotations" +msgstr "" + +#: ../../../CHANGELOG.rst:283 +msgid "2.0.7" +msgstr "" + +#: ../../../CHANGELOG.rst:284 +msgid "*Release date: 13 April 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:286 +msgid "Fixed an issue preventing draws with pre-allocate sides generating" +msgstr "" + +#: ../../../CHANGELOG.rst:290 +msgid "2.0.6" +msgstr "" + +#: ../../../CHANGELOG.rst:291 +msgid "*Release date: 20 March 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:293 +msgid "Added reminder to add own-institution conflicts in the Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:298 +msgid "2.0.5" +msgstr "" + +#: ../../../CHANGELOG.rst:299 +msgid "*Release date: 7 February 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:301 +msgid "Improved the printing of scoresheets and feedback forms on Chrome." +msgstr "" + +#: ../../../CHANGELOG.rst:306 +msgid "2.0.4" +msgstr "" + +#: ../../../CHANGELOG.rst:307 +msgid "*Release date: 22 January 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:309 +msgid "Add alert for users who try to do voting ballots on BP-configured tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:310 +msgid "Fixed issue where draws of the \"manual\" type would not generate correctly" +msgstr "" + +#: ../../../CHANGELOG.rst:311 +msgid "Fixed issue where a ballot's speaker names dropdown would contain both team's speakers when using formats with side selection" +msgstr "" + +#: ../../../CHANGELOG.rst:312 +msgid "Fixed issue where scoresheets would not show correctly under some configurations" +msgstr "" + +#: ../../../CHANGELOG.rst:313 +msgid "Improved display of really long motions when using the inbuilt motion-showing page" +msgstr "" + +#: ../../../CHANGELOG.rst:318 +msgid "2.0.3" +msgstr "" + +#: ../../../CHANGELOG.rst:319 +msgid "*Release date: 3 December 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:321 +msgid "Fixed issue where the 'prefix team name with institution name' checkbox would not be correctly saved when using the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:322 +msgid "Removed the scroll speed / text size buttons on mobile draw views that were making it difficult to view the table" +msgstr "" + +#: ../../../CHANGELOG.rst:323 +msgid "Improved the display of the motions tab page on mobile devices and fixed an issue where it appeared as if only half the vetoes were made" +msgstr "" + +#: ../../../CHANGELOG.rst:327 +msgid "2.0.2" +msgstr "" + +#: ../../../CHANGELOG.rst:328 +msgid "*Release date: 27 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Fixes and improvements to diversity overview" +msgstr "" + +#: ../../../CHANGELOG.rst:331 +msgid "Fixed average feedback rating from teams, it was previously (incorrectly) showing the average feedback rating from all adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:332 +msgid "Gender splits for average feedback rating now go by target adjudicator; this was previously source adjudicator" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Persons with unknown gender are now shown in counts (but not score/rating averages); a bug had previously caused them to be incorrectly counted as zero" +msgstr "" + +#: ../../../CHANGELOG.rst:334 +msgid "Improved query efficiency of the page" +msgstr "" + +#: ../../../CHANGELOG.rst:335 +msgid "Improved the BP motions tab for out-rounds by specifying advancing teams as \"top/bottom ½\" rather than as 1st/4th and removed the average-points-per-position graphs that were misleading" +msgstr "" + +#: ../../../CHANGELOG.rst:336 +msgid "Improved handling of long motions in the motion display interface" +msgstr "" + +#: ../../../CHANGELOG.rst:337 +msgid "Fixed issue where creating BP tournaments using the wizard would create an extra break round given the size of the break specified" +msgstr "" + +#: ../../../CHANGELOG.rst:338 +msgid "Fixed auto-allocation in consensus panels where there are fewer judges than debates in the round" +msgstr "" + +#: ../../../CHANGELOG.rst:339 +msgid "Fixed reply speaker validity check when speeches are marked as duplicate" +msgstr "" + +#: ../../../CHANGELOG.rst:340 +msgid "Prohibit assignment of teams to break categories of other tournaments in Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:344 +msgid "2.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:345 +msgid "*Release date: 21 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:347 +msgid "Fixed issue where results submission would crash if sides are unconfirmed" +msgstr "" + +#: ../../../CHANGELOG.rst:348 +msgid "Fixed issue where scoresheets would not display properly for adjudicators who lack institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:349 +msgid "Fixed issue where the round history indicators in the Edit Adjudicators page would sometimes omit the \"rounds ago\" indicator" +msgstr "" + +#: ../../../CHANGELOG.rst:353 +msgid "2.0.0 (Iberian Lynx)" +msgstr "" + +#: ../../../CHANGELOG.rst:354 +msgid "*Release date: 13 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "British Parliamentary support" +msgstr "" + +#: ../../../CHANGELOG.rst:357 +msgid "Full support for British Parliamentary format has been added and we're incredibly excited to see Tabbycat's unique features and design (finally) available as an option for those tabbing in the predominant global format" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "As part of the implementation of this format we've made significant improvements over existing tab software on how sides are allocated within BP draws. This means that teams are less likely to have 'imbalanced' proportions of side allocations (for example having many more debates as Opening Government than Closing Opposition)" +msgstr "" + +#: ../../../CHANGELOG.rst:359 +msgid "We've added a new \"Comparisons\" page added to the documentation to outline some of the key differences between Tabbycat and other software in the context of BP tabbing" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "Refreshed interface design" +msgstr "" + +#: ../../../CHANGELOG.rst:361 +msgid "The basic graphic elements of Tabbycat have had a their typography, icons, colours, forms, and more redesign for a more distinctive and clear look. We also now have an official logo!" +msgstr "" + +#: ../../../CHANGELOG.rst:362 +msgid "The \"Motions\" stage of the per-round workflow has now been rolled into the Display area to better accommodate BP formats and consolidate the Draw/Motion 'release' process" +msgstr "" + +#: ../../../CHANGELOG.rst:363 +msgid "Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks" +msgstr "" + +#: ../../../CHANGELOG.rst:364 +msgid "Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions" +msgstr "" + +#: ../../../CHANGELOG.rst:366 +msgid "Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "Improved handling of Break Rounds ballots and sides allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised" +msgstr "" + +#: ../../../CHANGELOG.rst:369 +msgid "Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores" +msgstr "" + +#: ../../../CHANGELOG.rst:370 +msgid "Now, like Break Categories, you can define arbitrary Categories such as 'Novice' or 'ESL' to create custom Speaker tabs for groups of Speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:371 +msgid "You can now release an Adjudicators Tab showing test scores, final scores, and/or per-round feedback averages" +msgstr "" + +#: ../../../CHANGELOG.rst:372 +msgid "Information Slides can now be added to the system; either for showing to an auditorium within Tabbycat or for displaying alongside the public list of motions and/or the motions tab" +msgstr "" + +#: ../../../CHANGELOG.rst:373 +msgid "Teams and adjudicators are no longer required to have institutions; something that should be very useful when setting up small IVs and the like" +msgstr "" + +#: ../../../CHANGELOG.rst:374 +msgid "Private URLs can now be incrementally generated. Records of sent mail are now also kept by Tabbycat, so that emails can be incrementally sent to participants as registration data changes" +msgstr "" + +#: ../../../CHANGELOG.rst:376 +msgid "After creating a new tournament you will now be prompted to apply a basic rules and public information preset" +msgstr "" + +#: ../../../CHANGELOG.rst:377 +msgid "Better handling of errors that arise when a debate team is missing or where two teams have been assigned the same side" +msgstr "" + +#: ../../../CHANGELOG.rst:378 +msgid "Fixed issue where the adjudicator feedback graphs would not sort along with their table" +msgstr "" + +#: ../../../CHANGELOG.rst:379 +msgid "The Feedback Overview page now makes it more clear how the score is determined, the current distribution of scores, and how scores affect the distribution of chairs, panellists, and trainees" +msgstr "" + +#: ../../../CHANGELOG.rst:380 +msgid "Speaker tabs now default to sorting by average, except for formats where we are certain that they must be sorted by total. The speaker tab page itself now prominently notes which setting is is currently using" +msgstr "" + +#: ../../../CHANGELOG.rst:381 +msgid "'Feedback paths' now default to a more permissive setting (rather than only allowing Chairs to submit feedback) and the Feedback Overview page will note that current configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:382 +msgid "Emails can be assigned to adjudicators and teams in the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:383 +msgid "More of the tables that allow you to set or edit data (such as the check-in tables for adjudicators, teams and venues) now automatically save changes" +msgstr "" + +#: ../../../CHANGELOG.rst:384 +msgid "When adding/editing users extraneous fields have been hidden and the \"Staff\" and \"Superuser\" roles have new sub-text clarifying what they mean for users with those permissions" +msgstr "" + +#: ../../../CHANGELOG.rst:385 +msgid "Team record pages now show cumulative team points, and if the speaker tab is fully released, speaker scores for that team in each debate" +msgstr "" + +#: ../../../CHANGELOG.rst:389 +msgid "1.4.6" +msgstr "" + +#: ../../../CHANGELOG.rst:390 +msgid "*Release date: 23 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:392 +msgid "Fixed issue where speaker standings with a large amount of non-ranking speakers would cause the page to load slowly or time-out." +msgstr "" + +#: ../../../CHANGELOG.rst:396 +msgid "1.4.5" +msgstr "" + +#: ../../../CHANGELOG.rst:397 +msgid "*Release date: 14 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:399 +msgid "Added warning message when adjudicator scores are outside the expected range" +msgstr "" + +#: ../../../CHANGELOG.rst:400 +msgid "Fixed handling of uniqueness failure in simple importer for teams" +msgstr "" + +#: ../../../CHANGELOG.rst:404 +msgid "1.4.4" +msgstr "" + +#: ../../../CHANGELOG.rst:405 +msgid "*Release date: 27 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:407 +msgid "Fixed Vue dependency issue preventing Heroku installs after a dependency release" +msgstr "" + +#: ../../../CHANGELOG.rst:408 +msgid "Fixed issue with formatting non-numeric standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:409 +msgid "Fixed behaviour of public tabs when all rounds are silent" +msgstr "" + +#: ../../../CHANGELOG.rst:413 +msgid "1.4.3" +msgstr "" + +#: ../../../CHANGELOG.rst:414 +msgid "*Release date: 9 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:416 +msgid "A number of improvements to error handling and logging" +msgstr "" + +#: ../../../CHANGELOG.rst:417 +msgid "Changed the \"previous round\" of an elimination round to point to the last one in the same break category" +msgstr "" + +#: ../../../CHANGELOG.rst:418 +msgid "Other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:422 +msgid "1.4.2" +msgstr "" + +#: ../../../CHANGELOG.rst:423 +msgid "*Release date: 23 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:425 +msgid "Minor bug fixes and error logging improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:429 +msgid "1.4.1" +msgstr "" + +#: ../../../CHANGELOG.rst:430 +msgid "*Release date: 2 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:432 +msgid "Fixed bug that prevented edited matchups from being saved" +msgstr "" + +#: ../../../CHANGELOG.rst:433 +msgid "Added flag to prevent retired sites from using the database for sessions" +msgstr "" + +#: ../../../CHANGELOG.rst:437 +msgid "1.4.0 (Havana Brown)" +msgstr "" + +#: ../../../CHANGELOG.rst:438 +msgid "*Release date: 26 July 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:" +msgstr "" + +#: ../../../CHANGELOG.rst:441 +msgid "Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping" +msgstr "" + +#: ../../../CHANGELOG.rst:442 +msgid "When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress" +msgstr "" + +#: ../../../CHANGELOG.rst:443 +msgid "Added conflicts and recent histories to the slideovers shown for teams/adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels" +msgstr "" + +#: ../../../CHANGELOG.rst:445 +msgid "Each interface's table is now sortable by a debate's importance, bracket, liveness, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:446 +msgid "Added a new \"Tournament Logistics\" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document" +msgstr "" + +#: ../../../CHANGELOG.rst:447 +msgid "Added (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)" +msgstr "" + +#: ../../../CHANGELOG.rst:448 +msgid "Added an ESL/EFL tab release option and status field" +msgstr "" + +#: ../../../CHANGELOG.rst:449 +msgid "Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this" +msgstr "" + +#: ../../../CHANGELOG.rst:450 +msgid "The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates" +msgstr "" + +#: ../../../CHANGELOG.rst:451 +msgid "Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished" +msgstr "" + +#: ../../../CHANGELOG.rst:452 +msgid "Added 'Average Speaks by Round' to the standings overview page" +msgstr "" + +#: ../../../CHANGELOG.rst:453 +msgid "Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important" +msgstr "" + +#: ../../../CHANGELOG.rst:454 +msgid "Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes" +msgstr "" + +#: ../../../CHANGELOG.rst:455 +msgid "Fixed issue where VenueCategories could not be edited if they did not have Venues set" +msgstr "" + +#: ../../../CHANGELOG.rst:456 +msgid "Various other small fixes and improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:460 +msgid "1.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:461 +msgid "*Release date: 26 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:463 +msgid "Fixed bug that allowed duplicate emoji to be occasionally generated" +msgstr "" + +#: ../../../CHANGELOG.rst:467 +msgid "1.3.0 (Genetta)" +msgstr "" + +#: ../../../CHANGELOG.rst:468 +msgid "*Release date: 9 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:470 +msgid "Added the ability to mark speeches as duplicates when entering ballots so that they will not show in speaker tabs, intended for use with 'iron-man' speeches and swing speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:471 +msgid "Reworked venue constraints and venue display options by streamlining \"venue groups\" and \"venue constraint categories\" into a single \"venue category\" type, with options for how they are used and displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:472 +msgid "Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:473 +msgid "Reworked the simple data importer (formerly the visual importer) to improve its robustness" +msgstr "" + +#: ../../../CHANGELOG.rst:474 +msgid "Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)" +msgstr "" + +#: ../../../CHANGELOG.rst:475 +msgid "Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release" +msgstr "" + +#: ../../../CHANGELOG.rst:476 +msgid "Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)" +msgstr "" + +#: ../../../CHANGELOG.rst:477 +msgid "Added the ability to redact individual person's identifying details from speaker tabs" +msgstr "" + +#: ../../../CHANGELOG.rst:478 +msgid "Added the ability for user passwords to be easily reset" +msgstr "" + +#: ../../../CHANGELOG.rst:479 +msgid "Added a minimal set of default feedback questions to newly created Tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:480 +msgid "When a tournament's current round is set, redirect to a page where it can be set, rather than crashing" +msgstr "" + +#: ../../../CHANGELOG.rst:481 +msgid "A number of other minor bug fixes and enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:485 +msgid "1.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:486 +msgid "*Release date: 17 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:488 +msgid "Improved the display of the admin ballot entry form on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:489 ../../../CHANGELOG.rst:497 +#: ../../../CHANGELOG.rst:505 +msgid "A number of other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:493 +msgid "1.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:494 +msgid "*Release date: 4 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:496 +msgid "Protected debate-team objects from cascaded deletion, and added warning messages with guidance when users would otherwise do this" +msgstr "" + +#: ../../../CHANGELOG.rst:501 +msgid "1.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:502 +msgid "*Release date: 25 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:504 +msgid "Printable feedback forms will now display the default rating scale, any configured introduction text, and better prompt you to add additional questions" +msgstr "" + +#: ../../../CHANGELOG.rst:509 +msgid "1.2.0 (Foldex)" +msgstr "" + +#: ../../../CHANGELOG.rst:510 +msgid "*Release date: 15 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:512 +msgid "Changed the core workflow by splitting display- and motion- related activities into separate pages to simplify each stage of running a round" +msgstr "" + +#: ../../../CHANGELOG.rst:513 +msgid "Added support for Docker-based installations to make local/offline installations much more simple" +msgstr "" + +#: ../../../CHANGELOG.rst:514 +msgid "Added a \"Tabbykitten\" version of Tabbycat that can be deployed to Heroku without a needing a credit/debit card" +msgstr "" + +#: ../../../CHANGELOG.rst:515 +msgid "Added button to load a demo tournament on the 'New Tournament' page so it is easier to test-run Tabbycat" +msgstr "" + +#: ../../../CHANGELOG.rst:516 +msgid "Changed venue groups to be separate to venue constraint categories" +msgstr "" + +#: ../../../CHANGELOG.rst:517 +msgid "Modified the licence to clarify that donations are required for some tournaments and added a more explicit donations link and explanation page" +msgstr "" + +#: ../../../CHANGELOG.rst:518 +msgid "Added information about autosave status to the adjudicator allocations page" +msgstr "" + +#: ../../../CHANGELOG.rst:519 +msgid "Added configurable side names so that tournaments can use labels like \"Proposition\"/\"Opposition\" instead of \"Affirmative\"/\"Negative\"" +msgstr "" + +#: ../../../CHANGELOG.rst:520 +msgid "Started work on basic infrastructure for translations" +msgstr "" + +#: ../../../CHANGELOG.rst:524 +msgid "1.1.7" +msgstr "" + +#: ../../../CHANGELOG.rst:525 +msgid "*Release date: 31 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:527 +msgid "Yet more minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:528 +msgid "The auto-allocation UI will now detail your minimum rating setting better" +msgstr "" + +#: ../../../CHANGELOG.rst:529 +msgid "Added guidance on database backups to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:533 +msgid "1.1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:534 +msgid "*Release date: 19 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:536 +msgid "A number of minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:537 +msgid "Added basic infrastructure for creating tabbycat translations" +msgstr "" + +#: ../../../CHANGELOG.rst:541 +msgid "1.1.5" +msgstr "" + +#: ../../../CHANGELOG.rst:542 +msgid "*Release date: 12 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:544 +msgid "A number of minor bug fixes and improvements to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:548 +msgid "1.1.4" +msgstr "" + +#: ../../../CHANGELOG.rst:549 +msgid "*Release date: 25 November 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:551 +msgid "Redesigned the footer area to better describe Tabbycat and to promote donations and related projects" +msgstr "" + +#: ../../../CHANGELOG.rst:552 +msgid "Slight tweaks to the site homepage and main menus to better accommodate the login/log out links" +msgstr "" + +#: ../../../CHANGELOG.rst:553 +msgid "A few minor bug fixes and improvements to error reporting" +msgstr "" + +#: ../../../CHANGELOG.rst:557 +msgid "1.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:558 +msgid "*Release date: 15 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:560 +msgid "Fixed bug affecting some migrations from earlier versions" +msgstr "" + +#: ../../../CHANGELOG.rst:561 +msgid "Made latest results show question mark rather than crash if a team is missing" +msgstr "" + +#: ../../../CHANGELOG.rst:562 +msgid "Fixed bug affecting the ability to save motions" +msgstr "" + +#: ../../../CHANGELOG.rst:563 +msgid "Fixed bug preventing draw flags from being displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:567 +msgid "1.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:568 +msgid "*Release date: 14 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:570 +msgid "Allow panels with even number of adjudicators (with warnings), by giving chair the casting vote" +msgstr "" + +#: ../../../CHANGELOG.rst:571 +msgid "Removed defunct person check-in, which hasn't been used since 2010" +msgstr "" + +#: ../../../CHANGELOG.rst:572 +msgid "Collapsed availability database models into a single model with Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:573 +msgid "Collapsed optional fields in action log entries into a single generic field using Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:574 +msgid "Added better warnings when attempting to create an elimination round draw with fewer than two teams" +msgstr "" + +#: ../../../CHANGELOG.rst:575 +msgid "Added warnings in Edit Database view when editing debate teams" +msgstr "" + +#: ../../../CHANGELOG.rst:576 +msgid "Renamed \"AIDA pre-2015\" break rule to \"AIDA 1996\"" +msgstr "" + +#: ../../../CHANGELOG.rst:580 +msgid "1.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:581 +msgid "*Release date: 8 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:583 +msgid "Fixed a bug where the team standings and team tab would crash when some emoji were not set" +msgstr "" + +#: ../../../CHANGELOG.rst:587 +msgid "1.1.0 (Egyptian Mau)" +msgstr "" + +#: ../../../CHANGELOG.rst:588 +msgid "*Release date: 3 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:590 +msgid "Added support for the United Asian Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:591 +msgid "Added support for the World Schools Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:592 +msgid "Made Windows 8+ Emoji more colourful" +msgstr "" + +#: ../../../CHANGELOG.rst:593 +msgid "Fixed an incompatability between Vue and IE 10-11 which caused tables to not render" +msgstr "" + +#: ../../../CHANGELOG.rst:594 +msgid "Minor bug fixes and dependency updates" +msgstr "" + +#: ../../../CHANGELOG.rst:598 +msgid "1.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:599 +msgid "*Release date: 19 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:601 +msgid "Fixed a minor bug with the visual importer affecting similarly named institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:602 +msgid "Fixed error message when user tries to auto-allocate adjudicators on unconfirmed or released draw" +msgstr "" + +#: ../../../CHANGELOG.rst:603 +msgid "Minor docs edits" +msgstr "" + +#: ../../../CHANGELOG.rst:607 +msgid "1.0.0 (Devon Rex)" +msgstr "" + +#: ../../../CHANGELOG.rst:608 +msgid "*Release date: 16 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Redesigned and redeveloped adjudicator allocation page" +msgstr "" + +#: ../../../CHANGELOG.rst:611 +msgid "Redesigned interface, featuring clearer displays of conflict and diversity information" +msgstr "" + +#: ../../../CHANGELOG.rst:612 +msgid "Changes to importances and panels are now automatically saved" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Added debate \"liveness\" to help identify critical rooms—many thanks to Thevesh Theva" +msgstr "" + +#: ../../../CHANGELOG.rst:614 +msgid "Panel score calculations performed live to show strength of voting majorities" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "New features" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "Added record pages for teams and adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:617 +msgid "Added a diversity tab to display demographic information about participants and scoring" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Significant general improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Shifted most table rendering to Vue.js to improve performance and design" +msgstr "" + +#: ../../../CHANGELOG.rst:620 +msgid "Drastically reduced number of SQL queries in large tables, *e.g.* draw, results, tab" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Break round management" +msgstr "" + +#: ../../../CHANGELOG.rst:622 +msgid "Completed support for break round draws" +msgstr "" + +#: ../../../CHANGELOG.rst:623 +msgid "Simplified procedure for adding remarks to teams and updating break" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Reworked break generation code to be class-based, to improve future extensibility" +msgstr "" + +#: ../../../CHANGELOG.rst:625 +msgid "Added support for break qualification rules: AIDA Australs, AIDA Easters, WADL" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:627 +msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Changed \"panellist feedback enabled\" option to \"feedback paths\", a choice of three options" +msgstr "" + +#: ../../../CHANGELOG.rst:630 +msgid "Dropped \"/t/\" from tournament URLs and moved \"/admin/\" to \"/database/\", with 301 redirects" +msgstr "" + +#: ../../../CHANGELOG.rst:631 +msgid "Added basic code linting to the continuous integration tests" +msgstr "" + +#: ../../../CHANGELOG.rst:632 +msgid "Many other small bug fixes, refactors, optimisations, and documentation updates" +msgstr "" + +#: ../../../CHANGELOG.rst:636 +msgid "0.9.0 (Chartreux)" +msgstr "" + +#: ../../../CHANGELOG.rst:637 +msgid "*Release date: 13 June 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:639 +msgid "Added a beta implementation of the break rounds workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:640 +msgid "Added venue constraints, to allow participants or divisions to preferentially be given venues from predefined groups" +msgstr "" + +#: ../../../CHANGELOG.rst:641 +msgid "Added a button to regenerate draws" +msgstr "" + +#: ../../../CHANGELOG.rst:642 +msgid "Refactored speaker standings implementation to match team standings implementation" +msgstr "" + +#: ../../../CHANGELOG.rst:643 +msgid "New standings metrics, draw methods, and interface settings for running small tournaments and division-based tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:644 +msgid "Improved support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:645 +msgid "Improved user-facing error messages in some scenarios" +msgstr "" + +#: ../../../CHANGELOG.rst:646 +msgid "Most frontend dependencies now handled by Bower" +msgstr "" + +#: ../../../CHANGELOG.rst:647 +msgid "Static file compilation now handled by Gulp" +msgstr "" + +#: ../../../CHANGELOG.rst:648 ../../../CHANGELOG.rst:660 +msgid "Various bug fixes, optimisations, and documentation edits" +msgstr "" + +#: ../../../CHANGELOG.rst:652 +msgid "0.8.3" +msgstr "" + +#: ../../../CHANGELOG.rst:653 +msgid "*Release date: 4 April 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:655 +msgid "Restored and reworking printing functionality for scoresheets/feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:656 +msgid "Restored Edit Venues and Edit Matchups on the draw pages" +msgstr "" + +#: ../../../CHANGELOG.rst:657 +msgid "Reworked tournament data importers to use csv.DictReader, so that column order in files doesn't matter" +msgstr "" + +#: ../../../CHANGELOG.rst:658 +msgid "Improved dashboard and feedback graphs" +msgstr "" + +#: ../../../CHANGELOG.rst:659 +msgid "Add separate pro speakers tab" +msgstr "" + +#: ../../../CHANGELOG.rst:664 +msgid "0.8.2" +msgstr "" + +#: ../../../CHANGELOG.rst:665 +msgid "*Release date: 20 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:667 +msgid "Fixed issue where scores from individual ballots would be deleted when any other panel in the round was edited" +msgstr "" + +#: ../../../CHANGELOG.rst:668 +msgid "Fixed issue where page crashes for URLs with \"tab\" in it but that aren't recognized tab pages" +msgstr "" + +#: ../../../CHANGELOG.rst:672 +msgid "0.8.1" +msgstr "" + +#: ../../../CHANGELOG.rst:673 +msgid "*Release date: 15 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:675 +msgid "Fixed a bug where editing a Team in the admin section could cause an error" +msgstr "" + +#: ../../../CHANGELOG.rst:676 +msgid "Added instructions on how to account for speakers speaking twice to docs" +msgstr "" + +#: ../../../CHANGELOG.rst:677 +msgid "Venues Importer wont show VenueGroup import info unless that option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:681 +msgid "0.8.0 (Bengal)" +msgstr "" + +#: ../../../CHANGELOG.rst:682 +msgid "*Release date: 29 February 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:684 +msgid "Upgraded to Python 3.4, dropped support for Python 2" +msgstr "" + +#: ../../../CHANGELOG.rst:685 +msgid "Restructured directories and, as a consequence, changed database schema" +msgstr "" + +#: ../../../CHANGELOG.rst:686 +msgid "Added Django migrations to the release (they were previously generated by the user)" +msgstr "" + +#: ../../../CHANGELOG.rst:687 +msgid "Migrated documentation to `Read The Docs `_" +msgstr "" + +#: ../../../CHANGELOG.rst:688 +msgid "New user interface design and workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:689 +msgid "Overhauled tournament preferences to use `django-dynamic-preferences `_" +msgstr "" + +#: ../../../CHANGELOG.rst:690 +msgid "Added new visual data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:691 +msgid "Improved flexibility of team standings rules" +msgstr "" + +#: ../../../CHANGELOG.rst:692 +msgid "Moved data utility scripts to Django management commands" +msgstr "" + +#: ../../../CHANGELOG.rst:693 +msgid "Changed emoji to Unicode characters" +msgstr "" + +#: ../../../CHANGELOG.rst:694 +msgid "Various other fixes and refinements" +msgstr "" + +#: ../../../CHANGELOG.rst:698 +msgid "0.7.0 (Abyssinian)" +msgstr "" + +#: ../../../CHANGELOG.rst:699 +msgid "*Release date: 31 July 2015*" +msgstr "" + +#: ../../../CHANGELOG.rst:701 +msgid "Support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:702 +msgid "Improved and extensible tournament data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:703 +msgid "Display gender, region, and break category in adjudicator allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:704 +msgid "New views for online adjudicator feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:705 +msgid "Customisable adjudicator feedback forms" +msgstr "" + +#: ../../../CHANGELOG.rst:706 +msgid "Randomised URLs for public submission" +msgstr "" + +#: ../../../CHANGELOG.rst:707 +msgid "Customisable break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:708 +msgid "Computerised break generation (break round draws not supported)" +msgstr "" + +#: ../../../CHANGELOG.rst:709 +msgid "Lots of fixes, interface touch-ups and performance enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:710 +msgid "Now requires Django 1.8 (and other package upgrades)" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/contributing.po b/docs/locale/ca/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..429bc2a6d70 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/contributing.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: ca_ES\n" + +#: ../../../CONTRIBUTING.rst:3 +msgid "Contributing" +msgstr "" + +#: ../../../CONTRIBUTING.rst:5 +msgid "Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation." +msgstr "" + +#: ../../../CONTRIBUTING.rst:7 +msgid "Feel free to `join our Facebook group `_ if you have any questions about how to get started." +msgstr "" + +#: ../../../CONTRIBUTING.rst:10 +msgid "Feedback and ideas" +msgstr "" + +#: ../../../CONTRIBUTING.rst:12 +msgid "These can be added as issues in the `GitHub repository `_; posts in our `Facebook group `_; or as an :ref:`email to the developers `." +msgstr "" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Bug reports" +msgstr "" + +#: ../../../CONTRIBUTING.rst:17 +msgid "Please report bugs by opening a new issue in our `GitHub repository `_. It is most helpful if you can include:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:19 +msgid "How Tabbycat was installed (on Heroku, locally on macOS, `etc.`)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Any details about your tournament and setup that might be helpful in troubleshooting" +msgstr "" + +#: ../../../CONTRIBUTING.rst:21 +msgid "Detailed steps for how to reproduce the bug" +msgstr "" + +#: ../../../CONTRIBUTING.rst:24 +msgid "Getting started with development" +msgstr "" + +#: ../../../CONTRIBUTING.rst:26 +msgid "To easily test your changes to Tabbycat you probably want a working :ref:`local install ` (without using Docker)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:27 +msgid "Please submit pull requests for features and bug fixes against `develop` (but not `master`)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:28 +msgid "We broadly use the `git-flow workflow `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:29 +msgid "We use Django's testing tools — adding unit tests to new features is greatly appreciated" +msgstr "" + +#: ../../../CONTRIBUTING.rst:31 +msgid "A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed." +msgstr "" + +#: ../../../CONTRIBUTING.rst:33 +msgid "A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:37 +msgid "Our ``package.json`` provides a convenience command that runs a standard set of development tools simultaneously, such as the Django server and the automatic recompilation with live injecting of javascript and CSS. Once you have set ``USE_WEBPACK_SERVER=True`` in your ``settings_local.py`` you can then run this with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:42 +msgid "Generating test data" +msgstr "" + +#: ../../../CONTRIBUTING.rst:44 +msgid "There are management commands to help developers quickly generate data for use in testing, including results and feedback. A list of all commands can be found from ``dj help``, but the most useful in this context are:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:46 +msgid "``dj importtournament ( minimal8team | australs24team | bp88team )``, which imports participant data for the 8-team (``minimal8team``), 24-team Australs (``australs24team``) and 88-team BP (``bp88team``) demonstration tournaments respectively." +msgstr "" + +#: ../../../CONTRIBUTING.rst:47 +msgid "``dj simulaterounds ROUND [ROUND ROUND ...]``, which simulates all of the rounds specified, generating a draw, an adjudicator allocation and a complete set of random results (but not feedback)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:48 +msgid "``dj generatefeedback ROUND [ROUND ROUND ...]``, which randomly generates feedback for all existing debates in the specified rounds." +msgstr "" + +#: ../../../CONTRIBUTING.rst:49 +msgid "``dj generateresults ROUND [ROUND ROUND ...]``, which randomly generates results for all existing debates in the specified rounds. (You don't need to run this if you ran ``simulaterounds``, because that already does it.)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:51 +msgid "Rounds can be specified by sequence number (``seq``) or abbreviation. You can find more information about each of them by adding ``--help`` after the command name." +msgstr "" + +#: ../../../CONTRIBUTING.rst:54 +msgid "Database schema changes" +msgstr "" + +#: ../../../CONTRIBUTING.rst:56 +msgid "When adding new features, it may be necessary to modify the database schema to support these new additions. After the changes are made, the migration files made by ``python manage.py makemigrations`` must also be committed. The migration files should also contain methods fill the new fields based on existing data if possible." +msgstr "" + +#: ../../../CONTRIBUTING.rst:58 +msgid "Fixture files (found under ``data/fixtures/``) may also need to be updated, which can be done by running the ``migrate_fixtures.py`` script under a unmigrated database, then committing the result. ::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:64 +msgid "Style guide" +msgstr "" + +#: ../../../CONTRIBUTING.rst:66 +msgid "For the front end interface design there is a style guide available at \"/style/\" once a tournament has been setup." +msgstr "" + +#: ../../../CONTRIBUTING.rst:68 +msgid "For python code, we use `flake8 `_ to check for a non-strict series of style rules. Warnings will trigger a Travis CI build to fail. The entire codebase can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:72 +msgid "For stylesheets, we use `stylelint `_. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:76 +msgid "For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:81 +msgid "Versioning convention" +msgstr "" + +#: ../../../CONTRIBUTING.rst:83 +msgid "Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:85 +msgid "the database can't be migrated forwards using ``python manage.py migrate --no-input``, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:86 +msgid "there is a major change to how the tournament workflow goes, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:87 +msgid "we make some other change that is, in our opinion, significant enough to warrant a milestone." +msgstr "" + +#: ../../../CONTRIBUTING.rst:89 +msgid "We write `data migrations `_ to allow existing systems to be upgraded easily. However, we don't always support backward database migrations. Our expectation is that long-lived installations keep up with our latest version." +msgstr "" + +#: ../../../CONTRIBUTING.rst:91 +msgid "One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:93 +msgid "Starting from version 0.7.0, we use cat breeds as the code names for major versions." +msgstr "" + +#: ../../../CONTRIBUTING.rst:96 +msgid "Documentation" +msgstr "" + +#: ../../../CONTRIBUTING.rst:98 +msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." +msgstr "" + +#: ../../../CONTRIBUTING.rst:100 +msgid "To preview the documentation locally, install the development dependencies and then start the server::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:104 +msgid "You should then be able to preview the docs at `127.0.0.1:7999 `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:107 +msgid "Project structure" +msgstr "" + +#: ../../../CONTRIBUTING.rst:109 +msgid "``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline." +msgstr "" + +#: ../../../CONTRIBUTING.rst:110 +msgid "``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively" +msgstr "" + +#: ../../../CONTRIBUTING.rst:111 +msgid "``docs`` contains our document source files and images (although some are linked from the root directory)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``tabbycat`` is the main directory containing the Django project" +msgstr "" + +#: ../../../CONTRIBUTING.rst:113 +msgid "``locale`` contains translation strings for shared templates (others are in respective app directories)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:114 +msgid "``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins." +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``utils`` contains shared utilities" +msgstr "" + +#: ../../../CONTRIBUTING.rst:116 +msgid "All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates." +msgstr "" + +#: ../../../CONTRIBUTING.rst:117 +msgid "In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:120 +msgid "Internationalization/Localization" +msgstr "" + +#: ../../../CONTRIBUTING.rst:122 +msgid "The `gettext `_ framework is used to enable the translation of strings in Python files and Django templates. Backend in this context signifies these types of files." +msgstr "" + +#: ../../../CONTRIBUTING.rst:124 +msgid "The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py)::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:128 +msgid "To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``." +msgstr "" + +#: ../../../CONTRIBUTING.rst:130 +msgid "These can then be compiled using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:134 +msgid "As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:136 +msgid "Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:141 +msgid "These are then also committed to git to save users needing to run `compilejsi18n` during setup. The resulting files are then bundled as part of the npm build task. Updating these translations in development (live-reload) requires the use of the ``cp-i18n`` npm task." +msgstr "" + +#: ../../../CONTRIBUTING.rst:144 +msgid "Release checklist" +msgstr "" + +#: ../../../CONTRIBUTING.rst:146 +msgid "Check that all migrations have been generated and committed into Git" +msgstr "" + +#: ../../../CONTRIBUTING.rst:147 +msgid "Merge translations from the Crowdin pull request and compile messages" +msgstr "" + +#: ../../../CONTRIBUTING.rst:148 +msgid "Bump version number in ``docs/conf.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:149 +msgid "Bump version number and (if applicable) codename in ``tabbycat/settings/core.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:150 +msgid "Update the main ``CHANGELOG.rst`` file (including release date)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Check the major current deployment options, including:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:152 +msgid "The ``deploy_heroku.py`` script" +msgstr "" + +#: ../../../CONTRIBUTING.rst:153 +msgid "The Tabbykitten version" +msgstr "" + +#: ../../../CONTRIBUTING.rst:154 +msgid "Docker (macOS, Windows 10*) and Docker Toolbox (Windows 10 Home) methods" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Using Bash and Powershell on Windows" +msgstr "" + +#: ../../../CONTRIBUTING.rst:156 +msgid "Using Terminal on macOS (at least test out a fresh install of the npm/pip dependencies)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:157 +msgid "Check that the last Travis CI build passed and run the full local test suite (this will include the Selenium tests that are not on Travis)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:158 +msgid "Shift remaining issues from the Github Milestone" +msgstr "" + +#: ../../../CONTRIBUTING.rst:159 +msgid "Create and finish the release branch as per git-flow" +msgstr "" + +#: ../../../CONTRIBUTING.rst:160 +msgid "Ensure the tag is correct (``vX.Y.Z``) and published to GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:161 +msgid "Back-merge ``master`` to the ``kitten`` branch" +msgstr "" + +#: ../../../CONTRIBUTING.rst:162 +msgid "Back-merge ``develop`` to the in-progress feature branches" +msgstr "" + +#: ../../../CONTRIBUTING.rst:163 +msgid "Issue a formal release with change notes on GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:164 +msgid "Post change notes on the Facebook page/group" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/licence.po b/docs/locale/ca/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..f427039548d --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/licence.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: ca_ES\n" + +#: ../../../LICENSE.rst:3 +msgid "Licence Information" +msgstr "" + +#: ../../../LICENSE.rst:5 +msgid "We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of A$1 (Australian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.)" +msgstr "" + +#: ../../../LICENSE.rst:8 +msgid "Use at for-profit or fundraising tournaments" +msgstr "" + +#: ../../../LICENSE.rst:10 +msgid "If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a donation of A$1 (Australian dollar) per team to the Tabbycat maintenance team, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit." +msgstr "" + +#: ../../../LICENSE.rst:12 +msgid "While we suggest that non-profit, non-fundraising tournaments budget for a donation of A$1 per team, it is not required in order for such tournaments to use Tabbycat." +msgstr "" + +#: ../../../LICENSE.rst:15 +msgid "Modifications to and redistributions of Tabbycat" +msgstr "" + +#: ../../../LICENSE.rst:17 +msgid "We grant you permission to modify and/or redistribute Tabbycat, provided that" +msgstr "" + +#: ../../../LICENSE.rst:19 +msgid "you do not receive any payment for this modification and/or redistribution," +msgstr "" + +#: ../../../LICENSE.rst:20 +msgid "if you modify Tabbycat, you add prominent notices stating that you modified it," +msgstr "" + +#: ../../../LICENSE.rst:21 +msgid "all references and functionality relating to donations are kept intact, and" +msgstr "" + +#: ../../../LICENSE.rst:22 +msgid "this licence page and all attributions of authorship are included as-is." +msgstr "" + +#: ../../../LICENSE.rst:24 +msgid "Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission." +msgstr "" + +#: ../../../LICENSE.rst:26 +msgid "If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required." +msgstr "" + +#: ../../../LICENSE.rst:29 +msgid "Disclaimer of warranty and liability" +msgstr "" + +#: ../../../LICENSE.rst:31 +msgid "We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided \"as is\", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.**" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/support.po b/docs/locale/ca/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..e0f7d5e4e86 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/support.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: ca_ES\n" + +#: ../../about/support.rst:3 +msgid "Support" +msgstr "Assistència" + +#: ../../about/support.rst:5 +msgid "There are a number of ways to report bugs, ask for help, or submit feedback." +msgstr "" + +#: ../../about/support.rst:8 +msgid "Facebook" +msgstr "" + +#: ../../about/support.rst:10 +msgid "`Our Facebook group `_ is a good place to ask for help. It's also a good place to keep up with new releases and participate in more general discussions of features and ideas." +msgstr "" + +#: ../../about/support.rst:13 +msgid "GitHub" +msgstr "" + +#: ../../about/support.rst:15 +msgid "Adding an issue to our `GitHub repository `_ is a great way to let us know about bugs or writeup suggestions for how to improve Tabbycat. Pull requests are also encouraged!" +msgstr "" + +#: ../../about/support.rst:17 +msgid "When submitting bugs or reporting errors please let us know your site address (if installed online) or operating system (if local) along with a complete description of the problem along with any error messages." +msgstr "" + +#: ../../about/support.rst:20 +msgid "Email" +msgstr "" + +#: ../../about/support.rst:22 +msgid "Feel free to :ref:`contact the maintainers directly ` if you are not able to access Facebook or GitHub." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/about/tournament-history.po b/docs/locale/ca/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..0c944792eb7 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/about/tournament-history.po @@ -0,0 +1,248 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: ca_ES\n" + +#: ../../about/tournament-history.rst:3 +msgid "Tournament History" +msgstr "" + +#: ../../about/tournament-history.rst:5 +msgid "A partial list of major national and international tournaments (that we know of) which have used Tabbycat." +msgstr "" + +#: ../../about/tournament-history.rst:8 +msgid "2017" +msgstr "" + +#: ../../about/tournament-history.rst:10 +msgid "`APU Philosophy CHallenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:11 +msgid "`ANU Spring IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:12 +msgid "`Australian British Parliamentary Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:13 +msgid "`Australasian Wom*ns Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:14 +msgid "Asia World Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:15 +msgid "`Asia British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:16 +msgid "`Borneo British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:17 +msgid "`Canadian British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:18 +msgid "`Cambridge Asian Schools BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:19 +msgid "Cambodia United Asian Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:20 +msgid "`China British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:21 +msgid "`Japan British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:22 +msgid "`Kings College London IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:23 +msgid "`Kuala Lumpur Open Challenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:24 +msgid "`KPU Pro Ams `_" +msgstr "" + +#: ../../about/tournament-history.rst:25 +msgid "`Malaysian National Intervarsity Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:26 +msgid "`Melbourne Mini `_" +msgstr "" + +#: ../../about/tournament-history.rst:27 +msgid "`New Zealand Easters 2017 `_" +msgstr "" + +#: ../../about/tournament-history.rst:28 +msgid "`New Zealand British Parliamentary Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:29 +msgid "`North East Asia Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:30 +msgid "`Swords Mini-Gong `_" +msgstr "" + +#: ../../about/tournament-history.rst:31 +msgid "`Shanghai Asian Schools British Parliamentary Debate Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:32 +msgid "`UCD Law Society IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:33 +msgid "`UCD Vice President's Cup `_" +msgstr "" + +#: ../../about/tournament-history.rst:34 +msgid "`UQ Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:35 +msgid "`UT MARA Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:36 +msgid "`Victoria Cup IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:37 +msgid "`Western Sydney BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:38 +msgid "`Wollongong Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:39 +msgid "`Yale IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:42 +msgid "2016" +msgstr "" + +#: ../../about/tournament-history.rst:44 +msgid "`Sydney Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:45 +msgid "`Joynt Scroll 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:46 +msgid "`Malaysia Debate Open 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:47 +msgid "`New Zealand Easters 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:48 +msgid "`Perth Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:49 +msgid "`Thailand United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:50 ../../about/tournament-history.rst:61 +msgid "The National Law School Debate" +msgstr "" + +#: ../../about/tournament-history.rst:51 +msgid "The Khazak National Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:54 +msgid "2015" +msgstr "" + +#: ../../about/tournament-history.rst:56 +msgid "`Bali United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:57 +msgid "`Daejeon Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:58 +msgid "`Joynt Scroll `_" +msgstr "" + +#: ../../about/tournament-history.rst:59 +msgid "`Malaysia Debate Open 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:60 +msgid "`New Zealand Easters 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:62 +msgid "`UNSW/UTS Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:65 +msgid "2014" +msgstr "" + +#: ../../about/tournament-history.rst:67 +msgid "`Joynt Scroll 2014 `_" +msgstr "" + +#: ../../about/tournament-history.rst:68 +msgid "NTU United Asian Debating Championships" +msgstr "" + +#: ../../about/tournament-history.rst:69 +msgid "`Otago Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:72 +msgid "2012" +msgstr "" + +#: ../../about/tournament-history.rst:74 +msgid "Wellington Australs" +msgstr "" + +#: ../../about/tournament-history.rst:77 +msgid "2010" +msgstr "" + +#: ../../about/tournament-history.rst:79 +msgid "Auckland Australs" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/ca/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..28332d08875 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/adjudicator-allocation.po @@ -0,0 +1,160 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-12-29 01:18\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: ca_ES\n" + +#: ../../features/adjudicator-allocation.rst:5 +msgid "Adjudicator Allocation" +msgstr "Assignació de Jutges" + +#: ../../features/adjudicator-allocation.rst:7 +msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:10 +msgid "Assigning Debate Priority" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:12 +msgid "For tournaments with more than a few debates you generally want to begin the allocation process by applying a priority value to your debates. A debate's priority value is used by the automatic adjudicator allocator (or the preformed panel indicator) to match the strongest panels to the debates that need them most." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:16 +msgid "The prioritise button in the top-left allows you to assign a priority value automatically based on a debate's bracket or its 'liveness'. Remember that in early rounds there are usually not enough results for the liveness of each debate to be distinct and that Tabbycat measures liveness based on the sum of all live break categories — a debate can have more liveness points than it has teams if there are teams that are live in multiple categories." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:18 +msgid "The automatic prioritiser never uses the 'highest' priority value so that you can easily use this to highlight the debates that need the strongest panels without needing to redistribute the priority of other debates." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:20 +msgid "Regardless of whether you automatically assign priority, there are sliders to the left of each team that can be used to manually specify priority. These are usually used to override the automatic priority of a debate if that matchup needs and especially strong/weak/mediocre panel for reasons that are not reflected in its bracket/liveness." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:24 +msgid "If each debate's priority is the same, the automatic adjudicator will fall-back on using the debate's bracket as a substitute for priority. Thus, you can skip the prioritisation process (or only prioritise the most/least important debates) if you want a relatively even spread of panellists (e.g. during Round 1)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:27 +msgid "Automatic Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:29 +msgid "Once you are happy with your priorities you can begin assigning adjudicators. This also has an (optional) automatic process that will create panels for you. In creating these panels automatically, the allocator will:" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:31 +msgid "Avoid creating 'hard' conflicts (i.e. personal or institutional clashes) between adjudicators and teams while also trying to avoid 'soft' conflicts (i.e. avoiding an adjudicator seeing the same team again)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:32 +msgid "Form panels whose relative average voting score matches the relative priority you assigned to each debate." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:33 +msgid "Allocate trainees (unless disabled or none are under the threshold) to panels (allocated first to the highest-strength panels)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:34 +msgid "Violate the above intents in cases where there are inescapable constraints — e.g. if there are too many soft or hard conflicts to avoid creating panels that do not trigger them." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:36 +msgid "Remember that Tabbycat will only automatically allocate adjudicators that have been marked as available for this round." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:38 +msgid "To begin this process, click the *Allocate* button in the top-left. If you have :ref:`formed preformed panels ` for this round, the modal will first ask whether you want to assign adjudicators using those panels; otherwise the modal will contain a number of options that can be used to control the allocation. In general, the *minimum feedback score* value is the most important setting to consider as it determines the threshold needed for adjudicators to not be allocated as trainees." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:42 +msgid "Once you click *Auto-Allocate* the modal should disappear and your panels should appear. At large tournaments, and in the later rounds, it is not unheard of for this process to take a minute or longer." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:44 +msgid "You can re-run the automatic allocation process on top of an existing allocation. Thus it is worth tweaking your priorities or allocation settings if the allocation does not seem optimal to you. Also note that the allocation process is not deterministic — if you rerun it the panels will be different." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:46 +msgid "Once your adjudicators have been allocated you can drag and drop them on to different panels. You can also drag and drop them to the 'unused area' (the gray bar at the bottom of the page) if you wish to store them temporarily or remove them from the draw. Dropping an adjudicator into the chair position will 'swap' that adjudicator into the previous position of the new chair." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:49 +msgid "Saving, Live Updates, and Sharing" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:51 +msgid "Changes to your panels save automatically and you can exit the allocation page whenever you wish." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:53 +msgid "In addition, the allocation pages maintain a 'live' connection to the server that shows updates made by other users who are viewing/using the same page. That is to say, if two people on two computers are both viewing the allocation page they should see each other's changes in real-time. This allows you to 'distribute' the task of allocation across individual people (rather than sharing a screen/projector) if desired." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:55 +msgid "It is possible to have users 'undo' or 'overwrite' each others changes despite this live system, e.g. if both users drag and adjudicator somewhere at the same time." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:57 +msgid "If you are dividing the task of allocation across multiple people, the *Sharding* system can help by allowing individuals to limit their view of the draw. The use case here is usually to divide the draw up into mutually-exclusive subsets so that individuals (or groups) of the adjudication core can focus on creating panels across the draw in parallel." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:61 +msgid "To activate sharding, click the small icon to the right of the \"Allocate\" button. This then presents a number of options for how the draw is divide up into distinct sets. If you want to ensure that each person opens a completely distinct set of the draw, you will need to coordinate the options that each user selects here. They will need to set the **same** options for *Shard Mix*, *Shard Split* and *Shard Sort* but select a **different** *Open* option (i.e. opt-in to viewing a different shard from the other users). The ability to exit a sharded view is available in the same dialogue." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:64 +msgid "In-Place Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:66 +msgid "Adjudicators and teams may have borders of varying colors. These borders indicate that there is a clash — soft or hard — within a debate and highlights the teams/adjudicators that have triggered this. There is a key for these colors available at the top of the page — e.g. orange means *institutional conflict* while blue means *this adjudicator has seen this adjudicator/team before*." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:70 +msgid "In general, you want to be on the lookout for red borders ('hard conflicts') and for teams with orange borders (institutional conflicts). Blue borders on teams/adjudicators and orange borders between adjudicators are usually of lesser concern." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:72 +msgid "There are two 'special' types of highlight — a gray background in the chair position (no chair) or in the panellist position (the panel is not an odd-size). Adjudicators may also have a black background if they have not been marked as available." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:75 +msgid "Hover Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:77 +msgid "When you hover over an adjudicator or team, they will take on a purple background and other adjudicators or teams may suddenly have different colored backgrounds. These indicate the conflicts that this team/adjudicator has with those other teams/adjudicators. By showing this information you can avoid swapping that adjudicator into a new debate which they have a conflict with." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:81 +msgid "When you hover over an adjudicator or team the top-most area of the screen will show additional information about them, such as all of their previous institutions, their conflicts, their break category, their team members, their region, and who they saw in the last few rounds." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:84 +msgid "Toggle Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:86 +msgid "In the top-right of the interface are a number of toggles that changes the color of adjudicators and teams to more easily check specific types of information. For example, selecting the gender toggle will color-code teams and adjudicators with the gender that has been recorded in Tabbycat. Note that when a toggle is active, the color key will update to show the meaning of these new colors." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:90 +msgid "When finalising an adjudication you may want to ensure you have turned off any toggle highlights — often they make it more difficult to see the border colors that indicate conflicts." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/ca/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..d4190595609 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/adjudicator-feedback.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-12-29 02:20\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: ca_ES\n" + +#: ../../features/adjudicator-feedback.rst:5 +msgid "Adjudicator Feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:7 +msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:9 +msgid "Currently, there are two methods of setting questions:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:11 +msgid "Through the :ref:`edit database area `. Go to **Setup** > **Edit Database**, then click **Change** next to *Adjudicator feedback questions*. You can add questions here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:14 +msgid "Using the :ref:`importtournament command `." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:16 +msgid "Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field descriptions in the edit database area helpful.) Some more details are here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:20 +msgid "Answer types and options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Type" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Relevant options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Appearance" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +msgid "**checkbox**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +#: ../../features/adjudicator-feedback.rst:27 +#: ../../features/adjudicator-feedback.rst:35 +#: ../../features/adjudicator-feedback.rst:37 +msgid "\\-" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:27 +msgid "**yes/no (dropdown)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +msgid "**integer (textbox)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +#: ../../features/adjudicator-feedback.rst:31 +#: ../../features/adjudicator-feedback.rst:33 +msgid "min_value, max_value" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:31 +msgid "**integer scale**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:33 +msgid "**float**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:35 +msgid "**text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:37 +msgid "**long text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +msgid "**select one**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +#: ../../features/adjudicator-feedback.rst:41 +msgid "choices" +msgstr "opcions" + +#: ../../features/adjudicator-feedback.rst:41 +msgid "**select multiple**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:44 +msgid "Options:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:46 +msgid "**min_value** and **max_value** specify the minimum and maximum allowable values in the field. Mandatory for \"integer scale\" types and optional for \"integer (textbox)\" and \"float\" types." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:47 +msgid "**choices** is used with \"select one\" and \"select multiple\" types, and is a ``//``-delimited list of possible answers, *e.g.* ``biased//clear//concise//rambly//attentive//inattentive``" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:48 +msgid "**required** specifies whether users must fill out the field before clicking \"submit\". This requirement is only enforced on public submission forms. It is not enforced on forms entered by tab room assistants." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:50 +msgid "The exception to this is the \"checkbox\" type. For checkboxes, \"required\" means that the user cannot submit the form unless the box is checked. Think of it like an \"I agree to the terms\" checkbox. This isn't a deliberate design decision—it's just a quirk of how checkboxes work on web forms." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:53 +msgid "Want another answer type?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:55 +msgid "We don't really intend to add any further complexity to the built-in feedback system. If the above answer types don't cover your needs, we suggest using a third-party feedback system. You might be able to adapt `SurveyMonkey `_, `Google Forms `_ or `Qualtrics `_ to your needs." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:60 +msgid "We may be persuaded to make an exception if the new question type you have in mind is easy to add: that is, if it is straightforward to implement using standard web page elements and fits into the existing questionnaire framework (see :ref:`feedback-questionnaires` below). If you think there is such a case, please contact us using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:69 +msgid "Different questionnaires" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:71 +msgid "Tabbycat allows you to specify two questionnaires: one for feedback submitted by teams, and one for feedback submitted by adjudicators. You must specify in each question whether to include the question in each questionnaire." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:75 +msgid "**from_team**, if checked, includes the question in feedback submitted by teams" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:77 +msgid "**from_adj**, if checked, includes the question in feedback submitted by adjudicators" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:81 +msgid "Who gives feedback on whom?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:82 +msgid "Tabbycat allows for three choices for which adjudicators give feedback on which other adjudicators:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:85 +msgid "Chairs give feedback on panellists and trainees" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:86 +msgid "Chairs give feedback on panellists and trainees, and panellists give feedback on chairs" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:88 +msgid "All adjudicators, including trainees, give feedback on all other adjudicators they have adjudicated with" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:91 +msgid "You can set this in the **feedback paths** option under *Setup* > *Configuration* > *Feedback*. Your choice affects each of the following:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:94 +msgid "The options presented to adjudicators in the online feedback form" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:95 +msgid "The printable feedback forms" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:96 +msgid "The submissions expected when calculating feedback progress and highlighting missing feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:99 +msgid "The feedback paths option only affects feedback from adjudicators. Teams are always assumed to give feedback on the orallist, and they are encouraged to do so through hints on the online and printable feedback forms, but there is nothing technically preventing them from submitting feedback from any adjudicator on their panel." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:105 +msgid "Advanced users" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:108 +msgid "If you need a different setting, you need to edit the source code. Specifically, you should edit the function ``expected_feedback_targets`` in tabbycat/adjfeedback/utils.py." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:112 +msgid "Unless we can be convinced that they are very common, we don't intend to add any further choices to the feedback paths option. If your needs are specific enough that you need to differ from the available settings, they are probably also beyond what is sensible for a built-in feedback system, and we recommend using a third-party feedback system instead." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:119 +msgid "How is an adjudicator's score determined?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:121 +msgid "For the purpose of the automated allocation, an adjudicator's overall score is a function of their base score, the current round's feedback weight, and their average feedback score. This number is calculated according to the following formula:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:126 +msgid "\\textrm{score} = (1-w)\\times\\textrm{base score} + w\\times\\textrm{average feedback score}" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:130 +msgid "where :math:`w` is the feedback weight for the round. Note that because the feedback score is averaged across all pieces of feedback (rather than on a per-round total) rounds in which a person receives feedback from many sources (say from all teams and all panellists) could impact their average score much more than a round in which they only receive feedback from one or two sources." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:132 +msgid "Under this formula, each round's feedback weight can be used to determine the relative influence of the base score vs feedback in determining the overall score. As an example, say that an adjudicator received 5.0 as their base score, but their average feedback rating has thus far been 2.0. If the current rounds' feedback weight is set to 0.75, then their overall score would be 2.75. If the current round's feedback weight is set to 0.5 their score would be 3.5. If the weight was 0, their score will always be their base score; if the weight was 1 it will always be their average feedback value." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:141 +msgid "To change the weight of a round you will need to go to the Edit Database area, open the round in question, and change its *Feedback weight* value. It is common to set rounds with a low feedback weight value early on in the tournament (when feedback is scant) and to increase the feedback weight as the tournament progresses." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:143 +msgid "A participant's base score can, in conjunction with feedback weight, also be used as a manual override for an adjudicator's overall ranking. At several tournaments, adjudication cores have set every round's feedback weight to 0, and manually adjusted an adjudicator's base score in response to feedback they have received and reviewed. In this way complete control over every adjudicator's overall score can be exerted." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:145 +msgid "If feedback from trainee adjudicators is enabled, any scores that they submit in their feedback are not counted towards that adjudicator's overall score." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:148 +msgid "Ignoring/Discarding feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:150 +msgid "There are some cases where feedback should be discarded or ignored, but there are some differences between the two. Discarded feedback is mostly due to having another piece of feedback that supersedes the discarded ones. Ignored feedback is different as it still counts the affected feedback as submitted, just inconsequential, ignored in the adjudicator's score calculation." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:152 +msgid "Feedback can be marked as discarded in the database view, under the ``confirmed`` field. It can also be marked as ignored in the same view. Controls to reverse these designations are also available there. To mark feedback as ignored, an option is available in the administrator's and assistant's feedback adding form, as well in the form of a toggle link at the bottom of each card." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/backups.po b/docs/locale/ca/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..216e6ac5598 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/backups.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: ca_ES\n" + +#: ../../features/backups.rst:5 +msgid "Backups" +msgstr "" + +#: ../../features/backups.rst:7 +msgid "Tabbycat doesn't provide an in-built backup system; instead you should create copies of your database directly. Heroku provides a very good backup utility for all sites hosted on Heroku which makes this easy, and for Heroku-based Tabbycat sites, we strongly recommend it." +msgstr "" + +#: ../../features/backups.rst:12 +msgid "You should **always** back up the database before deleting *any* data while in the Edit Database area, because deleting data cannot be undone. It is also a good idea to back up the database before doing anything in the Edit Database area, unless you're very familiar and confident with editing the Tabbycat database directly." +msgstr "" + +#: ../../features/backups.rst:18 +msgid "You may, as a matter of standard practice at large tournaments, wish to back up the database twice per round: Once just after you've generated the draw and allocated adjudicators, and once just after you've finished entering results." +msgstr "" + +#: ../../features/backups.rst:22 +msgid "If you're using an online version of Tabbycat, it's a good idea to download the backups. While it's extremely rare to lose internet access or have an outage in a critical web service (*i.e.*, Heroku), having a local copy of your backups allows you to :ref:`restore your tab to a local installation ` if this ever happens." +msgstr "" + +#: ../../features/backups.rst:29 +msgid "Installations on Heroku" +msgstr "" + +#: ../../features/backups.rst:31 +msgid "Heroku provides a utility to easily back up and restore the entire site database." +msgstr "" + +#: ../../features/backups.rst:35 +msgid "If you don't have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:36 +msgid "You can capture backups from the Heroku Dashboard:" +msgstr "" + +#: ../../features/backups.rst:38 +msgid "Go to the `Heroku Dashboard `_ and click on your app." +msgstr "" + +#: ../../features/backups.rst:40 +msgid "Under *Installed add-ons*, go to **Heroku Postgres**." +msgstr "" + +#: ../../features/backups.rst:41 +msgid "Scroll down, and click on the **Capture Backup** button." +msgstr "" + +#: ../../features/backups.rst:42 +msgid "Once the capture has finished, a **Download** button will be available." +msgstr "" + +#: ../../features/backups.rst:44 +msgid "You can't restore a backup without the Heroku Command Line Interface (CLI), so if you end up needing your backup, you'll need to install the `Heroku CLI `_, and then follow the instructions below." +msgstr "" + +#: ../../features/backups.rst:50 +msgid "If you have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:52 +msgid "The best guide to backing up databases is the `Heroku Dev Center's PGBackups guide `_." +msgstr "" + +#: ../../features/backups.rst:55 +msgid "To capture a backup::" +msgstr "" + +#: ../../features/backups.rst:59 +msgid "To download the most recently captured backup::" +msgstr "" + +#: ../../features/backups.rst:63 +msgid "To restore a backup::" +msgstr "" + +#: ../../features/backups.rst:67 +msgid "If you have multiple Tabbycat sites, you'll need to specify which one by adding ``--app mytournamentname`` to the end of the command." +msgstr "" + +#: ../../features/backups.rst:71 +msgid "Local installations" +msgstr "" + +#: ../../features/backups.rst:73 +msgid "There are lots of ways to back up local PostgreSQL databases, but we'd suggest using the `pg_dump `_ and `pg_restore `_ commands." +msgstr "" + +#: ../../features/backups.rst:83 +msgid "Restoring a Heroku backup to a local installation" +msgstr "" + +#: ../../features/backups.rst:85 +msgid "As detailed in the `Heroku Dev Center `_, you can restore a downloaded Heroku backup to a local installation. This might be useful if, say, your internet connection breaks irrecoverably in the middle of a tournament and you need to run offline. Of course, for this to work, you need to have downloaded your backup before your internet connection broke---a good reason to download a copy of your backups as soon as you make them." +msgstr "" + +#: ../../features/backups.rst:92 +msgid "Assuming your download is called ``latest.dump`` (this is the default name), your PostgreSQL username is ``tabbycat``, and you wish to call your local database ``fromheroku`` (if not, replace arguments as appropriate)::" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/breaks.po b/docs/locale/ca/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..8e467ce90a4 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/breaks.po @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: ca_ES\n" + +#: ../../features/breaks.rst:5 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../features/breaks.rst:7 +msgid "In Tabbycat, elimination rounds (sometimes called *outrounds* or the *final series*) are called \"break rounds\", and the qualification of teams to compete in the elimination phase of a tournament is called the \"break\"." +msgstr "" + +#: ../../features/breaks.rst:12 +msgid "About break categories" +msgstr "" + +#: ../../features/breaks.rst:14 +msgid "Tabbycat supports multiple and arbitrarily-named break categories. Most tournaments will have just one category, typically called \"Open\", leading to the grand final. Some tournaments also have restricted-eligibility break categories, for example, for novice teams or teams for whom English is a second language." +msgstr "" + +#: ../../features/breaks.rst:19 +msgid "Having multiple break categories is intended for tournaments where multiple *parallel* elimination phases derive from the *same* preliminary rounds (inrounds). It's not for parallel but distinct competitions---for those, you should create distinct tournaments." +msgstr "" + +#: ../../features/breaks.rst:27 +msgid "Break qualification rules" +msgstr "" + +#: ../../features/breaks.rst:29 +msgid "Tabbycat supports several break qualification rules, and each break category must be configured to use one of them. Most tournaments will use \"Standard\", which is the default." +msgstr "" + +#: ../../features/breaks.rst:38 +msgid "Rule name (string to use in ``importtournament`` CSV files)" +msgstr "" + +#: ../../features/breaks.rst:39 +msgid "Descrption" +msgstr "" + +#: ../../features/breaks.rst:41 +msgid "Standard (``standard``)" +msgstr "" + +#: ../../features/breaks.rst:42 +msgid "The top *n* teams break. This is the default, and most tournaments use this rule." +msgstr "" + +#: ../../features/breaks.rst:45 +msgid "AIDA 1996 (``aida-1996``)" +msgstr "" + +#: ../../features/breaks.rst:46 +msgid "The top *n* teams that are also in the top three teams from their institution break." +msgstr "" + +#: ../../features/breaks.rst:49 +msgid "AIDA 2016 (Australs) (``aida-2016-australs``)" +msgstr "" + +#: ../../features/breaks.rst:50 +msgid "The top *n* teams that fulfil either of these criteria break:" +msgstr "" + +#: ../../features/breaks.rst:53 +msgid "They are in the top *n* teams overall, and in the top three teams from their institution." +msgstr "" + +#: ../../features/breaks.rst:55 +msgid "They have at least as many wins as the *n*\\ th-ranked team, and they are the top team from their institution." +msgstr "" + +#: ../../features/breaks.rst:58 +msgid "If fewer than *n* teams fulfil either criterion, then the best teams not fulfilling the criteria are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:62 +msgid "AIDA 2016 (Easters) (``aida-2016-easters``)" +msgstr "" + +#: ../../features/breaks.rst:63 +msgid "As for AIDA 2016 (Australs), except that if fewer than *n* teams fulfil either criterion, then only the best teams who are in the top three teams from their institution are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:68 +msgid "The break generators are somewhat more complex than described in the above table: among other things, they also handle cases where there is a tie for the last place in the break, and for those break categories marked \"general\", they will show where ineligible teams would have broken, had they been eligible." +msgstr "" + +#: ../../features/breaks.rst:75 +msgid "Setting up break categories and rounds" +msgstr "" + +#: ../../features/breaks.rst:77 +msgid "For each break category in your tournament, you need to do two things:" +msgstr "" + +#: ../../features/breaks.rst:79 +msgid "Create (and name) a break category" +msgstr "" + +#: ../../features/breaks.rst:80 +msgid "Create break rounds for the category" +msgstr "" + +#: ../../features/breaks.rst:81 +msgid "Set the eligibility of teams to compete in the category" +msgstr "" + +#: ../../features/breaks.rst:83 +msgid "If you only have one break category (open) and you create your tournament using the \"Create New Tournament\" page, simply enter the number of teams in the break (*e.g.*, 8 if you're breaking to quarterfinals). Tabbycat will create the break category and break rounds for you. For any further break categories, you'll need to go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Break Categories**. Fill out the forms for the number of new break categories and save. Rounds will be created automatically. You'll still need to set the eligibility of teams though, as in (3) below." +msgstr "" + +#: ../../features/breaks.rst:92 +msgid "If you create your tournament using the `importtournament` command or in **Edit Database**, you'll need to do all three steps above yourself. You may also want to edit the break rounds (2) to change their names." +msgstr "" + +#: ../../features/breaks.rst:97 +msgid "1. Creating break categories" +msgstr "" + +#: ../../features/breaks.rst:99 +msgid "If using the `importtournament` command, there is an example file, *break_categories.csv*, that you can copy and adjust. If using **Edit Database**, add categories under **Break Qualification > Break categories**." +msgstr "" + +#: ../../features/breaks.rst:103 +msgid "Most of the fields are self-explanatory or described on the Edit Database form, except for one: \"rule\", which sets the break qualification rule. Permissible values are described in :ref:`breakqual-rules` above. If using `importtournament`, be sure to use the correct string (in brackets in the table). The rule defaults to \"Standard\" (``standard``)." +msgstr "" + +#: ../../features/breaks.rst:109 +msgid "The \"institution cap\" field was removed in Tabbycat 1.0. All Australs break qualification rules are now hard-coded to a cap of three teams per institution." +msgstr "" + +#: ../../features/breaks.rst:114 +msgid "2. Creating break rounds" +msgstr "" + +#: ../../features/breaks.rst:116 +msgid "You should create a round for every break round you intend to hold, including it in *rounds.csv* if using `importtournament`, or adding them under **Tournaments > Rounds** if using **Edit Database**. Be careful to set the following fields correctly:" +msgstr "" + +#: ../../features/breaks.rst:121 +msgid "*Break category* must be set to the relevant break category." +msgstr "" + +#: ../../features/breaks.rst:122 +msgid "*Stage* and *draw type* must both be set to \"Elimination\"." +msgstr "" + +#: ../../features/breaks.rst:125 +msgid "3. Setting break eligibility" +msgstr "" + +#: ../../features/breaks.rst:127 +msgid "Once a break category has been created it will not have any teams eligible for it, even if it was marked as \"Is general\". To edit the eligibility of teams for any break round go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Team Eligiblity**." +msgstr "" + +#: ../../features/breaks.rst:132 +msgid "Here you can select \"all\" or \"none\" to toggle all team eligiblities or edit them using the tick boxes. Once you **save** it should return you to the main break page which will display the number of teams marked eligible." +msgstr "" + +#: ../../features/breaks.rst:136 +msgid "Adjudicators can be marked as \"breaking\" on the **Feedback** page; clicking **Adjudicators** on the breaks page will take you straight there." +msgstr "" + +#: ../../features/breaks.rst:140 +msgid "Generating the break" +msgstr "" + +#: ../../features/breaks.rst:142 +msgid "Unlike team or speaker standings, each category's break (and the break ranks of teams) are not determined automatically and updated continuously. Instead each can be generated (and regenerated) as desired." +msgstr "" + +#: ../../features/breaks.rst:146 +msgid "To do so go to the **Breaks** item in the left-hand menu and then click the white button that corresponds to the break category you'd like to determine the rankings for. When prompted, select **Generate the break for all categories** to display the list of breaking teams." +msgstr "" + +#: ../../features/breaks.rst:151 +msgid "From this page you can update the breaking teams list for this break category (or all categories) as well as view and edit 'remarks' that account for cases in which a team may not break (such as being capped or losing a coin toss)." +msgstr "" + +#: ../../features/breaks.rst:155 +msgid "Please double-check the generated break before announcing or releasing it. Although the break generation code is designed to handle edge cases, we don't test the code for such cases." +msgstr "" + +#: ../../features/breaks.rst:160 +msgid "Creating draws for break rounds" +msgstr "" + +#: ../../features/breaks.rst:162 +msgid "Creating a draw for a break round proceeds as normal, except that the team availability process is skipped. Instead, when you visit the availability page for that round it will have automatically determined which teams should be debating based upon the determined break for that category. Once a draw has been generated it will then use the relevant break ranks to create the matchups (ie 1st-breaking vs 16th-breaking, 2nd vs 15th, *etc.*). Subsequent break rounds will then also automatically determine matchups based on the previous round's results and room ranks." +msgstr "" + +#: ../../features/breaks.rst:171 +msgid "If the \"break size\" of a break category is not a power of 2, it will treat the first break round as a partial-elimination draw and only create a draw for the teams not skipping the partial-elimination round. Subsequent break rounds will then process as described above." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/check-ins.po b/docs/locale/ca/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..a0cdb7b3d0b --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/check-ins.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: ca_ES\n" + +#: ../../features/check-ins.rst:5 +msgid "Check-Ins" +msgstr "Registre" + +#: ../../features/check-ins.rst:7 +msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." +msgstr "" + +#: ../../features/check-ins.rst:9 +msgid "Check-ins serve a similar purpose to the :ref:`availability ` system. However availabilities are tied to a particular round rather than to a particular time — they are generally used to record instances where you know ahead of time whether a person should or should not be included in a draw. In contrast, check-ins are useful for when you *don't* know ahead of time whether a person will be able to be put into the draw and so want to be able to confirm their presence with a high degree of confidence. That said the two systems interact — the standard availability pages allow you to easily set all adjudicators or teams who have checked-in as available for a given round." +msgstr "" + +#: ../../features/check-ins.rst:12 +msgid "Check-In Identifiers" +msgstr "" + +#: ../../features/check-ins.rst:14 +msgid "Check-ins are associated with a 'identifier' — a number that is unique to each speaker and adjudicator. To generate these numbers go to the *Identifiers* section under the Check-Ins menu. From here you generate identifiers for Speakers, Adjudicators, and Venues as needed. Note also that Identifiers can be manually added or edited in the *Edit Database* area if necessary." +msgstr "" + +#: ../../features/check-ins.rst:18 +msgid "Once this number has been generated it can be transformed into a barcode so that it can be easily included on tournament badges or otherwise printed and disbursed. On the same *Identifiers* page you can use the *View barcodes* option to open up a page that lists all the barcodes for the speakers, adjudicators, or venues." +msgstr "" + +#: ../../features/check-ins.rst:22 +msgid "The identifiers for ballots are automatically generated when printing ballots." +msgstr "" + +#: ../../features/check-ins.rst:25 +msgid "Recording Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:27 +msgid "On the *Scanning* section of Check-ins you can record a particular check-in. This can be done in a few different ways:" +msgstr "" + +#: ../../features/check-ins.rst:29 +msgid "You can type in the Identifier number into the box. Once five numbers have been identified it will automatically issue the check-in and clear the input field for the next number." +msgstr "" + +#: ../../features/check-ins.rst:31 +msgid "If you have purchased barcode scanners and configured them as USB keyboards they should then be compatible with this page: upon page load the cursor should be positioned in the input field, and any scanned barcodes should populate it with the specified number, issue the check-in, and then clear the box for the next scan." +msgstr "" + +#: ../../features/check-ins.rst:33 +msgid "Barcode scanners are probably cheaper than you think. A perfectly serviceable model should be around $20 USD or less although a cursory Google search might at first turn up models that are many times that amount. If you are a curious tab director, or are involved in a tournament with a little spare money, having just one or two around for critical tasks can be highly valuable." +msgstr "" + +#: ../../features/check-ins.rst:35 +msgid "If your device has a (web)cam you can use the Scan Using Camera button. Any barcodes put in front of the camera's video stream will be scanned into the form. A sound will play when a barcode has been identified — so be aware that turning sound on or using headphones can help identify when a scan has been made." +msgstr "" + +#: ../../features/check-ins.rst:39 +msgid "Camera scanning works on most modern browsers although it will only work with Safari 11 or higher (iOS 11+ and macOS 10.13+). Camera scanning may also not work when using a local-installation of Tabbycat in all browsers, *except* Firefox where it seems to. Depending on the quality of your camera barcodes that are less than 4cm wide may not be recognised — ideally barcodes should be at least 5cm if using this method as your main way of checking-in things." +msgstr "" + +#: ../../features/check-ins.rst:41 +msgid "The Check-in status page (described below) allows assistants and administrators to manually check-in particular people or entire institutions without needing to know their identifiers." +msgstr "" + +#: ../../features/check-ins.rst:44 +msgid "The Check-In 'Window'" +msgstr "" + +#: ../../features/check-ins.rst:46 +msgid "Because Check-In events are not explicitly linked to rounds there is essentially a 'window' or time period in which a check-in is still considered valid. The time of this 'window' in hours can be set in *Setup* > *Configuration* > *Data Entry*." +msgstr "" + +#: ../../features/check-ins.rst:48 +msgid "At tournaments the run check-ins during the start of each day the check-in 'window' (i.e. the time before check-ins expire) you can leave this window setting at the default time (12 hours) which should give enough time to distinguish between the first check-ins of that day as compared to the last check-ins of the previous day. At tournaments where you want to run a check-in process at the start of every round you may want to set the time to around 2 hours or something much shorter." +msgstr "" + +#: ../../features/check-ins.rst:51 +msgid "Viewing Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:53 +msgid "On the *People Statuses* section of Check-ins you can view who has or has not been checked-in. This page will live-update with the latest check-ins so you should be able to leave it open to monitor income attendances." +msgstr "" + +#: ../../features/check-ins.rst:57 +msgid "The blue \"tick\" boxes allow you to manually check-in people and/or entire institutions (for *People*) or venues and/or venue groups (for *Venues*) , without the need to scan their identifiers. This style of check-in is designed for use an auditorium roll-call type situation where you might be running through a list of people to the room or identifying absences on a per-institution basis." +msgstr "" + +#: ../../features/check-ins.rst:59 +msgid "A public version of this check-in status page can be enabled under *Setup* > *Configuration* > *Public Features* which can be useful for allowing people to self-police check-ins and/or validate their check-in worked." +msgstr "" + +#: ../../features/check-ins.rst:62 +msgid "Check-Ins for Ballots" +msgstr "" + +#: ../../features/check-ins.rst:64 +msgid "Ballots can be checked-in to quickly validate which ballots are physically present in the tab room. This can help more quickly identify ballots that are missing. Which ballots have or have not been checked-in will show up on the Results page. Ballots can be scanned using the standard 'Scan Identifiers' page." +msgstr "" + +#: ../../features/check-ins.rst:66 +msgid "Barcodes are automatically assigned and included to ballots when they are printed. Barcodes have no check-in window — any relevant check-in event counts regardless of how long ago it was." +msgstr "" + +#: ../../features/check-ins.rst:69 +msgid "Check-Ins for Venues" +msgstr "" + +#: ../../features/check-ins.rst:71 +msgid "Venues can be checked-in, but what a 'venue check-in' means is a bit more flexible. It might be used to validate which rooms are debate-ready at the start of a day (i.e. unlocked; has a desk) or it could be used during the rounds to record which rooms have returned their ballots." +msgstr "" + +#: ../../features/check-ins.rst:73 +msgid "Venues have a separate check-in window setting to that of people." +msgstr "" + +#: ../../features/check-ins.rst:75 +msgid "Venues have their own Status page (like people) and can be checked-in there manually. Like speakers and adjudicators their barcodes can also be printed off." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/data-entry.po b/docs/locale/ca/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..b490f10d397 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/data-entry.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-02 20:38\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: ca_ES\n" + +#: ../../features/data-entry.rst:5 +msgid "Entering Ballots and Feedback" +msgstr "" + +#: ../../features/data-entry.rst:8 +msgid "Ballot check-in" +msgstr "" + +#: ../../features/data-entry.rst:10 +msgid "For tournaments that require it, there is a \"ballot check-in\" page that can be used to record the arrival of ballots to the tab room. When there's a missing ballot, it can help establish whether the ballot never made it to the tab room, or whether it's probably floating around in the room forgotten. Also, it can help enforce early checks that panels return the correct number of ballots to the room." +msgstr "" + +#: ../../features/data-entry.rst:12 +msgid "To get to the ballot check-in, click the relevant round in the menu of the admin area, and then click \"Results\" and then \"Ballot Check-In\". This requires superuser privileges." +msgstr "" + +#: ../../features/data-entry.rst:14 +msgid "There's no adverse effect from not using the ballot check-in. Data enterers will still be able to enter and confirmed ballots, even if not checked in." +msgstr "" + +#: ../../features/data-entry.rst:18 +msgid "Since the ballot check-in tends to require a dedicated computer or two, it can be worth creating a separate superuser account for ballot check-in, so that it doesn't appear on the action logs as being by a particular person." +msgstr "" + +#: ../../features/data-entry.rst:19 +msgid "Don't forget to provision a computer or two for this if you're planning to use it." +msgstr "" + +#: ../../features/data-entry.rst:20 +msgid "Ballot check-ins can be a bottleneck, so you might decide they're not worth using. Alternatively, you might have multiple computers for this purpose, or you might dedicate a tab room helper to driving the process (since this is probably faster than runners doing the typing in turn)." +msgstr "" + +#: ../../features/data-entry.rst:23 +msgid "Ballot entry" +msgstr "" + +#: ../../features/data-entry.rst:27 +msgid "Most tab rooms run some sort of check system to ensure data is entered accurately. In Tabbycat, this is built into the system, which also helps speed it up." +msgstr "" + +#: ../../features/data-entry.rst:29 +msgid "As a general principle, Tabbycat requires all ballots to be looked at by two people. The first person enters the data from the ballot, and the second person checks it. The second person isn't allowed to modify the data—they either confirm it or reject it, and if they reject it, then the whole process starts again. This is by design: to be confirmed, the *same* data must have been seen by at least two people." +msgstr "" + +#: ../../features/data-entry.rst:31 +msgid "The administrator area does **not** work like this. It's designed to be flexible, so allows you to edit, confirm or unconfirm any ballot at any time. For this reason, you should use the **assistant** area to enter ballots, even if you have a superuser account." +msgstr "" + +#: ../../features/data-entry.rst:35 +msgid "Don't forget to check the totals against the ballot—they're a useful integrity check too." +msgstr "" + +#: ../../features/data-entry.rst:36 +msgid "Don't forget to check the winner against the ballot! If the adjudicator gets it wrong, it's worth asking to clarify." +msgstr "" + +#: ../../features/data-entry.rst:37 +msgid "It can be helpful to think about the room layout to maximize efficiency." +msgstr "" + +#: ../../features/data-entry.rst:38 +msgid "Some tab rooms like to assign some to data entry and some to verification. This isn't really necessary, since Tabbycat doesn't let the same person enter and verify the same ballot. (This is one of many reasons why every person should have their own account.)" +msgstr "" + +#: ../../features/data-entry.rst:39 +msgid "Emails can be configured to be sent to adjudicators as a receipt of their ballot once confirmed." +msgstr "" + +#: ../../features/data-entry.rst:42 +msgid "Duplicate/Swing Speeches" +msgstr "" + +#: ../../features/data-entry.rst:46 +msgid "When entering the ballots there is a toggle label *'Iron' speeches*. When set to \"yes\" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel)." +msgstr "" + +#: ../../features/data-entry.rst:48 +msgid "Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate." +msgstr "" + +#: ../../features/data-entry.rst:50 +msgid "There is also an option under **Standings** in the **Configuration** section that specifies the number of debates a speaker can miss before you will not show on the tab. By default there is no limit, but if need be this can be set to hide swing speakers from the final speaker tab." +msgstr "" + +#: ../../features/data-entry.rst:53 +msgid "Feedback entry" +msgstr "" + +#: ../../features/data-entry.rst:57 +msgid "Feedback doesn't have the same verification process as ballots. Feedback that is entered by the tab room is assumed to be confirmed. If feedback is entered multiple times, all copies are retained but only the last one \"counts\" (is considered confirmed)." +msgstr "" + +#: ../../features/data-entry.rst:60 +msgid "Online entry" +msgstr "" + +#: ../../features/data-entry.rst:62 +msgid "There are two methods of allowing ballots and feedback to be submitted online. Both are set in the **Data Entry** page of each tournament's **Configuration** section and can be set independently; both in whether each can be submitted online at all and in which method of online submission are available." +msgstr "" + +#: ../../features/data-entry.rst:68 +msgid "Private URLs" +msgstr "URLs privades" + +#: ../../features/data-entry.rst:70 +msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." +msgstr "" + +#: ../../features/data-entry.rst:72 +msgid "Private URLs should provide more than adequate security for almost all tournaments' purposes, but they aren't foolproof. Anyone with access to the URL for a participant can submit feedback or ballots on their behalf, so it's important that participants not share their URLs. This also means participants need to be careful when submitting from devices they do not own, because the URL will be logged in that device's browser history." +msgstr "" + +#: ../../features/data-entry.rst:74 +msgid "These links must be generated within Tabbycat after the preference is enabled. To do so go to the **Feedback** section and then the **Private URLs** area. Once there you will be prompted to generate those URLs for all participants, which — once generated — will be presented in separate tables (one for teams; one for adjudicators)." +msgstr "" + +#: ../../features/data-entry.rst:78 +msgid "These URLs can then be distributed to each person in a number of ways. There are pages within Tabbycat for printing them out (one URL per page labelled by recipient) or emailing them out (providing participants have been assigned email addresses). In the past tournaments have also used data from this table to send out SMSs by bulk, or distributed them to institutional representatives to disburse." +msgstr "" + +#: ../../features/data-entry.rst:82 +msgid "You can assign email address to participants using the :ref:`importtournament command ` when importing your registration data, or by going to the *Edit Data* area and looking up each Speaker/Adjudicator." +msgstr "" + +#: ../../features/data-entry.rst:83 +msgid "If, after generating the private URLs, you add additional Teams or Adjudicators you can go to the *Edit Database* area , look up each Speaker/Adjudicator, and type in a bunch of random characters as their *Url key* to assign them a private URL." +msgstr "" + +#: ../../features/data-entry.rst:84 +msgid "You can delete the current set of URLs by running this command in a shell on your server (replacing TOURNAMENT_SLUG with the appropriate value): ``python manage.py privateurls delete --tournament TOURNAMENT_SLUG``" +msgstr "" + +#: ../../features/data-entry.rst:89 +msgid "Public URLs" +msgstr "" + +#: ../../features/data-entry.rst:91 +msgid "The second method of data entry is using 'normal URLs'. This essentially means that any users visiting the public version of the site is able to submit a ballot or feedback (as specified by their respective settings). They do so by self-selecting which Team or Adjudicator they are then entering in a form as normal." +msgstr "" + +#: ../../features/data-entry.rst:93 +msgid "This is, rather obviously, not a particularly secure method of data entry — nothing is stopping anyone on the site from entering data as someone else. The data can be checked, verified, and edited as normal by admins however. As such, this method is only recommended for small tournaments where you can trust those present to enter accurate information (or where accuracy is not crucial)." +msgstr "" + +#: ../../features/data-entry.rst:95 +msgid "There is an additional setting to set a 'tournament password' that needs to be submitted to enable the form. It is imagined, that if enabled, this password would only be distributed to tournament participants. However this only helps (at best) prevent non-participants from entering information; the fundamental problem of not verifying who is submitting what information is still present." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/data-importers.po b/docs/locale/ca/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..bf2195131a0 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/data-importers.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: ca_ES\n" + +#: ../../features/data-importers.rst:5 +msgid "Tournament Data Importers" +msgstr "" + +#: ../../features/data-importers.rst:7 +msgid "This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary." +msgstr "" + +#: ../../features/data-importers.rst:9 +msgid "The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_." +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "Todo" +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/data-importers.rst:14 +msgid "Why write your own?" +msgstr "" + +#: ../../features/data-importers.rst:16 +msgid "While Tabbycat has standard import formats, you might find that none of them fit the data that you need to import." +msgstr "" + +#: ../../features/data-importers.rst:18 +msgid "It's not possible to devise a single, universally-convenient import file format. Tabbycat supports way too many permutations of configurations for this to be workable. Instead, we provide the ones that have been useful before and are therefore likely to be useful again—but if your tournament has different needs, you might decide that it's easier to write an importer to conform to you, rather than conform to the importer." +msgstr "" + +#: ../../features/data-importers.rst:20 +msgid "A base importer class abstracts away most of the nitty-gritty of parsing files, allowing new importers to focus on their interpretation with as little code as possible." +msgstr "" + +#: ../../features/data-importers.rst:22 +msgid "To allow new importers to be written with as little code as possible, most of the work is abstracted to the base class. The flipside of this abstraction is that it induces a learning curve." +msgstr "" + +#: ../../features/data-importers.rst:25 +msgid "Basic workflow" +msgstr "" + +#: ../../features/data-importers.rst:27 +msgid "Choose a name. We name importers after items of clothing in alphabetical order (starting at 'Anorak')." +msgstr "" + +#: ../../features/data-importers.rst:28 +msgid "Write a subclass of ``BaseTournamentDataImporter``." +msgstr "" + +#: ../../features/data-importers.rst:29 +msgid "Write the front-end interface. This will probably be a `Django management command `_." +msgstr "" + +#: ../../features/data-importers.rst:32 +msgid "A basic example" +msgstr "" + +#: ../../features/data-importers.rst:34 +msgid "It's easiest to start with an example. Here's a basic importer with just one import method, which imports adjudicators." +msgstr "" + +#: ../../features/data-importers.rst:60 +msgid "Let's break this down. The method ``import_adjudicators()`` takes a single argument, a file object representing the CSV file. Most of the work is passed off to ``self._import()``. This helper method is defined in ``BaseTournamentDataImporter`` and is where most of the intelligence lies." +msgstr "" + +#: ../../features/data-importers.rst:65 +msgid "When called, ``self._import(f, model, interpreter)`` does the following:" +msgstr "" + +#: ../../features/data-importers.rst:67 +msgid "It reads the CSV file using a `csv.DictReader `_. A ``DictReader`` iterates through the CSV file, yielding a dict for each line, whose keys are given by the column header names in the first row of the file." +msgstr "" + +#: ../../features/data-importers.rst:72 +msgid "On each line:" +msgstr "" + +#: ../../features/data-importers.rst:74 +msgid "It passes the dict given by the ``DictReader`` to ``interpreter``. The interpreter modifies the dict (or creates a new one) to prepare it for the model constructor, and returns it." +msgstr "" + +#: ../../features/data-importers.rst:78 +msgid "The dict returned by ``interpreter`` is then passed as keyword arguments to the ``model`` constructor." +msgstr "" + +#: ../../features/data-importers.rst:81 +msgid "So in very simplified form, ``self._import(f, model, interpreter)`` does this:" +msgstr "" + +#: ../../features/data-importers.rst:92 +msgid "(There's a lot more to it than that, but that's the basic idea.)" +msgstr "" + +#: ../../features/data-importers.rst:94 +msgid "A consequence of relying on column headers to identify fields is that the header names in CSV files must match model field names exactly, unless they are deleted by the interpreter using the ``DELETE`` keyword (see below)." +msgstr "" + +#: ../../features/data-importers.rst:100 +msgid "Interpreters" +msgstr "" + +#: ../../features/data-importers.rst:101 +msgid "The main task of an importer, then, is to provide interpreters so that ``self._import`` knows how to interpret the data in a CSV file. An interpreter takes a dict and returns a dict. For example:" +msgstr "" + +#: ../../features/data-importers.rst:113 +msgid "This interpreter does the following:" +msgstr "" + +#: ../../features/data-importers.rst:115 +msgid "Replaces ``line['institution']`` with an Institution object, by looking up the original value by name." +msgstr "" + +#: ../../features/data-importers.rst:117 +msgid "Replaces ``line['gender']`` with a ``Person.GENDER_*`` constant. We'll come back to how this works later." +msgstr "" + +#: ../../features/data-importers.rst:119 +msgid "Adds a new ``line['tournament']`` entry to the dict, being the Tournament object represented by ``self.tournament``, the tournament that was passed to the importer's constructor." +msgstr "" + +#: ../../features/data-importers.rst:122 +msgid "Leaves all other entries in the dict unchanged." +msgstr "" + +#: ../../features/data-importers.rst:124 +msgid "This looks simple enough, but it's very robust. What if a cell in the CSV file is blank, or what if the file omits a column? (For example, some tournaments might not collect information about participant gender, so Tabbycat doesn't require it.) We could deal with these scenarios on a case-by-case basis, but that's cumbersome." +msgstr "" + +#: ../../features/data-importers.rst:130 +msgid "Instead, we provide a ``make_interpreter`` method that returns an interpreter method which, in turn, takes care of all these details. This way, all you have to do is provide the functions that transform fields. So the following is equivalent to the above, but better:" +msgstr "" + +#: ../../features/data-importers.rst:143 +msgid "Notice that we provided a callable in two of these keyword arguments, and a (non-callable) Tournament object to the third. ``make_interpreter`` is smart enough to tell the difference, and treat them differently. What it does with each field depends on (a) whether a value exists in the CSV file and (b) what transformation function was provided, as summarised in the following table:" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Value in CSV file" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Transformation" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Action" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "provided and not callable" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "populate model field with interpreter value" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "does not exist or blank" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "callable or not provided" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "do not pass to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:158 ../../features/data-importers.rst:161 +msgid "exists and not blank" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "callable" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "call interpreter on column value, pass result to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "not provided" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "pass column value directly to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:169 +msgid "If a transformation isn't an existing method, you might find `lambda functions `_ useful. For example: ``lambda x: Speaker.objects.get(name=x)``." +msgstr "" + +#: ../../features/data-importers.rst:173 +msgid "You shouldn't check for mandatory fields. If a mandatory field is omitted, the model constructor will throw an error, and ``self._import()`` will catch the error and pass a useful message on to the caller. On the other hand, if it's an optional field in the model, it should optional in the importer, too. Similarly, interpreters generally shouldn't specify defaults; these should be left to model definitions." +msgstr "" + +#: ../../features/data-importers.rst:180 +msgid "You don't need to include interpreter transformations for things like converting strings to integers, floats or booleans. Django converts strings to appropriate values when it instantiates models. So, for example, adding ``test_score=float`` to the above interpreter would be redundant." +msgstr "" + +#: ../../features/data-importers.rst:186 +msgid "More complicated interpreters" +msgstr "" + +#: ../../features/data-importers.rst:188 +msgid "If you have a column in the CSV file that shouldn't be passed to the model constructor, you can tell the interpreter to remove it by using the special ``DELETE`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:199 +msgid "The ``make_interpreter`` can only deal with modifications where each field is modified separately of the others (or not at all). If you want to combine information from multiple fields, you need to write your interpreter the long way (perhaps calling a function returned by ``make_interpreter`` to do some of the work)." +msgstr "" + +#: ../../features/data-importers.rst:205 +msgid "On the other hand, if you don't need to do any transformations involving some sort of object or constant lookup, then you can just omit the ``interpreter`` argument of ``self._lookup()``, and it'll just leave the fields as-is." +msgstr "" + +#: ../../features/data-importers.rst:210 +msgid "Lookup functions" +msgstr "" + +#: ../../features/data-importers.rst:211 +msgid "In the above example, we used a function ``self.lookup_gender`` to convert from the text in the CSV file to a ``Person.GENDER_*`` constant. To make this easier, the importer provides a convenience function to define such lookup functions. Let's look at the relevant lines again:" +msgstr "" + +#: ../../features/data-importers.rst:224 +msgid "This should be a member of your subclass, in our case, ``ExampleTournamentDataImporter``. It generates a function that looks something like:" +msgstr "" + +#: ../../features/data-importers.rst:241 +msgid "The ``make_lookup`` function takes two arguments. The first is a text description of what it's looking up; this is used for the error message if the value in the CSV file isn't recognised. The second is a dict mapping tuples of valid strings to constants." +msgstr "" + +#: ../../features/data-importers.rst:247 +msgid "Debugging output" +msgstr "" + +#: ../../features/data-importers.rst:249 +msgid "The ``BaseTournamentDataImporter`` constructor accepts a ``loglevel`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:255 +msgid "If ``loglevel`` is set to ``logging.DEBUG``, the importer will print information about every instance it creates." +msgstr "" + +#: ../../features/data-importers.rst:258 +msgid "You can also pass in a logger for it to use (instead of the default one) with the ``logger`` argument." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/ca/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..516242b246c --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/draw-generation-bp.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: ca_ES\n" + +#: ../../features/draw-generation-bp.rst:5 +msgid "Draw Generation (BP)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:7 +msgid "The draw generator for British Parliamentary tournaments tries to rotate teams through positions by assigning them positions they've been in less often before the current round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:12 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `. Options in `italics` with an asterisk are not WUDC-compliant. The recommended options are shown in **bold**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:19 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation-bp.rst:20 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation-bp.rst:21 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation-bp.rst:22 +msgid ":ref:`Pullup distribution `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:23 +msgid "Where pullup teams get placed" +msgstr "" + +#: ../../features/draw-generation-bp.rst:24 +msgid "**Anywhere in bracket**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:25 +msgid "*All in the same room*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:26 +msgid ":ref:`Position cost `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:27 +msgid "Which cost function to use to indicate which position profiles are preferred" +msgstr "" + +#: ../../features/draw-generation-bp.rst:28 +#: ../../features/draw-generation-bp.rst:179 +msgid "Simple" +msgstr "" + +#: ../../features/draw-generation-bp.rst:29 +msgid "**Rényi entropy**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:30 +#: ../../features/draw-generation-bp.rst:254 +msgid "Population variance" +msgstr "" + +#: ../../features/draw-generation-bp.rst:31 +msgid ":ref:`Rényi order `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:32 +msgid "Order of Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:33 +msgid "Any non-negative number (default: **1**, *i.e.* Shannon entropy)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:34 +msgid ":ref:`Position cost exponent `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:35 +msgid "Degree to which large position imbalances should be prioritised" +msgstr "" + +#: ../../features/draw-generation-bp.rst:36 +msgid "Any non-negative number (default: **4**)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:37 +msgid ":ref:`Assignment method `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:38 +msgid "Algorithm used to assign positions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:39 +msgid "*Hungarian*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:40 +msgid "**Hungarian with preshuffling**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:45 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation-bp.rst:47 +msgid "To try to achieve position balance, Tabbycat treats the allocation of teams to debates as an `assignment problem `_. That is, it computes the \"cost\" of assigning each team to each position in each debate, and finds an assignment of all teams to a position in a debate that minimises the total cost (the sum over all teams)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:50 +msgid "A simple example" +msgstr "" + +#: ../../features/draw-generation-bp.rst:52 +msgid "Here's a small example, to illustrate the idea. Say you have a tournament with 16 teams, and you're about to draw round 4. There are sixteen \"places\" in the draw: four positions in each of four rooms. Tabbycat calculates the \"cost\" of putting each team in each place, and puts them in a matrix, like this:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Room" +msgstr "Sala" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Top" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Second" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Third" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Bottom" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "Position" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OG" +msgstr "AG" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OO" +msgstr "AO" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CG" +msgstr "BG" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CO" +msgstr "BO" + +#: ../../features/draw-generation-bp.rst:65 +msgid "**A (8)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "16" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +msgid ":q:`0`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "∞" +msgstr "" + +#: ../../features/draw-generation-bp.rst:67 +msgid "**B (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:69 +msgid "**C (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +msgid "**D (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:95 +msgid "0" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:95 +msgid ":q:`16`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:73 +msgid "**E (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:75 +msgid "**F (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:77 +msgid "**G (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:79 +msgid "**H (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:81 +msgid "**I (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:83 +msgid "**J (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:85 +msgid "**K (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:87 +msgid "**L (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:89 +msgid "**M (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:91 +msgid "**N (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:93 +msgid "**O (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:95 +msgid "**P (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:98 +msgid "Each \"16\" is the cost of putting a team in a position it's seen once; each \"0\" is the cost of putting a team in the position it hasn't. (Details of how this is calculated are :ref:`below `.) For example, team A (on 8 points) has been in every position except CO. The ∞'s indicate places where the team isn't allowed to go, because the room isn't in their bracket. For example, the three teams on 6 points (D, E, F) can go in either the top or second room, because any of them can be the pullup team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:100 +msgid "The algorithm then chooses entries so that one is selected from each row and one is selected from each column, in a way that minimises the sum of the selected entries. In this case, the selected entries are highlighted in blue. For example, the top room comprises teams E (OG), B (OO), C (CG) and A (CO)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:102 +msgid "Sometimes, particularly in round 4, it simply isn't possible to \"satisfy\" everyone. For example, among the top eight teams, five haven't been in OO, but only two can be accommodated within those brackets. In this case, teams B and G got lucky; there are also many other draws that would have incurred the same total cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:104 +msgid "More generally, in most cases, there will be many optimal solutions. To randomise the selection among them, Tabbycat (under default settings) randomly permutes the rows and columns of the matrix before starting the assignment algorithm." +msgstr "" + +#: ../../features/draw-generation-bp.rst:107 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:112 +msgid "Pullup distribution" +msgstr "" + +#: ../../features/draw-generation-bp.rst:114 +msgid "If the number of teams in a bracket is not a multiple of four, it pulls up teams from the next bracket down. The pullup distribution then governs how those teams are paired into the upper bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:116 +msgid "The available options are as follows:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:120 +msgid "**Anywhere in bracket:** The pullup teams are treated as if they were any other team in their new bracket. For example, if there are 17 teams in a 10-point bracket, then the three 9-point teams that get pulled up may be paired anywhere in the 10-point bracket, independently of each other. Chance might put them in the same room, but more likely, they will not all be in the same room, so there will be multiple pullup rooms in the 10-point bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:122 +msgid "**All in the same room:** All of the pullup teams will be paired into the same room. This means that there will be at most one pullup room per bracket, effectively creating an \"intermediate bracket\"." +msgstr "" + +#: ../../features/draw-generation-bp.rst:124 +msgid "While it can be argued that the `All in the same room` setting is fairer, it is prohibited by the WUDC constitution. If your tournament follows WUDC rules, you cannot use this setting." +msgstr "" + +#: ../../features/draw-generation-bp.rst:126 +msgid "The teams that get pulled up aren't specifically chosen---they're just assigned as part of the algorithm described :ref:`above `, which optimises for position balance. Tabbycat doesn't support taking anything else into account when choosing pullup teams. (WUDC rules wouldn't allow it, either.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:131 +msgid "Position cost options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:133 +msgid "The `position cost function` is a function that indicates how \"bad\" it would be if a team were to be allocated a certain position (OG, OO, CG, CO) in a debate. When generating a draw, Tabbycat chooses from among the draws that minimise the sum of the position costs for each team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:135 +msgid "More formally:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:139 +msgid "A `position history` or just `history` :math:`\\mathbf{h}` is a 4-tuple where each element is the number of times a team has already been in the corresponding position. For example, :math:`\\mathbf{h} = (0, 2, 1, 1)` means that a team has been in OO twice, CG and CO once each, and hasn't been in OG." +msgstr "" + +#: ../../features/draw-generation-bp.rst:140 +msgid "A cost function :math:`C(\\mathbf{h},s)` is a function specifying how \"bad\" it would be if a team with position history :math:`\\mathbf{h}` were assigned the position :math:`s` in the next round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:142 +msgid "Tabbycat allows you to choose from a number of different **position cost functions**, as well as a **position cost exponent** :math:`\\beta`. Then, when allocating teams to debates, Tabbycat allocates teams to positions :math:`(s_t, t \\in\\mathcal{T})` to minimise" +msgstr "" + +#: ../../features/draw-generation-bp.rst:144 +msgid "\\sum_{t \\in \\mathcal{T}} [C(\\mathbf{h}_t,s_t)]^\\beta" +msgstr "" + +#: ../../features/draw-generation-bp.rst:148 +msgid "where :math:`\\mathcal{T}` is the set of all teams, :math:`\\mathbf{h}_t` is the position history of team :math:`t` and :math:`s_t` is the position to which team :math:`t` would be allocated." +msgstr "" + +#: ../../features/draw-generation-bp.rst:153 +msgid "Position cost exponent" +msgstr "" + +#: ../../features/draw-generation-bp.rst:155 +msgid "The **position cost exponent** :math:`\\beta` controls how different teams trade off with each other." +msgstr "" + +#: ../../features/draw-generation-bp.rst:159 +msgid "The **larger** :math:`\\beta` is, the more concerned it is with preventing *very* bad situations. That is, it will give more teams some slight unevenness in order to prevent one team from getting a `very` uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:161 +msgid "The **smaller** :math:`\\beta` is, the more concerned it is with preventing *any* unevenness. That is, it will try to keep more teams from being uneven *at all*, at the cost of possibly letting just one team get a very uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:163 +msgid "At the large extreme, as :math:`\\beta\\rightarrow\\infty`, it will do everything it can to minimise the plight of the *worst-off* team, and it won't care for *any* team other than the worst-off." +msgstr "" + +#: ../../features/draw-generation-bp.rst:165 +msgid "At the small extreme, as :math:`\\beta\\rightarrow 0`, it will do everything it can to minimise the number of teams with a non-optimal profile---but if it's impossible to protect a team from sub-optimality, it won't care *how* uneven the unlucky team gets." +msgstr "" + +#: ../../features/draw-generation-bp.rst:167 +msgid "The \"balanced\" approach would be :math:`\\beta = 1`, which just takes the cost function as-is. This doesn't mean that this is the best idea, however---you'd typically want to bias towards preventing very uneven histories a bit more. Most tournaments will probably want :math:`\\beta` to be somewhere between 2 and 5. (Note that :math:`\\beta` need not be an integer.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:172 +msgid "Position cost functions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:174 +msgid "Tabbycat allows you to choose between three position cost functions :math:`C(\\mathbf{h},s)`: **Simple**, **Rényi entropy** and **Population variance**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:176 +msgid "In the descriptions that follow, :math:`\\mathcal{S} = \\{\\texttt{OG}, \\texttt{OO}, \\texttt{CG}, \\texttt{CO}\\}`, the set of all BP positions." +msgstr "" + +#: ../../features/draw-generation-bp.rst:181 +msgid "The simple cost function :math:`C_\\textrm{simple}(\\mathbf{h},s)` returns the number of times the team has already been in position :math:`s`, less the number of times the team has been in its least frequent position. That is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:183 +msgid "C_\\mathrm{simple}(\\mathbf{h},s) = \\mathbf{h}[s] - \\min_{s' \\in\\mathcal{S}} \\mathbf{h}[s']" +msgstr "" + +#: ../../features/draw-generation-bp.rst:187 +msgid "where :math:`\\mathbf{h}[s]` is the element of :math:`\\mathbf{h}` corresponding to position :math:`s`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:190 +msgid "Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:192 +msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:194 +msgid "The Rényi entropy takes one parameter, known as its *order*, :math:`\\alpha`, which will be further discussed below." +msgstr "" + +#: ../../features/draw-generation-bp.rst:196 +msgid "More formally, the Rényi entropy cost function :math:`C_\\textrm{R\\'enyi}(\\mathbf{h},s)` is defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:198 +msgid "C_\\textrm{R\\'enyi}(\\mathbf{h},s) = n_\\mathbf{h} [2 - H_\\alpha(\\hat{p}_{\\mathbf{h},s})]" +msgstr "" + +#: ../../features/draw-generation-bp.rst:202 +msgid "where" +msgstr "" + +#: ../../features/draw-generation-bp.rst:206 +msgid ":math:`n_\\mathbf{h} = \\sum_{s'} \\mathbf{h}[s']` is the number of rounds the team has competed in so far." +msgstr "" + +#: ../../features/draw-generation-bp.rst:207 +msgid ":math:`\\hat{p}_{\\mathbf{h},s}` is the *normalised hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:209 +msgid "\\hat{p}_{\\mathbf{h},s}[s'] = \\begin{cases} \\frac{1}{n_\\mathbf{h} + 1} (\\mathbf{h}[s'] + 1), &\\text{ if } s = s', \\\\ \\frac{1}{n_\\mathbf{h} + 1} \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:216 +msgid "Note that :math:`\\hat{p}_{\\mathbf{h},s}` is a probability distribution (that is, its elements sum to 1)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:218 +msgid ":math:`H_\\alpha(\\cdot)` is the `Rényi entropy `_ of order :math:`\\alpha` of a probability distribution, defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:220 +msgid "H_\\alpha(p) = \\frac{1}{1-\\alpha} \\log_2 \\left( \\sum_{s\\in\\mathcal{S}} (p[s])^\\alpha \\right), \\qquad \\alpha \\ne 1." +msgstr "" + +#: ../../features/draw-generation-bp.rst:224 +msgid "In the special (limiting) case where :math:`\\alpha=1`, it reduces to the `Shannon entropy `_," +msgstr "" + +#: ../../features/draw-generation-bp.rst:226 +msgid "H_1(p) =-\\sum_{s\\in\\mathcal{S}} p[s] \\log_2 p[s]." +msgstr "" + +#: ../../features/draw-generation-bp.rst:230 +msgid "Note that for all :math:`\\alpha`, :math:`0 \\le H_\\alpha(p) \\le \\log_2(4) = 2` (since there are four positions in BP)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:234 +msgid "The **Rényi order** is the parameter :math:`\\alpha` above, and it controls *what it means to be \"even among positions\"* for a team. Note that \"evenness\" is not easily defined. After round 8, which position history is more even: (0, 2, 3, 3) or (1, 1, 1, 5)? The Rényi order allows us to tune this definition." +msgstr "" + +#: ../../features/draw-generation-bp.rst:238 +msgid "The **smaller** :math:`\\alpha` is, the more it cares that teams compete in every position *at least* once, favouring (1, 1, 1, 5) over (0, 2, 3, 3): it's worse to have never OGed, than it is to have COed five times." +msgstr "" + +#: ../../features/draw-generation-bp.rst:240 +msgid "The **larger** :math:`\\alpha` is, the more it cares that teams do not compete in *any* (one) position too many times, favouring (0, 2, 3, 3) over (1, 1, 1, 5): it's worse to have COed five times, than it is to have never OGed." +msgstr "" + +#: ../../features/draw-generation-bp.rst:242 +msgid "At the small extreme, as :math:`\\alpha\\rightarrow0`, it *only* counts how many positions a team has seen at least once, and doesn't care about the distribution among them so long as a team has been in each position once." +msgstr "" + +#: ../../features/draw-generation-bp.rst:244 +msgid "At the large extreme, as :math:`\\alpha\\rightarrow\\infty`, it *only* looks at how many times each team has seen its *most frequent* position, and tries to keep this number even among all teams." +msgstr "" + +#: ../../features/draw-generation-bp.rst:246 +msgid "The \"balanced\" approach would be :math:`\\alpha=1` (the `Shannon entropy `_), though of course it's arguable what \"balanced\" means. Tabbycat defaults to this value." +msgstr "" + +#: ../../features/draw-generation-bp.rst:248 +msgid "To give some intuition for the useful range: In round 9, a strict ordering by number of positions seen at least once occurs for approximately :math:`\\alpha < 0.742`. A strict ordering by number of times in the most frequent position occurs for :math:`\\alpha>3`. Changing :math:`\\alpha` outside the range :math:`[0.742, 3]` will still affect the relative (cardinal) weighting *between teams*, but will not affect the *ordinal* ranking of possible histories." +msgstr "" + +#: ../../features/draw-generation-bp.rst:250 +msgid "The purpose of weighting costs by :math:`n_\\mathbf{h}` is to prioritise those teams who have competed in every round over those who have competed in fewer rounds." +msgstr "" + +#: ../../features/draw-generation-bp.rst:256 +msgid "The **population variance** cost function is just the population variance of the history 4-tuple," +msgstr "" + +#: ../../features/draw-generation-bp.rst:258 +msgid "C_\\textrm{popvar}(\\mathbf{h},s) = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\left(\\mathbf{\\hat{h}}_s[s'] - \\mu_{\\mathbf{\\hat{h}}_s} \\right)^2," +msgstr "" + +#: ../../features/draw-generation-bp.rst:262 +msgid "where :math:`\\mathbf{\\hat{h}}_s` is the *hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:264 +msgid "\\mathbf{\\hat{h}}_s[s'] = \\begin{cases} \\mathbf{h}[s'] + 1, &\\text{ if } s = s', \\\\ \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:271 +msgid "and where :math:`\\mu_{\\mathbf{\\hat{h}}_s}` is the mean of :math:`\\mathbf{\\hat{h}}_s`," +msgstr "" + +#: ../../features/draw-generation-bp.rst:273 +msgid "\\mu_{\\mathbf{\\hat{h}}_s} = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\mathbf{\\hat{h}}_s[s']." +msgstr "" + +#: ../../features/draw-generation-bp.rst:277 +msgid "At the extremes, a team that has seen all positions evenly will have a population variance of zero, while a team that has seen just one position :math:`n` times will have a population variance of :math:`\\frac{3n^2}{16}`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:282 +msgid "Assignment method" +msgstr "" + +#: ../../features/draw-generation-bp.rst:284 +msgid "Tabbycat uses the `Hungarian algorithm `_ to solve the `assignment problem `_ of assigning teams to positions in debates. This can be run with or without preshuffling:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:288 +msgid "**Hungarian algorithm** just runs the Hungarian algorithm as-is, with no randomness. This probably isn't what you want." +msgstr "" + +#: ../../features/draw-generation-bp.rst:290 +msgid "**Hungarian algorithm with preshuffling** also runs the Hungarian algorithm on the position cost matrix, but shuffles the input so that the draw is randomised, subject to having optimal position allocations." +msgstr "" + +#: ../../features/draw-generation-bp.rst:292 +msgid "Preshuffling doesn't compromise the optimality of position allocations: It simply shuffles the order in which teams and debates appear in the input to the algorithm, by randomly permuting the rows and columns of the position cost matrix. The Hungarian algorithm still guarantees an optimal position assignment, according to the chosen position cost function." +msgstr "" + +#: ../../features/draw-generation-bp.rst:294 +msgid "Running the Hungarian algorithm *without* preshuffling has the side effect of grouping teams with similar speaker scores in to the same room, and is therefore prohibited by WUDC rules. Its inclusion as an option is mainly academic; most tournaments will not want to use it in practice." +msgstr "" + +#: ../../features/draw-generation-bp.rst:296 +msgid "No other assignment methods are currently supported. For example, Tabbycat can't run fold (high-low) or adjacent (high-high) pairing *within* brackets." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/draw-generation.po b/docs/locale/ca/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..3fbd57d3d67 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/draw-generation.po @@ -0,0 +1,436 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: ca_ES\n" + +#: ../../features/draw-generation.rst:5 +msgid "Draw Generation" +msgstr "" + +#: ../../features/draw-generation.rst:7 +msgid "The draw generator is quite flexible. You can specify a number of settings to suit different tournaments' rules." +msgstr "" + +#: ../../features/draw-generation.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation.rst:11 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `." +msgstr "" + +#: ../../features/draw-generation.rst:18 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation.rst:19 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation.rst:20 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation.rst:22 +msgid ":ref:`Odd bracket resolution method `" +msgstr "" + +#: ../../features/draw-generation.rst:23 +msgid "How to resolve odd brackets" +msgstr "" + +#: ../../features/draw-generation.rst:24 +msgid "Pull up from top" +msgstr "" + +#: ../../features/draw-generation.rst:25 +msgid "Pull up from bottom" +msgstr "" + +#: ../../features/draw-generation.rst:26 +msgid "Pull up from middle" +msgstr "" + +#: ../../features/draw-generation.rst:27 +msgid "Pull up at random" +msgstr "" + +#: ../../features/draw-generation.rst:29 +msgid "If sides are `Random` or `Balance`:" +msgstr "" + +#: ../../features/draw-generation.rst:31 +msgid "Intermediate" +msgstr "" + +#: ../../features/draw-generation.rst:32 +msgid "Intermediate with bubble-up-bubble-down" +msgstr "" + +#: ../../features/draw-generation.rst:34 +msgid "If sides are `Pre-allocated`:" +msgstr "" + +#: ../../features/draw-generation.rst:36 +msgid "Intermediate 1" +msgstr "" + +#: ../../features/draw-generation.rst:37 +msgid "Intermediate 2" +msgstr "" + +#: ../../features/draw-generation.rst:39 +msgid ":ref:`Side allocations method `" +msgstr "" + +#: ../../features/draw-generation.rst:40 +msgid "How to allocate aff/neg" +msgstr "" + +#: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 +msgid "Random" +msgstr "" + +#: ../../features/draw-generation.rst:42 +msgid "Balance" +msgstr "" + +#: ../../features/draw-generation.rst:43 +msgid "Pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:44 +msgid "Manual ballot" +msgstr "" + +#: ../../features/draw-generation.rst:46 +msgid ":ref:`Pairing method `" +msgstr "" + +#: ../../features/draw-generation.rst:47 +msgid "How to pair teams within brackets" +msgstr "" + +#: ../../features/draw-generation.rst:48 +msgid "Slide" +msgstr "" + +#: ../../features/draw-generation.rst:49 +msgid "Fold" +msgstr "" + +#: ../../features/draw-generation.rst:50 +msgid "Adjacent" +msgstr "" + +#: ../../features/draw-generation.rst:53 +msgid ":ref:`Conflict avoidance method `" +msgstr "" + +#: ../../features/draw-generation.rst:54 +msgid "How to avoid history/institution conflicts" +msgstr "" + +#: ../../features/draw-generation.rst:55 +msgid "Off" +msgstr "" + +#: ../../features/draw-generation.rst:56 +msgid "One-up-one-down" +msgstr "" + +#: ../../features/draw-generation.rst:58 +msgid ":ref:`Pullup restriction `" +msgstr "" + +#: ../../features/draw-generation.rst:59 +msgid "Whether and how to restrict pullups" +msgstr "" + +#: ../../features/draw-generation.rst:60 +msgid "No restriction" +msgstr "" + +#: ../../features/draw-generation.rst:61 +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../features/draw-generation.rst:62 +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: ../../features/draw-generation.rst:64 +msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." +msgstr "" + +#: ../../features/draw-generation.rst:67 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation.rst:68 +msgid "When generating a power-paired draw, Tabbycat goes through five steps:" +msgstr "" + +#: ../../features/draw-generation.rst:70 +msgid "First, it divides teams into \"raw brackets\", grouping them by the number of wins." +msgstr "" + +#: ../../features/draw-generation.rst:71 +msgid "Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called \"pulling up\" teams." +msgstr "" + +#: ../../features/draw-generation.rst:72 +msgid "Third, within each bracket, it pairs teams into debates using the pairing method." +msgstr "" + +#: ../../features/draw-generation.rst:73 +msgid "Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts." +msgstr "" + +#: ../../features/draw-generation.rst:74 +msgid "Finally, it assigns sides to teams in each debate." +msgstr "" + +#: ../../features/draw-generation.rst:76 +msgid "For each of these steps except the first, Tabbycat allows you to choose between a number of different methods." +msgstr "" + +#: ../../features/draw-generation.rst:80 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation.rst:85 +msgid "Odd bracket resolution" +msgstr "" + +#: ../../features/draw-generation.rst:86 +msgid "The **draw odd brackets** option specifies what you do when a bracket has an odd number of teams. (Obviously you have to do something, otherwise you can't pair off teams within the bracket.) There are two groups of methods: pull-up and intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:90 +msgid "**Pull-up methods** take one or more teams from the next bracket down, and move them into the odd bracket to fill the bracket." +msgstr "" + +#: ../../features/draw-generation.rst:92 +msgid "**Intermediate brackets** take the excess teams from the odd bracket and move them down into a new bracket, which sits between the odd bracket and the next one down (the \"intermediate bracket\"). It then takes teams from the next bracket down and moves them up to fill the new intermediate bracket." +msgstr "" + +#: ../../features/draw-generation.rst:94 +msgid "The exact mechanics depend on whether or not sides are pre-allocated." +msgstr "" + +#: ../../features/draw-generation.rst:97 +msgid "When sides are not pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:101 +msgid "**Pull-up methods:** Take a team from the next bracket down, and add them to the odd bracket to form an even bracket. You can choose to pull up the top team from the next bracket, or the bottom team, or the middle team, or a randomly chosen team. (If you pull up the middle team, and the bracket has an even number of teams, then it will choose randomly from the two middle teams.)" +msgstr "" + +#: ../../features/draw-generation.rst:103 +msgid "**Intermediate brackets:** Take the bottom team from the odd bracket and match them against the top team from the next bracket. An intermediate bracket always has two teams." +msgstr "" + +#: ../../features/draw-generation.rst:105 +msgid "If you're using conflict avoidance and intermediate brackets, you will probably want to use **Intermediate with bubble-up-bubble-down** instead. This uses the \"bubble-up-bubble-down\" rule to swap teams out of an intermediate bracket if there is a history or institution conflict. This is defined in the Australs constitution and is analogous to the \"one-up-one-down\" rule." +msgstr "" + +#: ../../features/draw-generation.rst:107 +msgid "Using `Intermediate` with `One-up-one-down` does **not** imply `Intermediate with bubble-up-bubble-down`. You must enable `Intermediate with bubble-up-bubble-down` specifically." +msgstr "" + +#: ../../features/draw-generation.rst:110 +msgid "When sides are pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:111 +msgid "When sides are pre-allocated, an \"odd bracket\" is one that has an uneven number of affirmative and negative teams. (So odd brackets can have an even number of teams, *e.g.* 4 affs and 2 negs.)" +msgstr "" + +#: ../../features/draw-generation.rst:115 +msgid "**Pull-up methods:** Take as many teams from the next bracket down as necessary to fill the bracket. If there aren't enough teams in the next bracket down, take teams from the bracket after that, and so on, until the (original) odd bracket is filled. Higher brackets are always filled first. You can choose to pull up the top teams from the next bracket, the bottom teams, or a random selection of teams." +msgstr "" + +#: ../../features/draw-generation.rst:117 +msgid "**Intermediate brackets:** Take the unpaired teams in a bracket, and move them down to a new intermediate bracket. Then, take the number of teams necessary from the opposite side, from the next bracket down, to fill the next bracket." +msgstr "" + +#: ../../features/draw-generation.rst:119 +msgid "**Intermediate 1** and **Intermediate 2** differ only in what happens if there aren't enough teams in the next bracket to fill the intermediate bracket. In **Intermediate 1**, it will just take teams from the bracket after that, and so on, until the intermediate bracket is filled. In **Intermediate 2**, it will split the intermediate bracket: the teams that can be paired with the next bracket form the first intermediate bracket, and then the teams that aren't form a new (unfilled) intermediate bracket, to be filled from teams from the bracket after that. This keeps going, splitting into as many intermediate brackets as necessary, until all excess teams from the original odd bracket are paired." +msgstr "" + +#: ../../features/draw-generation.rst:124 +msgid "Side allocations" +msgstr "" + +#: ../../features/draw-generation.rst:125 +msgid "There are four methods:" +msgstr "" + +#: ../../features/draw-generation.rst:129 +msgid "**Random** allocates randomly. Some tournaments might like this, but most will probably want to use Balance, because Random doesn't guarantee that a team won't be (say) affirming the entire tournament." +msgstr "" + +#: ../../features/draw-generation.rst:130 +msgid "**Balance** assigns the team that has affirmed less so far the affirmative side (and, therefore, the team that has negated less the negative side). If both teams have affirmed the same number of times, it assigns sides randomly." +msgstr "" + +#: ../../features/draw-generation.rst:131 +msgid "**Preallocated** is used for pre-allocated sides. If used, you must enter data for pre-allocated sides into the database, as specified below." +msgstr "" + +#: ../../features/draw-generation.rst:132 +msgid "**Manually enter from ballot** is used for tournaments where the sides of the teams involved are not assigned in advance, but are instead determined by the teams themselves" +msgstr "" + +#: ../../features/draw-generation.rst:135 +msgid "Pre-allocated sides" +msgstr "" + +#: ../../features/draw-generation.rst:136 +msgid "There isn't currently any way to edit side allocations from the front end. To do so from the back end, you need to create one ``TeamPositionAllocation`` entry for each team in each round. All teams must have an allocation for every round. There are a few ways to do this, take your pick:" +msgstr "" + +#: ../../features/draw-generation.rst:140 +msgid "If you're using the :ref:`importtournament command `, it reads sides from the file sides.csv." +msgstr "" + +#: ../../features/draw-generation.rst:141 +msgid "You can do this from the Django admin interface (under Setup > Edit Database) by going to the relevant team and adding a **team position allocation** entry. That is:" +msgstr "" + +#: ../../features/draw-generation.rst:143 +msgid "Click **Admin** on the bottom right of any page after logging into an account with :ref:`superuser access `." +msgstr "" + +#: ../../features/draw-generation.rst:144 +msgid "Next to **Teams**, click **Change**." +msgstr "" + +#: ../../features/draw-generation.rst:145 +msgid "Click on the name of the team you want to edit side allocations for." +msgstr "" + +#: ../../features/draw-generation.rst:146 +msgid "Add or edit the entry or entries in the **Team position allocations** table at the bottom." +msgstr "" + +#: ../../features/draw-generation.rst:148 +msgid "You can also do this by writing a script that creates ``TeamPositionAllocation`` objects and saves them. Have a look at `draw/management/commands/generatesideallocations.py `_ for an example." +msgstr "" + +#: ../../features/draw-generation.rst:153 +msgid "Pairing method" +msgstr "" + +#: ../../features/draw-generation.rst:154 +msgid "It's easiest to describe these by example, using a ten-team bracket:" +msgstr "" + +#: ../../features/draw-generation.rst:156 +msgid "**Fold**: 1 vs 10, 2 vs 9, 3 vs 8, 4 vs 7, 5 vs 6. (Also known as high-low pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:157 +msgid "**Slide**: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10." +msgstr "" + +#: ../../features/draw-generation.rst:158 +msgid "**Adjacent**: 1 vs 2, 3 vs 4, 5 vs 6, 7 vs 8, 9 vs 10. (Also known as high-high pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:159 +msgid "**Random**: paired at random within bracket." +msgstr "" + +#: ../../features/draw-generation.rst:161 +msgid "Teams are always paired within their brackets, after resolving odd brackets." +msgstr "" + +#: ../../features/draw-generation.rst:166 +msgid "Conflict avoidance method" +msgstr "" + +#: ../../features/draw-generation.rst:167 +msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." +msgstr "" + +#: ../../features/draw-generation.rst:169 +msgid "You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented." +msgstr "" + +#: ../../features/draw-generation.rst:171 +msgid "**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict:" +msgstr "" + +#: ../../features/draw-generation.rst:173 +msgid "It tries to swap teams with the debate \"one up\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:174 +msgid "If that doesn't work, it tries to swap teams with the debate \"one down\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:175 +msgid "If neither of those works, it accepts the original conflicted debate." +msgstr "" + +#: ../../features/draw-generation.rst:177 +msgid "It's a bit more complicated than that, for two reasons:" +msgstr "" + +#: ../../features/draw-generation.rst:181 +msgid "History conflicts are prioritised over (*i.e.*, \"worse than\") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa." +msgstr "" + +#: ../../features/draw-generation.rst:182 +msgid "Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could \"one down\" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps." +msgstr "" + +#: ../../features/draw-generation.rst:187 +msgid "Pullup restriction" +msgstr "" + +#: ../../features/draw-generation.rst:188 +msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" +msgstr "" + +#: ../../features/draw-generation.rst:192 +msgid "You can **choose from teams who have been pulled up the fewest times so far**, that is, in rounds before the current round. Most of the time, this is equivalent to saying that a team cannot be pulled up more than once. But if *all* teams in a bracket have been pulled up at least once, it then chooses from among teams who have been pulled up *only* once (if any), and so on." +msgstr "" + +#: ../../features/draw-generation.rst:194 +msgid "You can **choose from teams with the lowest draw strength so far**, by **wins** or **speaks**." +msgstr "" + +#: ../../features/draw-generation.rst:196 +msgid "If you choose speaks, it's unlikely that two teams will have the same draw strength by speaks, so most of the time this will just choose the team in the lower bracket that's had the easiest draw so far (as measured by their opponents' speaker scores)." +msgstr "" + +#: ../../features/draw-generation.rst:198 +msgid "Pullup restrictions only apply when the :ref:`odd bracket resolution method ` is a pullup method. They have no effect on intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:201 +msgid "What do I do if the draw looks wrong?" +msgstr "" + +#: ../../features/draw-generation.rst:203 +msgid "You can edit match-ups directly from the draw page. Functionally, you can do anything you want. Of course, operationally, you should only edit the draw when you *know* that the draw algorithm got something wrong. If you need to do this, even just once, please file a bug report by creating a new issue on `our issues page on GitHub `_." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/notifications.po b/docs/locale/ca/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..79c0f4e2550 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/notifications.po @@ -0,0 +1,257 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: ca_ES\n" + +#: ../../features/notifications.rst:3 +msgid "Sending Notifications" +msgstr "" + +#: ../../features/notifications.rst:5 +msgid "Tabbycat offers integrations with email delivery services to send notifications to participants on certain enumerated events. For sending these emails, `SendGrid `_ is readily available as an add-on in Heroku. It may be necessary to install the `SendGrid add-on `_ manually. Other integrations may also be used in its place by changing the relevant environment variables." +msgstr "" + +#: ../../features/notifications.rst:8 +msgid "Events" +msgstr "" + +#: ../../features/notifications.rst:10 +msgid "Tabbycat includes a number of templated notifications that can be sent in various times. Variables which are included between curly brackets which are substituted for personalized information passed by email. Links to email will redirect to a page where the message can be changed and the participants selected." +msgstr "" + +#: ../../features/notifications.rst:12 +msgid "All emails have the ``{{ USER }}`` and ``{{ TOURN }}`` variables to indicate who the email is sent to, and the tournament it relates to. The \"From\" in the emails will also be the tournament's name." +msgstr "" + +#: ../../features/notifications.rst:17 +msgid "Email content and description" +msgstr "" + +#: ../../features/notifications.rst:18 +msgid "Variables" +msgstr "" + +#: ../../features/notifications.rst:20 +msgid "**Adjudicator draw notification**" +msgstr "" + +#: ../../features/notifications.rst:22 +msgid "Email to adjudicators indicating their room assignment." +msgstr "" + +#: ../../features/notifications.rst:24 ../../features/notifications.rst:36 +#: ../../features/notifications.rst:74 +msgid "Available through the admin draw page." +msgstr "" + +#: ../../features/notifications.rst:25 ../../features/notifications.rst:37 +msgid "``{{ ROUND }}``: The round name" +msgstr "" + +#: ../../features/notifications.rst:26 ../../features/notifications.rst:38 +msgid "``{{ VENUE }}``: The venue of the assigned debate" +msgstr "" + +#: ../../features/notifications.rst:27 ../../features/notifications.rst:39 +msgid "``{{ PANEL }}``: A list of all the adjudicators assigned to the venue (with positions)" +msgstr "" + +#: ../../features/notifications.rst:28 ../../features/notifications.rst:40 +msgid "``{{ DRAW }}``: A list of the team matchup with their roles" +msgstr "" + +#: ../../features/notifications.rst:29 +msgid "``{{ POSITION }}``: The target adjudicator's position in the panel" +msgstr "" + +#: ../../features/notifications.rst:30 +msgid "``{{ URL }}``: A link to the adjudicator's private URL page" +msgstr "" + +#: ../../features/notifications.rst:32 +msgid "**Team draw notification**" +msgstr "" + +#: ../../features/notifications.rst:34 +msgid "Email to teams indicating their pairing." +msgstr "" + +#: ../../features/notifications.rst:41 +msgid "``{{ TEAM }}``: The team's code or short name" +msgstr "" + +#: ../../features/notifications.rst:42 +msgid "``{{ SIDE }}``: The team's side" +msgstr "" + +#: ../../features/notifications.rst:44 +msgid "**Private URL distribution**" +msgstr "" + +#: ../../features/notifications.rst:46 +msgid "Email to participants giving them their private URL for electronic forms." +msgstr "" + +#: ../../features/notifications.rst:48 +msgid "Available through the private URLs page." +msgstr "" + +#: ../../features/notifications.rst:49 +msgid "``{{ URL }}``: The personalized URL" +msgstr "" + +#: ../../features/notifications.rst:50 +msgid "``{{ KEY }}``: The private code in the URL" +msgstr "" + +#: ../../features/notifications.rst:52 +msgid "**Ballot submission receipt**" +msgstr "" + +#: ../../features/notifications.rst:54 +msgid "Email to adjudicators of their ballot after tabroom confirmation." +msgstr "" + +#: ../../features/notifications.rst:56 +msgid "Sent automatically when their ballot's result status becomes confirmed, if enabled in the \"Notifications\" section of the tournament options." +msgstr "" + +#: ../../features/notifications.rst:58 +msgid "``{{ DEBATE }}``: The name (with round & venue) of the relevent debate" +msgstr "" + +#: ../../features/notifications.rst:59 +msgid "``{{ SCORES }}``: The submitted ballot with speaker scores ands team names" +msgstr "" + +#: ../../features/notifications.rst:61 +msgid "**Current team standings**" +msgstr "" + +#: ../../features/notifications.rst:63 +msgid "Email to speakers with their point total." +msgstr "" + +#: ../../features/notifications.rst:65 +msgid "Available through the \"Confirm Round Completion\" page." +msgstr "" + +#: ../../features/notifications.rst:66 +msgid "``{{ URL }}``: The URL of the team standings page (if public)" +msgstr "" + +#: ../../features/notifications.rst:67 +msgid "``{{ TEAM }}``: The team's name" +msgstr "" + +#: ../../features/notifications.rst:68 +msgid "``{{ POINTS }}``: The team's number of points" +msgstr "" + +#: ../../features/notifications.rst:70 +msgid "**Motion release**" +msgstr "" + +#: ../../features/notifications.rst:72 +msgid "Email to speakers with the motion(s) of the current round." +msgstr "" + +#: ../../features/notifications.rst:75 +msgid "``{{ ROUND }}``: The name of the round" +msgstr "" + +#: ../../features/notifications.rst:76 +msgid "``{{ MOTIONS }}``: A list of the motions released" +msgstr "" + +#: ../../features/notifications.rst:78 +msgid "**Team information**" +msgstr "" + +#: ../../features/notifications.rst:80 +msgid "Email to speakers with information pertaining to their team, such as eligibility and codes." +msgstr "" + +#: ../../features/notifications.rst:82 +msgid "Available through the Participants page." +msgstr "" + +#: ../../features/notifications.rst:83 +msgid "``{{ SHORT }}``: The team's short name" +msgstr "" + +#: ../../features/notifications.rst:84 +msgid "``{{ LONG }}``: The team's long name" +msgstr "" + +#: ../../features/notifications.rst:85 +msgid "``{{ CODE }}``: The team's code name" +msgstr "" + +#: ../../features/notifications.rst:86 +msgid "``{{ EMOJI }}``: The team's assigned emoji" +msgstr "" + +#: ../../features/notifications.rst:87 +msgid "``{{ DIVISION }}``: The team's division if applicable" +msgstr "" + +#: ../../features/notifications.rst:88 +msgid "``{{ BREAK }}``: Break categories which the team is a member" +msgstr "" + +#: ../../features/notifications.rst:89 +msgid "``{{ SPEAKERS }}``: A list of the speakers in the team" +msgstr "" + +#: ../../features/notifications.rst:90 +msgid "``{{ INSTITUTION }}``: The team's affiliation" +msgstr "" + +#: ../../features/notifications.rst:93 +msgid "Event Webhook" +msgstr "" + +#: ../../features/notifications.rst:95 +msgid "With SendGrid, the status of sent emails can be sent to Tabbycat to be displayed, giving an indication of failures and whether participants have opened the messages. To activate this feature, setup must be done both in your SendGrid account and in Tabbycat." +msgstr "" + +#: ../../features/notifications.rst:97 +msgid "Set a secret key in the Email section of the tournament's preferences. This key must be alphanumeric without any spaces." +msgstr "" + +#: ../../features/notifications.rst:98 +msgid "Copy the \"web-hook\" link presented in a box at the top of the \"email participants\" page." +msgstr "" + +#: ../../features/notifications.rst:99 +msgid "Go to https://app.sendgrid.com/settings/mail_settings and select \"Event Notifications\"" +msgstr "" + +#: ../../features/notifications.rst:100 +msgid "Enable the feature and paste the Tabbycat URL under \"HTTP POST URL\"." +msgstr "" + +#: ../../features/notifications.rst:101 +msgid "Select the notifications to keep track (or all of them)." +msgstr "" + +#: ../../features/notifications.rst:103 +msgid "Each email and change in status sent to Tabbycat will add a row to the database. If the number of rows is limited, as is for free Heroku apps, enabling the webhook may use up a significant number of rows. Be selective in the events to keep track." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/preformed-panels.po b/docs/locale/ca/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..a7694fa5cfb --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/preformed-panels.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 21:53\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: ca_ES\n" + +#: ../../features/preformed-panels.rst:5 +msgid "Preformed Panels" +msgstr "Grups de Jutges formats amb antelació" + +#: ../../features/preformed-panels.rst:7 +msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." +msgstr "" + +#: ../../features/preformed-panels.rst:9 +msgid "Tabbycat's implementation of preformed panels is more powerful, but less simple, than many others. The chief difference is that our workflow does not simply transpose a linear set of preformed panels atop a draw. Instead we employ Tabbycat's existing allocation tools, primarily the notion of a debate's *priority*, to allow for a non-linear matching of preformed panels that avoids adjudicator conflicts and better adapts to a given draw — particularly when the most important debates do not strictly follow the highest debate brackets." +msgstr "" + +#: ../../features/preformed-panels.rst:11 +msgid "The central concept is that each preformed panel has a priority value. When applying preformed panels to a draw, the allocator ties to best match the priority value of each preformed panel to the priority of each actual debate. This is similar to how Tabbycat's normal auto-allocator matches the strength of each panel (as measured by adjudicators' ratings) to the priority of each debate." +msgstr "" + +#: ../../features/preformed-panels.rst:14 +msgid "Step 1: Create preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:16 +msgid "You can find the preformed panels section either" +msgstr "" + +#: ../../features/preformed-panels.rst:18 +msgid "under the **Setup** menu (for all rounds), or" +msgstr "" + +#: ../../features/preformed-panels.rst:19 +msgid "on the **Draw** page (for the current and next round)." +msgstr "" + +#: ../../features/preformed-panels.rst:21 +msgid "Initially, the preformed panels page will have no panels. Click the **Create Panels** button in the top left to make some. The panels it creates are based upon a projection of that round's general results using the results of the previous round. As a result, each preformed panel will have a *bracket range*, the lowest and highest brackets that debate might be in, and a *liveness range*, the maximum number of teams that could be live in that room." +msgstr "" + +#: ../../features/preformed-panels.rst:25 +msgid "Like the normal adjudicator allocation interface, the preformed panel interfaces will indicate when an adjudicator has not been marked as available. If using preformed panels, you may want to set adjudicator availability earlier than you would otherwise." +msgstr "" + +#: ../../features/preformed-panels.rst:27 +msgid "Liveness in the anticipated draw only pertains to the open category (the first break category that is marked as a \"general\" category). It's not possible to meaningfully predict where teams open-dead but live in other categories will end up." +msgstr "" + +#: ../../features/preformed-panels.rst:30 +msgid "Step 2: Assign priorities to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:32 +msgid "By default the priority slider for all preformed panels is in the neutral position. You can use the \"Prioritise\" button in the top left to assign priority values automatically, based upon their brackets or liveness. Before or after this step you can alter the priorities as usual — even after you have allocated adjudicators." +msgstr "" + +#: ../../features/preformed-panels.rst:34 +msgid "It's important to remember to assign a range of priorities to the panels. Without distinct priority values, the application of your preformed panels to the actual draw will be essentially random. If allocating priorities manually, it is a good idea to keep a relatively even distribution of priorities — use the range!" +msgstr "" + +#: ../../features/preformed-panels.rst:36 +msgid "In Round 1, each debate has a liveness and bracket of 0. If you are using preformed panels in this instance you may need to manually-differentiate their priorities." +msgstr "" + +#: ../../features/preformed-panels.rst:39 +msgid "Step 3: Allocate adjudicators to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:43 +msgid "Now that your panels have a priority, you can begin allocating adjudicators. You can do this manually, but do note that the normal auto-allocator for adjudicators also works in this context (the \"Allocate\" button). Even if you want to tweak your panels extensively, the auto-allocator can provide a good first-pass collection of panels, because it will give stronger adjudicators to the panels that you have marked as important." +msgstr "" + +#: ../../features/preformed-panels.rst:45 +msgid "The created panels all auto-save, so you can leave the page and return to pick up where you left. Like the main allocation interface, changes should appear 'live' across different computers and the sharding system is available to divide up each person's view of the draw." +msgstr "" + +#: ../../features/preformed-panels.rst:48 +msgid "Step 4: Generate the draw" +msgstr "" + +#: ../../features/preformed-panels.rst:50 +msgid "Proceed with the creation of the draw as usual. Open up the normal adjudicator allocation page for that round." +msgstr "" + +#: ../../features/preformed-panels.rst:53 +msgid "Step 5: Assign priorities to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:55 +msgid "When allocating preformed panels, the priority levels are what connects the preformed panels to the actual debates. It is thus crucial that you assign priorities to the debates in the actual draw using automatic prioritisation or the manual sliders. Because the automatic prioritiser does not employ the highest priority value, it is worth having a look at the draw and seeing if any debates justify this before proceeding." +msgstr "" + +#: ../../features/preformed-panels.rst:58 +msgid "Step 6: Allocate preformed panels to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:60 +msgid "To allocate preformed panels to your debates, click the normal \"Allocate\" button and then select the *Preformed Panels* option." +msgstr "" + +#: ../../features/preformed-panels.rst:64 +msgid "This will then allocate the preformed panels to debates." +msgstr "" + +#: ../../features/preformed-panels.rst:68 +msgid "You can the edit the allocation as normal. If needed, you can redo the allocation of the preformed panels at any point." +msgstr "" + +#: ../../features/preformed-panels.rst:71 +msgid "How does the allocator work?" +msgstr "" + +#: ../../features/preformed-panels.rst:73 +msgid "Roughly speaking, the allocator tries to match panel priorities to debate priorities, while avoiding conflicts. It'll mostly try to swap panels within priority levels in order to avoid conflicts. If there aren't exactly as many panels at each priority level as there are debates, it'll do its best to match what it can." +msgstr "" + +#: ../../features/preformed-panels.rst:75 +msgid "More formally, it treats the allocation of preformed panels to debates as an `assignment problem `_, with a cost of assigning each panel :math:`p` to each debate :math:`d` given by" +msgstr "" + +#: ../../features/preformed-panels.rst:77 +msgid "C(p,d) = w_\\mathrm{mism} [\\mathrm{importance}(p) - \\mathrm{importance(d)}]^2 + w_\\mathrm{conf} \\, \\mathrm{conflicts}(p,d) + w_\\mathrm{hist} \\, \\mathrm{history}(p,d)" +msgstr "" + +#: ../../features/preformed-panels.rst:81 +msgid "where" +msgstr "" + +#: ../../features/preformed-panels.rst:83 +msgid ":math:`w_\\mathrm{mism}` is the \"Importance mismatch penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:84 +msgid ":math:`w_\\mathrm{hist}` is the \"Adjudicator conflict penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:85 +msgid ":math:`w_\\mathrm{conf}` is the \"Adjudicator history penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:86 +msgid ":math:`\\mathrm{importance}(p)` is the importance of panel :math:`p`," +msgstr "" + +#: ../../features/preformed-panels.rst:87 +msgid ":math:`\\mathrm{importance}(d)` is the importance of debate :math:`d`," +msgstr "" + +#: ../../features/preformed-panels.rst:88 +msgid ":math:`\\mathrm{conflicts}(p,d)` is the number of adjudicator-team conflicts between panel :math:`p` and debate :math:`d`, and" +msgstr "" + +#: ../../features/preformed-panels.rst:89 +msgid ":math:`\\mathrm{history}(p,d)` is the number of adjudicators and teams who have seen each other between panel :math:`p` and debate :math:`d`." +msgstr "" + +#: ../../features/preformed-panels.rst:91 +msgid "It then uses the `Hungarian algorithm `_ to find the assignment of panels to debates that minimizes the total cost of the pairings." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/printing.po b/docs/locale/ca/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..f8c31b3ea8f --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/printing.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: ca_ES\n" + +#: ../../features/printing.rst:3 +msgid "Printing Ballots and Feedback" +msgstr "" + +#: ../../features/printing.rst:5 +msgid "Tabbycat offers the ability to print scoresheets and feedback sheets on a per-round basis. This means that each scoresheet is customised to match the draw, and so will display:" +msgstr "" + +#: ../../features/printing.rst:7 +msgid "The motion or possible motions that could have been chosen from" +msgstr "" + +#: ../../features/printing.rst:8 +msgid "The teams, and a list of speakers for each team" +msgstr "" + +#: ../../features/printing.rst:9 +msgid "The room number, and name of the adjudicators present" +msgstr "" + +#: ../../features/printing.rst:11 +msgid "Feedback sheets will also be customised in this manner; displaying:" +msgstr "" + +#: ../../features/printing.rst:13 +msgid "A 'from' source. Sheet will be printed for each possible piece of feedback in that room: ie adjudicators will each get a sheet for their panellists and trainees while teams and panellists will get sheets for the chair." +msgstr "" + +#: ../../features/printing.rst:14 +msgid "The specific questions you established when configuring the :ref:`adjudicator feedback questions `" +msgstr "" + +#: ../../features/printing.rst:15 +msgid "The room number" +msgstr "" + +#: ../../features/printing.rst:17 +msgid "To print the ballots for each round, you would go to the **Display** page for that round, the click one of the two relevant print links. This opens a new window. In each window, you then use your browser's print function (CTRL-P). In the resulting print interface (from your browser) you'll want to turn background graphics on, header/footers off, and set the layout to portrait (feedback sheets) or landscape (score sheets)." +msgstr "" + +#: ../../features/printing.rst:19 +msgid "Typically you'd save these to PDF for printing, although you should be able to print straight from this dialogue box." +msgstr "" + +#: ../../features/printing.rst:21 +msgid "Printing works best in Safari and Firefox; use those if possible." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/standings-rules.po b/docs/locale/ca/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..bc8c447a96a --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/standings-rules.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-01 23:41\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: ca_ES\n" + +#: ../../features/standings-rules.rst:5 +msgid "Standings Rules" +msgstr "" + +#: ../../features/standings-rules.rst:8 +msgid "Team standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:10 +msgid "In Tabbycat, you can choose how teams are ranked in the team standings. For example, at Australs, teams are ranked first on the number of wins, and second on their total speaker score. The setting that specifies how teams are ranked is called the **team standings precedence**. The team standings precedence is used:" +msgstr "" + +#: ../../features/standings-rules.rst:15 +msgid "When displaying the team tab," +msgstr "" + +#: ../../features/standings-rules.rst:16 +msgid "Whenever a power-paired draw is generated, and" +msgstr "" + +#: ../../features/standings-rules.rst:17 +msgid "When computing which teams are in the break." +msgstr "" + +#: ../../features/standings-rules.rst:19 +msgid "When you choose the team standings precedence, you choose from a list of *metrics*. Then, in the standings, teams will be sorted first by the first metric, then by the second metric, and so on. You must choose at least one metric, and you can choose up to eight. Teams tied on all metrics will have the same rank." +msgstr "" + +#: ../../features/standings-rules.rst:25 +msgid "If you like, you can also choose **team standings extra metrics**, which are metrics that will be shown in the team standings, but not used to rank teams." +msgstr "" + +#: ../../features/standings-rules.rst:33 ../../features/standings-rules.rst:132 +msgid "Metric" +msgstr "" + +#: ../../features/standings-rules.rst:34 ../../features/standings-rules.rst:133 +msgid "Description" +msgstr "" + +#: ../../features/standings-rules.rst:36 +msgid "Wins" +msgstr "Victòries" + +#: ../../features/standings-rules.rst:37 +msgid "How many debates the team has won." +msgstr "" + +#: ../../features/standings-rules.rst:39 +msgid "Points" +msgstr "Punts" + +#: ../../features/standings-rules.rst:40 +msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." +msgstr "" + +#: ../../features/standings-rules.rst:44 +msgid "Total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:45 +msgid "The sum of all speaker scores attained in all debates." +msgstr "" + +#: ../../features/standings-rules.rst:47 +msgid "Average total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:48 ../../features/standings-rules.rst:157 +msgid "The average total speaker score over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:51 +msgid "Average individual speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:52 +msgid "The total substantive speaker score, over all debates the team has had and the number of speakers. Provides an equivalent metric to average total speaker score in no-reply formats, but within the substantive speech scoring range." +msgstr "" + +#: ../../features/standings-rules.rst:57 +msgid "Speaker score standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:58 +msgid "The standard deviation of total speaker scores over all debates the team has had, not counting debates where they or their opponents forfeited. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:63 +msgid "Sum of margins" +msgstr "" + +#: ../../features/standings-rules.rst:64 +msgid "The sum of all margins. Wins are positive, losses are negative." +msgstr "" + +#: ../../features/standings-rules.rst:66 +msgid "Average margin" +msgstr "" + +#: ../../features/standings-rules.rst:67 +msgid "The average margin over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:70 +msgid "Draw strength by wins" +msgstr "" + +#: ../../features/standings-rules.rst:71 +msgid "The sum of the number of wins of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:73 +msgid "This is also known in some circuits as *win points*, *opponent wins* or *opponent strength*." +msgstr "" + +#: ../../features/standings-rules.rst:76 +msgid "Draw strength by speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:77 +msgid "The sum of speaker scores of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:79 +msgid "Votes/ballots carried" +msgstr "" + +#: ../../features/standings-rules.rst:80 +msgid "The number of adjudicators that gave this team a win across all of their debates. Also known as the number of *ballots* or *judges* a team has." +msgstr "" + +#: ../../features/standings-rules.rst:83 +msgid "In cases where the panel is smaller or larger than 3, this number is normalised to be out of 3. For example, if a panel of five splits 3--2, then the winning team is recorded as gaining 1.8 votes, and the losing team is recorded as gaining 1.2. This also means that solo adjudicators are always worth three votes." +msgstr "" + +#: ../../features/standings-rules.rst:89 +msgid "Number of firsts" +msgstr "" + +#: ../../features/standings-rules.rst:90 +msgid "The number of debates in which the team came first. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:93 +msgid "Number of seconds" +msgstr "" + +#: ../../features/standings-rules.rst:94 +msgid "The number of debates in which the team came second. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:97 +msgid "Number of pullups before this round" +msgstr "" + +#: ../../features/standings-rules.rst:98 +msgid "The number of times the team has been pulled up as part of :ref:`draw generation `. You probably wouldn't use this as a metric to rank teams, but you may wish to display it as an \"extra metric\" in the team standings for transparency." +msgstr "" + +#: ../../features/standings-rules.rst:103 +msgid "Who-beat-whom" +msgstr "" + +#: ../../features/standings-rules.rst:104 +msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." +msgstr "" + +#: ../../features/standings-rules.rst:110 +msgid "If there are more than two teams tied, this metric is not applied." +msgstr "" + +#: ../../features/standings-rules.rst:112 +msgid "This metric can be specified multiple times. Each time who-beat-whom occurs, it applies to all the metrics earlier in the precedence than the occurrence in question." +msgstr "" + +#: ../../features/standings-rules.rst:118 +msgid "Speaker standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:120 +msgid "The speaker standings precedence is only used in speaker standings (*i.e.*, it doesn't affect the operation of the tournament). As for team standings, the **speaker standings precedence** specifies which metrics are used to rank speakers, with the second metric tie-breaking the first, the third tie-breaking the second, and so on. The **speaker standings extra metrics** are metrics that will be shown in the speaker standings, but won't be used to rank speakers." +msgstr "" + +#: ../../features/standings-rules.rst:135 +msgid "Total" +msgstr "Total" + +#: ../../features/standings-rules.rst:136 +msgid "The sum of all speaker scores attained by the speaker. Note that if a speaker misses a round, they'll typically be relegated to the bottom of the speaker standings by this metric." +msgstr "" + +#: ../../features/standings-rules.rst:140 +msgid "Average" +msgstr "" + +#: ../../features/standings-rules.rst:141 +msgid "The average of all speaker scores attained by the speaker." +msgstr "" + +#: ../../features/standings-rules.rst:143 +msgid "Trimmed mean" +msgstr "" + +#: ../../features/standings-rules.rst:144 +msgid "The average speaker score after excluding their highest and lowest speaker scores. Also known as the *high-low drop*, *truncated mean* or *Olympic average*." +msgstr "" + +#: ../../features/standings-rules.rst:148 +msgid "If the speaker has only one or two scores, this metric just returns the average of those scores, without excluding any." +msgstr "" + +#: ../../features/standings-rules.rst:151 +msgid "Standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:152 +msgid "The standard deviation of all speaker scores attained by the speaker. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:156 +msgid "Average speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:160 +msgid "Number of speeches given" +msgstr "" + +#: ../../features/standings-rules.rst:161 +msgid "The number of speaker scores associated with the speaker. (In tournaments where teams can rotate speakers, this may not be all rounds.) This metric is normally used as an \"extra\" (unranked) metric, because it'd be weird to rank by number of speeches given, but you can if you want to." +msgstr "" + +#: ../../features/standings-rules.rst:168 +msgid "Motion balance" +msgstr "" + +#: ../../features/standings-rules.rst:170 +msgid "The motion balance page applies a statistical test to estimate the degree to which a motion is imbalanced. This is calculated by first making an underlying assumption that a motion is generally fair. This will be our null hypothesis: that, for a given motion, affirmative teams won the same number of times as negative teams." +msgstr "" + +#: ../../features/standings-rules.rst:172 +msgid "Our chi-squared test will then be centred around disproving this hypothesis. If we disprove the hypothesis, we say that, in the context of this tournament and this draw, the motion ended up being unbalanced. However (technically speaking) if we fail to reject the null hypothesis, we would conclude that there is insufficient evidence to suggest that the motion was unbalanced in the context of this tournament." +msgstr "" + +#: ../../features/standings-rules.rst:174 +msgid "The test proceeds by `calculating the chi-squared stat, then running a series of tests `_. The tests are where we go a little off-book with respect to statistical methodology. Normally we would test at a single \"level of significance\" (ie. with a certain degree of certainty), but that's insufficient in telling us how bad a motion ended up being. So, instead, we conduct a range of tests with a range of levels of significance, and calculate the minimum level of significance that causes our null hypothesis to be rejected. Using the minimum level of significance that rejects our null hypothesis, we can then grade the fairness of the motion on a scale. Motions whose tests fall below a certain threshold will be considered fair, while others will be graded based on the minimum." +msgstr "" + +#: ../../features/standings-rules.rst:176 +msgid "For formats with topic selection, the same test is applied using the number of affirmative and negative vetoes in place of wins. The assumption here is that, during the time allotted for motion selection, teams estimate how appealing a motion is from their position, and then veto the topic that they feel is least favourable. Thus, the null hypothesis is that a motion that is perceived of as fair would be vetoed by affirmative and negative teams to an equal degree." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/team-code-names.po b/docs/locale/ca/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..b010f4c2fb7 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/team-code-names.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: ca_ES\n" + +#: ../../features/team-code-names.rst:5 +msgid "Team Code Names" +msgstr "" + +#: ../../features/team-code-names.rst:7 +msgid "Some tournaments use \"code names\" to obscure the institutional affiliations of teams. For example, rather than calling a team \"Harvard DK\", they would be presented in the draw as \"Butterfly\". A natural way to do this would be just to change the name of every team, but then the team's \"real name\" would be hidden from tournament staff, too." +msgstr "" + +#: ../../features/team-code-names.rst:13 +msgid "Instead, Tabbycat allows you to assign code names to teams, alongside their real names. This way, you can have code names show to participants, while real team names show in administrative views (*e.g.* allocating adjudicators). It also allows you to \"decode\" team names for elimination rounds or final tab release easily, without having to actually change every team's name." +msgstr "" + +#: ../../features/team-code-names.rst:19 +msgid "While the most frequently-used public views have been checked to ensure that they show only code names, not all views have been checked thoroughly. Please check views using demonstration data on a test site, configured in the same way that you would use it at your tournament, before using code names at a real tournament." +msgstr "" + +#: ../../features/team-code-names.rst:26 +msgid "Assigning code names" +msgstr "" + +#: ../../features/team-code-names.rst:28 +msgid "Most methods of importing teams, including the simple importer and the ``importtournament`` command, automatically assign code names to teams. The code name is the name of the emoji that is automatically assigned at the same time. For example, the team assigned 🦋 will be code-named \"Butterfly\"." +msgstr "" + +#: ../../features/team-code-names.rst:33 +msgid "If you wish to use your own code names, you need to set the \"code name\" field of each team. Here are two ways to do this:" +msgstr "" + +#: ../../features/team-code-names.rst:36 +msgid "**Edit Database area:** Enter the Edit Database area, and under **Participants > Teams**, click **Change**. Modify each team one by one, entering a new code name then saving." +msgstr "" + +#: ../../features/team-code-names.rst:39 +msgid "``importtournament`` **command:** If you imported a tournament from CSV files, you can just add a ``code_name`` column to your teams CSV file." +msgstr "" + +#: ../../features/team-code-names.rst:43 +msgid "Displaying code names" +msgstr "" + +#: ../../features/team-code-names.rst:45 +msgid "Code names are disabled by default; to enable then, go to **Setup > Configuration > Public Options**, and change the **Team code names** option. You can choose between the following options:" +msgstr "" + +#: ../../features/team-code-names.rst:49 +msgid "Do not use code names" +msgstr "" + +#: ../../features/team-code-names.rst:50 +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: ../../features/team-code-names.rst:51 +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:52 +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:53 +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: ../../features/team-code-names.rst:55 +msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." +msgstr "" + +#: ../../features/team-code-names.rst:58 +msgid "One typical use is as follows:" +msgstr "" + +#: ../../features/team-code-names.rst:60 +msgid "Before the tournament, set the team code names setting to *Use code names for public; real names with code names in tooltips for admins*. This hides real names from anything participants would see, but continues to refer to teams in administrative views by real names." +msgstr "" + +#: ../../features/team-code-names.rst:64 +msgid "After the break is announced, set it to *Use real names everywhere, and show code names in tooltips*. This basically decodes all team names, while still allowing people to look up the (now former) code name of a team." +msgstr "" + +#: ../../features/team-code-names.rst:68 +msgid "If you're enabling team codes, you probably want to disable the **Show team institutions** option too." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/user-accounts.po b/docs/locale/ca/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..d0d06fdb02e --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/user-accounts.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-01 23:41\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: ca_ES\n" + +#: ../../features/user-accounts.rst:5 +msgid "User Accounts" +msgstr "" + +#: ../../features/user-accounts.rst:7 +msgid "For obvious reasons, user logins are required to data entry and administrative functions. Conceptually, there are four levels of access:" +msgstr "" + +#: ../../features/user-accounts.rst:14 +msgid "Access" +msgstr "" + +#: ../../features/user-accounts.rst:15 +msgid "Should be used by" +msgstr "" + +#: ../../features/user-accounts.rst:16 +msgid "Grants access to" +msgstr "" + +#: ../../features/user-accounts.rst:17 +msgid "Is capable of" +msgstr "" + +#: ../../features/user-accounts.rst:19 +msgid "Public" +msgstr "Públic" + +#: ../../features/user-accounts.rst:20 +msgid "The public" +msgstr "" + +#: ../../features/user-accounts.rst:21 +msgid "Publicly available information." +msgstr "" + +#: ../../features/user-accounts.rst:22 +msgid "Viewing things, and submitting new ballots/feedback if electronic submission is permitted by the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:24 +msgid "Assistant" +msgstr "" + +#: ../../features/user-accounts.rst:25 +msgid "Data entry helpers" +msgstr "" + +#: ../../features/user-accounts.rst:26 +msgid "The assistant area" +msgstr "" + +#: ../../features/user-accounts.rst:27 +msgid "Entering, confirming and printing ballots and feedback, checking in ballots and people, and displaying the draw." +msgstr "" + +#: ../../features/user-accounts.rst:29 +msgid "Superuser" +msgstr "" + +#: ../../features/user-accounts.rst:30 +msgid "Chief adjudicators" +msgstr "" + +#: ../../features/user-accounts.rst:31 +msgid "The administrator and assistant areas" +msgstr "" + +#: ../../features/user-accounts.rst:32 +msgid "Generating draws, allocating adjudicators and venues, and editing ballots, feedback and adjudicator scores." +msgstr "" + +#: ../../features/user-accounts.rst:34 +msgid "Staff and superuser" +msgstr "" + +#: ../../features/user-accounts.rst:35 +msgid "Tab director" +msgstr "" + +#: ../../features/user-accounts.rst:36 +msgid "The administrator, assistant and Edit Database areas" +msgstr "" + +#: ../../features/user-accounts.rst:37 +msgid "Editing the database directly." +msgstr "" + +#: ../../features/user-accounts.rst:39 +msgid "If a user account on the tab system belongs to someone who is also a participant in the tournament (*e.g.*, a chief adjudicator), these two capacities are completely separate. User accounts are only used to regulate access to administrative functions. Tabbycat doesn't know about any relationship between user accounts, and who is participating in the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:42 +msgid "Account roles" +msgstr "" + +#: ../../features/user-accounts.rst:44 +msgid "You should create an account for each person who needs to access the tab system. When you create an account in the Edit Database area, there are checkboxes for **Superuser status** and **Staff access**. Superusers have access to the administrator area, and staff have access to the Edit Database area. You should grant permissions as follows:" +msgstr "" + +#: ../../features/user-accounts.rst:46 +msgid "Tab directors should get both superuser and staff status." +msgstr "" + +#: ../../features/user-accounts.rst:47 +msgid "Chief adjudicators and their deputies should get superuser status, but not staff status." +msgstr "" + +#: ../../features/user-accounts.rst:48 +msgid "Tab assistants (helping only with data entry) should get neither superuser nor staff status." +msgstr "" + +#: ../../features/user-accounts.rst:50 +msgid "Tournament participants (other than tab staff) do not need an account. Everything they need to know can be accessed without an account. If you're using electronic ballots or electronic feedback, they access these using a URL that only they know (see :ref:`private-urls`)." +msgstr "" + +#: ../../features/user-accounts.rst:52 +msgid "When doing data entry, users with superuser status should use the **assistant area**. The administrator area is intended for managing the tournament, and doesn't include someand should **not** in general be used for data entry. Specifically, the administrator area lacks checks that are important for data integrity assurance. It should be used only to override the normal :ref:`data entry ` procedure, for example, to unconfirm or modify a ballot." +msgstr "" + +#: ../../features/user-accounts.rst:54 +msgid "The **Edit Database** interface should not be used except where it is actually necessary. There are a few functions which require this, but as a principle, it shouldn't be used as a matter of course." +msgstr "" + +#: ../../features/user-accounts.rst:56 +msgid "In theory, you could grant an account staff status but not superuser status. But then they'd be allowed to edit the database, but not run the tournament, which would be weird." +msgstr "" + +#: ../../features/user-accounts.rst:59 +msgid "Adding accounts" +msgstr "" + +#: ../../features/user-accounts.rst:61 +msgid "To add an account:" +msgstr "" + +#: ../../features/user-accounts.rst:63 +msgid "Go to the Edit Database area of the site." +msgstr "" + +#: ../../features/user-accounts.rst:65 +msgid "Under **Authentication and Authorization**, click the **Add** link next to **Users**." +msgstr "" + +#: ../../features/user-accounts.rst:67 +msgid "Ask the user to enter a username, password and possibly email address." +msgstr "" + +#: ../../features/user-accounts.rst:69 +msgid "Only they should know what the password is." +msgstr "" + +#: ../../features/user-accounts.rst:70 +msgid "If you're hosting on the internet, all passwords should be at least moderately strong!" +msgstr "" + +#: ../../features/user-accounts.rst:71 +msgid "Passwords are not stored as raw passwords, so you can't figure out what their password is." +msgstr "" + +#: ../../features/user-accounts.rst:72 +msgid "The email address is optional." +msgstr "" + +#: ../../features/user-accounts.rst:73 +msgid "This email address is only used to reset their password if they forget it, and has nothing to do with the email address that Tabbycat uses to send emails to tournament participants (*e.g.* private URL links)." +msgstr "" + +#: ../../features/user-accounts.rst:75 +msgid "If they are being assigned superuser and/or staff status, check the relevant boxes." +msgstr "" + +#: ../../features/user-accounts.rst:77 +msgid "Click \"Save\" or \"Save and add another\"." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/features/venue-constraints.po b/docs/locale/ca/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..2d399855dea --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/features/venue-constraints.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: ca_ES\n" + +#: ../../features/venue-constraints.rst:5 +msgid "Venue Constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:7 +msgid "Tabbycat supports a basic form of venue constraints. A **venue constraint** is a requirement that a particular **team, adjudicator, institution** or **division** be assigned to a venue in a particular **venue category**. Typical uses would include:" +msgstr "" + +#: ../../features/venue-constraints.rst:12 +msgid "Meeting venue accessibility requirements of particular teams (*e.g.* step-free access)" +msgstr "" + +#: ../../features/venue-constraints.rst:14 +msgid "Placing adjudication core and tab team members close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:15 +msgid "Keeping all debates in a division in one location" +msgstr "" + +#: ../../features/venue-constraints.rst:17 +msgid "Constraints apply to **venue categories**, not individual venues. That is, you specify that (say) a team should be given a venue from a particular *list* of venues. Of course, it's permissible for a venue category to have only one venue in it." +msgstr "" + +#: ../../features/venue-constraints.rst:22 +msgid "The algorithm used to satisfy venue constraints is not guaranteed to be optimal. In some rare cases, it may propose an allocation that fails some constraints, even though some other allocation would have satisfied all (or more) constraints. In almost all practical circumstances, however, it should work, and save human effort (and time) in specially allocating rooms." +msgstr "" + +#: ../../features/venue-constraints.rst:29 +msgid "Adding venue categories" +msgstr "" + +#: ../../features/venue-constraints.rst:31 +msgid "Before you add venue constraints, you first need to add venue categories. Each venue category is a list of venues, typically satisfying a particular need. For example, you might have a category for each of the following:" +msgstr "" + +#: ../../features/venue-constraints.rst:35 +msgid "Venues with step-free access" +msgstr "" + +#: ../../features/venue-constraints.rst:36 +msgid "Venues that are close to general assembly (the briefing room)" +msgstr "" + +#: ../../features/venue-constraints.rst:37 +msgid "Venues that are close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:38 +msgid "Venues that are, or venues that are not, being live-streamed" +msgstr "" + +#: ../../features/venue-constraints.rst:40 +msgid "Each venue can be in as many categories as you like (or none at all)." +msgstr "" + +#: ../../features/venue-constraints.rst:44 +msgid "To add or edit venue categories, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Categories**. Note that this page will show all existing Venue Categories first before showing the blank forms that allow you to create new categories. Give your category a name (like \"Step-free access\"), assign it some venues, then click the \"Save Venue Categories\" button at the bottom of the page." +msgstr "" + +#: ../../features/venue-constraints.rst:47 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue categories\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:50 +msgid "Adding venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:52 +msgid "To add or edit venue constraints, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Constraints**. Note that this page will show all existing Venue Constraints first before showing the blank forms that allow you to create new categories. Note that the \"Constrainee ID\" field should let you select from a dropdown or type in the name of an adjudicator, institution, or team (rather than having to lookup the exact ID)." +msgstr "" + +#: ../../features/venue-constraints.rst:57 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue constraints\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:59 +msgid "For each constraint, you need to specify four things:" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "**Category**" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "The venue category to which the subject of this constraint should be locked." +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "**Priority**" +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "This is a number used to resolve conflicts between constraints. Constraints with higher priority (greater number) take precedence over those with lower priority. If none of your constraints will ever conflict, then the priority is arbitrary (but it must still be specified)." +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "**Subject content** **type**" +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "The type of subject to which this constraint relates: adjudicator, team, institution or division." +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "**Subject ID**" +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "Which adjudicator, team, institution or division the constraint relates to. The textbox takes a number (the ID of the object in the database), but you can search for the subject by clicking on the search icon next to it. This will bring up a table of objects of the type specified in \"subject content type\" for you to choose from. (You need to select the subject content type first.)" +msgstr "" + +#: ../../features/venue-constraints.rst:86 +msgid "Applying venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:88 +msgid "If you don't have any venue constraints for adjudicators, venue constraints are applied automatically when the draw is generated." +msgstr "" + +#: ../../features/venue-constraints.rst:91 +msgid "However, if you have one or more venue constraints for adjudicators, it's not possible to take adjudicator venue constraints into account during draw generation, because the adjudicator allocation isn't known then. You'll need to run the venue allocation yourself after you've allocated adjudicators." +msgstr "" + +#: ../../features/venue-constraints.rst:96 +msgid "To run venue allocation, go to **Edit Venues** (while looking at the draw), then in the screen where you can edit venues, click the **Auto Allocate** button. You can also do this at any other point (say, after adding a new venue constraint) if, for whatever reason, you would like to re-run the venue allocation algorithm." +msgstr "" + +#: ../../features/venue-constraints.rst:102 +msgid "If a venue constraint couldn't be met, a message will show in the \"conflicts/flags\" column of the draw. A constraint might not be met for a number of reasons:" +msgstr "" + +#: ../../features/venue-constraints.rst:106 +msgid "It could be that constraints of different parties (say, one team and one adjudicator) conflicted, so only one could be fulfilled." +msgstr "" + +#: ../../features/venue-constraints.rst:108 +msgid "It could be that all available rooms in the relevant category were already taken by other, higher-priority constraints." +msgstr "" + +#: ../../features/venue-constraints.rst:110 +msgid "It could just be one of those edge cases that's too hard for the naïve algorithm to handle." +msgstr "" + +#: ../../features/venue-constraints.rst:113 +msgid "Currently, Tabbycat doesn't tell you which of these happened, so if the venue allocation fails to meet all your constraints, it's on you to figure out why. In most scenarios, we imagine you'll have few enough constraints that this will be obvious; for example, if the chief adjudicator is judging a team with accessibility requirements, it might be obvious that the latter's constraint took priority. We might in future add support for more useful guidance on conflicting constraints, but we currently consider this to be of low priority." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/guide/comparisons.po b/docs/locale/ca/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..061d88acf3c --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/guide/comparisons.po @@ -0,0 +1,338 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-04-05 21:07\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: ca_ES\n" + +#: ../../guide/comparisons.rst:5 +msgid "Tab Software Comparisons" +msgstr "" + +#: ../../guide/comparisons.rst:7 +msgid "If you're reading this, you're probably interested in using Tabbycat, and wondering how it compares to other options. Perhaps you're a long-time user of another tab system, and wondering what Tabbycat can do better. This page is our effort to help answer this. Tabbycat's been around since 2010, but since BP support is a recent addition (2017), we thought it would be useful to outline the differences between Tabbycat and other BP software." +msgstr "" + +#: ../../guide/comparisons.rst:9 +msgid "Obviously, this page is written by the developers of Tabbycat, and naturally, we have our biases. But rarely is there a single best option for everyone and every situation: different tab programs imagine the tabbing process in a different ways and have made unique trade-offs in their development process and design decisions. So we've tried to be as fair and accurate as we can, and we've consulted experienced tab directors (other than us!) and chief adjudicators to help provide a balanced overview." +msgstr "" + +#: ../../guide/comparisons.rst:11 +msgid "At present, this guide just focuses on the major options available for the British Parliamentary format, although we'd like to expand this to incorporate the other formats that Tabbycat supports at some point in the future. As with all of our documentation, the source for this page `is on GitHub `_, and we welcome feedback and contributions." +msgstr "" + +#: ../../guide/comparisons.rst:14 +msgid "On feature lists" +msgstr "" + +#: ../../guide/comparisons.rst:16 +msgid "In the first draft of this document, we had a table that listed every feature we could think of, along with which software does and doesn't support it. This ended up not being a great idea, for a couple of reasons." +msgstr "" + +#: ../../guide/comparisons.rst:18 +msgid "Firstly, the largest feature disparities are for relatively niche features. All of the software discussed can do the basics necessary to run a tournament: generate draws, allocate adjudicators, enter results, etc. As a result, we will — like a good whip speech — be comparative and note key feature disparities when discussing each alternative software directly." +msgstr "" + +#: ../../guide/comparisons.rst:20 +msgid "Secondly, we felt that the 'checklist' approach to comparing tab software would do a disservice to the reasons you would actually choose one software over another. Except where a niche capability is essential, raw technical specifications rarely define the experience of using a product such as a phone, a car, or indeed, tabbing software. With Tabbycat, we've spent eight years continuously refining the tabbing workflow and smoothing out rough edges, and we believe you'll find the result extremely user-friendly and robust. As always, the best way to check this out is by :ref:`setting up a demo site and taking it for a spin `!" +msgstr "" + +#: ../../guide/comparisons.rst:23 +msgid "Comparison with Tabbie2" +msgstr "" + +#: ../../guide/comparisons.rst:26 +msgid "Centralised site vs individual sites" +msgstr "" + +#: ../../guide/comparisons.rst:28 +msgid "Tabbie2 and Tabbycat are both internet-based systems. Tabbie2 hosts all tournaments on a single site. However, when using Tabbycat, each tournament or organisation sets up its own site. Each model has its advantages and disadvantages in different areas:" +msgstr "" + +#: ../../guide/comparisons.rst:30 +msgid "**User identification**. Tabbie2's centralised model allows for site-wide user accounts for all tournament participants. This means that they can use the same login information for all tournaments, and perform tasks such as submitting ballots and feedback through that unified account. If you're in an established circuit, most of your participants probably already have user accounts which are identified and collected (via e-mail addresses) during registration. If you're in a newer circuit, or one where Tabbie2 is rarely used, most of your participants will probably need to create an account — a process which Tabbie2 handles by e-mailing them a request to do so when that person is added to your tournament." +msgstr "" + +#: ../../guide/comparisons.rst:32 +msgid "In Tabbycat's decentralised model, there is no persistent 'account' for tournament participants on each tab site or across different tab sites. Indeed, the only people who can log in to the site are those who have been given accounts by the tab director, such as tab staff and members of the adjudication core." +msgstr "" + +#: ../../guide/comparisons.rst:34 +msgid "For secure e-ballot and e-feedback submissions, Tabbycat assigns a \"private URL\" to each adjudicator or team. This is essentially a password that allows a participant to only submit data that they should have access to in that specific tournament. This means participants don't need user accounts and you don't need to collect user account information; however if your tournament uses e-ballots or e-feedback you will need to distribute those private URLs to participants. Tabbycat can e-mail these to participants for you, or print them to give them to participants, or you could distribute the URLs using your own means." +msgstr "" + +#: ../../guide/comparisons.rst:36 +msgid "**Control over data**. Some participant information in Tabbie2 is shared between tournaments, like their names and conflicts (discussed below). This means participants can manage it directly through their user accounts, without needing to go through you. On the other hand, this requires your participants to co-operate in keeping their accounts up to date, and to provide the correct e-mail address during registration (you'd be surprised how many don't). Furthermore, participants may look to you for assistance, and your ability to help is limited to directing them through Tabbie2 channels—easy enough if they forget their password, but not so much if they forget their account's e-mail address." +msgstr "" + +#: ../../guide/comparisons.rst:38 +msgid "Because each Tabbycat site is its own, you'll need to collect and import all participant details yourself. This might seem like more to do, but it also means there's no need to match your data to existing accounts, which can be time-consuming and prone to participant error. It also means you can freely change data, for example, to correct a participant's name or institution, or to add data like conflicts on an ad-hoc basis." +msgstr "" + +#: ../../guide/comparisons.rst:40 +msgid "**Data privacy**. Conflicts are typically entered into the tab, and are sensitive information. Tabbie2's centralisation allows for conflicts to be self-nominated by users and stored in their user accounts. This, in theory, saves the need for users to report conflicts to tab directors and other tournament staff. In practice, however, only special \"super\" users on Tabbie2 have access to the stored conflicts of users (otherwise anyone could access a user's conflicts by creating a new tournament and adding that user as a participant), so many tournaments need to collect this information from participants anyway." +msgstr "" + +#: ../../guide/comparisons.rst:42 +msgid "Tabbycat's decentralised model means that no-one will have access to conflict information except for the tab staff of each individual instance of Tabbycat. Unlike Tabbie2, Tabbycat's developers do not have any access to your tournament's data — conflicts or otherwise. However, to help us continually improve the software, Tabbycat does send error reports to its developers if there is a serious bug or crash in the code, which could potentially contain confidential information depending on which page triggered the report. As a result of Tabbycat's decentralised data storage, each tournament does need to collect and enter conflicts as part of their registration process." +msgstr "" + +#: ../../guide/comparisons.rst:44 +msgid "**When things go wrong**. In our view, this is probably the most important factor. Obviously, we all hope you never have to fix things. But no software is perfect, and software developed by volunteers in their spare time (as both Tabbie2 and Tabbycat are) is especially imperfect. On occasion, glitches or edge cases occur, and fixing them requires you to directly edit the offending data in the database. Being able to do this without assistance can be the difference between a delay of minutes and a delay of hours." +msgstr "" + +#: ../../guide/comparisons.rst:46 +msgid "In Tabbycat, because it's your site, you have full control of the database, and can edit it through Tabbycat's \"Edit Database\" area. This allows you to fix things (or break things, if you're not careful!). Tabbie2's centralisation prevents this—for obvious reasons, only Tabbie2's developers have direct database access, which makes their intervention necessary if direct database access is required to resolve a problem." +msgstr "" + +#: ../../guide/comparisons.rst:49 ../../guide/comparisons.rst:138 +msgid "Running your tournament" +msgstr "" + +#: ../../guide/comparisons.rst:51 +msgid "Tabbie2 and Tabbycat have broadly similar workflows for running rounds; at least on paper. Key differences are discussed below:" +msgstr "" + +#: ../../guide/comparisons.rst:53 +msgid "**Data import**. Tabbie2 takes CSV files for import. Tabbycat has a CSV file importer, but it's (for now) only accessible through a command-line interface and is only expected to be used for large tournaments by experienced tab directors. As a more user-friendly alternative, Tabbycat also has an import wizard that's designed to make it easy to copy and paste CSV data. This works well for small and medium scale tournaments, but is cumbersome for large ones." +msgstr "" + +#: ../../guide/comparisons.rst:55 +msgid "**Public interface**. Tabbycat can optionally publish the entire draw, as well as current team point standings and results of previous rounds, online. Tabbie2 shows to a logged-in user information about the debate that user is in for that round, but doesn't allow people to check up on people who are not themselves." +msgstr "" + +#: ../../guide/comparisons.rst:57 +msgid "**Position rotation**. Tabbie2 uses an algorithm known as the \"Silver Line algorithm\", which keeps swapping pairs of teams until no further improvement is found. Because it stops at any 'local optimum', this method isn't guaranteed to be the best possible distribution of positions, and for large tournaments it often isn't. Tabbycat instead uses the `Hungarian algorithm `_, an well-known algorithm that finds the (globally) optimal allocation of positions. (One might describe this algorithm, in technical terms, as 'powerful'.) Tabbycat also produces a position balance report, so that in every round you can see which teams have unbalanced position histories." +msgstr "" + +#: ../../guide/comparisons.rst:59 +msgid "**Venue allocations**. Both Tabbie2 and Tabbycat allow for debate venues to be automatically assigned and manually edited. Tabbycat also allows you to specify 'venue constraints' that can automatically match particular participants with their accessibility requirements, or alternatively allow for tournament staff, such as a convenor or chief adjudicator, to be allocated rooms close to the briefing hall or tab room." +msgstr "" + +#: ../../guide/comparisons.rst:61 +msgid "**Ballot entry**. Both Tabbie2 and Tabbycat support entering ballots online ('e-ballots') and entering ballots from paper from the tab room. Tabbie2 was built with e-ballots in mind, while Tabbycat was originally built for tab room staff, and the ballot entry paradigms reflect that. Both are flexible, just a little different—the best way to understand the difference is to try a demo of each. Also, Tabbycat takes note of the order in which speakers in a team spoke (i.e. who was PM and who was DPM), whereas Tabbie2 just records scores." +msgstr "" + +#: ../../guide/comparisons.rst:63 +msgid "As discussed earlier in *User identification*; Tabbie2's e-ballots are tied to unified user accounts, whereas Tabbycat's e-ballots are tied to per-tournament and per-adjudicator 'private URLs'." +msgstr "" + +#: ../../guide/comparisons.rst:65 +msgid "**Break and speaker categories**. Tabbie2 has ESL, EFL and novice markers, which you can enable in a tournament's settings. Tabbycat supports user-defined break and speaker categories, so if your tournament has ESL, EFL, novice or any other form of category, you can define and customise those categories as needed." +msgstr "" + +#: ../../guide/comparisons.rst:67 +msgid "**Adjudicator allocation algorithm**. Both Tabbie2 and Tabbycat use an algorithm to recommend an initial allocation of adjudicators to debates. In principle, they both work by assigning \"costs\" to allocations, and trying to find the minimum-cost assignment. Some notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:69 +msgid "Tabbie2 uses simulated annealing, which is not guaranteed to be optimal and technically needs to be tuned to be effective (which you're probably not doing). Tabbycat uses the Hungarian algorithm, which guarantees an optimal solution." +msgstr "" + +#: ../../guide/comparisons.rst:70 +msgid "On the other hand, the Hungarian algorithm can't account for relationships between adjudicators on a panel, so adjudicator-adjudicator conflicts aren't considered by Tabbycat's algorithm (though they are highlighted in the interface)." +msgstr "" + +#: ../../guide/comparisons.rst:71 +msgid "Tabbycat's cost function is simpler and more naive. On the other hand, Tabbie2's is more complicated and can be rather opaque (even if you read its source code)." +msgstr "" + +#: ../../guide/comparisons.rst:72 +msgid "Tabbie2 allows for single-gender panels to be charged an additional cost. Tabbycat's algorithm doesn't, but the interface does provide a way to easily check for this visually." +msgstr "" + +#: ../../guide/comparisons.rst:73 +msgid "Tabbie2 automatically calculates the importance of a room based on its bracket (team points). In Tabbycat, debate importance can be assigned for all debates automatically based on on a room's bracket or the quantity of live break categories inside it. Instead of — or subsequent to — automatic classification any importance value can be manually tweaked as desired. These options mean there is a greater flexibility in determining which debates the allocation algorithm should prioritise." +msgstr "" + +#: ../../guide/comparisons.rst:75 +msgid "**Adjudicator allocation interface**. While both interfaces use drag and drop interactions, and allow for color highlights to help identify adjudicators by gender, region, and feedback rating, Tabbycat's allocation interface was designed to be usable on both small screens and projectors, and has a number of extra features that can help inform allocations. These features include:" +msgstr "" + +#: ../../guide/comparisons.rst:77 +msgid "Clashes are shown directly in the interface when they apply, but dragging an adjudicator will also show you the potential conflicts that would occur if they were relocated in a new panel. This can make it much easier to avoid creating new clashes when shifting adjudicators around the draw." +msgstr "" + +#: ../../guide/comparisons.rst:78 +msgid "An inline display of an estimate of whether a team is 'live' for each of their break categories — i.e. whether they are 'safe' (have enough points to break); 'dead' (cannot gain enough points to break); or 'live' (still in contention)." +msgstr "" + +#: ../../guide/comparisons.rst:79 +msgid "'History' conflicts (where an adjudicator has seen a team before, or previously was on a panel with another judge) are displayed so they can be avoided." +msgstr "" + +#: ../../guide/comparisons.rst:80 +msgid "Each adjudicator is present as occupying a particular position (chair, panellist, trainee) rather than having those positions calculated automatically." +msgstr "" + +#: ../../guide/comparisons.rst:81 +msgid "Chairs can be 'swapped' by dragging adjudicators on top of each other, and an 'unallocated' area can be used to view and store adjudicators that have not been allocated." +msgstr "" + +#: ../../guide/comparisons.rst:83 +msgid "**Adjudicator feedback customisation**. Both Tabbie2 and Tabbycat have built-in adjudicator feedback forms, and allow you to specify the questions on the feedback form. Notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:85 +msgid "Setting up questions is painless on neither system. Tabbycat requires you to use the Edit Database area; Tabbie2 makes you click through a slightly more opaque maze of pages and forms." +msgstr "" + +#: ../../guide/comparisons.rst:86 +msgid "Tabbycat allows for a richer range of types of questions than Tabbie2 does." +msgstr "" + +#: ../../guide/comparisons.rst:87 +msgid "Tabbie2 allows you to specify different questionnaires for team-on-chair, chair-on-panellist and panellist-on-chair. Tabbycat only differentiates between team-on-adjudicator and adjudicator-on-adjudicator." +msgstr "" + +#: ../../guide/comparisons.rst:88 +msgid "Tabbycat gives you more control over who is expected to submit feedback on whom; e.g. whether teams submit on panellists, and whether panellists submit on each other. In Tabbie2, you can effect this with blank questionnaires, but only for the three options listed above." +msgstr "" + +#: ../../guide/comparisons.rst:89 +msgid "Tabbycat can, optionally, automatically incorporate feedback into adjudicator scores using a naive weighted average with the adjudicator base score. This can be disabled by simply setting feedback weight to zero, as some adjudication cores prefer. Tabbie2 has no ability to automatically incorporate feedback." +msgstr "" + +#: ../../guide/comparisons.rst:90 +msgid "Tabbycat produces a \"shame list\" of unsubmitted feedback, which you can optionally publish on the public-facing site to try to incentivise submission." +msgstr "" + +#: ../../guide/comparisons.rst:92 +msgid "(How participants access adjudicator feedback submission is discussed in *User identification* above.)" +msgstr "" + +#: ../../guide/comparisons.rst:95 ../../guide/comparisons.rst:149 +msgid "Other considerations" +msgstr "Altres consideracions" + +#: ../../guide/comparisons.rst:97 +msgid "**Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface." +msgstr "" + +#: ../../guide/comparisons.rst:99 +msgid "**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:101 +msgid "**Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level." +msgstr "" + +#: ../../guide/comparisons.rst:103 +#, python-format +msgid "**Hosting location**. Tabbycat recommends using Heroku, an established cloud platform service for deploying web applications. Heroku is in turn hosted on Amazon Web Services (AWS). Both Heroku and AWS are highly reliable and widely used; downtime for both has historically been (at worst) less than 0.05% over an annual period. Tabbie2 is hosted on `Uberspace `_; a pay-what-you-want web hosting service. To the best of our knowledge, uptime statistics are not available." +msgstr "" + +#: ../../guide/comparisons.rst:105 +msgid "**Multi-format support**. If you are interested in tabbing both four- and two- team formats there may be some value in using and learning Tabbycat as it will let you use the same software in both settings." +msgstr "" + +#: ../../guide/comparisons.rst:108 +msgid "Comparison with Tournaman" +msgstr "" + +#: ../../guide/comparisons.rst:111 +msgid "Native app vs web app" +msgstr "" + +#: ../../guide/comparisons.rst:113 +msgid "The crucial strength — and limitation — of Tournaman is that it is a Windows desktop application. Naturally, being a desktop app limits the features it can offer, relative to web apps like Tabbycat or Tabbie2, since it can't offer any online access. On the other hand, working with a desktop app can often be simpler than a web app." +msgstr "" + +#: ../../guide/comparisons.rst:115 +msgid "**Installation**. You'll need to run (or emulate) a Windows machine to run Tournaman. Assuming you're using Windows, Tournaman's installation process is easy and familiar." +msgstr "" + +#: ../../guide/comparisons.rst:117 +#, python-format +msgid "Tabbycat has a simple one-click installation process if you're deploying online (:ref:`to Heroku `). However, if you want to run Tabbycat on your own computer rather than a website, this is substantially more complicated. Local installations of Tabbycat work by having your computer emulate a web server, and while we've tried to make this as accessible as possible, a technical background is definitely helpful for this. Using our :ref:`Docker-based method ` should be simple, but it's not 100% reliable, and if it fails it can be difficult to figure out why. If internet access is available, we recommend running Tabbycat on Heroku." +msgstr "" + +#: ../../guide/comparisons.rst:119 +msgid "**Online features**. Because Tournaman runs fully offline, it naturally can't support many internet-based features: electronic ballots, online publication of draws and live team standings, and integrated tab release. Typically, if you wanted to publish anything online from Tournaman, you'd do so by publishing the files that Tournaman generates locally. In Tabbycat, all of these are built in, so there's a single website for all tab information." +msgstr "" + +#: ../../guide/comparisons.rst:121 +msgid "**Multi-user access**. Tournaman can be configured to allow networked ballot entry, but in order to set it up, you need to be comfortable with basic computer networking. This works best on small isolated networks that you control directly, e.g. a dedicated router set up in the tab room. It's not a great idea to set this up on computers connected to a university-wide network: many IT departments won't permit it, and even if they do, it's insecure, since anyone on the network can access it." +msgstr "" + +#: ../../guide/comparisons.rst:123 +msgid "Tournaman's multi-user access is designed primarily to allow tab assistants to enter data. Key administrative tasks, such as draw generation and adjudicator allocation, must still be done on the computer on which Tournaman is installed. In contrast, web-based systems like Tabbycat and Tabbie2 allow users to login from any internet-connected device to access the functionality permitted by their account. This is often extremely useful if, say, you want to log in to a lectern computer, or have tab assistants work on mobile devices that they have with them." +msgstr "" + +#: ../../guide/comparisons.rst:125 +msgid "If you choose to install Tabbycat offline (rather than on Heroku), it's also possible to have the computer on which the local installation resides serve the website to other computers on the same network. This then permits anyone on the same network to access the \"local\" installation as if it were hosted on the internet. However, like Tournaman, such a configuration requires at least basic networking experience, and for security reasons is only advisable on small isolated networks that you control." +msgstr "" + +#: ../../guide/comparisons.rst:127 +msgid "**Backups and portability**. Both Tournaman and Tabbycat (unlike Tabbie2) store data in a way that is completely accessible to you. Tournaman does this by saving files on your computer's hard drive, while Tabbycat stores data in a SQL database that belongs to you." +msgstr "" + +#: ../../guide/comparisons.rst:129 +msgid "It should be emphasized that in both Tournaman and Tabbycat, actually needing to revert to a backup is extremely rare. Almost always, any glitch or error that breaks the tab can be resolved by editing data directly, without needing to \"roll back\" to a previous state. In Tournaman, this is done by editing the files that it writes to your hard drive (they're just XML files). In Tabbycat, this is done through the \"Edit Database\" area." +msgstr "" + +#: ../../guide/comparisons.rst:131 +msgid "Tournaman's storage of data as XML files makes backups easy, although effort should be made to have backups stored on other computers or the cloud (e.g. on Dropbox) in case the tab computer breaks or is lost. Restoring data from those backups (or transferring the tab to a different computer) is typically a simple process of copying the files back to the original location." +msgstr "" + +#: ../../guide/comparisons.rst:133 +msgid "As for Tabbycat, in online installations, backups can be taken easily using Heroku's `database backup capability `_. However, restoring backups requires you to have the Heroku command line interface installed. In offline installations, PostgreSQL's \"dump\" and \"restore\" commands are recommended, and may require some perseverance to get going reliability, particularly if you don't have prior SQL experience." +msgstr "" + +#: ../../guide/comparisons.rst:135 +msgid "Generally there is no need for data portability when working with an online copy of Tabbycat — the website can be accessed anywhere. However if working with an offline/local copy, a tab can be transferred between machines by creating a backup of the database and restoring it to the other machine's database (doing so requires technical knowledge)." +msgstr "" + +#: ../../guide/comparisons.rst:140 +msgid "**Adjudicator feedback**. Tournaman lets you assign judges rankings, however it does not directly manage or assist the process of collecting judge feedback. As such tab directors generally need to run a parallel feedback system, and then manually copy over changes to an adjudicator's ranking into Tournaman itself. In contrast, Tabbycat has integrated methods for collecting judge feedback that allow it to be more easily issued, collected, viewed, and automatically translated into modifications to an adjudicator's rank." +msgstr "" + +#: ../../guide/comparisons.rst:142 +msgid "**Adjudicator allocation**. Tournaman has a fixed judge ranking scale and (from what we understand) has a relatively fixed procedure for allocating panels according to their absolute ranks. We are unsure about the exact mechanics of how this works, but broad details are `available here `_." +msgstr "" + +#: ../../guide/comparisons.rst:144 +msgid "As with the discussion of allocation interfaces vis-à-vis Tabbie2, there are a number of features in the Tabbycat allocation interface that mean it is more easily used in a collaborative setting and can display additional information to inform draws." +msgstr "" + +#: ../../guide/comparisons.rst:146 +msgid "**Flexibility in draw rules**. As we've said, all major tab systems are WUDC-compliant. But if you want to deviate from WUDC rules, Tournaman has a few more options. Whereas Tabbycat allows you to use intermediate brackets (rather than pull-ups), Tournaman allows you to sacrifice power-pairing integrity for position balance (though this generally isn't necessary to achieve position balance), fold within brackets and avoid teams hitting their own institution. On the other hand, Tabbycat allows you to tune how position balance trades off between teams (which the WUDC constitution doesn't precisely specify)." +msgstr "" + +#: ../../guide/comparisons.rst:151 +msgid "**Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2." +msgstr "" + +#: ../../guide/comparisons.rst:153 +msgid "**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:155 +msgid "**Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed." +msgstr "" + +#: ../../guide/comparisons.rst:158 +msgid "Comparison with hand tabbing" +msgstr "" + +#: ../../guide/comparisons.rst:160 +msgid "Hand tabbing is easy, until it isn't. Traditionally, using a spreadsheet has been the go-to option for smallish tournaments because, hey, you're pretty handy with Excel, right? Making draws in spreadsheets (or on paper) seems like a pretty approachable task; ultimately it's all cells and formulae and numbers unlike the more arcane underpinnings of actual tab software." +msgstr "" + +#: ../../guide/comparisons.rst:162 +msgid "However, hand tabbing does require you to have a good working knowledge of how your format's rules work and how your spreadsheet software of choice can be made to work them. That process might be easy for you, or it might not be. But, either way, we'd like to think that Tabbycat offers a better alternative to hand-tabbing; regardless of how well you can actually hand-tab. The setup costs of creating a copy of Tabbycat are pretty low and you can speed through the process of draw creation, adjudicator allocation, and result entry at a pace. It's still not going to be as fast a spreadsheet for a small tournament, but we think it's getting pretty close. And in exchange for a little speed you get a much stronger guarantee of your draws being correct, options for online data entry, a more comprehensive and shareable final tab, and much more. Give it a shot!" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/guide/scaling.po b/docs/locale/ca/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..4b67cd1a8c2 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/guide/scaling.po @@ -0,0 +1,252 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: ca_ES\n" + +#: ../../guide/scaling.rst:5 +msgid "Scaling & Performance on Heroku" +msgstr "" + +#: ../../guide/scaling.rst:7 +msgid "If you expect your Tabbycat site to gain lots of traffic — either because it has lots of participants or will be followed by lots of people online — there are a number of strategies to ensure that it will remain fast despite this attention. This is typically only necessary for very large tournaments that will display information on the public-facing version of your Tabbycat site; and even then only minor amounts of 'scaling' are needed at particular moments. However, if your site does become slow you want to know what to do and how to do it ahead of time in order to prevent disruptions." +msgstr "" + +#: ../../guide/scaling.rst:9 +msgid "By default, a Tabbycat installation runs on Heroku's free tier. This is a resource-constrained environment and improving performance will typically require paying for higher levels of Heroku services. These services are billed on a per-minute (not monthly) basis, meaning that if you make use of any upgrades mentioned below, you will only be billed for the actual duration used — i.e. if an upgrade is listed at $100/month, but you only use it for 4 hours, the final bill will be around $0.50. As such you can make use of high-performing resources just when they are needed, without needing to pay the full monthly price to maintain the resource indefinitely." +msgstr "" + +#: ../../guide/scaling.rst:13 +msgid "This page was largely written before a number of improvements in the ``2.2`` release of Tabbycat that have significantly increased traffic capacity. Its recommendations may be overly cautious given these improvements." +msgstr "" + +#: ../../guide/scaling.rst:17 +msgid "Scaling for performance reasons is a separate issue to that of `upgrading the database capacity `_ of your tab which just provides the ability to store data. That said, typically only tournaments that are large enough to need an upgraded database will be the ones that ever need to consider scaling for performance anyway." +msgstr "" + +#: ../../guide/scaling.rst:20 +msgid "Introduction to Scaling" +msgstr "" + +#: ../../guide/scaling.rst:22 +msgid "Heroku's primary resource is that of a 'dyno'. Each dyno can be thought of as running a copy of Tabbycat. Following the 'many hands make light work' principle, running a greater number of dynos will generally improve the ability of your site to serve lots of pages simultaneously because traffic is divided up amongst all of the available dynos. In normal circumstances most Tabbycat pages on the public site are served by Heroku in under a second; however they can take noticeably longer than that when the quantity of incoming traffic exceeds the capacity of the existing dyno(s) to serve it. In such cases the delay accrues because the excess page loads need to first wait for an available dyno in addition to the standard wait for a page to be processed and transferred to the user." +msgstr "" + +#: ../../guide/scaling.rst:24 +msgid "Thus scaling is almost always a process of increasing *throughput* in order to decrease the chance that any page load needs to wait in order to be served by a dyno. On the flip side, having extra dynos or upgraded dynos won't make Tabbycat itself run any faster in general — they are essentially wasted unless there is sufficient large amounts of traffic that a single dyno cannot serve all of it without creating a queue." +msgstr "" + +#: ../../guide/scaling.rst:26 +msgid "Dynos can be scaled by adding more dynos ('horizontally') or by adding upgraded dynos ('vertically'). In general, horizontal scaling should be the first and most effective strategy — the problem traffic causes is due to *concurrency* or lots of people loading lots of pages all at once. The traffic on Tabbycat sites typically fluctuates a lot, with moments of high intensity clustering around draw releases, round advances, and the final tab release. As such you generally only need to scale your dynos for very short periods of time." +msgstr "" + +#: ../../guide/scaling.rst:28 +msgid "In order to increase the number of dynos you first need to be using at least the **Standard 1X** level of dyno. Once set the Heroku Dashboard will show you a slider that can be used to increase the dyno count. While dynos higher than the **Standard 1X** level may help serve pages a tiny bit faster, having *more* dynos is far more effective than having *upgraded* dynos. Upgrading beyond **Standard 1X** is generally only required if you need additional memory (as described below) or want to use auto-scaling (also described below)." +msgstr "" + +#: ../../guide/scaling.rst:32 +msgid "There should be no need to increase the number of 'worker' dynos. While 'web' dynos are responsible for serving traffic, the worker only handles a few rare tasks such as serving email and creating allocations." +msgstr "" + +#: ../../guide/scaling.rst:34 +msgid "At large tournaments you should always upgrade your existing '**Free**' dyno to a '**Hobby**'-level dyno. This upgrade is crucial as it will enable a \"Metrics\" tab on your Heroku dashboard that provides statistics which are crucial to understanding how your site is performing and how to improve said performance. If you are at all unsure about how your site will perform it is a good idea to do this pre-emptively and keep an eye on these metrics over the course of the tournament." +msgstr "" + +#: ../../guide/scaling.rst:38 +msgid "If pages are not loading it could be due to two things: your site being overloaded with traffic, or a bug in Tabbycat itself. Generally, if you see a generic or Heroku-branded 'application error' page that means it is the former problem, whereas a Tabbycat-branded page indicates the latter." +msgstr "" + +#: ../../guide/scaling.rst:41 +msgid "Scaling Dynos" +msgstr "" + +#: ../../guide/scaling.rst:43 +msgid "Once you have upgraded your dyno to the **Hobby** level, the metrics tab provides a number of graphs that can be used to help identify how your site is performing. The first graph, **Events** provides an overview of any problems that are occurring:" +msgstr "" + +#: ../../guide/scaling.rst:47 +msgid "Red marks, or those labelled *Critical* typically indicate some sort of problem. H13 errors are a good measure of the amount of pages failing to load during heavy traffic, however they can be triggered under normal conditions — you want to check how many are occurring within a given time period and ensure its more than a handful." +msgstr "" + +#: ../../guide/scaling.rst:50 +msgid "Response Time & Throughput" +msgstr "" + +#: ../../guide/scaling.rst:54 +msgid "The response time is the amount of time it takes a dyno to load a page and serve it to your users. Smaller response times are thus good, and long response times (over fifteen seconds) indicate that a site is struggling to serve its content due to a large amount of queueing." +msgstr "" + +#: ../../guide/scaling.rst:56 +msgid "Heroku dynos have a maximum response time of 30 seconds, at which point they will stop serving the request. To users this appears as an error page or as a page that never loads. Thus if you see the graph is at or approaching 30 seconds at any point you need to try and diagnose what is causing this and add more resources to reduce the response time." +msgstr "" + +#: ../../guide/scaling.rst:60 +msgid "You can toggle the percentiles in this graph. Problems are much more severe if it affects the 50th percentile which represents a site that is probably not loading for the majority of its users. There are also a couple of Tabbycat functions (like automatic adjudicator allocation) that naturally take 10-20 seconds which means that the maximum or 99th percentile metrics are not very reflective of general traffic." +msgstr "" + +#: ../../guide/scaling.rst:62 +msgid "Closely related to this is the **Throughput** graph (further down) which shows how many pages your site is serving per second. Normally this is not particularly interesting, however note that the red part of the bar graph shows the amount of failed page requests. Like the **Response Time** graph, this can indicate issues with the site — normally this red portion should be well below 1rps (and ideally 0rps). If it is above 0.5 it represents a site that is producing a significant number of failed page loads." +msgstr "" + +#: ../../guide/scaling.rst:64 +msgid "You can verify if pages are not being served to users by checking the **Events** graph and looking for H12 errors, although occasionally they are not reported properly. A large amount of H13 errors can also be a cause for concern." +msgstr "" + +#: ../../guide/scaling.rst:67 +msgid "Dyno Load" +msgstr "" + +#: ../../guide/scaling.rst:71 +msgid "This graph shows how well your dynos are being utilised. It is scaled relative to the total number of dynos you are running (or have run previously). So if you have 10 dynos and the bar graph is near the '10' this shows that each dyno is being utilised 100% (either on average over a 1-minute period or as the maximum use over a 1-minute period)." +msgstr "" + +#: ../../guide/scaling.rst:73 +msgid "If this bar graph is hitting the top it will usually mean that a site that is slow or failing to load pages — if each dyno is busy it can't serve a new page until it is finished. This issue can often compound, with more traffic coming in than it is possible to serve and clear." +msgstr "" + +#: ../../guide/scaling.rst:75 +msgid "If your average, rather than maximum, dyno load is approaching the upper limit of however many dynos you are running now (remember the y-axis will often exceed however many dynos you are currently running) that is a very good sign that you should increase the quantity of dynos being run. Continue adding dynos and evaluate how this effects load so that the bar is not hitting its limit." +msgstr "" + +#: ../../guide/scaling.rst:77 +msgid "If you are consistently needing to scale things (or having previously had issues and are expecting a very heavy burst of traffic) it may be worth upgrading to the **Performance-M** dyno type, which will then allow you to enable the *Auto-scaling* feature. This will automatically add dynos as needed to cope with traffic, and remove them when they become unnecessary. This is very effective; however, note that this dyno-type is $250/month per dyno and will self-add dynos (within an upper limit you can specify). While this is not a huge price on a per hour/minute basis (even running 10 for an hour is only $4) you definitely want to ensure you keep a close eye on it and turn it off when it is not necessary. Note that it also tends to be quite aggressive in how many dynos it 'thinks' you need — you may want to increase the default response time threshold to prevent it scaling so quickly." +msgstr "" + +#: ../../guide/scaling.rst:80 +msgid "Memory Usage" +msgstr "" + +#: ../../guide/scaling.rst:84 +msgid "It is very rare that Tabbycat sites will hit the memory limits of the Free or Hobby level dynos — its almost always hovering around 256MB of the (standard dyno) limit of 512MB. However, if the graph is approaching the dashed line you may want to first restart the dynos (in the *More* dropdown in the upper-right) and see if that resolves it." +msgstr "" + +#: ../../guide/scaling.rst:86 +msgid "You can also confirm that memory limits are causing the app to fail by checking for the presence of R14 errors in the Events chart. If your site continues to come very close to that memory limit you will want to upgrade your dynos to the higher level dynos which have increased memory." +msgstr "" + +#: ../../guide/scaling.rst:89 +msgid "Alerts" +msgstr "" + +#: ../../guide/scaling.rst:91 +msgid "If the site is really struggling to perform its usually relatively obvious. However, if you want to be pre-warned of this, or just ensure things are as fast as possible, you can use the \"Configure Alerts\" feature on the Metrics page to receive emails when things are getting slow. We would recommend creating a Response Time Threshold warning of ``15000ms`` and a Response Requests Percentage Threshold of ``5%``." +msgstr "" + +#: ../../guide/scaling.rst:94 +msgid "Understanding Caching" +msgstr "" + +#: ../../guide/scaling.rst:96 +msgid "When a page is 'cached' it means that Tabbycat has stored a copy of the final output of the page. It can then send that copy directly to a user who is loading that page without needing to go through the normal process of fetching the data from the database, running any calculations, and formatting the results. Pages that are cached will serve quickly — if a page is taking more than a few seconds to load it usually means that page has not been cached (or your site is having too much traffic to serve pages quickly in general). The downside is that changes to the underlying data won't update until the cache has 'expired' and is regenerated. So, for example, a cached copy of the draw will not immediately reflect change to panels and a newly-release motion or tab page will not show up in the menu immediately." +msgstr "" + +#: ../../guide/scaling.rst:98 +msgid "By default Tabbycat caches public pages according to three levels: a 1-minute timeout, a 3.5-minute timeout, and a 2-hour timeout. The only pages on the 2-hour timeout are those that come with a full tab release — such as speaker standings, the motions tab, etc. Public pages that need to update quickly, such as the draw and homepage, are on the 1-minute timeout to ensure data is up to date. Public pages that update less frequently such as Standings, Results, Participants, and Breaks are on the 3.5-minute timeout." +msgstr "" + +#: ../../guide/scaling.rst:100 +msgid "Caching means that a Tabbycat site should actually perform *faster* when it is being viewed by many people at once, as the caches are constantly up-to-date and can be used to serve the majority of requests. When there is less traffic the caches are more likely to be regenerated each time someone goes to a page resulting in slower page loads. Most often performance problems come when a popular page, such as a newly-released draw gains a large amount of traffic suddenly (such as by people constantly refreshing the draw). If the page hasn't finished caching it has to do a full page calculation for each of those new loads, which will spike the amount of resource use until the page load queue is cleared." +msgstr "" + +#: ../../guide/scaling.rst:102 +msgid "One way to help mitigate this is to try and load those pages first yourself to ensuring the cache is populated before other people access it. To do so you would generally open a new private browsing tab, and navigate to the specific page(s) immediately after you have enabled them. This may require going to the URL directly rather than relying on the homepage or menu (which may not have been updated to show the new information). In the case of draw releases, this can also be mitigated by not release online draws until they have been first shown on a projector (so that people aren't trying to get draw information ahead of time)." +msgstr "" + +#: ../../guide/scaling.rst:104 +msgid "You can also increase the 1-minute timeout for the pages that are popular during the in-rounds, by going to the **Settings** section of your Heroku dashboard, clicking *Reveal Config Vars*, and creating a new key/value of ``PUBLIC_FAST_CACHE_TIMEOUT`` and ``180`` (to set the timeout to be 3 minutes i.e. 180 seconds). This should only be necessary as a last resort. Turning off public pages is also an option." +msgstr "" + +#: ../../guide/scaling.rst:106 +msgid "If you ever need to clear the cache (say to force the site to quickly show an update to the speaker tab) you can install `Heroku's Command Line Interface `_ and run the following command, replacing ``YOUR_APP`` with your site's name in the Heroku dashboard::" +msgstr "" + +#: ../../guide/scaling.rst:111 +msgid "Postgres Limits" +msgstr "" + +#: ../../guide/scaling.rst:113 +msgid "The free tier of the Postgres database services has a limit of 20 'connections'. As with Redis, it is rare that a Tabbycat site will exceed this limit; most Australs-sized tournaments will see a maximum of 12 connections at any point in time." +msgstr "" + +#: ../../guide/scaling.rst:117 +msgid "You can monitor this in your Heroku Dashboard by going to the **Resources** tab and clicking on the purple Postgres link. The **Connections** graph here will show you how close you are to the limit. The first tier up from the 'free' Hobby tiers (i.e. ``Standard-0``) has a connection limit of 120 which can be used to overcome these limits if you do encounter them." +msgstr "" + +#: ../../guide/scaling.rst:120 +msgid "Mirror Admin Sites" +msgstr "" + +#: ../../guide/scaling.rst:122 +msgid "If you *really* want to be safe, or are unable to resolve traffic issues and unable to quickly complete tasks on the admin site, it is possible to create a 'mirror' of the tab site just for admin use. This site can be configured to share the same database as the primary site — meaning it is in effect always identical — but because it is at a separate URL it won't have to respond to public traffic and so can't be swamped with a large page load queue." +msgstr "" + +#: ../../guide/scaling.rst:124 +msgid "This requires some technical knowledge to setup and hasn't been rigorously tested. It works fine in our experience but we haven't tested it extensively. If using this make sure you backup (and now how to restore backups) before setting one up." +msgstr "" + +#: ../../guide/scaling.rst:126 +msgid "To do so you would deploy a new copy of Tabbycat on Heroku as you normally would. Once the site has been setup, go to it in the Heroku Dashboard, click through to the **Resources** tab and remove the Postgres and Redis Add-ons. Using the `Heroku Command Line Interface `_ run this command, substituting ``YOUR_APP`` with your *primary* tab site's name (i.e. the app that you had initially setup before this)::" +msgstr "" + +#: ../../guide/scaling.rst:130 +msgid "Here, make a copy of the ``DATABASE_URL`` and ``REDIS_URL`` values. They should look like ``postgres://`` or ``redis://`` followed by a long set of numbers and characters. Once you have those, go to the *Settings* tab of the Heroku dashboard for your *mirror* tab site. Click **Reveal Config Vars**. There should be no set ``DATABASE_URL`` or ``REDIS_URL`` values here — if there are check you are on the right app and that the add-ons were removed as instructed earlier. If they are not set, then add in those values, with ``DATABASE_URL`` on the left, and that Postgres URL from earlier on the right. Do the same for ``REDIS_URL`` and the Redis URL. Then restart the app using the link under **More** in the top right." +msgstr "" + +#: ../../guide/scaling.rst:132 +msgid "Once you visit the mirror site it should be setup just like the original one, with changes made to one site also affecting the other as if they were just a single site." +msgstr "" + +#: ../../guide/scaling.rst:135 +msgid "Estimated Costs" +msgstr "" + +#: ../../guide/scaling.rst:137 +msgid "As a quick and rough benchmark, here is a list of typical prices you would encounter if scaling to meet the performance needs of a high-team-count high-traffic tournament at the approximate scale of an Australs (~100 teams) or above. This is a probably an overly-conservative estimate in that it is based on tournaments run on the ``2.1`` version of Tabbycat. Versions ``2.2`` and above should perform dramatically better and thus have less need to scale using Standard and Performance dynos." +msgstr "" + +#: ../../guide/scaling.rst:139 +msgid "1x ``Hobby Basic Postgres Plan`` ($9/month) run all day for 14 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:140 +msgid "A tournament of this size will require an upgraded database tier for the time when you are adding new data; i.e. during registration and rounds. Once the tab is released (and no further data changes needed) however you can downgrade it back to the ``Hobby Dev`` tier." +msgstr "" + +#: ../../guide/scaling.rst:141 +msgid "1x ``Hobby Dyno`` ($7/month each) run all day for 7 days = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:142 +msgid "As recommended, 1 hobby dyno should be run as a baseline in order to see the metrics dashboard; but this can be downgraded a day or so after the tab has been released and traffic is sparse." +msgstr "" + +#: ../../guide/scaling.rst:143 +msgid "3x ``Standard 1X Dyno`` ($25/month each) run 10 hours a day for 4 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:144 +msgid "This higher quantity of dynos should only be necessary during traffic spikes (i.e. draw releases, immediately after round advances, and tab release) but unless you want to be constantly turning things on/off its usually easier just to upgrade them at the start of each day of in-rounds (or when the tab is published) and downgrade them at the end of each day. As mentioned earlier, you should occasionally check the *Dyno Load* in the Metrics area and adjust the number of dynos as needed." +msgstr "" + +#: ../../:1 +msgid "``Autoscaled Performance M Dynos`` ($250/month each) average of 5 run for 1 hour = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:146 +msgid "For just round 1 it is a good idea to upgrade to the ``Performance M`` tier so you can enable auto-scaling and thus have the site automatically adjust the number of dynos to the amount of traffic it's getting (rather than having to guess the number of dynos needed ahead of time). Doing so ensures that the first round runs smoothly and means that you can then review the Metrics graphs to see what your 'peak' load looks like and resume using whatever quantity of ``Standard 1X Dyno`` will accommodate this peak load in future rounds." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/ca/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..0c28b2b0783 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/guide/tournament-logistics.po @@ -0,0 +1,1394 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-01 22:45\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: ca_ES\n" + +#: ../../guide/tournament-logistics.rst:5 +msgid "Tournament Logistics" +msgstr "" + +#: ../../guide/tournament-logistics.rst:7 +msgid "Unlike the rest of our documentation, this section does not deal with particular features or technical concerns with Tabbycat itself. Instead it is an attempt to outline the logistics of tab direction and aims to be of general relevance for people running major tournaments. At present, it is organised by the various ‘stages' of tabbing a tournament, and most of the content takes the form of check-lists or comments designed to highlight and provide guidance on common issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:9 +msgid "Whilst it aims for general relevance, we should note that this guide is relatively opinionated and mostly written from the perspective of people whose primary experience is tabbing at Australasian tournaments using Tabbycat. That said, we welcome feedback and additions that can account for different format and regional considerations. In the future, if the guide becomes more general and more extensive, it could be spun off into a separate project." +msgstr "" + +#: ../../guide/tournament-logistics.rst:11 +msgid "As with the rest of our documentation, this page is source-available and we welcome :ref:`feedback and contributions `. Note also that we've formatted this guide a single page to reduce clutter, but the sub-sections in the sidebar can be used to help navigate across sections." +msgstr "" + +#: ../../guide/tournament-logistics.rst:14 +msgid "Planning and Preparation" +msgstr "" + +#: ../../guide/tournament-logistics.rst:16 +msgid "This section aims to outline concerns that occur in the months before the tournament: after you have agreed to help with tabbing and while the organising committee and adjudication core are deciding how they want to run key processes such as registration and feedback. It is organised in terms of who you should coordinate with in order to plan for a well-tabbed tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:19 +msgid "General Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:21 +msgid "You should avoid being the sole person responsible for that tab unless it is a small tournament. There are many cases where you want to be in several places at once and the easiest way to accommodate that is by having co-directors or trusted assistants. Few tab decisions require a single source of authority; it is far better to have multiple people available to share responsibilities around." +msgstr "" + +#: ../../guide/tournament-logistics.rst:23 +msgid "In a similar manner, it is worth considering how you can use the tournament to help train other people. Typically, knowledge of tabbing is concentrated in relatively few people and gained mostly through on-the-ground experience; meaning that every tournament should be approached as rare opportunity to help spread knowledge about tabbing more widely in a circuit. Consider reaching out to institutions or the tournament as a whole to see if they have anyone who would be interested in helping out." +msgstr "" + +#: ../../guide/tournament-logistics.rst:26 +msgid "Convenors" +msgstr "" + +#: ../../guide/tournament-logistics.rst:28 +msgid "It might sound obvious but it will pay to have a very thorough conversation about the tab process (more or less the contents of this document) with the convenors a few months out from the tournament. Do this even if you know the convenors to be knowledgeable or experienced debaters. Key concerns are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:32 +msgid "Whether internet access will be available and whether participants can be presumed to have smart phones. This has an obvious impact on how online feedback, ballots, and draw release is done. Note that Eduroam is not necessarily a reliable guarantee of access; many participants will come from universities who don't have access to it or will need to follow a setup process that is onerous or requires them to be at their home institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:33 +msgid "What kind of room is the tab room going to be? Is it possible to optimize its placement when the bookings for rooms are made? Key details include: How large is it? Does it have a sufficient amount of desk space (for data entry)? Does it have a good projector (for allocations)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:34 +msgid "If they have the resources, having an adjacent room available for just the adjudication core to use can also be useful. While you want to work closely with the adjudication core, they may want to discuss sensitive information (motions, equity) in a space without volunteers present; or they might at times get in the way of things, such as by eating lunch in the middle of a frenetic ballot entry process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:35 +msgid "Ensure that plans are made for food to be brought to tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams." +msgstr "" + +#: ../../guide/tournament-logistics.rst:36 +msgid "What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible." +msgstr "" + +#: ../../guide/tournament-logistics.rst:37 +msgid "What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors." +msgstr "" + +#: ../../guide/tournament-logistics.rst:38 +msgid "Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:39 +msgid "You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense." +msgstr "" + +#: ../../guide/tournament-logistics.rst:40 +msgid "Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:41 +msgid "How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:42 +msgid "How will critical information be shared between the tab team, adjudication core, and logistics/convening teams? For smaller/medium sized tournaments a group chat augmented by phone calls (assuming everyone knows everyone else's number) can be sufficient, but even then, you need to ensure that any critical information conveyed privately (i.e. in a call or in person) is conveyed back to the group channel. At very large tournaments (or if you have the resources) walkie-talkies are an excellent way to manage communication — just make sure you have (ahead of time) reserve the different channels to a distinct and known purpose (i.e. general discussion; just the tab team & adjudication core; just convenors)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:43 +msgid "As part of this it is ideal if the organising committees can procure local SIM cards for members of the tab team and adjudication core who are not local. These should be relatively generous in their plans — you don't want to worry about running out of minutes or data if on a critical call or using a hotspot to make critical allocation adjustments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:44 +msgid "At major tournaments you want to arrive at least a day before check-in; and ideally whenever it is that the adjudication core is arriving for their own preparation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:47 +msgid "Registration" +msgstr "" + +#: ../../guide/tournament-logistics.rst:49 +msgid "Having effective registration systems and processes is one of the most important aspects of preparing to tab a large tournament. Bad registration data *will* make setting up a tab extremely painful and introduces the chance for mistakes or inconsistencies in tab data that will only come to light in the first round. As such:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:53 +msgid "You should check in with the registration team and see what they plan to do as soon as possible after being brought on-board. As part of this you should make it clear that you should be consulted on any decisions they make about what data to collect, when to collect it, and how to collect it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:54 +msgid "Registration data should be collected into a shared and live-updating source, such as a Google Sheet. There should be as few canonical sources (ideally one) of data as possible; i.e. there should be a single sheet for individual details, a single sheet for team details, etc; and these should be maintained all the way through to check-in. For both you, and the registration team, having multiple conflicting or outdated copies of data will lead to errors. However, for the registration team these errors can usually be easily sorted out in person (at check-in) but for you that information always needs to be reliable and up to date otherwise what is imported into the tab cannot be trusted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:56 +msgid "At this point our recommendation is to, in most cases, not use specialised registration systems as they are somewhat less intuitive and less flexible than setting up good Google Forms/Sheets." +msgstr "" + +#: ../../guide/tournament-logistics.rst:58 +msgid "If, for whatever reason, the registration team are not able to give you 'live' access to the data they have on hand, make sure they send you copies of it (even if it is incomplete) well before you need it to setup the tab itself. You want to be able to verify what data is actually being collected and how it is formatted well in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:60 +msgid "You should have access to *all* of the data collected; often registration teams will make (false) assumptions about what you do or do not need. It is better to have everything and then selectively filter out what is not relevant to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:61 +msgid "It is critical that the registration team should check in with you before setting up forms asking for information. Every additional time that registration asks for data there will be less and less participation in the process, so you should aim to gather all that you need at the first opportunity; typically during the canonical individual registration phase. Particular information that should not be overlooked for tab purposes:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:63 +msgid "Individual registration should ask whether a participant is a speaker or an adjudicator." +msgstr "" + +#: ../../guide/tournament-logistics.rst:64 +msgid "If that person is a speaker it should ask for their team name/number (reconciling these later is painful)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:65 +msgid "Individual registration should ask for any accessibility requirements of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:66 +msgid "Individual registration should ask for the previous institutions of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:67 +msgid "Individual registration should ask for the email addresses of all participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:68 +msgid "Individual registration should ask for the phone numbers of adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:69 +msgid "Individual registration should ask for the gender identity of both adjudicators and speakers. Even if you are not *planning* on using this to inform processes, such as adjudicator allocations, you want it on hand in case plans change." +msgstr "" + +#: ../../guide/tournament-logistics.rst:71 +msgid "Independent adjudicators and the adjudication core should follow normal registration procedures. Having them not go through the normal process makes it easy to overlook their data or not get a complete picture of it. For example, adjudication core members might forget to nominate conflicts, or neglect to provide their previous institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:72 +msgid "You should confirm how the registration team plans to manage how people check-in to the accommodation in particular. Check-in is when issues with registration data come to light and it is vital that these changes are noted and recorded. Some form of validation of registration data *must* occur at check-in — in particular all adjudicators should be (individually) verified as present and all members of a team should confirm their presence along with their team's name/number and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:73 +msgid "After check-in you need to have a definitive list of who is physically present at the tournament so you can run a first-round draw with confidence. Registration must know this and have processes in place for recording people individually as they arrive, and for that data to filter back to you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:75 +msgid "If you are using Tabbycat's secret links for feedback or ballots these are best distributed at check-in. The registration team should know about this, prepare for it, and be provided with the pdfs to print and distribute." +msgstr "" + +#: ../../guide/tournament-logistics.rst:78 +msgid "Adjudication cores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:80 +msgid "If there is a group chat for the adjudication core you probably want to be part of it; even if you don't contribute much. There are lots of small things that end up being discussed without consideration of how they will affect tab issues and it is also a chance to get to know — ahead of time — the people you will be working with closely over the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:82 +msgid "Members of the adjudication core will often leave tab-relevant decisions until the days prior to the first round or whenever it is that they can first meet with the tab team in person. This often wastes critical time and forces rushed decisions. Many considerations can instead be raised and discussed prior to the tournament. These could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:86 +msgid "How to manage the feedback process. This typically benefits from foresight and pre-planning, rather than being decided on the ground. Key considerations are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:90 +msgid "Who submits feedback on whom? Do trainees do so on their chairs? Do panellists do so on each other? (Presuming your tab software supports these options)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:91 +msgid "Is feedback mandatory? If so, how will this be enforced exactly?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:92 +msgid "How much weight does each adjudicator's test or CV score have over the course of the tournament? By Round 3, or by Round 8, what proportion of an adjudicator's score is derived from their test and what proportion is derived from their feedback?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:93 +msgid "Will the adjudication core tweak an adjudicator's score to 'artificially' increase or decrease it to where they think it should be. For example, this could be done by adjusting a test/CV score upwards in order to compensate for bad feedback that (for whatever reason) they did not think was reliable or fair? Depending on your adjudication core's preferences and your tab software's allowances it is not unheard of for them to maintain full manual control over scores by reading/processing feedback results but only ever manually adjusting scores as a result (rather than having it automatically adjust due to the ratings in the feedback)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:94 +msgid "What is the score scale going to be? What do each of those numbers represent? How will this be communicated to participants so they can score accurately and consistently?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:95 +msgid "What kind of questions will feedback forms ask? If using :ref:`customisable printed or online forms ` consider how these questions be used tactically to identify key issues (say discriminatory scoring) or more easily identify people who should be promoted/demoted. While managing feedback is often a messy and subjective task, it can often be improved by being more targeted in what data it collects." +msgstr "" + +#: ../../guide/tournament-logistics.rst:96 +msgid "How will feedback be monitored, and how will this information feed back into the scores and allocations? At large tournaments it is not unusual for an adjudication core member to sit off each round to review and process feedback — there isn't really a good stretch of available time to do so otherwise. However even if doing this note that there are communication issues to manage here, as each adjudication core member will each end up with a relatively incomplete overview of the total volume of feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:98 +msgid "If possible it's nice to plan in advance for when the tab will be released (i.e. on the last night; the day after; etc.) as this often gets left to the last minute to be decided. Also the possibility of whether people can redact themselves from tabs should be raised, as that might be useful to inform participants of during online registration or tournament briefings. In a similar fashion, some adjudication cores might also want to limit speaker tabs to only a certain number of places, particularly at novice-centric tournaments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:99 +msgid "How to handle conflict collection; see the following section." +msgstr "" + +#: ../../guide/tournament-logistics.rst:100 +msgid "How to handle the submission of scoresheets and feedback, primarily in terms of which parts of the process should be done online and offline. Some adjudication cores will have strong thoughts here; others will happily follow whatever you recommend. Key considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:104 +msgid "Paper-based feedback is much more taxing to enter than paper-based scoresheets — typically there is much more of it; it asks for a greater variety of data; and it is submitted at inconsistent times. The one advantage is that it is easier to make feedback mandatory with paper, as you can ensure all teams and adjudicators have done so prior to leaving the room. Thus, in most cases, a good online feedback system is much more preferable than paper. If using paper be aware that you will need a lot of volunteers to ensure the feedback is collected promptly. If internet or smartphone access is limited at your tournament it is probably best to accommodate both paper-based and online methods." +msgstr "" + +#: ../../guide/tournament-logistics.rst:105 +msgid "The consequences of having incorrect or missing ballots are much more severe than for feedback. As such major tournaments use paper ballots in some form as the final stage in a checking process to ensure that the results of a debate are definitely correct — adjudicators will always make mistakes and while digital ballots can catch/prevent some types of error (i.e. a low point win) they can't catch others (assigning the wrong scores to the wrong speaker, nominating the wrong winning team, etc.). Assuming your software supports both options, the choice is thus whether to use a hybrid approach (online submission followed by paper verification) or to rely entirely on paper. A fully-paper based approach will be simpler for both yourself and adjudicators, and can be almost as efficient if you have a sufficient number of volunteers. In contrast, a hybrid approach will be potentially much faster if you are short of volunteers and if you expect that almost all adjudicators will have access to the internet, a smartphone, and are capable of following instructions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:107 +msgid "In some circuits, and when using some particular tab software, tournaments might run a 'dual tab' where there is a second, independent, version of the tab software and database into which all data is *also* entered. From what we understand this performs a dual role, as both a backup system that can take over from the main one (say if internet access drops) and as a way of verifying ballot data (by comparing draws or databases between software rather than having a two-step entry process operating for a single tab). This practice seems obsolete when working with modern web-based tab software that is capable of backing up and restoring to an offline system, but we would like to hear your feedback if you think that is not the case." +msgstr "" + +#: ../../guide/tournament-logistics.rst:110 +msgid "Conflicts/Clashes (registration/equity/adjudication core)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:114 +msgid "There should always be a *single* means of collecting conflicts (i.e. a single Google Sheet/Form) and all conflicts should go through it. Because the nature of this data is sensitive and evolving, there must be a single location where it can be easily captured and verified as having been entered into the tab. Conflicts data should never be spread across a loose collection of emails/personal messages/spreadsheets; otherwise keeping track and knowing which ones have been entered into the system will be painful and error prone. Get in touch in with equity and registration in advance and make it clear that they should not make their own conflicts form; or if they've already made one, make sure you adopt it and have access/control of it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:115 +msgid "Conflicts should, ideally, *only be collected after a participants list has been published* and requests for people to nominate conflicts should also be sent out as few times as possible. Most people will only fill this form in once, so it is vital that when asked to nominate conflicts they have as much information as they need to do so comprehensively. Without a public and reasonably-complete participants list people will either nominate conflicts that are not present (wasting your time in cross-referencing data) or not realise someone is present and raise the conflict at a latter, less opportune time." +msgstr "" + +#: ../../guide/tournament-logistics.rst:116 +msgid "In some circuits only adjudicators are allowed to nominate conflicts because of the risk of teams using conflicts 'tactically' to block adjudicators that they think are terrible judges. However, having teams nominate conflicts can be useful: adjudicators may overlook a conflict or there may be equity-based reasons that a conflict is non-symmetrical. This trade-off can be handled in two ways:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:120 +msgid "Not allow teams to nominate conflicts during registration; but allow them to approach equity teams before, or during, the tournament to identify the conflict. Equity can then raise the issue with the tab team and adjudication core and it can be added to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:121 +msgid "Allow teams to nominate conflicts during registration; but have the adjudication core review the data for 'tactical' conflicts. These are usually relatively easily identified, although can be overlooked if the adjudication core does not know the participants or their region/circuit well. The adjudication core can then override the conflict, discuss it with the teams, or raise it with equity. However, if going down this route, the tab team should discuss with the adjudication core how to manage this process well-ahead of the tournament, and ensure they actually do review the conflicts prior to the first round — otherwise it will likely surface during an allocation and become a major distraction during a critical time period." +msgstr "" + +#: ../../guide/tournament-logistics.rst:123 +msgid "As mentioned in the previous section, the adjudication core (possibly with equity) should provide some degree of guidance about what kinds of debating-related conflicts should be provided. People should be able to self-define what constitutes a conflict, but there are circumstances where they are overly cautious and can be reassured that it is not necessary. The opposite problem may occur also, where many people may have a very high bar for what defines a conflict which could lead to perceptions of bias from other participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:124 +msgid "Generally, it is preferable that each form nominates a single conflict, and people are asked to re-submit for each conflict they are adding." +msgstr "" + +#: ../../guide/tournament-logistics.rst:126 +msgid "To save you some hassle the conflict form should make this very clear (i.e. that one conflict = one submission; ensure the field labels reinforce this)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:127 +msgid "The conflict form should also make clear that you shouldn't use the form if you don't have any conflicts (i.e. people will submit 'None', 'None' etc)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:128 +msgid "The conflicts form should also make clear that adjudicator's don't need to submit a conflict for their current institution and that team's don't need to submit conflicts for adjudicators from their current institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:130 +msgid "In poorly-structured conflict forms, identifying exactly who is doing the conflicting and who is being conflicted is a nightmare. You want to structure the questions to minimise this ambiguity. A form should definitely ask:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:132 +msgid "Who are you (the conflict-specifier)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:133 +msgid "Are you a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:134 +msgid "Which institution are you from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:135 +msgid "If part of a team, which team are you in?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:136 +msgid "Who are you conflicting?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:137 +msgid "Are they a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:138 +msgid "Which institution are they from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:139 +msgid "If they are in a team, which team is it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:140 +msgid "Have previously attended any other institutions; or have other reasons to conflict entire institutions? If so, specify those institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:142 +msgid "Note that this last question can be tricky to deal with; good tab software will let you conflict an adjudicator from an institution other than their own, but it is harder to mark an individual team as having members previously attending another institution. These circumstances are rare and typically very 'soft' conflicts but are probably best handled by creating individual conflicts between that team and adjudicators from the previous institution in question." +msgstr "" + +#: ../../guide/tournament-logistics.rst:143 +msgid "Adjudication core members will often not nominate their own conflicts; presuming that they will notice and correct them during allocations. They often forget or overlook this. Their conflicts should be entered as per normal." +msgstr "" + +#: ../../guide/tournament-logistics.rst:146 +msgid "Scheduling (convenors / venue organisers)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:148 +msgid "One of the easiest ways to have things run late is to set an unrealistic schedule. As much as possible the timing allocated to rounds (inclusive of events such as lunch or committee forums) should conform to an even distribution of how long it takes to process results and create a draw/allocation — you don't want to be in a position where particular rounds have too much time and others too little time to spend on allocations and other crucial tasks. This is something that should definitely be working on in conjunction with convenors and other critical parties before they lock down timing details with food suppliers or the operators of the debating venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:150 +msgid "Note also that in most circumstances it is preferable to create a draw and allocation for the first day of the next round at the night before. This time should be built in to the schedule of the previous day, and raised with the adjudication core so they don't expect to be able to immediately depart after the day's rounds are done." +msgstr "" + +#: ../../guide/tournament-logistics.rst:152 +msgid "Below is the time taken within each round at Australs 2017. For context, this was neither a particular efficiently or inefficiently tabbed tournament. Notable details:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:156 +msgid "The tournament was ~40 rooms each round and had access to 3-6 runners and data enterers. Paper ballots were pre-printed and distributed by runners to rooms prior to the debates starting, then collected sometime after the 15 minute deliberation period. Feedback was submitted online. At Australs all adjudicators (excluding trainees) submit their own ballots." +msgstr "" + +#: ../../guide/tournament-logistics.rst:157 +msgid "The adjudication core were neither particular slow nor fast in allocating adjudicators compared to other adjudication cores. At Australs most adjudication cores will create allocations by using first running an automatic allocation then extensively tweak the results." +msgstr "" + +#: ../../guide/tournament-logistics.rst:158 +msgid "There were no serious issues that delayed the tabbing of any particular round beyond the routine and expected issues of last-minute draw changes, adjudicators producing incomprehensible ballots, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:159 +msgid "Whilst the tab ran relatively quickly, there were minor delays because of mismatches between the planned schedule and the optimal schedule from a tab perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:160 +msgid "A round at Australs takes around 2 hours from a debater's perspective: 30m of prep, ~60m for a debate, ~15m for deliberation, and ~15m for the oral adjudication and feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:161 +msgid "We didn't note the timing of data-entry in Round 8 as there was no time pressure. After data entry was finished, finalising and double-checking the breaks took through to ~7-8pm." +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Day" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "One" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Two" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Three" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "Round" +msgstr "Ronda" + +#: ../../guide/tournament-logistics.rst:166 +msgid "1" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "2" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "3" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "4" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "5" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "6" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "7" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "8" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "Draw generated" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +#: ../../guide/tournament-logistics.rst:169 +msgid "*Night prior**" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:43" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "16:12" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:17*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:05" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "15:46" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:10*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:07" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "Allocation finished" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:17 ``+34m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:36 ``+24m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "20:28* ``+71m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "12:58 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:24 ``+38m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "21:30* ``+140m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:25 ``+78m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "Motions released" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:28" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:50 ``+33m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:47 ``+11m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:22" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:14 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:40 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "9:30" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "14:18 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "First ballot received" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:51 ``+143m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:46 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:52 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:18 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:13 ``+119m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:40 ``+120m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:35 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +#: ../../guide/tournament-logistics.rst:172 +msgid "?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "Last ballot confirmed" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:38 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "16:07 ``+21m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:15 ``+23m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:05 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "15:44 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:09 ``+29m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:06 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:176 +msgid "Tab Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:178 +msgid "Setting up a tab site is the most technically challenging (or at least annoying) part of tabbing. It is where you need to reconcile large amounts of data and configure a variety of settings to ensure everything will run without issues during rounds. While this is often done a day or two before the tournament, ideally you should look to do as much as possible in the week or two beforehand where there is much less time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:181 +msgid "Importing data: workflow" +msgstr "" + +#: ../../guide/tournament-logistics.rst:185 +msgid "First check with registration people if their data is complete, and if not who is missing. If it's only a few people it's viable (for tab purposes) to use place-holders for them, as long as you remember to follow up and edit their data manually later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:186 +msgid "Familiarise yourself with the different methods for importing data into your tabbing program. Typically, these include options for bulk-importing spreadsheets, for adding information piece-by-piece through a graphical interface, or a hybrid systems. Depending on your tabbing software it may be easiest to first setup your tournament on a local copy of the tab (where it will be faster to rectify mistakes) and transfer the data to the live site when everything is mostly complete." +msgstr "" + +#: ../../guide/tournament-logistics.rst:188 +msgid "If you are using Tabbycat our spreadsheet importer is definitely easiest to use on a local copy; however using the visual importer is perfectly viable for larger tournaments if you are not comfortable with the command line. When using the spreadsheet importer note that it will likely take several iterations to get the data to import cleanly as there will typically be small mismatches in speaker/institution names and the like." +msgstr "" + +#: ../../guide/tournament-logistics.rst:190 +msgid "If the tournament (or the host society) has their own domain name and your tab software is self-hosted consider whether you want to setup the tab site on their domain so that the URL is nicer and/or easier to type." +msgstr "" + +#: ../../guide/tournament-logistics.rst:192 +msgid "If you are using Tabbycat, and deploying to Heroku, be sure to read our documentation about the size of Postgres database your tournament will require. Setting up the correct size of database from the start is the best way to go, as transferring information at a later stage is a hassle and could delay the tab at inopportune times." +msgstr "" + +#: ../../guide/tournament-logistics.rst:195 +msgid "Importing data: regions/societies" +msgstr "" + +#: ../../guide/tournament-logistics.rst:199 +msgid "Societies will often have special names that they like to use in draws (that are not the same as their institution's name or acronym). These can be gathered from institutional reps or from prior tabs. When in doubt err on the colloquial / most recognisable name; particularly for formats where teams need to find each other prior to the debate." +msgstr "" + +#: ../../guide/tournament-logistics.rst:200 +msgid "If your tabbing software has methods for assigning region information to teams and adjudicators (for diversity purposes) determine with the adjudication core the types of regions that will be used." +msgstr "" + +#: ../../guide/tournament-logistics.rst:203 +msgid "Importing data: participants" +msgstr "" + +#: ../../guide/tournament-logistics.rst:207 +msgid "Check you have emails/phone numbers included in your data that will be imported (presuming your tabbing software supports this) there are useful to have on hand later for either emailing out information or quickly following up errant adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:208 +msgid "Often, the easiest way to prepare registration data for tab imports is to create new tabs in the registration spreadsheet, and use referencing to automatically order and arrange their data into the format your tab software wants. If the registration data changes significantly this will also make it easier to re-import things." +msgstr "" + +#: ../../guide/tournament-logistics.rst:209 +msgid "Often some adjudicators, typically local independents, may not be available for all rounds. Try and find out who this affects and when; once data has been imported you can :ref:`pre-check these adjudicators in and out of rounds ` (if your tab software supports this; otherwise note it for later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:210 +msgid "Remember that the swing team(s) probably also need to be imported into the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:213 +msgid "Data import: rooms" +msgstr "" + +#: ../../guide/tournament-logistics.rst:217 +msgid "Ideally you want not just a list of rooms, but also of their types and categories — i.e. what building a room is in and/or it will be coded so that participants can find it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:218 +msgid "You want to know if access to some rooms is conditional; i.e. if some rooms are only available for some rounds. Again, if your tab software supports it you can :ref:`record this availability information into the system ` (once data is imported) otherwise you can note it for later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:219 +msgid "Registration should have collected information about accessibility requirements; they should be imported into your tab software (if it :ref:`supports automatically matching accessibility requirements `) or note for later. In general you will also want to use a similar process to ensure that members of the adjudication core are assigned rooms that are close to the tab room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:220 +msgid "You also want some idea of priority; that is to say if some rooms are inconvenient (and you have more rooms than you need) they should be marked as a low priority so they will be allocated only if needed. Again, this might be automatically done by your tab software or something you will need to note and manually change after each draw is made." +msgstr "" + +#: ../../guide/tournament-logistics.rst:223 +msgid "Data import: adjudicator test/CV scores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:225 +msgid "Ideally the adjudication core should do this themselves as they are marking the test or scoring CVs. If they won't, or you don't trust them with full tab access, be prepared to do so yourself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:228 +msgid "Data import: tab access" +msgstr "" + +#: ../../guide/tournament-logistics.rst:230 +msgid "Set up user accounts for the adjudication core with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:231 +msgid "Set up user accounts for runners/assistants with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:233 +msgid "If using Tabbycat and using online ballots or feedback with the private URLs method, participants should be emailed out their private URLs before they start travelling to arrive at the tournament (i.e. when they have a reasonable chance of checking their email). This can be done using the inbuilt pages on Tabbycat, or by importing participants data into a service such as Mailchimp." +msgstr "" + +#: ../../guide/tournament-logistics.rst:236 +msgid "Pre-Rounds Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:239 +msgid "Setting up the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:241 +msgid "This is typically the first order of business, as all future pre-round setup tasks (i.e. training the adjudication core, testing printing, etc.) are better for being done in the same space that will be used throughout the rounds. Once you're in the space there are a couple of small checks to run through before the larger question of how to arrange and use the space should be tackled:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:245 +msgid "Check with convenors whether things can be left in the tab room overnight. If they can't you'll need to make plans for how to move any big items (printers; ballot stacks) to and from the tab room each day." +msgstr "" + +#: ../../guide/tournament-logistics.rst:246 +msgid "Check that the internet access in the tab room is reliable." +msgstr "" + +#: ../../guide/tournament-logistics.rst:247 +msgid "Check that the projector system works, both with whatever wired-in computer is in the room and when connected to your laptop." +msgstr "" + +#: ../../guide/tournament-logistics.rst:248 +msgid "Check what items either yourself, or the organisers, have at hand and check if anything needs to be acquired before the next day. Critical items for tab rooms are typically:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:252 +msgid "An extension cord with multi box; ideally a pair of each." +msgstr "" + +#: ../../guide/tournament-logistics.rst:253 +msgid "Whiteboard markers (assuming there is a whiteboard) otherwise permanent markers and large sheets of paper (i.e. A2) can suffice." +msgstr "" + +#: ../../guide/tournament-logistics.rst:254 +msgid "Boxes. Lots of boxes. Loose ballots are a source of confusion and error, so you want some way of temporarily storing ballots as they proceed through the entering and checking process. You probably want at least three large boxes (for ballots to-enter, ballots to-check, and finished ballots) but more will be useful." +msgstr "" + +#: ../../guide/tournament-logistics.rst:255 +msgid "Spare printing ink/toner, and paper for the printer. Ideally your paper would be multi-coloured, with each colour being used for a different round. Pastel colours are ideal, and you ideally want at least three different colours so that you don't have to repeat a colour within the same day. Be sure to calculate how many sheets you will need per round and ensure you have a generous number of spares." +msgstr "" + +#: ../../guide/tournament-logistics.rst:256 +msgid "If tabbing a format that can produce multiple ballots per-debate, staplers are essential to keep those ballots organised. Buy at least two sturdy ones." +msgstr "" + +#: ../../guide/tournament-logistics.rst:258 +msgid "Non-essential, but often useful to have items:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:262 +msgid "Whatever dongles/adapters you need to connect your laptop to the projectors, both in the tab room and in the briefing room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:263 +msgid "An Ethernet cable (or two) as a backup option if WiFi drops or is overloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:264 +msgid "Post-it notes are a great way to temporarily mark ballots with information; typically used to indicate ballots that need correcting." +msgstr "" + +#: ../../guide/tournament-logistics.rst:265 +msgid "You'll often need to make impromptu signs; sticky tape and/or blu-tack are good here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:266 +msgid "Spare pens for the people doing data entry to use" +msgstr "" + +#: ../../guide/tournament-logistics.rst:267 +msgid "Trash bags for collecting rubbish as it accumulates" +msgstr "" + +#: ../../guide/tournament-logistics.rst:268 +msgid "A Chrome Cast can occasionally be very useful if a projector or screen doesn't have accessible input cables or so that you can use a projector without having your laptop tethered to a particular podium and desk." +msgstr "" + +#: ../../guide/tournament-logistics.rst:270 +msgid "If you haven't already it's a good idea to check your printing setup by printing off a bunch of generic ballots and feedback forms to have on hand if the need arises (i.e. a ballot is missing and needs to go out ASAP; or if someone can't do feedback online and needs to do so on paper). At worst, the blank ballots you print can be used for the out-rounds. While printing these off, time how long it takes the printer to print say 25 ballots and extrapolate from that to figure out how long it will take to print the entire round's worth of ballots. Note that if printing off a round's ballots is relatively quick it can be useful to delay it in order to better accommodate any last-minute changes to the draw that happen post-announcement. It's also worth thinking about how you (or at least who will) group up the printed ballots in order to distribute them to runners." +msgstr "" + +#: ../../guide/tournament-logistics.rst:272 +msgid "At this point you should also setup whatever process you need for managing runners and the ballot collection process. At a minimum, this should probably be a spreadsheet or a list on a whiteboard outlining the different groups of rooms with spaces to mark in which runners are delivering/collecting ballots for each location. Who is running where might change from day to day and should be kept updated. It should also have some method for contacting each runner (i.e. a cell phone number)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:274 +msgid "The question of how to arrange the actual room is one with many answers, and is obviously shaped by the peculiarities of the space itself. However there needs to be some system behind it so that people know exactly where to go and what to do when there is time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:276 +msgid "The key consideration behind this system is typically the 'flow' of ballots: what happens after they are brought back from runners, but before they are completely entered into the system. Think through how you want this process to operate and how the space can be arranged to make each step as smooth as possible. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:280 +msgid "When runners initially return a big stack of ballots, what happens? They could be transferred directly to the data-enterers to start on, but it is often useful to have preliminary checks here in order to keep the job of the data-enterers as simple as possible. These checks could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:284 +msgid "For formats with multiple ballots per-debate, you typically want to identify and staple together all the ballots from a given panel." +msgstr "" + +#: ../../guide/tournament-logistics.rst:285 +msgid "For tournaments where ballots are liable to go missing (or for when you have plenty of data-enterers and want peace of mind) it is worth using the :ref:`ballot 'check-in' system of your tab software ` (if it has one) to mark off ballots as physically present in the tab room. This allows you to quickly identify which ballots are missing and begin tracking them down earlier than you would do otherwise if just waiting for the 'to enter' pile to be exhausted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:286 +msgid "Depending on your preferences and resources, ballots could at this stage be checked for errors. This could include a basic sweep for missing information (i.e. totals) or a comprehensive sweep that includes checking math errors, ambiguous handwriting, low-point wins, etc.). While this will delay the time between ballots arriving and being entered, it will mean that you can start correcting ballots sooner, and lessens the burden on (potentially inexperienced) data-enterers to check and catch these. If you have many runners, and they are familiar with how debating scoring works, this is recommended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:288 +msgid "Once this preliminary step has occurred the next task is actually entering the ballots. The number of steps here is dependent on your tab software and tab settings; you might have had the 'draft' ballot be submitted online by chairs or you might have the whole two-step process of a 'draft' ballot entry and the 'confirmed' ballot entry taking place within the tab room. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:292 +msgid "Regardless of whether you are working with a one-step or a two-step process, you want to arrange the tables where data-enterers are sitting such that their need to move is minimised. That might mean either have a central inbox of ballots to enter in the centre of the tables (such that everyone can reach it) or having multiple 'clusters' of enterers around boxes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:293 +msgid "If work with a two-step process you want those two steps to be an active part of the spatial arrangement. That is to say, typically there will be a grouping of enterers who are working on the initial ballot entry (clustered around a box or boxes) and then a separate 'downstream' grouping of enterers that work on confirming/validating those entries. Depending on the size of tournament and quantity of runners, you either want it so that individuals from the first group can easily pass their ballots to the box of the second group; i.e. by reaching across the table or walking a short distance. At huge tournaments, you might want a dedicated person to transfer ballots between boxes to prevent enterers having to get up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:294 +msgid "In a two-step process people may need to transfer roles, as generally you want to prioritise entry and then validation. Often this isn't necessarily much more efficient, but if 'rebalancing' the roles make sure that the spaces assigned to each role can accommodate extra people, and that people physically move to occupy each role." +msgstr "" + +#: ../../guide/tournament-logistics.rst:295 +msgid "In general, you want to minimise the number of ballots that each enterer feels the need to 'hoard' to work through to keep the work evenly distributed. If people are taking a large number of ballots to process, at the final stages of entering some people will have a bunch to work through while others will be finished. Making it easy to collect and pass on ballots in the space itself helps cut down on this while keeping entry efficient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:296 +msgid "While the exact spatial arrangement depends on your numbers and what furniture is available, a long rectangle is a good starting point as the ballot process is in general linear (check, enter, validate, finish). Typically, this might look like a series of tables in a row with enterers sitting on either side and with the various ballot boxes in the middle." +msgstr "" + +#: ../../guide/tournament-logistics.rst:297 +msgid "When ballots have finished being enter/validated there definitely should be some sort of final 'done' box. Take care how ballots are put here, a common source of error is people putting ballots there before they are fully finished." +msgstr "" + +#: ../../guide/tournament-logistics.rst:298 +msgid "When ballots need to be corrected you generally want to 'extract' them from this process and hand them off to a tab-director or assistant to chase up and collect. There should be a forethought process for managing this; and ideally a dedicated space for it to prevent ballots being lost and to make it easy to identify ongoing issues. This might look like a process of sticking a post-it note (outlining the error) to the ballot, and then pulling it from entry/validation and placing it on a desk. Ideally you also want one of the tab directors always *not* doing data entry so that they are immediately available to manage this process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:301 +msgid "Training volunteers" +msgstr "" + +#: ../../guide/tournament-logistics.rst:303 +msgid "If at all feasible you want to train that volunteers acting as runners and/or data enterers the day *before* the tournament starts otherwise the first round will be rough. It's generally a good idea for this training session to generally mirror the process of running a round. It's also generally a good idea that — even if you have enough people for dedicated runner and data-enterer roles — to train all volunteers so that they are familiar with each role and can fill in if needed. This has a couple of stages:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:307 +msgid "Introductions and details" +msgstr "" + +#: ../../guide/tournament-logistics.rst:311 +msgid "Volunteering is typically thankless and often stressful. It's also quite a dull and mechanical process: deliver paper; collect paper; enter numbers; check numbers. Given the rather unglamorous nature of their role you want your volunteers to feel welcome and a crucial part of a wider team. When meeting everyone for the first time try and run the introductions in a non-perfunctory manner and get to know people's background/interests and outline how valuable they are to the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:312 +msgid "As part of this process you should, note their cell phone numbers or whatever means you will use to coordinate communication between the team." +msgstr "" + +#: ../../guide/tournament-logistics.rst:313 +msgid "Figure out what will be happening during downtime and how you can make it more enjoyable. Would volunteers like to watch debates, work in the tab room, etc. Is there anything they would like during those down times (music, snacks, coffee, etc.)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:315 +msgid "Rooms and Running" +msgstr "" + +#: ../../guide/tournament-logistics.rst:319 +msgid "If runners are unfamiliar with debating in general, outline the basics of what draws are, what ballots are actually for, and what this process looks like from a debater's perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:320 +msgid "Outline how/when the printing process occurs and who will sort/assign the ballots. Now is a good time to assign different runners to the different groups/rooms that they will be working with." +msgstr "" + +#: ../../guide/tournament-logistics.rst:321 +msgid "It is critical that, as a group, you actually go to everyone one of the venue groups and identify all of the venue rooms that are listed so that everyone knows exactly where to go. This may take some time. But it is a good chance to both check those rooms actually exist and pre-identify any problems that might occur with runners and debaters finding them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:322 +msgid "Outline in general what happens during ballot collecting: when to do it, how to approach chairs, what do to if they are slow or delaying. You should raise the chance of chairs being belligerent and outline how they (and you) should deal with this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:323 +msgid "If you are having runners pre-check ballots it's a good idea to fill out a few 'bad' ballots to demonstrate the kinds of checking required. If you are using any communication systems (i.e. having runners mark of buildings as 'done' in an online system) go through that now also." +msgstr "" + +#: ../../guide/tournament-logistics.rst:325 +msgid "Data entry and checking" +msgstr "" + +#: ../../guide/tournament-logistics.rst:329 +msgid "Before starting, setup logins for everyone and show them how to login. Also get an idea of what devices they will be using, or can bring, for data entry purposes. Check/ensure that they will have internet access on those devices." +msgstr "" + +#: ../../guide/tournament-logistics.rst:330 +msgid "Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots which they will occur." +msgstr "" + +#: ../../guide/tournament-logistics.rst:331 +msgid "Run through how the seating/table/box arrangement works and the types of roles at different positions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:332 +msgid "Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else." +msgstr "" + +#: ../../guide/tournament-logistics.rst:333 +msgid "Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:336 +msgid "Training the adjudication core" +msgstr "" + +#: ../../guide/tournament-logistics.rst:338 +msgid "Typically making the first-round's draw and allocation is the best time to really run through how your tab software and processes work in a 'real' environment as well as the expectations surrounding their and your role. Generous amounts of time should be budgeted for this; it's not uncommon for it to take up most of an evening. It's also worth having an older tab, or a tab full of fake data handy in order to show them how, say, the feedback or allocation interfaces look like when full of data." +msgstr "" + +#: ../../guide/tournament-logistics.rst:340 +msgid "To kick off you should probably setup tab logins for the adjudication core as necessary, outline what kinds of access they have, and (particularly if they haven't used your tab software before) outline broadly what pages they should and shouldn't access. In particular, show them how to find and parse feedback as that is often the interface where they will be spending most of their time individually. As part of this tour outline (if you haven't already) how feedback will work, as well as the means by which the adjudication core can use the tab software to keep track of feedback as it comes in. Ideally some sort of general strategy should be formed for this, so that particular people sit out rounds, or are delegated the task of catching up on feedback at other points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:342 +msgid "Depending on how many runners you have it may be necessary, or beneficial, if the adjudication core helps out with data entry. However, if you go down this route the adjudication core need to be highly trained; they are often much more likely than volunteers (who are less self-confident and have more experience) to make errors. Whether you do or don't do this, ensure that adjudication core members know to come to the tab room ASAP after they have finished adjudications rather than swanning around socialising or going to lunch. Draws will often be held up just by the fact that not enough adjudication core members are present to start or finish an allocation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:344 +msgid "The first-round allocation is the last thing you want to cover. It is typically your only change to slowly and comprehensively walk the adjudication core through the allocation interface and the allocation system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:346 +msgid "Allocation interfaces, while often complex, should be stepped through so that the adjudication core knows precisely how to operate it themselves (if needed). They should know what it can (and can't do) and how the different features can be used and activated. For example, diversity highlights might be an optional toggle (in which case you explain how to active it, when to do so, and what it represents) or there might be parts of the interface that detail information such as a room's liveness, energy, or bracket which should be highlighted and explained (i.e. how 'liveness' is determined)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:348 +msgid "Secondly, and most importantly, is outlining how the automated process of adjudicator allocation operates, and how this can be made to match the adjudication core's preferences. Typically, you want to rely on automatic adjudicator allocations as much as possible in order to decrease the time taken to do an allocation; however every adjudication core has a different philosophy on what their perfect allocation looks like, and it is your job to try and align that ideal with what the automated system produces as much as is possible. The precursor to this is yourself knowing how your tab system allocation works: what is the relationship between a debate's bracket (or assigned priority/energy) and the numeric ranking of the automatically generated panel? Does the software optimise panel strength for a voting majority, or across all panellists? When does the software allocate solo chairs over panels? How does it avoid conflicts? Does it have (and enforce) particular expectations for a given adjudicator's score; or does it rely on a more relative comparison? The answers to the questions will often be dramatically different between different programs and you should know them in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:350 +msgid "Most tab software will have at least some options for you to configure those automated processes — either by changing the automatic allocation's parameters directly or by controlling the ranking and feedback systems that feed into it. The first round is the prime opportunity to configure these options so that they align as close as possible with what the priorities of the adjudication core. If your feedback ranking system is mismatched with how you expect the automatic allocation to place adjudicators, or if the distribution of adjudicators across the draw is not what you expect, the adjudication core will end up wasting significant amounts of time adjusting allocations. Even if things work well using the default settings, ensure you experiment and demonstrate the consequences of changing the settings just to show that it can be done, what the general effects are, and to see if there are even-better configurations." +msgstr "" + +#: ../../guide/tournament-logistics.rst:352 +msgid "This process of tweaking the automatic allocation settings is one you should also revisit as the rounds progress." +msgstr "" + +#: ../../guide/tournament-logistics.rst:354 +msgid "How to approach diversity (typically in terms of region and gender) across an allocation in particular is something that some members of an adjudication core will not have had to consider in the context of a large tournament with time pressure or in terms of having to make explicit trade-offs. Again, you should make it clear how the software can accommodate this, and get the adjudication core to plan for how (in general) they want to approach this. Often it will form the final phase of the allocation process, and so can easily be forgotten or skipped over; or people will have different philosophies of how to approach this which are only raised at critical points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:356 +msgid "Outline that there will usually be a trade-off between the quality of each allocations and the speed at which the tournament runs. When time is not a factor, many adjudication cores will often take an hour or more in order to create a perfect allocation; but they should know though that aiming for perfect during many rounds will break the schedule. You should try and get them to set some sort of time goal for allocations, and (during the rounds) ensure that they are aware of when they are going too fast or too slow. Depending on your personal preferences and the norms surrounding tab direction in your circuit you may want to actual enforce these time limits." +msgstr "" + +#: ../../guide/tournament-logistics.rst:358 +msgid "Finally, outline how you will all communicate. Again, there should be a single medium for this so that everyone knows what is going on; and this is ideally something that has been planned out beforehand with them and the organising committee. But at this point the tab team may have expanded, or there may be better options than what was being used previously. It's also worth outlining which parts of the tab team will generally be doing what roles and where — i.e. who will be rolling the draw, who will be chasing up people, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:361 +msgid "Preparing a briefing" +msgstr "" + +#: ../../guide/tournament-logistics.rst:365 +msgid "At large tournaments there should be some form of briefing covering ballots and feedback process, even if it is just quick one. Usually you will want to be the person to design and deliver this; other people less-familiar with the system may miss details." +msgstr "" + +#: ../../guide/tournament-logistics.rst:366 +msgid "Liaise with convenors and the other people doing briefings to ensure (a) they know you're doing one; and (b) you are not overlapping in terms of content." +msgstr "" + +#: ../../guide/tournament-logistics.rst:367 +msgid "See the last section of this document for notes on what can be useful to include here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:370 +msgid "Final checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:374 +msgid "Check if the convenors have made a map that clearly outlines where the rooms are. Ensure it's clear and post it to either the tab site (ideally) or somewhere like Facebook." +msgstr "" + +#: ../../guide/tournament-logistics.rst:375 +msgid "Check that convenors have some sort of way-finding system in place, i.e. chalked directions or colour-coded signs. Check these colour codes match the names of your venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:376 +msgid "Check that the draw types are correct for each round in the tab system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:377 +msgid "Check with adjudication core if/when there are secret rounds and that these are correct in the edit data base area." +msgstr "" + +#: ../../guide/tournament-logistics.rst:378 +msgid "Check how the draw will be displayed and managed. Is the projector good; how big does the text size need to be? How fast is the scroll?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:379 +msgid "If you will pre-print ballots check that you've set the \"return ballots to\" configuration setting; even if it just says \"to runners\"." +msgstr "" + +#: ../../guide/tournament-logistics.rst:382 +msgid "Managing Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:384 +msgid "Once everything has been setup and everyone knows what they should do, the actual process of running each round should go smoothly. It probably won't though. The earlier sections should have laid out what the ideal process for managing data entry and allocations, so this section will instead focus on what can go wrong and what to keep an eye out for." +msgstr "" + +#: ../../guide/tournament-logistics.rst:387 +msgid "Disaster scenarios" +msgstr "" + +#: ../../guide/tournament-logistics.rst:389 +msgid "There are two broad classes of disaster scenario here. The first, and more rare case is when either internet access at the venue goes out or if a web service that your tab software depends on has an outage (for example, both Tabbie 2 and Heroku-deployed Tabbycat instances depend on Amazon Web Services). The first can at least be solved temporarily if tethering is available, but if that is not possible (or the latter case occurs) you may need to switch to using an offline copy of that tab by restoring from a backup if the outage is non-transient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:391 +msgid "Obviously, for this to work, you should be taking regular backups using whatever mechanism your tab software allows. Key times to do so are critical events such as finishing entering a round's data or finalising an adjudication allocation as these are especially difficult to recreate. Importantly, these backups are only useful to you if you have a downloaded copy of them; ideally download to a Dropbox or some other cloud service that will spread them across multiple computers and an online service." +msgstr "" + +#: ../../guide/tournament-logistics.rst:393 +msgid "Having an outage of internet access or a key web service go down to the point of having to switch to an offline tab is an exceedingly rare event, but one worth planning for at large tournaments. That is to say you should have ideally have an offline copy of your tabbing software setup on your local machine, and know how to restore a backup to it if necessary." +msgstr "" + +#: ../../guide/tournament-logistics.rst:395 +msgid "Backups are also useful as guards against a much more common source of error: data loss caused by user error. It is not unheard of for even experienced tab directors (or inexperienced adjudication core members) to accidentally delete an entire allocation, delete a round, or some other form of destructive action that would require a lot of work to redo. Taking backups at key points, and knowing how to restore them (to the online copy of the tab) is a useful — and occasionally essential — skill." +msgstr "" + +#: ../../guide/tournament-logistics.rst:397 +msgid "The much more common source of a major tab disruption is a major user-error or a bug within your tab software itself. Fixing these will be highly-context dependent and the best way you can prepare for them is to know your tab software well enough to understand what might have caused it or be able to contact someone else who does. That said, having backups on hand can also allow you to restore your database to before the bug or user-error occurred and try to proceed without re-triggering it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:400 +msgid "Expected problems" +msgstr "" + +#: ../../guide/tournament-logistics.rst:402 +msgid "Incorrect ballots are an inevitable tragedy. Many more optimistic tab directors will imagine that these can be prevented through sufficiently detailed briefings, recurring public shamings, or fool-proof ballot designs. While these might help in cutting down the number of errors, eliminating them entirely seems to be an unachievable goal. Note that this is particularly true at international tournaments and/or at tournaments that draw participants from circuits which have more than one predominant format." +msgstr "" + +#: ../../guide/tournament-logistics.rst:404 +msgid "While debaters as a whole display astonishing levels of innovation in discovering new ways to incorrectly fill in a ballot, there are a couple of broad cases that you should look out for an prepare people to deal with:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:408 +msgid "Not adding up score correctly. Pretty much everyone who does this will note that this is the first time that it has ever happened to them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:409 +msgid "Omitting some information. Most common are not filling in total scores, the nominating winner, or the margin. Having omitted an entire team's scores or speaker names is not uncommon." +msgstr "" + +#: ../../guide/tournament-logistics.rst:410 +msgid "Scores that are outside the range." +msgstr "" + +#: ../../guide/tournament-logistics.rst:411 +msgid "Low-point wins, or tied-point wins. Typically occurs in conjunction with (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:412 +msgid "Poor handwriting rendering numbers illegible. While one could 'guess' whether a number is in fact a 6 or a 5 based on a team's total score, doing so is dangerous as it assumes that the person hasn't also done (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:413 +msgid "'Correcting' information in an ambiguous way. For example, using arrows to swap a speaker's order (which is typically circular/ambiguous) or drawing numbers over other numbers in a way that makes it unclear which is the original and which is the replacement." +msgstr "" + +#: ../../guide/tournament-logistics.rst:414 +msgid "Ballots just going entirely missing because either a runner missed the room, the chair forgot to return it, or the chair just left it in the room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:416 +msgid "Ballots aside, there are a number of other common occurrences that will necessitate changes to the drawn and allocations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:420 +msgid "Teams will not turn up to debates, or turn up to debates extremely late. In both cases they will often not notifying anyone. Aside from needing to swap in a swing team in their place in the draw, it's worth keeping in mind that the necessity of a swing team might not be known until right when debates are about to start (which can lead to issues if you assume trainees or runners will be filling up the 'spare' swing team)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:421 +msgid "Adjudicators will also go missing. As with teams this can usually be caught during roll call; but might also not be known up until debates start. If the adjudication core is available they can make adjustments, but often you will need to make a call as to whether to form an even-sized panel or to redistribute adjudicators from elsewhere." +msgstr "" + +#: ../../guide/tournament-logistics.rst:422 +msgid "When a draw is released there will often be conflicts that were unknown to the tab system, and will necessitate making changes to the draw post-release. It's important that when making these changes you keep a clear record of what needs to change (if there are multiple swaps needed it can get tricky to keep track of) and ensure that all parties involved know about where they are being swapped to." +msgstr "" + +#: ../../guide/tournament-logistics.rst:425 +msgid "Ongoing checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:427 +msgid "You will have a decent amount of downtime during rounds when debates are happening. A couple of things its worth keeping an eye on during that time:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:431 +msgid "Ensuring your backups have been taken and downloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:432 +msgid "Ensuring the tab room isn't devolving into mess." +msgstr "" + +#: ../../guide/tournament-logistics.rst:433 +msgid "If you can be bothered (and if no adjudication core member is doing so) reviewing feedback for critical issues (i.e. comments highlighting severe issues, or chairs getting very low scores) is a good way to be useful. If using paper-based feedback this can look like physically separating out these feedback forms for the attention of the adjudication core; while if using online feedback systems you may want to keep a collection of browser tabs to show." +msgstr "" + +#: ../../guide/tournament-logistics.rst:434 +msgid "Chasing up the language committee (if one exists for this tournament) to confirm which teams are in which category and what their break preferences are (if multiple breaks are not allowed). You want to have this information confirmed as soon as possible as it becomes of critical value to allocations once the draw starts segmenting into live/dead rooms." +msgstr "" + +#: ../../guide/tournament-logistics.rst:435 +msgid "Reviewing how efficiently things are running and whether there are any bottlenecks that can be better addressed in the next round. It's generally a good idea to (on a whiteboard or a spreadsheet) keep track of how long each stage of a round is taking (running, data-entry, allocation) and what (if anything) is causing delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:437 +msgid "If hosting Tabbycat on Heroku keep an eye on the metrics section of the dashboard area, noting if there are 'timeout errors' and what the average response times are. Adding more dynos should help with both." +msgstr "" + +#: ../../guide/tournament-logistics.rst:440 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:443 +msgid "Generating the adjudicator's break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:445 +msgid "Determining the adjudicator break generally involves a complex set of considerations rather than strictly ranking based on feedback. As such most adjudication cores will use whiteboards or Google docs to draft and discuss the possible options. One thing to note here is that breaking adjudicators will need to be marked as such in the tab at some point (both so they can be on future draws, and for publication) so you want to be careful that the tab is the final source of authority here — it is easy for information to get out of sync between what the adjudication core is using to draft the break and the system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:447 +msgid "When the adjudication core is determining the break ensure that they have an idea of the *quantity* of adjudicators needed (breaking too few or too many will cause issues) and whether there are any special considerations (such as having conflicts with large portions of the draw, or leaving at a given point) that involve a specific adjudicator being considered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:450 +msgid "Generating the team break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:452 +msgid "Before doing so in an automated fashion, first check in your tab software whether all teams are assigned to the right break categories. Depending on whether your software supports multiple formats you probably also want to check that each break category is using the right 'rule' specified by the tournament (i.e. a WUDC- or Australs- compliant break ranking). Also double check the break size itself is correct in the software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:454 +msgid "Hopefully the automated system will generate a correct break, but this should always be checked against what you'd expect the results to be from standings. Note also that there are cases, such as when a team has to leave, or when teams are or are not double-breaking, that mean the automated break results need to be overridden (typically in Tabbycat you would add a marker or note to include their ranking, but exclude them from having a break rank)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:457 +msgid "Announcing the break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:459 +msgid "Mistakes are made surprisingly often during results announcements. Again, this is often a problem with incomplete or out of sync data, where print-outs, slides, or the tab site itself might not reflect (for example) last minute changes about breaks or have potentially mixed up teams or adjudicators with similar names. Things that can help:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:463 +msgid "Have a single source for what is being read out — i.e. a printed list (recommended) or the tab site itself — but don't mix and match. If making slides (often a good idea for large/crowded venues) copy the data from the canonical source being announced." +msgstr "" + +#: ../../guide/tournament-logistics.rst:464 +msgid "Double check what is being read out against the tab site, and/or whatever draft lists were used to determine the adjudicator's break. Verify with the adjudication core that everyone who should be there is, and that nobody is missing." +msgstr "" + +#: ../../guide/tournament-logistics.rst:465 +msgid "Clarify what information should be on the print-outs and the general order in which things are read. For example, it might be easy to omit breaking adjudicator's institutions, to use ambiguous abbreviations over full institution names, or to have an inconsistent approach to how the information is read (i.e. whether it is read as *wins* then *team points* then *team name*)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:466 +msgid "Without revealing any details try and get at least some guidance on how to pronounce names that people are not familiar with pronounce." +msgstr "" + +#: ../../guide/tournament-logistics.rst:467 +msgid "Have backup copies of whatever is being read from and clarify who is reading off what portions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:468 +msgid "Try to publish the break list on the tab website (or via some other online method) shortly after it is announced in order to minimise the chance of misinformation spreading." +msgstr "" + +#: ../../guide/tournament-logistics.rst:471 +msgid "Managing the out-rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:473 +msgid "Out-rounds are generally under less time pressure and can be managed by just one or two members of the tab team. However, they tend to be run in a more haphazard fashion, so there are a couple of things to keep on top of:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:477 +msgid "You should keep track of which adjudicators have or have not been used throughout the finals allocations. It is easy for adjudication cores to forget to allocate someone and have to either drop them or promote them beyond what they had originally intended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:478 +msgid "It is very easy for ballots to get lost in break rounds as chairs have less defined roles and processes in what they do with their ballots. While having correct speaker scores correctly entered for break rounds isn't a strict necessity, it is nice to have and the alternative (using fake speaks just to record the winner) can cause confusion. Closely manage distributing ballots to the chairs and collecting them as soon as possible afterwards; especially if there is any time pressure. Generally it is not worth printing off per-debate ballots; just print a stack of generic ballots at the start of the out-rounds and distribute as needed." +msgstr "" + +#: ../../guide/tournament-logistics.rst:479 +msgid "You should know, in addition to when the break rounds are, when the results announcements are. Often these announcements are saved (for suspense or logistics reasons) until particular points of time (i.e. until the evening social; or until other out-rounds are finished). Obviously it's important not to accidentally release results; but often convenors and the adjudication core will often have different ideas about when results are meant to be released." +msgstr "" + +#: ../../guide/tournament-logistics.rst:481 +msgid "If using Tabbycat to manage out-rounds with multiple break categories, note that the round progression is no longer strictly linear. So be careful with when/if results are released online and note that often you can't rely on online interface to release draws publicly." +msgstr "" + +#: ../../guide/tournament-logistics.rst:484 +msgid "Preparing for tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:486 +msgid "At some point, if you haven't already, have a discussion with the adjudication core about when the tab itself will be released and what data will be released. Well before the tab is due to be released you want to check that anonymisations and any speaker flags (i.e. Novice, ESL) are up to date in your tab software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:489 +msgid "Managing the tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:491 +msgid "Almost there!" +msgstr "" + +#: ../../guide/tournament-logistics.rst:493 +msgid "If hosting Tabbycat on Heroku it's worth increasing the resources available to the server for the ~12 hour period following tab release; it's by far the most concentrated burst of traffic the site will receive. Because Heroku bills by the hour, even going to a relatively expensive option, such as performance dynos with auto-scaling, will be very cheap if run just for this period. That said the site should be relatively resilient even in the face of large amounts of traffic; even running with the most basic resources allocated, at worst pages will be temporarily slow or not load." +msgstr "" + +#: ../../guide/tournament-logistics.rst:495 +msgid "To get an idea of how the site is performing in the Heroku dashboard keep an eye on the average request time number and adjust the number of dynos to try and keep it under say two seconds; ideally just one. When you first turn on the tab release settings, make sure you go through and load every page before announcing it to the public, doing so will trigger the caching mechanism that means potentially complex pages (say the speaker tab) don't need to be calculated from scratch each time someone loads the page." +msgstr "" + +#: ../../guide/tournament-logistics.rst:498 +msgid "Post-tournament" +msgstr "" + +#: ../../guide/tournament-logistics.rst:500 +msgid "Once you have sufficiently recovered, consider writing up and sharing a post-script about how things went; noting things that did or didn't go well. Next year's tab directors would certainly appreciate it, and it would be great to see this kind of knowledge spread more widely. The developers of your tab software would also appreciate hearing your feedback; particularly if there were issues that could have been prevented or ameliorated by the software itself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:503 +msgid "Appendix: Briefing Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:505 +msgid "This is a very loose, but not exhaustive, collection of things that are useful to communicate to speakers and adjudicators in a tab briefing. While briefing fatigue is real, having clear expectations about how things like ballots and feedback work are highly valuable uses of the tournament's time if they can at all help cut down the kinds of problems that delay the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:508 +msgid "How feedback works" +msgstr "" + +#: ../../guide/tournament-logistics.rst:510 +msgid "Is it online, or offline? If online did people receive links? What do they do if they have lost it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:511 +msgid "Is feedback mandatory? What accountability mechanisms are there? Will you publish the shame list online or raise it in between rounds?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:512 +msgid "Who will be submitting feedback on who? Do trainees do so?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:513 +msgid "Remind teams that only one of their feedbacks count; they should coordinate who is doing it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:514 +msgid "What is the feedback scale? What does it correspond to? Common sources of confusion:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:516 +msgid "Feedback scales are not like Uber. You do not get five stars for being adequate and generic." +msgstr "" + +#: ../../guide/tournament-logistics.rst:517 +msgid "Feedback scales are not relative to position; it is an absolute scale. That is to say, if your trainee was good, they probably do not deserve the highest rating; they get whatever rating indicates they should be a panellist or low-chair." +msgstr "" + +#: ../../guide/tournament-logistics.rst:518 +msgid "Consider accompanying the score/scale with a statement characterising how these numbers correspond to positions - e.g. a 4.0 means 'should continue on good panels, should chair low rooms'" +msgstr "" + +#: ../../guide/tournament-logistics.rst:520 +msgid "If using online submission options, what should people without phones or internet access do?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:523 +msgid "How ballots work" +msgstr "" + +#: ../../guide/tournament-logistics.rst:525 +msgid "This part of the presentation will be condescending. It is also necessary. The two causes of delays in the draw running late, and thus the tournament running late are (1) people not filling out ballots correctly or (2) people's ballots going missing. Emphasise that this should be taken seriously; minutes spent chasing bad ballots are often minutes that delay every single person at the tournament from doing what they are actually here to do. You should highlight, ideally with illustrated examples:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:529 +msgid "Which parts of the ballot *must* be filled in; people will often overlook margins, or special fields such as motion vetoes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:530 +msgid "That people must specify the full names of speakers; not nicknames or just-first names. Often names will be written poorly or have ambiguities (i.e. two speakers on a team called James) and having the full name is the only way to resolve it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:531 +msgid "That people should **not draw arrows to swap the order of speakers** as these are impossible to decipher. Here, and in other areas, always *cross-out* information clearly and write it again rather than using arrows or drawing over what is there." +msgstr "" + +#: ../../guide/tournament-logistics.rst:532 +msgid "That people should try and write numbers in a manner that makes them crystal clear. Put cross-bars in 7s; bases on 1's. Make 8's actually look like two circles. If people know they have poor handwriting maybe consider writing the literal words — *seventy-one* below the numbers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:533 +msgid "That for styles that do not have a single ballot for a panel, reiterate that everyone fills in their own ballots. At Australs, if this isn't made absolutely clear someone will average their panels ballots in order to try and 'help' you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:534 +msgid "That runners do not fill out ballots. In BP, remind them that only chairs should fill out ballots (i.e. it cannot be deputised to a wing). In formats with individual ballots, remind chairs to make sure their wings have actually filled out a ballot, and get them to check for errors or ambiguities." +msgstr "" + +#: ../../guide/tournament-logistics.rst:535 +msgid "That everyone is bad at math. People who think they are good at math just haven't messed up their ballot *yet*. Emphasize that people should always use their phone's calculators to check totals. At typical tournaments using exclusively paper ballots math errors happen multiple times a round, almost every round." +msgstr "" + +#: ../../guide/tournament-logistics.rst:536 +msgid "How long people have to fill out their ballots. Suggest that chairs actually keep track of this time during a stopwatch, and start moving towards critical steps (i.e. scoring) well *before* the time is up, not *once* it is up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:537 +msgid "Outline what chairs should do to return ballots. If ballots are being run by runners, outline what they should do if a runner doesn't appear. If they are not being run by runners remind people that returning ballots should be there number one priority, over say giving a lengthy adjudication or team feedback. Or getting lunch." +msgstr "" + +#: ../../guide/tournament-logistics.rst:538 +msgid "Remind people to *be nice to runners* and that being mean to runners will have serious consequences." +msgstr "" + +#: ../../guide/tournament-logistics.rst:539 +msgid "Remind people that the tab team and adjudication core will not, except for absolutely exceptional circumstances, accept photos or messaged descriptions of ballots; that all results must be on paper and handled in the same manner. The adjudication core should also be reminded of this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:542 +msgid "How to locate the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:544 +msgid "People should know how to get to the tab room, either to raise issues with the adjudication core or to correct ballot errors. Make it crystal clear where it is and how to get there. Also ensure people know not to barge in; that they should knock and wait." +msgstr "" + +#: ../../guide/tournament-logistics.rst:546 +msgid "Clearly communicate the contact details of the tab directors and get people to take them down. In most cases you do not want people going through convenors or the adjudication core for any tab-related issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:549 +msgid "Misc" +msgstr "" + +#: ../../guide/tournament-logistics.rst:551 +msgid "Now is a good time to encourage people to consider getting involved with tabbing and tab-development. Emphasize that both do not necessarily require technical skills and that tabbers are (or should be) open to feedback and ideas from the wider community. Tell people to come find you and chat if they are interested and put up a link to the `Facebook tabbing group `_." +msgstr "" + +#: ../../guide/tournament-logistics.rst:553 +msgid "If you appreciated this guide we'd appreciate a slide promoting `Timekept `_ and `Debatekeeper `_. This would also be a good point to remind people that their timekeeping apps shouldn't be making noise *unless* they have been explicitly assigned to keep time by the chair." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/guide/upgrading.po b/docs/locale/ca/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..ead6bb204aa --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/guide/upgrading.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:08\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: ca_ES\n" + +#: ../../guide/upgrading.rst:5 +msgid "Upgrading Tabbycat" +msgstr "" + +#: ../../guide/upgrading.rst:7 +msgid "Generally only want to upgrade copies of tab sites that are used on an ongoing basis for multiple tournaments, or if there is a bugfix release between when you setup your site and when the tournament is running." +msgstr "" + +#: ../../guide/upgrading.rst:11 +msgid "Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade." +msgstr "" + +#: ../../guide/upgrading.rst:14 +msgid "Upgrading a Local Copy" +msgstr "" + +#: ../../guide/upgrading.rst:16 +msgid "Assuming you haven't made any changes to the Tabbycat code, upgrading a locally installed copy should just be a matter of `downloading the latest source code `_ and replacing the existing files with the new ones. If you used git to download these files initially you can just pull down the latest copy of the master branch to do this." +msgstr "" + +#: ../../guide/upgrading.rst:18 +msgid "You would then repeat the \"Install Tabbycat\" instructions for your original installation method." +msgstr "" + +#: ../../guide/upgrading.rst:21 +msgid "Upgrading on Heroku" +msgstr "" + +#: ../../guide/upgrading.rst:23 +msgid "The easiest way to upgrade a Heroku site is to create an account on Github and then to `'fork' `_ the `Tabbycat repository `_." +msgstr "" + +#: ../../guide/upgrading.rst:25 +msgid "Once you have done this you can login to your Heroku Dashboard, go to your app, and then navigate to the Deploy tab. In this tab, adjacent to *Deployment method* select the GitHub option. This will bring up a new 'Connect to GitHub' section where you can search for 'Tabbycat' to find the copy of the repository you made earlier and connect it." +msgstr "" + +#: ../../guide/upgrading.rst:29 +msgid "Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/index.po b/docs/locale/ca/LC_MESSAGES/index.po new file mode 100644 index 00000000000..d3291bcd17e --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/index.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-01 22:45\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: ca_ES\n" + +#: ../../index.rst:18 +msgid "Installation" +msgstr "Instal·lació" + +#: ../../index.rst:32 +msgid "Using Tabbycat" +msgstr "Utilitzant Tabbycat" + +#: ../../index.rst:41 +msgid "Tabbing Guide" +msgstr "" + +#: ../../index.rst:52 +msgid "Feature notes" +msgstr "" + +#: ../../index.rst:75 +msgid "About" +msgstr "" + +#: ../../index.rst:8 +msgid "Tabbycat User Guide" +msgstr "" + +#: ../../index.rst:10 +msgid "Tabbycat is a draw tabulation system for parliamentary debate tournaments. It supports two-team formats such as Australs, World Schools, Asians, Australian Easters and all New Zealand formats, as well as British Parliamentary (WUDC). It is also highly configurable, supporting many custom variations of the above formats too. If you're looking for a general overview of the software, check out our `README on Github `_." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/docker.po b/docs/locale/ca/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..395e16da790 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/docker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: ca_ES\n" + +#: ../../install/docker.rst:5 +msgid "Installing Locally using Docker" +msgstr "" + +#: ../../install/docker.rst:7 +msgid "Is this the best install method for you?" +msgstr "" + +#: ../../install/docker.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/docker.rst:12 +#, python-format +msgid "If you need an offline copy of Tabbycat, installing using Docker should be simpler and quicker than using the \"Install Locally on…\" instructions for your operating system. However if a Docker installation doesn't work as outlined below, it's harder to address what isn't working. If you encounter any problems with Docker, we recommend using the \"Install Locally on…\" option as a fallback, but if you need to do so, `please also report the issue you're having on GitHub `_ or :ref:`contact the developers `." +msgstr "" + +#: ../../install/docker.rst:14 +msgid "Docker is an application that makes it very easy to load and run a specific collection of software. It allows us to bundle everything necessary to run Tabbycat into a single package rather than have users install everything needed step-by-step. Once set up, Docker will allow you to start and stop a webserver (that in turn runs Tabbycat) on your computer whenever you want and without the need for internet access." +msgstr "" + +#: ../../install/docker.rst:18 +msgid "1. Download Tabbycat" +msgstr "" + +#: ../../install/docker.rst:20 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/docker.rst:22 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/docker.rst:24 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/docker.rst:28 +msgid "2. Install Docker" +msgstr "" + +#: ../../install/docker.rst:31 +msgid "If using macOS or Linux" +msgstr "" + +#: ../../install/docker.rst:33 +msgid "Install the **Docker Community Edition (stable)** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:36 +msgid "If using Windows 10 Pro, Enterprise, or Education Edition" +msgstr "" + +#: ../../install/docker.rst:40 +msgid "Install the ****Docker Community Edition (stable)*** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:41 +msgid "Before or shortly after installing it, Docker may ask you to enable hypervisor and restart your PC. If it asks you this follow the prompts and restart as asked." +msgstr "" + +#: ../../install/docker.rst:42 +msgid "Once Docker has finished installing, open up the newly-installed Docker application, then right-click the app's icon (the whale) in the Taskbar." +msgstr "" + +#: ../../install/docker.rst:43 +msgid "From there, hit *Settings* in the menu and *Shared Drives* in the sidebar. Tick the checkbox next to your hardrive and then click *Apply*. After that has applied exit and reopen the docker app (ie right-click the taskbar icon and hit exit) and verify that the checkbox is still there." +msgstr "" + +#: ../../install/docker.rst:49 +msgid "If using Windows 7, Windows 8, or Windows 10 Home Edition" +msgstr "" + +#: ../../install/docker.rst:51 +msgid "Install the **Docker Toolbox** from the `Docker Toolbox downloads page `_." +msgstr "" + +#: ../../install/docker.rst:53 +msgid "Not sure which edition of Windows you have? Click Start, search for \"System\", and open the Control Panel item \"System\"." +msgstr "" + +#: ../../install/docker.rst:57 +msgid "3. Run Tabbycat in Docker" +msgstr "" + +#: ../../install/docker.rst:60 +msgid "If using the Docker App" +msgstr "" + +#: ../../install/docker.rst:62 +msgid "*These instructions apply if you installed the Docker App, i.e., if you are using macOS, Linux or Windows Pro/Enterprise/Education.*" +msgstr "" + +#: ../../install/docker.rst:66 +msgid "Ensure that Docker application is open (there should be a whale icon in your menu/task bar) and that it says that Docker is running." +msgstr "" + +#: ../../install/docker.rst:68 +msgid "Browse to the location where you extracted Tabbycat to. Open up the **bin** folder there. Within that folder:" +msgstr "" + +#: ../../install/docker.rst:70 +msgid "If you're on macOS, press the Control key, click the icon for **osx_docker_start.command**, then choose Open from the shortcut menu." +msgstr "" + +#: ../../install/docker.rst:71 +msgid "If you're on Windows, open **windows_docker_start.bat**." +msgstr "" + +#: ../../install/docker.rst:72 +msgid "If you're on Linux, open up a terminal in the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:74 +msgid "A terminal window should popup and bunch of text scroll by. If this is your first time running Docker it may take a while (30 minutes or more) to download the virtual machine. When the text has stopped scrolling by you should see a `Finished building Tabbycat!` message." +msgstr "" + +#: ../../install/docker.rst:76 +msgid "Open up http://localhost:8000/ (Windows) or http://0.0.0.0:8000 (OSX/Linux) in a browser of your choice!" +msgstr "" + +#: ../../install/docker.rst:78 ../../install/docker.rst:100 +msgid "If you want to reopen Tabbycat at a later time (say after restarting) repeat steps 1 through 4 here." +msgstr "" + +#: ../../install/docker.rst:81 +msgid "If using the Docker Toolbox" +msgstr "" + +#: ../../install/docker.rst:83 +msgid "*These instructions apply if you installed the Docker Toolbox, i.e., if you are using Windows 7, Windows 8 or Windows 10 Home.*" +msgstr "" + +#: ../../install/docker.rst:87 +msgid "Start the **Docker Quickstart Terminal**." +msgstr "" + +#: ../../install/docker.rst:89 +msgid "Run the command ``docker-machine ip``. Take note of the IP address it shows, for example::" +msgstr "" + +#: ../../install/docker.rst:94 +msgid "Navigate to the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:96 +msgid "Open a browser and go to http://192.168.99.100:8000/, replacing \"192.168.99.100\" with whatever IP address was shown in step 2." +msgstr "" + +#: ../../install/docker.rst:98 +msgid "Once you're done and want to stop the Tabbycat server, press Ctrl+C, wait until the next prompt appears, and then run ``docker-machine stop``." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/heroku.po b/docs/locale/ca/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..653db753972 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/heroku.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: ca_ES\n" + +#: ../../install/heroku.rst:5 +msgid "Installing on Heroku" +msgstr "" + +#: ../../install/heroku.rst:7 +msgid "When running Tabbycat on the internet, we set it up on `Heroku `_. The project is set up to be good to go on Heroku, and it works well for us, so if you'd like to run it online, we recommend that you do the same. Naturally, this requires you to have a Heroku account." +msgstr "" + +#: ../../install/heroku.rst:9 +msgid "There are two ways to do this: a **short way** and a **long way**. Most people should use the short way. The long way requires some familiarity with command-line interfaces and Git, and requires a :ref:`local installation ` as a prerequisite, but makes it easier to :ref:`upgrade versions ` later on and (unlike the short way) allows you to import data from CSV files." +msgstr "" + +#: ../../install/heroku.rst:12 +msgid "The short way" +msgstr "" + +#: ../../install/heroku.rst:13 +msgid "Click this button:" +msgstr "" + +#: ../../install/heroku.rst:18 +msgid "This is the easiest way to deploy an instance of Tabbycat online. It requires no technical background." +msgstr "" + +#: ../../install/heroku.rst:20 +msgid "If you don't already have a Heroku account, it'll prompt you to create one. Once you're logged in to Heroku, choose a name for your installation, then scroll down and click **Deploy**. Once it's finished, click **View** and follow the prompts. Once finished, open the site and from there you can easily set up a demo data set (if you just want to learn Tabbycat) or use the data importer to set up a real tournament." +msgstr "" + +#: ../../install/heroku.rst:22 +msgid "During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard." +msgstr "" + +#: ../../install/heroku.rst:24 +msgid "If you can't access a credit card, you can instead install a limited version, which we call \"Tabbykitten\". However, Tabbykitten cannot send any e-mails or handle as much public traffic. We therefore strongly recommend it only as a last resort, and even then only for small tournaments. `Use this link to set up a Tabbykitten site `_." +msgstr "" + +#: ../../install/heroku.rst:27 +msgid "The long way" +msgstr "" + +#: ../../install/heroku.rst:28 +msgid "The long way sets you up with more control over your environment. Because you'll clone `our GitHub repository`_, it'll be easier for you to :ref:`upgrade your app ` when a new version is released. You'll also have the flexibility to make and contribute updates to the source code. We recommend it if you have experience with Git. It's also easier with this method to import CSV files using the command-line importer, so if you have a very large tournament, this might make importing initial data easier." +msgstr "" + +#: ../../install/heroku.rst:30 +msgid "We've tested these instructions successfully on Windows, Linux and macOS." +msgstr "" + +#: ../../install/heroku.rst:33 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/heroku.rst:35 +msgid "You need to have at least a passing familiarity with command-line interfaces to get through the longer traditional method. We'll talk you through the rest." +msgstr "" + +#: ../../install/heroku.rst:37 +msgid "When we say \"command shell\", on Windows we mean **Command Prompt**, and on Linux and macOS we mean **Terminal** (or your favourite command shell)." +msgstr "" + +#: ../../install/heroku.rst:39 ../../install/heroku.rst:100 +msgid "Advanced users" +msgstr "" + +#: ../../install/heroku.rst:42 +msgid "Tabbycat is a `Django `_ project. As such, it can be installed on any web platform that supports Django, using any SQL system that Django supports. Just be aware that we haven't tried any other platform." +msgstr "" + +#: ../../install/heroku.rst:45 +msgid "Short version of the long way" +msgstr "" + +#: ../../install/heroku.rst:47 +msgid "We provide a \"short version\" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below." +msgstr "" + +#: ../../install/heroku.rst:56 +msgid "If you want to :ref:`import tournament data ` from CSV files, :ref:`install Tabbycat locally `, put your CSV files in ``data/yourtournamentname``, then::" +msgstr "" + +#: ../../install/heroku.rst:68 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/heroku.rst:70 +msgid "Install the `Heroku Command Line Interface (CLI) `_, then log in with the command ``heroku login``." +msgstr "" + +#: ../../install/heroku.rst:72 +msgid "If you don't already have **Git**, follow the `instructions on the GitHub website `_ to set up Git." +msgstr "" + +#: ../../install/heroku.rst:75 +msgid "2. Set up a local installation" +msgstr "" + +#: ../../install/heroku.rst:77 +msgid "If you don't already have a local installation, follow the instructions on the page for your operating system, listed below, to set up a local installation." +msgstr "" + +#: ../../install/heroku.rst:79 +msgid "When downloading the source code, you **must** take the option involving cloning the GitHub repository using Git. In the macOS and Windows instructions, this means the option described in the \"Advanced users\" box. To do so, use these commands:" +msgstr "" + +#: ../../install/heroku.rst:86 +msgid "Do not download the .tar.gz or .zip file and extract it." +msgstr "" + +#: ../../install/heroku.rst:88 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/heroku.rst:89 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/heroku.rst:90 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/heroku.rst:91 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/heroku.rst:93 +msgid "If you do already have a local installation, update to the latest version using:" +msgstr "" + +#: ../../install/heroku.rst:103 +msgid "It's not *strictly* necessary to have a fully functional local installation if you don't want to import data from CSV files. But it certainly helps." +msgstr "" + +#: ../../install/heroku.rst:106 +msgid "3. Deploy to Heroku" +msgstr "" + +#: ../../install/heroku.rst:110 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/heroku.rst:114 +msgid "Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``." +msgstr "" + +#: ../../install/heroku.rst:120 +msgid "This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details." +msgstr "" + +#: ../../install/heroku.rst:122 +msgid "When this script finishes, it will open the app in your browser. It should look something like this:" +msgstr "" + +#: ../../install/heroku.rst:127 +msgid "4. Import tournament data locally" +msgstr "" + +#: ../../install/heroku.rst:129 +msgid "Steps 4 and 5 are optional; there are other methods of :ref:`importing data `. However the following method is most useful for large tournaments where manual entry would be tedious." +msgstr "" + +#: ../../install/heroku.rst:131 +msgid "Step 4 is the same as the process described in :ref:`importtournament-command`." +msgstr "" + +#: ../../install/heroku.rst:135 +msgid "Place your CSV files in ``data/yourtournamentname``, as described in :ref:`importing-initial-data`." +msgstr "" + +#: ../../install/heroku.rst:137 +msgid "Create a new, blank local database::" +msgstr "" + +#: ../../install/heroku.rst:141 +msgid "It's normally easiest to name your local database after your app name, so that if you have multiple sites, you know which one relates to which." +msgstr "" + +#: ../../install/heroku.rst:143 +msgid "Reconfigure ``DATABASES`` in your settings_local.py file to point to this new database." +msgstr "" + +#: ../../install/heroku.rst:145 +msgid "Activate your virtual environment::" +msgstr "" + +#: ../../install/heroku.rst:149 +msgid "Run initial migrations on your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:154 +msgid "Import your tournament data into your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:158 +msgid "If your data's not clean, it might take a few attempts to get this right. We recommend either destroying and recreating the database (``dropdb``, ``createdb``), or wiping it using ``dj flush``, before retrying." +msgstr "" + +#: ../../install/heroku.rst:160 +msgid "Check it looks like how you expect it to look, by starting your local installation::" +msgstr "" + +#: ../../install/heroku.rst:165 +msgid "5. Push the local database to Heroku" +msgstr "" + +#: ../../install/heroku.rst:167 +msgid "Once you're happy with how your local import went, you can push the local database to Heroku." +msgstr "" + +#: ../../install/heroku.rst:169 +msgid "This step wipes the Heroku database clean, and replaces it with the contents of your local database. If you have any data on the Heroku site that isn't also in your local database, **that data will be lost** and will not be recoverable." +msgstr "" + +#: ../../install/heroku.rst:171 +msgid "If you have multiple Heroku sites, you may find that the ``heroku`` commands refuse to run, prompting you to specify an app. If so, add ``--app yourappname`` to each ``heroku`` command." +msgstr "" + +#: ../../install/heroku.rst:173 +msgid "Enable maintenance mode. This takes the site offline, to ensure that no-one can possibly create or change any data on the site while you're pushing a new database up::" +msgstr "" + +#: ../../install/heroku.rst:177 +msgid "Reset the database. (Caution: This permanently deletes all information on your Heroku database!)" +msgstr "" + +#: ../../install/heroku.rst:183 +msgid "Push your local database to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:187 +msgid "You might need to specify your local PostgreSQL credentials by adding ``PGUSER=yourusername PGPASSWORD=******** PGHOST=localhost`` to the *beginning* of that command. (This sets environment variables to those values for the duration of that one command.)" +msgstr "" + +#: ../../install/heroku.rst:189 +msgid "Disable maintenance mode::" +msgstr "" + +#: ../../install/heroku.rst:195 +msgid "Heroku options you may want to change" +msgstr "" + +#: ../../install/heroku.rst:197 +msgid "If you have a large tournament, you may want to customize your Heroku app. This section provides some guidance on upgrades and settings you may wish to consider. Some of these configurations require you to have the `Heroku Command Line Interface (CLI) `_ installed." +msgstr "" + +#: ../../install/heroku.rst:202 +msgid "Upgrading your database size" +msgstr "" + +#: ../../install/heroku.rst:204 +msgid "The free plan of `Heroku Postgres `_, \"Hobby Dev\", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea:" +msgstr "" + +#: ../../install/heroku.rst:206 +msgid "Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows." +msgstr "" + +#: ../../install/heroku.rst:207 +#, python-format +msgid "The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows." +msgstr "" + +#: ../../install/heroku.rst:208 +msgid "A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows" +msgstr "" + +#: ../../install/heroku.rst:210 +msgid "If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, \"Hobby Basic\", should certainly be more than sufficient." +msgstr "" + +#: ../../install/heroku.rst:212 +msgid "If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity." +msgstr "" + +#: ../../install/heroku.rst:215 +msgid "Custom domain names" +msgstr "" + +#: ../../install/heroku.rst:217 +msgid "Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center:" +msgstr "" + +#: ../../install/heroku.rst:219 +msgid "`Custom Domain Names for Apps `_" +msgstr "" + +#: ../../install/heroku.rst:220 +msgid "`Heroku SSL `_" +msgstr "" + +#: ../../install/heroku.rst:222 +msgid "The custom domain name basically requires two things: a DNS ``CNAME`` entry on your website targeting ``yourappname.herokuapp.com``, and the custom domain configured on Heroku using ``heroku domains:add tab.yourwebsite.com``. You'll also need to provide an SSL certificate for your custom domain and add it using the ``heroku certs:add`` command." +msgstr "" + +#: ../../install/heroku.rst:225 +msgid "HTTPS" +msgstr "" + +#: ../../install/heroku.rst:227 +msgid "All Tabbycat sites deployed to Heroku redirect all traffic to HTTPS by default." +msgstr "" + +#: ../../install/heroku.rst:229 +msgid "For a myriad of reasons, we strongly advise against disabling this. But if for some reason you need to run on plain HTTP, you can do this by setting the ``DISABLE_HTTPS_REDIRECTS`` config variable in Heroku to ``disable`` (see `Heroku documentation on config vars `_). The value of the config var must be ``disable``; if it's anything else, HTTPS redirects will remain in place." +msgstr "" + +#: ../../install/heroku.rst:231 +msgid "Most modern browsers, after having been redirected by a site to HTTPS once, remember that that site requires HTTPS and go there for all subsequent visits even if the user typed in a plain http\\:// address. It may do this because it cached the HTTP 301 permanent redirect, stored an HSTS entry and/or tagged its session cookie to require HTTPS. If, after disabling HTTPS on your Tabbycat site, you find that you're still being redirected to HTTPS, first try a browser or computer that *hasn't* visited the site before. If that works, then remove the relevant entry from your (original) browser's cache, HSTS set and cookies, and try again." +msgstr "" + +#: ../../install/heroku.rst:234 +msgid "Time zone" +msgstr "" + +#: ../../install/heroku.rst:236 +msgid "If you want to change the time zone you nominated during deployment, you can do so by going to the `Heroku Dashboard `_, clicking on your app, going to the **Settings** tab, clicking **Reveal Config Vars** and changing the value of the ``TIME_ZONE`` variable. This value must be one of the names in the IANA tz database, *e.g.* ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``. You can find a `list of these on Wikipedia `_ in the 'TZ\\*' column." +msgstr "" + +#: ../../install/heroku.rst:239 +msgid "SendGrid account details" +msgstr "" + +#: ../../install/heroku.rst:241 +msgid "By default, Heroku will automatically create a SendGrid account for you. For small tournaments, this should work fine. For larger ones, though, SendGrid typically doesn't allow new accounts to send so many emails without additional vetting. This vetting is separate to the verification you did for your Heroku account, and as far as we're aware, it can't be done until you send your first email, by which time it's probably too late." +msgstr "" + +#: ../../install/heroku.rst:243 +msgid "If you're running a large tournament, you may wish to use your own SendGrid account instead. The free tier probably won't suffice after the trial period, but the Essentials tier should be more than adequate. If you're a student and have the `GitHub Education Pack `_, you might find the SendGrid plan here useful." +msgstr "" + +#: ../../install/heroku.rst:245 +msgid "If you set up and use your own SendGrid account, you can remove the SendGrid add-on from your Heroku app. The SendGrid add-on is only necessary if you wish to use Heroku's auto-created SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:247 +msgid "To set up your app to use your own SendGrid account:" +msgstr "" + +#: ../../install/heroku.rst:251 +msgid "`Sign up for a SendGrid account `_, if you don't already have one." +msgstr "" + +#: ../../install/heroku.rst:253 +msgid "`Create an API key `_ in your SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:255 +msgid "There are `instructions for how to do this in the SendGrid documentation `_. The only permission that is needed is the \"Mail Send\" permission, so you can turn off all others if you want to be safe." +msgstr "" + +#: ../../install/heroku.rst:257 +msgid "Set the following config vars in Heroku Dashboard (or using the Heroku CLI, if you have it):" +msgstr "" + +#: ../../install/heroku.rst:259 +msgid "``SENDGRID_USERNAME`` should be set to ``apikey`` (not your username)." +msgstr "" + +#: ../../install/heroku.rst:260 +msgid "``SENDGRID_PASSWORD`` should be set to your API key, which will start with ``SG*******``." +msgstr "" + +#: ../../install/heroku.rst:262 +msgid "The `Heroku SendGrid instructions `_ to do something with ``SENDGRID_API_KEY`` are **incorrect**. We figured this out by contacting SendGrid support staff. Use the above config vars instead." +msgstr "" + +#: ../../install/heroku.rst:268 +msgid "Upgrading an existing Heroku app" +msgstr "" + +#: ../../install/heroku.rst:270 +msgid "For most users, we recommend starting a new site for every tournament, when you set up the tab for that tournament. There's generally not a pressing need to upgrade Tabbycat after a tournament is concluded, and every time you deploy a new site, you'll be using the latest version at the time of deployment." +msgstr "" + +#: ../../install/heroku.rst:272 +msgid "To upgrade an existing Heroku-based Tabbycat app to the latest version, you need to *deploy* the current version of Tabbycat to your Heroku app. There are several ways to do this. We list one below, primarily targeted at users with some background in Git." +msgstr "" + +#: ../../install/heroku.rst:274 +msgid "The essence of it is that you need to `create a Git remote `_ for your Heroku app (if you don't already have one), then `push to it `_." +msgstr "" + +#: ../../install/heroku.rst:276 +msgid "You should **always** :ref:`back up your database ` before upgrading Tabbycat." +msgstr "" + +#: ../../install/heroku.rst:278 +msgid "You'll need both Git and the Heroku CLI, and you'll need to be logged in to the Heroku CLI already." +msgstr "" + +#: ../../install/heroku.rst:280 +msgid "Take a backup of your database::" +msgstr "" + +#: ../../install/heroku.rst:284 +msgid "If you haven't already, clone our Git repository and check out the master branch::" +msgstr "" + +#: ../../install/heroku.rst:289 +msgid "If you've already cloned our Git repository, don't forget to pull so you're up to date::" +msgstr "" + +#: ../../install/heroku.rst:294 +msgid "Check to see if you have a Git remote already in place::" +msgstr "" + +#: ../../install/heroku.rst:300 +msgid "If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``." +msgstr "" + +#: ../../install/heroku.rst:302 +msgid "If a Git remote URL for your Tabbycat site *doesn't* appear, then create one::" +msgstr "" + +#: ../../install/heroku.rst:307 +msgid "If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments." +msgstr "" + +#: ../../install/heroku.rst:309 +msgid "Push to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:313 +msgid "This will take a while to complete." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/linux.po b/docs/locale/ca/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..010638126ea --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/linux.po @@ -0,0 +1,249 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: ca_ES\n" + +#: ../../install/linux.rst:5 +msgid "Installing Locally on Linux" +msgstr "" + +#: ../../install/linux.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/linux.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/linux.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Linux, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/linux.rst:14 +msgid "The instructions apply to both Linux, and :ref:`Linux on Windows `." +msgstr "" + +#: ../../install/linux.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/linux.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/linux.rst:21 ../../install/linux.rst:56 +#: ../../install/linux.rst:130 +msgid "Advanced users" +msgstr "" + +#: ../../install/linux.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/linux.rst:27 +msgid "Short version" +msgstr "" + +#: ../../install/linux.rst:38 +msgid "Then create **settings/local.py** as described :ref:`below `, then::" +msgstr "" + +#: ../../install/linux.rst:53 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/linux.rst:54 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/linux.rst:59 +msgid "These instructions are for Ubuntu, and are targeted at Ubuntu 18.04. If you have another distribution of Linux, we trust you'll know how to navigate the package manager for your distribution to install the dependencies." +msgstr "" + +#: ../../install/linux.rst:64 +msgid "1(a). Python" +msgstr "" + +#: ../../install/linux.rst:65 +msgid "Tabbycat requires Python 3.6 or later. You probably already have Python 3.6, but you'll also need the development package in order to install Psycopg2 later. The ``venv`` module will come in handy too. Install::" +msgstr "" + +#: ../../install/linux.rst:69 +msgid "Check the version::" +msgstr "" + +#: ../../install/linux.rst:74 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/linux.rst:77 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/linux.rst:78 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/linux.rst:80 +msgid "Install PostgreSQL using the `PostgreSQL installation instructions here `_." +msgstr "" + +#: ../../install/linux.rst:82 +msgid "Normally, installing the latest stable version should be best, but if you're having issues, install the same version as the current `default version on Heroku `_, as that will be what is currently most commonly used with Tabbycat. If you're planning on pushing data between your local installation and a Heroku site, it's best to match the Heroku's current default version." +msgstr "" + +#: ../../install/linux.rst:84 +msgid "You'll also need the ``libpq-dev`` package in order to install Psycopg2 later::" +msgstr "" + +#: ../../install/linux.rst:91 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/linux.rst:92 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/linux.rst:94 +msgid "Tabbycat requires Node and its package manager to compile front-end dependencies. Install using:" +msgstr "" + +#: ../../install/linux.rst:104 +msgid "1(d). Other development tools" +msgstr "" + +#: ../../install/linux.rst:105 +msgid "Some of the Python packages require GCC, G++ and Make in order to install::" +msgstr "" + +#: ../../install/linux.rst:112 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/linux.rst:114 +msgid "Choose either of the following two methods." +msgstr "" + +#: ../../install/linux.rst:117 +msgid "Method 1 (Git clone)" +msgstr "" + +#: ../../install/linux.rst:119 +msgid "If you have Git, life will be easier if you clone `our GitHub repository`_:" +msgstr "" + +#: ../../install/linux.rst:126 +msgid "(You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.)" +msgstr "" + +#: ../../install/linux.rst:128 +msgid "The default branch is ``develop``, so you need to explicitly change the branch to ``master``, which is what the ``git checkout master`` line does." +msgstr "" + +#: ../../install/linux.rst:133 +msgid "You might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/linux.rst:136 +msgid "Method 2 (tarball)" +msgstr "" + +#: ../../install/linux.rst:138 +msgid "If you don't want to use Git, simply download and extract:" +msgstr "" + +#: ../../install/linux.rst:147 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/linux.rst:149 +msgid "You can skip step 1 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/linux.rst:151 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``. Grant this user the ability to create databases, since this'll make it easier to spin up new instances of Tabbycat in the future." +msgstr "" + +#: ../../install/linux.rst:157 +msgid "If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*." +msgstr "" + +#: ../../install/linux.rst:159 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/linux.rst:167 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/linux.rst:168 +msgid "Almost there!" +msgstr "" + +#: ../../install/linux.rst:170 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/linux.rst:176 +msgid "Start a new virtual environment. We suggest the name ``venv``, though it can be any name you like:" +msgstr "" + +#: ../../install/linux.rst:182 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/linux.rst:186 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/linux.rst:192 +msgid "Navigate to the **tabbycat/settings** sub folder and copy **local.example** to **local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/linux.rst:207 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/linux.rst:211 +msgid "Navigate to the **tabbycat** sub-directory, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/linux.rst:219 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/linux.rst:225 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/linux.rst:229 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/linux.rst:234 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/linux.rst:237 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/linux.rst:238 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/local.po b/docs/locale/ca/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..f584046ff34 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/local.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: ca_ES\n" + +#: ../../install/local.rst:5 +msgid "Local Installations" +msgstr "" + +#: ../../install/local.rst:8 +msgid "What is a local installation?" +msgstr "" + +#: ../../install/local.rst:10 +msgid "Tabbycat is a web-based system: it's designed to run as a web site. However, instead of installing it on a web server, you can install it on your computer, serving web pages to yourself. This is called a local installation." +msgstr "" + +#: ../../install/local.rst:12 +msgid "Then, when you open your browser, you can use Tabbycat like any other web site. The only difference is that this one is on **your** computer, not some computer in a data centre in a far-away land. In effect, you are getting your computer to behave like a web server." +msgstr "" + +#: ../../install/local.rst:17 +msgid "Should I use a local installation?" +msgstr "" + +#: ../../install/local.rst:19 +msgid "In most cases, you should make an online Tabbycat installation by :ref:`setting up an instance on Heroku `. This has a number of major advantages:" +msgstr "" + +#: ../../install/local.rst:21 +msgid "The installation process is easier." +msgstr "" + +#: ../../install/local.rst:22 +msgid "You can enter ballots and manage your tournament from multiple computers." +msgstr "" + +#: ../../install/local.rst:23 +msgid "Participants can access the draw, motions, results and more online." +msgstr "" + +#: ../../install/local.rst:24 +msgid "Heroku's data centers are less likely to fail than your computer is." +msgstr "" + +#: ../../install/local.rst:25 +msgid "Heroku e-mails Tabbycat's developers error reports to help us fix bugs." +msgstr "" + +#: ../../install/local.rst:27 +msgid "In some cases, you might have a good reason to use a local installation. We can think of just one such reason: If you won't have access to the internet at your tournament, or if internet access will be flaky, then you should use a local installation." +msgstr "" + +#: ../../install/local.rst:32 +msgid "You'll need internet access to download dependencies during the local installation process. So if you're not expecting to have reliable internet access at your tournament, be sure to have Tabbycat installed *before* you get there!" +msgstr "" + +#: ../../install/local.rst:37 +msgid "Advanced users" +msgstr "" + +#: ../../install/local.rst:40 +msgid "Tabbycat is a `Django `_ project, so if you have your own preferred method of running Django projects, you can also do that. Just be aware that we haven't tried it." +msgstr "" + +#: ../../install/local.rst:45 +msgid "Okay, so how do I do it?" +msgstr "" + +#: ../../install/local.rst:47 +msgid "The easiest option is to :ref:`install Tabbycat using Docker `. This method should work across all operating systems and is by far the easiest way to get a local copy running." +msgstr "" + +#: ../../install/local.rst:49 +msgid "If installing using Docker does not work, or if you want to be able to modify Tabbycat's code we also have a number of instructions for manually setting up a copy of Tabbycat. There instructions are here:" +msgstr "" + +#: ../../install/local.rst:51 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/local.rst:52 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/local.rst:53 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/local.rst:54 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/local.rst:57 +msgid "Advanced uses" +msgstr "" + +#: ../../install/local.rst:60 +msgid "Can others access my local install?" +msgstr "" + +#: ../../install/local.rst:62 +msgid "Local installations can also take advantage of multiple-computer site access, including data entry---it's just takes more work than a Heroku installation to set up." +msgstr "" + +#: ../../install/local.rst:64 +msgid "Since a local installation is just having your computer run a web server, it can serve other computers too. You can make this work even if you don't have internet access: all you need is a router that you can use to connect a few computers together. Then other computers on your local network can access the Tabbycat site hosted on your computer. We did this at Victoria Australs 2012." +msgstr "" + +#: ../../install/local.rst:66 +msgid "We don't provide detailed instructions for this; we leave it for advanced users to set up themselves. As a rough guide:" +msgstr "" + +#: ../../install/local.rst:68 +msgid "You need to pass in your computer's IP address and port to the `runserver` command, for example, if your computer (the one acting as a server) is 196.168.0.2 and you want to run it on port 8000: ``dj runserver 192.168.0.2:8000``" +msgstr "" + +#: ../../install/local.rst:69 +msgid "You need to configure your firewall settings to allow incoming connections on the IP address and port you specified in that command." +msgstr "" + +#: ../../install/local.rst:70 +msgid "Be aware that local installs use the Django development server, whose **security is not tested**. Therefore, it's a good idea to make sure your firewall **only lets in computers on your local network** (or, if you're really paranoid, isolate the network from the internet completely)." +msgstr "" + +#: ../../install/local.rst:73 +msgid "Can I run an internet-accessible website from a local installation?" +msgstr "" + +#: ../../install/local.rst:75 +msgid "Probably not. Even if you disable your firewall, chances are your home router (or university router) will block any connections from the outside world to you. Even if you can though, **you really shouldn't**. The local installation uses the *Django development server*, which is a lightweight server designed for developers. Specifically, Django **does not test the security of its development server** in the way that proper web servers do. That is: It's a security risk to run a local installation as an internet-accessible site. Don't do it. `Install Tabbycat on Heroku `_ instead." +msgstr "" + +#: ../../install/local.rst:77 +msgid "Alternatively, if you have a background in web development, you might choose to install Tabbycat on your own production server. It's a Django project, so any means of supporting Django projects should work fine." +msgstr "" + +#: ../../install/local.rst:79 +msgid "It's safe to run on a small, isolated network (see above) with your firewall correctly configured because you presumably trust everyone you let on the network!" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/osx.po b/docs/locale/ca/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..e25f5b56015 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/osx.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: ca_ES\n" + +#: ../../install/osx.rst:5 +msgid "Installing Locally on macOS" +msgstr "" + +#: ../../install/osx.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/osx.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/osx.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on macOS, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/osx.rst:15 +msgid "Requisite technical knowledge" +msgstr "" + +#: ../../install/osx.rst:17 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/osx.rst:19 +msgid "Every line in the instructions that begins with ``$`` is a command that you need to run in a **Terminal**, but without the ``$``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/osx.rst:21 ../../install/osx.rst:42 ../../install/osx.rst:68 +msgid "Advanced users" +msgstr "" + +#: ../../install/osx.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/osx.rst:27 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/osx.rst:29 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/osx.rst:32 +msgid "1(a). Python" +msgstr "" + +#: ../../install/osx.rst:33 +msgid "Tabbycat requires Python 3.6 or later. macOS only comes with Python 2.7, so you'll need to install this. You can download the latest version from the `Python website `_." +msgstr "" + +#: ../../install/osx.rst:35 +msgid "The executable will probably be called ``python3``, rather than ``python``. Check::" +msgstr "" + +#: ../../install/osx.rst:40 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/osx.rst:45 +msgid "These instructions will use the ``venv`` module. If you prefer, you can use `Virtualenv `_ instead." +msgstr "" + +#: ../../install/osx.rst:48 +msgid "1(b). Postgres.app" +msgstr "" + +#: ../../install/osx.rst:50 +msgid "Download `Postgres.app `_, move it to your Applications folder, and open it. This should place an icon in your menu bar, showing that the postgres database is running. Whenever you are running Tabbycat you'll need to have this app running." +msgstr "" + +#: ../../install/osx.rst:52 +msgid "You'll need to use the PostgreSQL command-line tools, so run the command that the Postgres.app suggests in its `installation instructions `_ for adding them to your ``$PATH``. As of February 2018, it was::" +msgstr "" + +#: ../../install/osx.rst:57 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/osx.rst:59 +msgid "Download and run the `node.js 8 macOS Installer (.pkg) `_" +msgstr "" + +#: ../../install/osx.rst:62 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/osx.rst:64 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/osx.rst:65 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/osx.rst:66 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/osx.rst:71 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/osx.rst:73 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/osx.rst:76 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/osx.rst:78 +msgid "You can skip steps 1--3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/osx.rst:80 +msgid "Open up a copy of the Terminal app, then copy/paste or type in::" +msgstr "" + +#: ../../install/osx.rst:84 +msgid "Hit enter then quit and reopen the Terminal app." +msgstr "" + +#: ../../install/osx.rst:86 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``." +msgstr "" + +#: ../../install/osx.rst:92 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/osx.rst:96 +msgid "In terminal type in::" +msgstr "" + +#: ../../install/osx.rst:101 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/osx.rst:102 +msgid "Almost there!" +msgstr "" + +#: ../../install/osx.rst:104 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/osx.rst:108 +msgid "Copy **settings/local.example** to **settings/local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/osx.rst:123 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/osx.rst:127 +msgid "Ensure you are in the main Tabbycat directory (not the config folder where **settings_local.py** is and start a new virtual environment. We suggest the name ``venv``, though it can be any name you like::" +msgstr "" + +#: ../../install/osx.rst:131 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/osx.rst:135 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/osx.rst:141 +msgid "Navigate to the **tabbycat** sub folder, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/osx.rst:149 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/osx.rst:155 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/osx.rst:159 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/osx.rst:164 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/osx.rst:167 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/osx.rst:168 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/windows.po b/docs/locale/ca/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..1145056cc9b --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/windows.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: ca_ES\n" + +#: ../../install/windows.rst:5 +msgid "Installing Locally on Windows" +msgstr "" + +#: ../../install/windows.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/windows.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/windows.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/windows.rst:14 +msgid "If you have Windows 10 and any experience with Linux, we recommend installing it on :ref:`Linux on Windows (WSL) ` instead, which is much easier than the process below." +msgstr "" + +#: ../../install/windows.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/windows.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/windows.rst:21 +msgid "In these instructions, we'll use **Windows PowerShell**, a command-line interface that comes with every installation of Windows (since XP). The easiest way to find it (on Windows 7 and later) is to search for it in your Start Menu. Every line in the instructions that begins with ``>`` is a command that you need to run in PowerShell, but without the ``>``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/windows.rst:23 ../../install/windows.rst:81 +#: ../../install/windows.rst:104 +msgid "Advanced users" +msgstr "" + +#: ../../install/windows.rst:26 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/windows.rst:29 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/windows.rst:31 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/windows.rst:36 +msgid "1(a). Python" +msgstr "" + +#: ../../install/windows.rst:37 +msgid "*Python is a popular programming language, and the language in which the core of Tabbycat is coded.*" +msgstr "" + +#: ../../install/windows.rst:39 +msgid "Download and install the latest version of Python 3.6 from the `Python website `_. In the installer, check the box to add Python to your PATH (see box below)." +msgstr "" + +#: ../../install/windows.rst:42 +msgid "Which file should I download?" +msgstr "" + +#: ../../install/windows.rst:44 +msgid "Regardless of if you have 64-bit or 32-bit Windows, choose the \"Windows x86 executable installer\"." +msgstr "" + +#: ../../install/windows.rst:46 +msgid "**Please take note:** Just after you open the installer, **check the \"Add Python 3.6 to PATH\" box**:" +msgstr "" + +#: ../../install/windows.rst:51 +msgid "To check that Python is installed correctly, open Windows PowerShell, type ``python`` and press Enter. It should look something like this. If you installed the 32-bit version, it will say ``32 bit`` instead of ``64 bit``." +msgstr "" + +#: ../../install/windows.rst:55 +msgid "(To exit Python, type ``exit()`` then press Enter.)" +msgstr "" + +#: ../../install/windows.rst:57 +msgid "**If you already have Python**, great! Some things to double-check:" +msgstr "" + +#: ../../install/windows.rst:59 +msgid "You must have at least Python 3.6 (Python 2 is not supported.)" +msgstr "" + +#: ../../install/windows.rst:60 +msgid "Your installation path must not have any spaces in it." +msgstr "" + +#: ../../install/windows.rst:61 +msgid "If that doesn't work, note that the following must be part of your ``PATH`` environment variable: ``C:\\Python36;C:\\Python36\\Scripts`` (or as appropriate for your installation directory). Follow `the instructions here `_ to add this to your path." +msgstr "" + +#: ../../install/windows.rst:66 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/windows.rst:67 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/windows.rst:69 +msgid "Go to the `PostgreSQL downloads page `_, then follow the link through to EnterpriseDB to download and install the latest version of PostgreSQL." +msgstr "" + +#: ../../install/windows.rst:71 +msgid "Once PostgreSQL is installed, the PostgreSQL service will run on your computer whenever you are using it. You might prefer to configure it so that it only runs when you want to run Tabbycat. To do this, open \"Services\" in your Control Panel on Windows, find the PostgreSQL service, and change its startup type to \"Manual\". This will tell it not to start whenever you log in. Then, if you want to run the server (so you can use Tabbycat), you can do so from \"Services\" by selecting the PostgreSQL service and clicking \"Start the service\"." +msgstr "" + +#: ../../install/windows.rst:74 +msgid "1(c). Git" +msgstr "" + +#: ../../install/windows.rst:75 +msgid "*Git is a version control system.*" +msgstr "" + +#: ../../install/windows.rst:77 +msgid "We won't use Git directly, but Node.js (which we install in the next step) requires Git to work. So, install the latest version for Windows from the `Git website `_." +msgstr "" + +#: ../../install/windows.rst:84 +msgid "If you already have `GitHub Desktop `_ installed, you might think that this would be good enough. Unfortunately, it's not---GitHub Desktop installs a portable version of Git. Node.js, on the other hand, requires the ``git`` to be in the ``PATH``, so it can call it directly. The easiest (but not only) way to do this is just to install Git from the link above." +msgstr "" + +#: ../../install/windows.rst:92 +msgid "1(d). Node.js/NPM" +msgstr "" + +#: ../../install/windows.rst:93 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/windows.rst:95 +msgid "Download and run the node.js 8 Installer (.msi) for either `x64 versions `_ of Windows or `x86 versions `_." +msgstr "" + +#: ../../install/windows.rst:98 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/windows.rst:100 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/windows.rst:101 +msgid "Download the zip file." +msgstr "" + +#: ../../install/windows.rst:102 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/windows.rst:107 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/windows.rst:109 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/windows.rst:114 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/windows.rst:116 +msgid "You can skip steps 2 and 3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/windows.rst:118 +msgid "Open the **pgAdmin** tool, which you installed as part of installing PostgreSQL. In the object browser on the left, double-click the server marked \"(localhost:5432)\". Log in using the password you set during installation." +msgstr "" + +#: ../../install/windows.rst:120 +msgid "Right-click Login Roles, and click \"New Login Role…\"" +msgstr "" + +#: ../../install/windows.rst:124 +msgid "Fill in the New Login Role box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:126 +msgid "In the **Properties** tab, in **Role Name**, choose a user account name. (If you don't know what to pick, we suggest \"tabbycat\".)" +msgstr "" + +#: ../../install/windows.rst:127 +msgid "In the **Definition** tab, choose a **Password** and type it in **Password (again)**." +msgstr "" + +#: ../../install/windows.rst:129 +msgid "Then click OK. (Remember this user name and password, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:131 +msgid "Right-click Databases, and click \"New Database…\"" +msgstr "" + +#: ../../install/windows.rst:135 +msgid "Fill in the New Database box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:137 +msgid "In the **Properties** tab, in **Name**, choose a database name (with no spaces in it)." +msgstr "" + +#: ../../install/windows.rst:138 +msgid "In the **Properties** tab, in **Owner**, type the name of the login role you just created." +msgstr "" + +#: ../../install/windows.rst:140 +msgid "Then click OK. (Remember the database name, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:143 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/windows.rst:145 +msgid "Almost there!" +msgstr "" + +#: ../../install/windows.rst:147 +msgid "Open a Windows PowerShell. Navigate to the folder where you cloned/extracted Tabbycat. For example, if you installed it in ``C:\\Users\\myusername\\Documents\\GitHub\\tabbycat``, then run::" +msgstr "" + +#: ../../install/windows.rst:151 +msgid "Make a copy of **settings\\\\local.example** and rename it to **settings\\\\local.py**. Open your new **local.py** file. Find this part, and fill in the blanks (the empty quotation marks) as indicated:" +msgstr "" + +#: ../../install/windows.rst:166 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/windows.rst:170 +msgid "Start a new virtual environment. We suggest the name `venv`, though it can be any name you like::" +msgstr "" + +#: ../../install/windows.rst:174 +msgid "Run the `Activate.ps1` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/windows.rst:178 +msgid "If you get an error message saying that the script isn't digitally signed, open a PowerShell with administrator privileges by right-clicking PowerShell in the Start meny and clicking \"Run as administrator\". Then run this command::" +msgstr "" + +#: ../../install/windows.rst:182 +msgid "Read the warning message, then type ``y`` to confirm. By default, the execution policy on Windows is ``Restricted``, which does not permit scripts like ``activate`` to be run. Changing it to ``RemoteSigned`` relaxes it to allow local scripts to be run without checking the signature." +msgstr "" + +#: ../../install/windows.rst:184 +msgid "Install Tabbycat's requirements." +msgstr "" + +#: ../../install/windows.rst:186 +msgid "If you installed **32-bit Python**::" +msgstr "" + +#: ../../install/windows.rst:192 +msgid "You might be wondering: I thought I already installed the requirements. Why am I installing more? And the answer is: Before, you were installing the requirements to create a Python virtual environment for Tabbycat to live in. Now, you're *in* the virtual environment, and you're installing everything required for *Tabbycat* to operate." +msgstr "" + +#: ../../install/windows.rst:194 +msgid "Initialize the database and create a user account for yourself::" +msgstr "" + +#: ../../install/windows.rst:202 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/windows.rst:208 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/windows.rst:212 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000/). It should look something like this:" +msgstr "" + +#: ../../install/windows.rst:216 +msgid "If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/windows.rst:218 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/windows.rst:221 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/windows.rst:223 +msgid "To start your Tabbycat instance up again next time you use your computer, open a PowerShell and::" +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/install/wsl.po b/docs/locale/ca/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..c55ce9d3e9e --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/install/wsl.po @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: ca_ES\n" + +#: ../../install/wsl.rst:5 +msgid "Installing Locally on Linux on Windows (WSL)" +msgstr "" + +#: ../../install/wsl.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/wsl.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/wsl.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/wsl.rst:14 +msgid "Windows Subsystem for Linux is only available on Windows 10. If you have an older version of Windows, :ref:`install Tabbycat locally on Windows ` instead." +msgstr "" + +#: ../../install/wsl.rst:18 +msgid "Windows Subsystem for Linux (WSL) was taken out of beta in the `Windows 10 Fall Creators Update `_, which was released in October 2017. On Windows 10 computers, we now recommend this local installation method over :ref:`installing it directly on Windows `." +msgstr "" + +#: ../../install/wsl.rst:21 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/wsl.rst:23 +msgid "It will help a lot if you have some experience with Linux, but mainly you need to be familiar with command-line interfaces, and you should be willing to install and work with the `Windows Subsystem for Linux `_. You might need to be prepared to familiarise yourself with aspects of WSL not covered in these instructions. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/wsl.rst:27 +msgid "A. Install Ubuntu on Windows" +msgstr "" + +#: ../../install/wsl.rst:29 +msgid "*If you already have a Linux distribution installed on your PC, skip to* :ref:`part B `." +msgstr "" + +#: ../../install/wsl.rst:31 +msgid "First, `check that you have the Fall Creators Update (build 1709) `_. If you don't, update Windows." +msgstr "" + +#: ../../install/wsl.rst:33 +msgid "Then, install the Windows Subsystem for Linux. For most people, this involves the following:" +msgstr "" + +#: ../../install/wsl.rst:35 +msgid "Enable the Windows Subsystem for Linux feature, by finding **Turn Windows features on or off** on the Start Menu, then checking the box for **Windows Subsystem for Linux** and clicking **OK**. You'll be prompted to restart your computer to make the changes take effect." +msgstr "" + +#: ../../install/wsl.rst:39 +msgid "Install Ubuntu by finding it on the Microsoft Store. For your convenience, `here's a direct link to Ubuntu on the Microsoft Store `_." +msgstr "" + +#: ../../install/wsl.rst:41 +msgid "Launch Ubuntu and follow the instructions. You'll be prompted to create a user account for your Ubuntu system." +msgstr "" + +#: ../../install/wsl.rst:43 +msgid "Some more detailed instructions, including some troubleshooting, are `available on Microsoft's website `_." +msgstr "" + +#: ../../install/wsl.rst:45 +msgid "Advanced users" +msgstr "" + +#: ../../install/wsl.rst:48 +msgid "You can, of course, use any Linux distribution that Windows supports. We just suggest Ubuntu because it's the most well-known (and the one that we use)." +msgstr "" + +#: ../../install/wsl.rst:53 +msgid "B. Install Tabbycat" +msgstr "" + +#: ../../install/wsl.rst:55 +msgid "You now have a Linux subsystem running on your computer, so head over to the :ref:`instructions to install Tabbycat locally on Linux ` and follow those (in full)." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/ca/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..e0fb00596fe --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/use/finishing-a-tournament.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: ca_ES\n" + +#: ../../use/finishing-a-tournament.rst:5 +msgid "Finishing a Tournament" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:7 +msgid "This page outlines some final steps to take after the conclusion of outrounds." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:10 +msgid "Tab Release" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:12 +msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:14 +msgid "Team Tab" +msgstr "Taula d'Equips" + +#: ../../use/finishing-a-tournament.rst:15 +msgid "Speakers Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:16 +msgid "Replies Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:17 +msgid "Motions Tab" +msgstr "Taula de mocions" + +#: ../../use/finishing-a-tournament.rst:19 +msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:21 +msgid "If you defined any speaker categories (for example, Novice, ESL or EFL), a tab for each category marked \"public\" can also be released using the **Release speaker category tabs to public**. You can similarly limit each of these tabs to display just the top few speakers, in the definition of the speaker categories. The speaker categories not marked public are *not* released by this option." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:23 +msgid "You can also redact individual speaker's identifying details (name, team, and institution) from the public individual tabs. You can do so by going into the **Edit Database** area, going to *Participants > Speakers*, finding the speaker and clicking the **Anonymous** box (and saving)." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:25 +msgid "Public tab pages are cached for performance reasons. This means that any changes that affect a tab page (say redacting a speaker or changing a speaker score) may not show up on the public site for up to an hour." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:28 +msgid "Wrapping Up" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:30 +msgid "You probably want to turn off the *Public ballots*, *Public feedback*, *Feedback progress*, and *Public draw* features under **Configuration** at this stage as they no longer have any use." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:32 +msgid "You also want to go into the **Edit Database** area, find the tournament and hit \"release all\" so that the results for the final round can be released." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/use/importing-data.po b/docs/locale/ca/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..b6a83b66393 --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/use/importing-data.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: ca_ES\n" + +#: ../../use/importing-data.rst:5 +msgid "Importing Initial Data" +msgstr "" + +#: ../../use/importing-data.rst:7 +msgid "Once you've got Tabbycat installed, the next step is to import data for the tournament: that is, import details of teams, speakers, adjudicators and rounds. There are a few ways to do this, each with their advantages and disadvantages." +msgstr "" + +#: ../../use/importing-data.rst:9 +msgid "To help you decide which to choose, here's a summary:" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Method" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Best for" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawcard" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawback" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "**Demonstration data**" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Trying out Tabbycat" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Loads sample data in one click" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Not for use with real tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "**Simple importer**" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Small and medium-sized tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Easy to use" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Only deals with basic data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "**Edit database**" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding data not handled by the simple importer or editing existing data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Can handle all types of information" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding large amounts of data is time consuming" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "``importtournament`` **command**" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Large tournaments" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Easier to repeat, can handle most formats of information" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Requires basic knowledge of how to use a command line interface" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "**Developing your own importer**" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Large tournaments with custom needs" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Easier to repeat, will take information in whatever format it is already in" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Requires background in Python and and learning about the importer classes" +msgstr "" + +#: ../../use/importing-data.rst:41 +msgid "Demonstration data" +msgstr "" + +#: ../../use/importing-data.rst:42 +msgid "If you're just learning or experimenting with Tabbycat, there are two demonstration datasets available, each with a sample set of teams, adjudicators, *etc.*, so that you can immediately start running rounds. Just be aware that these probably won't relate to anyone at your real-life tournament." +msgstr "" + +#: ../../use/importing-data.rst:44 +msgid "To load a demonstration dataset, click **New Tournament** link on the home page (once logged in as admin). You'll see a page titled \"Create New Tournament\". Scroll to the bottom of this page and click on one of the links at the bottom." +msgstr "" + +#: ../../use/importing-data.rst:47 +msgid "Simple importer" +msgstr "" + +#: ../../use/importing-data.rst:48 +msgid "The simple importer is the easiest way to get a tournament going, and we recommend it for small- and medium-sized tournaments. It allows you to add institutions, teams, adjudicators, venues, venue categories and venue constraints. (If you need to add anything else, use the :ref:`Edit Database area ` instead.)" +msgstr "" + +#: ../../use/importing-data.rst:50 +msgid "To get started, create a new tournament using the **New Tournament** link on the home page (once logged in as admin). It'll ask you for a few basic pieces of information." +msgstr "" + +#: ../../use/importing-data.rst:54 +msgid "Then, once you're in your tournament, click **Setup** in the left-hand menu, then **Import Data**, to open the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:58 +msgid "You first need to add institutions. Once institutions are added, you can then add teams and adjudicators in the relevant sections. Each of these is a two-step process:" +msgstr "" + +#: ../../use/importing-data.rst:60 +msgid "For **institutions** and **venues**, it will first ask you to copy-paste a list of names and properties in a comma-separated table format. The second step is to confirm individual fiels." +msgstr "" + +#: ../../use/importing-data.rst:61 +msgid "For **teams** and **adjudicators**, it will first ask you how many teams/adjudicators to add for each institution (or who lack an institutional affiliation). The second step is to fill in their details, for example, names." +msgstr "" + +#: ../../use/importing-data.rst:69 +msgid "Finally, if you would like to use venue categories and/or :ref:`venue constraints `, you can do so using the two last sections of the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:71 +msgid "If copying and pasting from a spreadsheet, an easy way to make a comma-separated table is to save a spreadsheet with the relevant information as a \\*.csv file, then open this file in a plain text editor (such as Notepad or TextEdit), and copying it from there." +msgstr "" + +#: ../../use/importing-data.rst:76 +msgid "Editing the database" +msgstr "" + +#: ../../use/importing-data.rst:77 +msgid "Sometimes, the simple importer just isn't enough---whether because you need more customization than the simple importer handles (*e.g.* adjudicator feedback questions), or because some participants changed their details after you imported the inital data. In this case, the easiest thing to do is to edit the database via the Django administrative interface (under Setup > Edit Database)." +msgstr "" + +#: ../../use/importing-data.rst:79 +msgid "The general pattern goes like this: Go to **Setup > Edit Database**, find the type of object you wish to add/change, and click \"Add\" or \"Change\". Then, fill in what you need to and save the object." +msgstr "" + +#: ../../use/importing-data.rst:81 +msgid "The Edit Database area is very powerful, and naturally if you mess things up, you can insert potentially catastrophic inconsistencies into the database. For participant information this is hard to do, but it's worth keeping in mind." +msgstr "" + +#: ../../use/importing-data.rst:86 +msgid "The ``importtournament`` command on local installations" +msgstr "" + +#: ../../use/importing-data.rst:88 +msgid "We've written a management command called ``importtournament`` to help automate the tournament set-up. The script, however, is neither foolproof nor comprehensive, so you might find you need to modify things slightly if your tournament structure is different from ours. Be prepared to try this a few times to get it to work. Nonetheless, this is probably the fastest way to set up a tournament." +msgstr "" + +#: ../../use/importing-data.rst:90 +msgid "Copy and rename the ``data/demo`` folder" +msgstr "" + +#: ../../use/importing-data.rst:91 +msgid "See the CSV files in the new folder, and add/replace the data as per your tournament. Note that the institutions (*i.e.* first column) in the ``speakers.csv`` and ``adjudicators.csv`` files must match the institutions in the second column of the ``institutions.csv`` file. And that all CSV files must end with a blank line." +msgstr "" + +#: ../../use/importing-data.rst:92 +msgid "Use this command, replacing ``YOUR_DATA_DIR`` with your new folder's name. (Square brackets indicate optional arguments; if you use them, omit the square brackets. All of them relate to the name of your tournament.)" +msgstr "" + +#: ../../use/importing-data.rst:98 +msgid "This script has a number of options. They're worth taking a look at before you run the script. For details, see::" +msgstr "" + +#: ../../use/importing-data.rst:102 +msgid "Assuming the command completes successfully without errors, you should double check the data in the Django interface, as described above in :ref:`import-edit-database`. In particular you should check that the *Rounds* have the correct draw types and that silent rounds have been marked correctly." +msgstr "" + +#: ../../use/importing-data.rst:105 +msgid "``importtournament`` on Heroku installs" +msgstr "" + +#: ../../use/importing-data.rst:107 +msgid "Instructions for using the ``importtournament`` command on Heroku installations are in steps 4 and 5 of :ref:`install-heroku`. The recommended procedure is first to import the tournament into a local installation, :ref:`as described above `, and then to push the local database to Heroku using the ``heroku pg:push`` command." +msgstr "" + +#: ../../use/importing-data.rst:110 +msgid "Developing your own importer" +msgstr "" + +#: ../../use/importing-data.rst:112 +msgid "If our suggested file formats cause you headaches, it might be easier to write your own importer. We have a generic importer framework that should make this easier, so for some tournaments it might (very conceivably) be faster to write your own importer to conform to your data, than it is to make your data conform to our importer. You need a background in Python in order to do this. For more details, see :ref:`tournament-data-importers`." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/ca/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..e5df84c235e --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/use/running-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: ca_ES\n" + +#: ../../use/running-a-tournament.rst:5 +msgid "Running a Tournament" +msgstr "" + +#: ../../use/running-a-tournament.rst:7 +msgid "Once you've finished the steps in :ref:`starting-a-tournament`, you're ready to go! This page outlines what you would do for each round during the tournament. After the tournament, proceed to :ref:`finishing-a-tournament`." +msgstr "" + +#: ../../use/running-a-tournament.rst:9 +msgid "This is all done from the admin area (*i.e.*, by the tab director or adjudication core member). In the admin area, tournament-wide pages (feedback, standings, and break) are at the top of the left-hand menu, while round-specific pages (availability, draw, display, motions, and results) are in dropdown's organised by each round's abbreviation." +msgstr "" + +#: ../../use/running-a-tournament.rst:11 +msgid "The basic workflow for each round is:" +msgstr "" + +#: ../../use/running-a-tournament.rst:13 +msgid ":ref:`Mark the teams, adjudicators, and venues present as available `" +msgstr "" + +#: ../../use/running-a-tournament.rst:14 +msgid ":ref:`Generate the draw ` and allocate the adjudicators" +msgstr "" + +#: ../../use/running-a-tournament.rst:15 +msgid ":ref:`Show/release the draw `" +msgstr "" + +#: ../../use/running-a-tournament.rst:16 +msgid ":ref:`Release/enter ` the motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:17 +msgid "Have the debates" +msgstr "" + +#: ../../use/running-a-tournament.rst:18 +msgid ":ref:`Enter results `" +msgstr "" + +#: ../../use/running-a-tournament.rst:19 +msgid ":ref:`Advance to the next round `" +msgstr "" + +#: ../../use/running-a-tournament.rst:24 +msgid "Availability" +msgstr "" + +#: ../../use/running-a-tournament.rst:26 +msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." +msgstr "" + +#: ../../use/running-a-tournament.rst:28 +msgid "To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance." +msgstr "" + +#: ../../use/running-a-tournament.rst:34 +msgid "You can set availabilities in advance of the current round — ie if you know the venue/adjudicator schedules their availabilities can be set ahead of time." +msgstr "" + +#: ../../use/running-a-tournament.rst:37 +msgid "Generating the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:39 +msgid "**Confirm the draft draw**. After advancing from availability section you will first be shown a draft draw that details how the draw was formulated, pointing out pull-ups and conflict swaps and the like." +msgstr "" + +#: ../../use/running-a-tournament.rst:43 +msgid "The draft draw is for you to double-check. While there are some basic tests on the draw algorithm, it never hurts to sanity-check it again." +msgstr "" + +#: ../../use/running-a-tournament.rst:45 +msgid "If you *do* find something wrong with a draft draw, you can edit the match-ups, but please also let us know what the problem was! You can find our contact details in the :ref:`authors` section." +msgstr "" + +#: ../../use/running-a-tournament.rst:47 +msgid "Once on the confirmed draw page you can click **Edit Adjudicators**." +msgstr "" + +#: ../../use/running-a-tournament.rst:51 +msgid "**Allocate the adjudicators**. Changes here will auto-save; feel free to return to the **Draw** when needed. See :ref:`adjudicator allocation ` for more details about the allocation process." +msgstr "" + +#: ../../use/running-a-tournament.rst:55 +msgid "If you are using venue constraints the **Draw** page may prompt you to Auto Allocate the venues used to satisfy those constraints; see :ref:`venue-constraints ` for more details. Regardless of whether you are using venue constraints or not you can change the Venues per-debate in the **Edit Venues** area." +msgstr "" + +#: ../../use/running-a-tournament.rst:60 +msgid "Releasing the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:62 +msgid "Once you're happy with your adjudicator allocation, you're ready to start the round." +msgstr "" + +#: ../../use/running-a-tournament.rst:64 +msgid "**Release to general assembly.** From the *Display* page for that round, go to **Show by Venue** or **Show by Team** (whichever you prefer). Then put it up on the projector. There are automatic scroll buttons and buttons for changing text sizing." +msgstr "" + +#: ../../use/running-a-tournament.rst:68 +msgid "**Release to public.** If you're using the public draw function (where the draw is posted publicly to your Tabbycat website) use the **Release to Public** button to allow the page to display." +msgstr "" + +#: ../../use/running-a-tournament.rst:72 +msgid "To avoid the site from being overloaded by anxious refreshers, we recommend that large tournaments not release the draw to the public until after it's been seen by general assembly. That said, note that due to caching there can be a delay of up to 1 minute between when a draw is released and when it first shows up on the public site." +msgstr "" + +#: ../../use/running-a-tournament.rst:73 +msgid "Tabbycat can be set to send emails once the draw is released to adjudicators informing them of their assignments for convenience." +msgstr "" + +#: ../../use/running-a-tournament.rst:78 +msgid "Entering and Releasing Motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:80 +msgid "Tabbycat is agnostic as to whether you enter motions into Tabbycat before or after they are shown publicly. However, they must be entered *at some point* before ballots are entered." +msgstr "" + +#: ../../use/running-a-tournament.rst:82 +msgid "**Enter the motion text.** Either before or after their public release motions can be entered in the **Motions** section for that round." +msgstr "" + +#: ../../use/running-a-tournament.rst:84 +msgid "**Release to general assembly.** If you are entering motions *before* they are publicly revealed note that there is a *Display Motions* button in the **Display** area that allows you to do a Power Point style motion release." +msgstr "" + +#: ../../use/running-a-tournament.rst:86 +msgid "**Release to public.** As with draws, if you have the *enable public view of motions* setting configured your Tabbycat website will display a running list of motions from the tournament. When this is on, using the **Release Motions to Public** button on the **Motions** page will mark the current set of motions as able to be displayed on this page." +msgstr "" + +#: ../../use/running-a-tournament.rst:91 +msgid "Entering Results" +msgstr "" + +#: ../../use/running-a-tournament.rst:93 +msgid "Enter debate results and feedback as they come in (and/or allow online entry of results and feedback)." +msgstr "" + +#: ../../use/running-a-tournament.rst:95 +msgid "Both results and feedback entered in the tab room or online need to be confirmed before the results are counted. To confirm a debate ballot and the debate as a whole, the confirmed checkbox under *Ballot Status* should be ticket in addition to the *Debate Status* being set to Confirmed." +msgstr "" + +#: ../../use/running-a-tournament.rst:97 +msgid "Note that you can track data entry progress from the **Overview** page for the tournament." +msgstr "" + +#: ../../use/running-a-tournament.rst:99 +msgid "See :ref:`data-entry` for more details about the data entry process." +msgstr "" + +#: ../../use/running-a-tournament.rst:101 +msgid "We strongly recommend entering all data using the assistant area, not the admin area. This is because the admin area (intentionally) does not enforce the data confirmation procedure." +msgstr "" + +#: ../../use/running-a-tournament.rst:106 +msgid "Advancing to the next round" +msgstr "" + +#: ../../use/running-a-tournament.rst:108 +msgid "Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button." +msgstr "" + +#: ../../use/running-a-tournament.rst:112 +msgid "When you advance to the next round, if you've enabled public results, the results for the current round (which is now the previous round) will be released to the public **unless** the round is marked as \"silent\" in the database. So if you're careful about when results should be released, don't change the current round until you're ready to release those results." +msgstr "" + +#: ../../use/running-a-tournament.rst:114 +msgid "There is a design assumption that you will always want to release results for non-silent rounds before you start working on the draw for the next round. If this isn't true for you, please get in touch with us so that we know. The workaround is to make all rounds silent, then unsilent them when you're ready to release results." +msgstr "" + +#: ../../use/running-a-tournament.rst:116 +msgid "Emails can be sent to speakers informing them of their team's win/loss/points record before advancing rounds. This is independent from whether the whole round's results are released to the public." +msgstr "" + diff --git a/docs/locale/ca/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/ca/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..3c039f7e06c --- /dev/null +++ b/docs/locale/ca/LC_MESSAGES/use/starting-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-23 15:09\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: ca_ES\n" + +#: ../../use/starting-a-tournament.rst:5 +msgid "Starting a Tournament" +msgstr "" + +#: ../../use/starting-a-tournament.rst:7 +msgid "This page outlines a few things you should do at the start of a tournament, after you've :ref:`imported the initial data `. Once you've done these, proceed to :ref:`running a tournament `." +msgstr "" + +#: ../../use/starting-a-tournament.rst:9 +msgid "Tabbycat is developed for — and tested on — modern web browsers. If you are using **Internet Explorer versions 8, 7, or 6** the interface may look odd or not function properly. Switch to a newer browser if possible." +msgstr "" + +#: ../../use/starting-a-tournament.rst:13 +msgid "Tournament configuration" +msgstr "" + +#: ../../use/starting-a-tournament.rst:15 +msgid "After importing all your data you can log into the site as an administrator by loading up the homepage and then using the **Login** button in the lower-right. From there you should go to the administration section of your tournament, and then go to the tournament configuration page by clicking **Setup** then **Configuration** in the menu." +msgstr "" + +#: ../../use/starting-a-tournament.rst:17 +msgid "Here you can adjust the debate rules and interface options to your liking then hit **Save** when finished. We also offer a number of presets that apply particular rule sets (such as the Australs rules) or feature sets (such as displaying information normally released during briefs on the website)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:20 +msgid "Special data types and options" +msgstr "" + +#: ../../use/starting-a-tournament.rst:22 +msgid "There are a few optional fields that are not covered in the initial data templates, in the visual importer, or that may only be relevant in particular scenarios. It's worth going over these quickly to see if they are needed for your tournament. You can view and edit these fields in the **Edit Database** area (link is in the menu under **Setup**)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "Adjudicator Feedback > Adj Feedback Questions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "As described in :ref:`adjudicator-feedback`, the types of questions that can be posed for adjudicator feedback are able to be heavily customised. If you are customising your feedback form it should be done here, and before the tournament starts." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "Authentication and Authorisation > Users" +msgstr "" + +#: ../../use/starting-a-tournament.rst:28 +msgid "Here you can add new admin users (those with full access) as well as new assistant users those (who can only do common data-entry tasks but not edit or view the full tab interface). See :ref:`user-accounts` for information on how to do this." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "The people you're adding accounts for should be physically present when you do this, so that they can enter their password." +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Participants > Regions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Optionally, each institution may belong to a *Region*. An institution's region is used within the adjudicator allocation process to visually identify teams and adjudicators for the purposes of highlighting diversity issues. These have traditionally been used for geographic regions (such as Oceania), although could be repurposed as arbitrary markers of information — for example they could be used to denote teams from a particular State, institutional size, or circuit." +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Participants > Adjudicators" +msgstr "" + +#: ../../use/starting-a-tournament.rst:36 +msgid "An adjudicators *Base Score* represents their relative ability to judge important rooms, where adjudicators with higher numbers will, relative to the other adjudicators, be placed in better roles (ie as Chairs) and in the rooms you deem most important in each round. If you are running a small tournament, and plan to do your allocations manually, you can set everyone's number to the same amount." +msgstr "" + +#: ../../use/starting-a-tournament.rst:37 +msgid "For larger tournaments, particularly those that collect feedback, see the :ref:`adjudicator-feedback` section for more information on how base scores and other variables influence the automated allocation process." +msgstr "" + +#: ../../use/starting-a-tournament.rst:38 +msgid "Regardless of how you score the adjs, if you have changed the minimimum chairing score in settings, you'll want to make sure there are enough adjudicators that meet this minimum threshold or the automated allocator may not function effectively." +msgstr "" + +#: ../../use/starting-a-tournament.rst:39 +msgid "All types of conflicts are assigned to the relevant adjudicator. Adjudicator's can be conflicted against particular teams, particular institutions, and other adjudicators. Each of these is a located in a tab at the top of the page." +msgstr "" + +#: ../../use/starting-a-tournament.rst:40 +msgid "Each adjudicator's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Each adjudicator's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "Participants > Teams" +msgstr "" + +#: ../../use/starting-a-tournament.rst:44 +msgid "Note the distinction here between full name and short name. The latter is used on pages where space is tight, such as the draw displays or the adjudicator allocation interface." +msgstr "" + +#: ../../use/starting-a-tournament.rst:45 +msgid "Note that \"Uses institutional prefix\" option. With this option on, a team from the 'MUDS' insttution named '1' or 'Gold' would be displayed as 'MUDS 1' or 'MUDS Gold'." +msgstr "" + +#: ../../use/starting-a-tournament.rst:46 +msgid "At present, setting a team's type to Bye, Swing, or Composite only affects very particular circumstances, and should be considered unnecessary." +msgstr "" + +#: ../../use/starting-a-tournament.rst:47 +msgid "If you do have composite teams, and wish to have them be conflicted by adjudicators from each respective instutution, you'll need to add a new team conflict to each adjudicator from each institution." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "If you do have swing teams, or teams that are otherwise ineligible for breaking, this is typically handled through the breaks interface in the main site" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Participants > Speakers" +msgstr "" + +#: ../../use/starting-a-tournament.rst:51 +msgid "Each speaker's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Each speaker's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "Tournaments > Divisions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "At the moment divisions are only useful for running tournaments that use round-robin style draws. Here, each division represents a draw pool within a round. Division support here is under development and not tested in many scenarios." +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Tournaments > Tournaments" +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Note that tournaments can have a welcome message (useful for displaying maps and other information on the homepage)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "Venues > Venues" +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "A venue's priority determines its priority in being allocated. If there are 20 debates, and 30 rooms, the 20 rooms with the highest priorities will be chosen. Furthermore, if particular debates are marked as important during the draw process, those debates will receive the rooms with the highest priorities. In this way you can give close rooms to members of the adj core, or give larger rooms to debates that will draw a large audience." +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venues > Venue Categories" +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venue categories are not needed for most kinds of tournaments. Their purpose is to classify particular venues, such as venues all within one building or venues that are accessible. Once assigned these categories can display in the venue's name — ie \"Red 01.01\" or be used to assign Venue Constraints that match particular teams, institutions, or adjudicators to particular types of venues." +msgstr "" + +#: ../../use/starting-a-tournament.rst:67 +msgid "Information for the briefing" +msgstr "" + +#: ../../use/starting-a-tournament.rst:69 +msgid "If you're using the online submissions feature, some things you should probably mention in the briefing:" +msgstr "" + +#: ../../use/starting-a-tournament.rst:71 +msgid "Adjudicators must fill out ballots completely, including motions and venues—they are entered into the system." +msgstr "" + +#: ../../use/starting-a-tournament.rst:72 +msgid "There is a static URL for each person's ballots and feedback forms. It can be bookmarked, or the page can refreshed after each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:73 +msgid "If people submit a result or feedback online, they should indicate that they have done so on the paper copy of their ballot." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/authors.po b/docs/locale/cs/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..1a84e7d64e4 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/authors.po @@ -0,0 +1,72 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: cs_CZ\n" + +#: ../../../AUTHORS.rst:3 +msgid "Authors & Acknowledgements" +msgstr "" + +#: ../../../AUTHORS.rst:6 +msgid "Authors" +msgstr "" + +#: ../../../AUTHORS.rst:8 +msgid "Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:" +msgstr "" + +#: ../../../AUTHORS.rst:10 +msgid "Philip Belesky (`pb-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:11 +msgid "Chuan-Zheng Lee (`cz-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:13 +msgid "Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:16 +msgid "Contributors" +msgstr "" + +#: ../../../AUTHORS.rst:18 +msgid "Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:19 +msgid "Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category." +msgstr "" + +#: ../../../AUTHORS.rst:20 +msgid "Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced." +msgstr "" + +#: ../../../AUTHORS.rst:21 +msgid "Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the \"Tournament Logistics\" section of our documentation." +msgstr "" + +#: ../../../AUTHORS.rst:24 +msgid "Sponsors" +msgstr "" + +#: ../../../AUTHORS.rst:26 +msgid "Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/changelog.po b/docs/locale/cs/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..8869b3155cd --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/changelog.po @@ -0,0 +1,1922 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: cs_CZ\n" + +#: ../../../CHANGELOG.rst:3 +msgid "Change Log" +msgstr "" + +#: ../../../CHANGELOG.rst:6 +msgid "2.4.0 (Maine)" +msgstr "" + +#: ../../../CHANGELOG.rst:7 +msgid "*Release date: ?*" +msgstr "" + +#: ../../../CHANGELOG.rst:9 +msgid "Added support for Russian, and shortened the language selector" +msgstr "" + +#: ../../../CHANGELOG.rst:10 +msgid "Renamed 'test score' to 'base score'" +msgstr "" + +#: ../../../CHANGELOG.rst:11 +msgid "Divisions-specific features have been deprecated and removed" +msgstr "" + +#: ../../../CHANGELOG.rst:12 +msgid "Moved the 'Edit Database' menu item to the dropdown with the logo in the admin navigation" +msgstr "" + +#: ../../../CHANGELOG.rst:13 +msgid "Pull-ups can now be restricted to teams with the lowest draw strength (by speaker or team points) of their bracket" +msgstr "" + +#: ../../../CHANGELOG.rst:14 +msgid "The number of pull-ups and draw strength by speaker score are now available as team standing metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:15 +msgid "Added the new emoji that come along with Unicode 11 — thanks to Viran Weerasekera for this addition!" +msgstr "" + +#: ../../../CHANGELOG.rst:16 +msgid "The 'Show adjudicator institutions' preference now covers a wider range of cases; meaning that if it is unchecked then all adjudicator's institutional affiliations should be hidden from the public" +msgstr "" + +#: ../../../CHANGELOG.rst:20 +msgid "2.3.2" +msgstr "" + +#: ../../../CHANGELOG.rst:21 +msgid "*Release date: 19 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:23 +msgid "Fixed issue where teams would appear to be unavailable in break rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:24 ../../../CHANGELOG.rst:294 +#: ../../../CHANGELOG.rst:302 ../../../CHANGELOG.rst:314 +msgid "Other minor fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:28 +msgid "2.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:29 +msgid "*Release date: 6 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:31 +msgid "Fixed issue where the institutions list would count teams/adjudicators outside of the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:32 +msgid "Fixed issue where a rejected ballot form would crash rather than providing an error message" +msgstr "" + +#: ../../../CHANGELOG.rst:33 +msgid "Fixed issue where the javascript bundle would not build on a local windows install" +msgstr "" + +#: ../../../CHANGELOG.rst:34 +msgid "Fixed issue where the adjudicator record pages would show an unreleased motion if that round's draw was released" +msgstr "" + +#: ../../../CHANGELOG.rst:38 +msgid "2.3.0 (LaPerm)" +msgstr "" + +#: ../../../CHANGELOG.rst:39 +msgid "*Release date: 27 September 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:42 +msgid "Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation" +msgstr "" + +#: ../../../CHANGELOG.rst:43 +msgid "Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates" +msgstr "" + +#: ../../../CHANGELOG.rst:45 +msgid "By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:47 +msgid "These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core" +msgstr "" + +#: ../../../CHANGELOG.rst:48 +msgid "A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information" +msgstr "" + +#: ../../../CHANGELOG.rst:49 +msgid "The unused panel is now able to sort adjudicators by name, score, or drag order" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Average scores for all adjudicators, and a voting majority, are now shown next to the panel" +msgstr "" + +#: ../../../CHANGELOG.rst:51 +msgid "Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values" +msgstr "" + +#: ../../../CHANGELOG.rst:52 +msgid "The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)" +msgstr "" + +#: ../../../CHANGELOG.rst:55 +msgid "Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "A range of improvements to the email notifications contributed by Étienne Beaulé:" +msgstr "" + +#: ../../../CHANGELOG.rst:57 +msgid "Ballot receipt emails now provide more information about team scores/points" +msgstr "" + +#: ../../../CHANGELOG.rst:58 +msgid "Emails are now in a rich-text format" +msgstr "" + +#: ../../../CHANGELOG.rst:59 +msgid "Custom emails may be sent out to select participants through the web-interface" +msgstr "" + +#: ../../../CHANGELOG.rst:60 +msgid "Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "Teams can be sent emails with their draw details" +msgstr "" + +#: ../../../CHANGELOG.rst:62 +msgid "Emails can be tracked to determine if sent or read (SendGrid-specific)" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Expanded the use of private URLs (Encore Étienne Beaulé):" +msgstr "" + +#: ../../../CHANGELOG.rst:64 +msgid "QR codes are now included in addition to the URL when printing private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:66 +msgid "Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Reworked how conflicts are determined to support double-past institutional conflicts:" +msgstr "" + +#: ../../../CHANGELOG.rst:68 +msgid "Added a \"team-institution conflict\" model" +msgstr "" + +#: ../../../CHANGELOG.rst:69 +msgid "Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter" +msgstr "" + +#: ../../../CHANGELOG.rst:71 +msgid "An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties" +msgstr "" + +#: ../../../CHANGELOG.rst:72 +msgid "When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions" +msgstr "" + +#: ../../../CHANGELOG.rst:73 +msgid "Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:74 +msgid "Info-slides can now be split into paragraphs" +msgstr "" + +#: ../../../CHANGELOG.rst:75 +msgid "Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:76 +msgid "Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:77 +msgid "Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``" +msgstr "" + +#: ../../../CHANGELOG.rst:78 +msgid "Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally." +msgstr "" + +#: ../../../CHANGELOG.rst:82 +msgid "2.2.10" +msgstr "" + +#: ../../../CHANGELOG.rst:83 +msgid "*Release date: 10 February 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:85 +msgid "Fixed the display of feedback quantities on the Feedback Overview Page" +msgstr "" + +#: ../../../CHANGELOG.rst:86 +msgid "Fixed issue where 'ignored' feedback would hide the result from the feedback graph but not affect an adjudicator's current score. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:90 +msgid "2.2.9" +msgstr "" + +#: ../../../CHANGELOG.rst:91 +msgid "*Release date: 24 January 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:93 +msgid "Fixed an issue that could cause errors for tournaments when using an atypical number of rounds and break sizes. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:94 +msgid "Fixed an issue where the display of adjudicator's record links would display their name twice" +msgstr "" + +#: ../../../CHANGELOG.rst:98 +msgid "2.2.8" +msgstr "" + +#: ../../../CHANGELOG.rst:99 +msgid "*Release date: 14 December 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:101 +msgid "Fix issue where the check-in buttons were always disabled on admin and assistant pages" +msgstr "" + +#: ../../../CHANGELOG.rst:102 +msgid "Other minor fixes. Thanks to Étienne for these and for the check-in button fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:106 +msgid "2.2.7" +msgstr "" + +#: ../../../CHANGELOG.rst:107 +msgid "*Release date: 16 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:109 +msgid "Lock redis-py version to 2.10.6, as workaround for `compatibility issue between django-redis and redis-py `_" +msgstr "" + +#: ../../../CHANGELOG.rst:110 +msgid "Fix login link on page shown after a user logs out" +msgstr "" + +#: ../../../CHANGELOG.rst:114 +msgid "2.2.6" +msgstr "" + +#: ../../../CHANGELOG.rst:115 +msgid "*Release date: 14 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:117 +msgid "Fix issue where check-ins could not be revoked" +msgstr "" + +#: ../../../CHANGELOG.rst:118 +msgid "Fix issue where the standings overview 'dashboard' included scores from elimination rounds. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:119 +msgid "Fix issue where the Average Individual Speaker Score metric would fail to calculate in some circumstances. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:120 +msgid "Fix issue where draw emails would crash if venues were unspecified. Thanks, again, to Étienne for this fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:124 +msgid "2.2.5" +msgstr "" + +#: ../../../CHANGELOG.rst:125 +msgid "*Release date: 21 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:127 +msgid "Remove the buttons from the public check-ins page (as these do nothing unless the user is logged in)" +msgstr "" + +#: ../../../CHANGELOG.rst:128 +msgid "Hopefully fixed error that could cause Team- and Adjudicator- Institutional conflicts to not show properly on Allocation pages" +msgstr "" + +#: ../../../CHANGELOG.rst:129 +msgid "Thanks to Étienne for pull requests fixing rare bugs in the user creation form and break generation when rounds are not present" +msgstr "" + +#: ../../../CHANGELOG.rst:133 +msgid "2.2.4" +msgstr "" + +#: ../../../CHANGELOG.rst:134 +msgid "*Release date: 9 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:136 +msgid "Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:140 +msgid "2.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:141 +msgid "*Release date: 28 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:143 +msgid "*Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:144 +msgid "Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:145 +msgid "Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:149 +msgid "2.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:150 +msgid "*Release date: 22 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:152 +msgid "*Actually* fix the issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:156 +msgid "2.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:157 +msgid "*Release date: 21 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:159 +msgid "Fix issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:163 +msgid "2.2.0 (Khao Manee)" +msgstr "" + +#: ../../../CHANGELOG.rst:164 +msgid "*Release date: 20 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Implemented a new server architecture on Heroku along with other optimisation that should significantly improve the performance of sites receiving lots of traffic. Note that if you are upgrading an existing Heroku instance this requires a few tweaks before you deploy the update:" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Add the `https://github.com/heroku/heroku-buildpack-nginx.git` build pack under the Settings area of the Heroku Dashboard and positioning it first" +msgstr "" + +#: ../../../CHANGELOG.rst:168 +msgid "If your Heroku Stack is not \"heroku-16\" (noted under that same Settings page) it will need to be set as such using the Heroku CLI and the ``heroku stack:set heroku-16 --app APP_NAME`` command" +msgstr "" + +#: ../../../CHANGELOG.rst:169 +msgid "Added a page to the documentation that details how to scale a Tabbycat site that is receiving large amounts of traffic; and another page that documents how to upgrade a Tabbycat site to a new version" +msgstr "" + +#: ../../../CHANGELOG.rst:170 +msgid "Added support for Japanese and Portuguese. Let us know if you'd like to help contribute translations for either language (or a new one)!" +msgstr "" + +#: ../../../CHANGELOG.rst:171 +msgid "The results-entry page now updates its data live, giving you a more up to date look at data entry progress and reducing the cases of old data leading people to enter new ballots when they meant to confirm them" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "A huge thanks to Étienne Beaulé for contributing a number of major new features and bug fixes. Notably:" +msgstr "" + +#: ../../../CHANGELOG.rst:173 +msgid "Added a means to mark feedback as 'ignored' so that it still is recorded as having been submitted, but does not affect the targeted-adjudicator's feedback score" +msgstr "" + +#: ../../../CHANGELOG.rst:174 +msgid "Added email notification to adjudicators on round release" +msgstr "" + +#: ../../../CHANGELOG.rst:175 +msgid "Implemented participant self-check-in through the use of their private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:176 +msgid "Gave all participants to a tournament a private URL key rather than being by team, and added a landing page for the participants using this key" +msgstr "" + +#: ../../../CHANGELOG.rst:177 +msgid "Implemented templated email notifications with ballot submission and round advance with the messages in a new settings panel. Private URL emails are now also customizable" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "Added the \"average individual speaker score\" metric which averages the scores of all substantive speeches by the team within preliminary rounds. The old \"average speaker score\" metric has been renamed to to \"average total speaker score\"" +msgstr "" + +#: ../../../CHANGELOG.rst:179 +msgid "Reworked the ballots status graph to be an area chart" +msgstr "" + +#: ../../../CHANGELOG.rst:180 +msgid "Added the ability to hide motions on printed ballots (even if they have been entered). Thanks to Github user 0zlw for the feature request!" +msgstr "" + +#: ../../../CHANGELOG.rst:181 +msgid "Added the ability to unconfirm feedback from any of the views that show it" +msgstr "" + +#: ../../../CHANGELOG.rst:182 +msgid "BP motion statistics now also show average points split by bench and half" +msgstr "" + +#: ../../../CHANGELOG.rst:183 +msgid "Added a warning when users are close to their free-tier database limit on Heroku that makes it clear not to create new tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:184 +msgid "Added ``exportconfig`` and ``importconfig`` management commands to export and import tournament configurations to a JSON file" +msgstr "" + +#: ../../../CHANGELOG.rst:185 +msgid "Upgraded `django-dynamic-preferences `_ to version 1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:187 +msgid "This won't affect most users, but advanced users previously having problems with a stray ``dynamic_preferences_users_userpreferencemodel`` table who are upgrading an existing instance may wish to run the SQL command ``DROP TABLE dynamic_preferences_users_userpreferencemodel;`` to remove this stray table. When this table was present, it caused an inconsistency between migration state and database schema that in turned caused the ``python manage.py flush`` command to fail. More information is available in the `django-dynamic-preferences changelog `_" +msgstr "" + +#: ../../../CHANGELOG.rst:191 +msgid "2.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:192 +msgid "*Release date: 21 August 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:194 +msgid "Added an alert for British Parliamentary format grand-final ballots that explains the workaround needed to nominate a sole winner" +msgstr "" + +#: ../../../CHANGELOG.rst:195 +msgid "Improved display of images shown when sharing Tabbycat links on social media" +msgstr "" + +#: ../../../CHANGELOG.rst:196 +msgid "Optimised the performance of several commonly-loaded pages. Thanks to Étienne Beaulé for the pull request!" +msgstr "" + +#: ../../../CHANGELOG.rst:197 +msgid "Prevented the entry of integer-scale feedback questions without the required min/max attributes" +msgstr "" + +#: ../../../CHANGELOG.rst:198 +msgid "Provided a shortcut link to editing a round's feedback weight" +msgstr "" + +#: ../../../CHANGELOG.rst:199 +msgid "Prevented standings from crashing when only a single standings metric is set" +msgstr "" + +#: ../../../CHANGELOG.rst:203 +msgid "2.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:204 +msgid "*Release date: 14 July 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:206 +msgid "Fixed an error caused when calculating breaks including teams without institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:207 +msgid "Improved display of long motions and info slides" +msgstr "" + +#: ../../../CHANGELOG.rst:208 +msgid "Fixed bug in feedback progress tracking with UADC-style adjudication" +msgstr "" + +#: ../../../CHANGELOG.rst:209 +msgid "Fixed bug where the public checks page would cause large amounts of failing requests" +msgstr "" + +#: ../../../CHANGELOG.rst:210 +msgid "Fixed visual issue with adjudicator lists wrapping poorly on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:211 +msgid "Limited the time it takes to serve requests to match Heroku's in-built limit; this may help improve the performance of sites under heavy load" +msgstr "" + +#: ../../../CHANGELOG.rst:215 +msgid "2.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:216 +msgid "*Release date: 19 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:218 +msgid "The Scan Identifiers page now orders check-ins from top to bottom" +msgstr "" + +#: ../../../CHANGELOG.rst:219 +msgid "The Scan Identifiers now plays different sounds for failed check-ins" +msgstr "" + +#: ../../../CHANGELOG.rst:220 +msgid "The Scan Identifiers now has a toggle for sounds; allowing it to work in browsers like Safari that block auto-playing audio" +msgstr "" + +#: ../../../CHANGELOG.rst:224 +msgid "2.1.0 (Japanese Bobtail)" +msgstr "" + +#: ../../../CHANGELOG.rst:225 +msgid "*Release date: 7 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:227 +msgid "Added an introductory modal for the adjudicator allocation page to help outline how the features and workflow operate" +msgstr "" + +#: ../../../CHANGELOG.rst:228 +msgid "Added an automated method for assigning importances to debates using their bracket or 'liveness'. This should allow smaller tournaments to more easily assign importances and save time for larger tournaments that do so" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "Added the ability to switch between using 'team codes' and standard team names" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "By default team codes are set to match that team's emoji, but team codes are editable and can be imported like standard data" +msgstr "" + +#: ../../../CHANGELOG.rst:231 +msgid "Team codes can be swapped in an out for standard team names at will, with precise control over the contexts in which either is used — i.e. in public-facing pages, in admin-facing pages, in tooltips, *etc.*" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Added a range of 'check-in' functionality" +msgstr "" + +#: ../../../CHANGELOG.rst:233 +msgid "This includes barcode assignment, printing, and scanning. Scanning methods are optimised both for manual entry, entry with barcodes scanners, and for a 'live' scanning view that uses your phone's camera!" +msgstr "" + +#: ../../../CHANGELOG.rst:234 +msgid "This includes new people and venue status pages that show an overview of check-in status and allow for easy manual check-ins; ideal for a roll-calls!. This page can also be made public" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Ballot check-ins have been converted to this new method, and now all printed ballots will contain the barcodes needed to scan them" +msgstr "" + +#: ../../../CHANGELOG.rst:236 +msgid "Venue check-ins have been added alongside the standard 'person' check-ins to allow you to track a room's status at the start of the day or round-by-round" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Added (partial) translations in French, Spanish and Arabic" +msgstr "" + +#: ../../../CHANGELOG.rst:238 +msgid "Users can now use a link in the footer to switch the site's language into French, Spanish, or Arabic. By default Tabbycat should also match your browser's language and so automatically apply those languages if it matches" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Our translations are generously provided by volunteers, but (so far) do not cover all of the interface text within Tabbycat. If you're interested in helping to translate new or existing languages please get in touch!" +msgstr "" + +#: ../../../CHANGELOG.rst:240 +msgid "Thanks to the excellent team at QatarDebate for contributing the Arabic translations, and to Alejandro, Hernando, Julian and Zoe for contributing the Spanish translations." +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Added a new (beta) feature: allocation 'sharding'" +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Sharding allows you to split up the Adjudicator Allocation screen into a defined subset of the draw. This has been designed so that you can have multiple computers doing allocations simultaneously; allowing the adjudication core to split itself and tackle allocations in parallel." +msgstr "" + +#: ../../../CHANGELOG.rst:243 +msgid "Shards can be assigned into defined fractions (i.e. halves or fifths) according to specific criteria (i.e. bracket or priority) and following either a top-to-bottom sorting or a mixed sorting that ensures each bracket has an even proportion of each criteria." +msgstr "" + +#: ../../../CHANGELOG.rst:244 +msgid "Added an option to show a \"Confirm Digits\" option to pre-printed ballots that asks adjudicators to confirm their scores in a manner that may help clarify instances or bad handwriting. This can be enabled in the \"Data Entry\" settings area." +msgstr "" + +#: ../../../CHANGELOG.rst:245 +msgid "Added a 'liveness' calculator for BP that will estimate whether each team has, can, or can't break in each of their categories (as previously existed for 2-team formats)" +msgstr "" + +#: ../../../CHANGELOG.rst:246 +msgid "Added draw pull-up option: pull up from middle" +msgstr "" + +#: ../../../CHANGELOG.rst:247 +msgid "Added new draw option: choose pull-up from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../../CHANGELOG.rst:248 +msgid "Added the ability to have different 'ballots-per-debates' for in/out rounds; accommodating tournaments like Australian Easters that use consensus for preliminary rounds but voting for elimination rounds." +msgstr "" + +#: ../../../CHANGELOG.rst:249 +msgid "Added time zone support to the locations where times are displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:250 +msgid "Administrators can now view pages as if they were Assistants; allowing them to (for example) use the data entry forms that enforce double-checking without needed to create a separate account" +msgstr "" + +#: ../../../CHANGELOG.rst:251 +msgid "Fixed χ² test in motion statistics, and refactored the motion statistics page" +msgstr "" + +#: ../../../CHANGELOG.rst:252 +msgid "Teams, like adjudicators, no longer need to have an institution" +msgstr "" + +#: ../../../CHANGELOG.rst:253 +msgid "Added a page allowing for bulk updates to adjudicator scores" +msgstr "" + +#: ../../../CHANGELOG.rst:254 +msgid "Added break categories to team standings, and new team standings pages for break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Made speaker standings more configurable" +msgstr "" + +#: ../../../CHANGELOG.rst:256 +msgid "Second-order metrics can now be specified" +msgstr "" + +#: ../../../CHANGELOG.rst:257 +msgid "Added trimmed mean (also known as high-low drop)" +msgstr "" + +#: ../../../CHANGELOG.rst:258 +msgid "Added ability to set no limit for number of missed debates" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Standard deviation is now the population standard deviation (was previously sample), and ranks in ascending order if used to rank speakers." +msgstr "" + +#: ../../../CHANGELOG.rst:273 ../../../CHANGELOG.rst:386 +msgid "Quality of life improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:262 +msgid "Added a \"☆\" indicator to more obviously liveness in the adjudicator allocation screen" +msgstr "" + +#: ../../../CHANGELOG.rst:263 +msgid "Added WYSIWYG editor for tournament welcome message, and moved it to tournament configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:264 +msgid "Added \"appellant\" and \"respondent\" to the side name options" +msgstr "" + +#: ../../../CHANGELOG.rst:265 +msgid "Added a two new columns to the feedback overview page: one that displays the current difference between an adjudicator's test score and their current weighted score; another the displays the standard deviation of an adjudicator's feedback scores" +msgstr "" + +#: ../../../CHANGELOG.rst:266 +msgid "Added an 'important feedback' page that highlights feedback significantly above or below an adjudicator's test score" +msgstr "" + +#: ../../../CHANGELOG.rst:267 +msgid "Added a means to bulk-import adjudicator scores (for example from a CSV) to make it easier to work with external feedback processing" +msgstr "" + +#: ../../../CHANGELOG.rst:268 +msgid "Speakers and speaker's emails in the simple importer can now be separated by commas or tabs in addition to new lines" +msgstr "" + +#: ../../../CHANGELOG.rst:269 +msgid "The \"shared\" checkbox in the simple importer is now hidden unless the relevant tournament option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:270 +msgid "Current team standings page now shows silent round results if \"Release all round results to public\" is set" +msgstr "" + +#: ../../../CHANGELOG.rst:271 +msgid "The Consensus vs Voting options for how ballots work has now been split into two settings: one option for preliminary rounds and one option for elimination rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:272 +msgid "Speaker scores now show as integers (without decimals) where the tournament format would not allow decimals" +msgstr "" + +#: ../../../CHANGELOG.rst:273 +msgid "Added a page showing a list of institutions in the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:274 +msgid "On the assistant \"enter results\" page, pressing \"/\" jumps to the \"Find in Table\" box, so data entry can be done entirely from your keyboard" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "Switched to using a Websockets/Channels based infrastructure to better allow for asynchronous updates. This should also ameliorate cases where the Memcachier plugin expired due to inactivity which would then crash a site. Notes for those upgrading:" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "On Heroku: You should remove the Memcachier plugin and instead add 'heroku-redis' to any instances being upgraded" +msgstr "" + +#: ../../../CHANGELOG.rst:277 +msgid "Locally: You should recreate your `local_settings.py` from the `local_settings.example` file" +msgstr "" + +#: ../../../CHANGELOG.rst:280 +msgid "Upgraded to Django 2.0" +msgstr "" + +#: ../../../CHANGELOG.rst:279 +msgid "Converted most raw SQL queries to use the new ``filter`` keyword in annotations" +msgstr "" + +#: ../../../CHANGELOG.rst:283 +msgid "2.0.7" +msgstr "" + +#: ../../../CHANGELOG.rst:284 +msgid "*Release date: 13 April 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:286 +msgid "Fixed an issue preventing draws with pre-allocate sides generating" +msgstr "" + +#: ../../../CHANGELOG.rst:290 +msgid "2.0.6" +msgstr "" + +#: ../../../CHANGELOG.rst:291 +msgid "*Release date: 20 March 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:293 +msgid "Added reminder to add own-institution conflicts in the Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:298 +msgid "2.0.5" +msgstr "" + +#: ../../../CHANGELOG.rst:299 +msgid "*Release date: 7 February 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:301 +msgid "Improved the printing of scoresheets and feedback forms on Chrome." +msgstr "" + +#: ../../../CHANGELOG.rst:306 +msgid "2.0.4" +msgstr "" + +#: ../../../CHANGELOG.rst:307 +msgid "*Release date: 22 January 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:309 +msgid "Add alert for users who try to do voting ballots on BP-configured tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:310 +msgid "Fixed issue where draws of the \"manual\" type would not generate correctly" +msgstr "" + +#: ../../../CHANGELOG.rst:311 +msgid "Fixed issue where a ballot's speaker names dropdown would contain both team's speakers when using formats with side selection" +msgstr "" + +#: ../../../CHANGELOG.rst:312 +msgid "Fixed issue where scoresheets would not show correctly under some configurations" +msgstr "" + +#: ../../../CHANGELOG.rst:313 +msgid "Improved display of really long motions when using the inbuilt motion-showing page" +msgstr "" + +#: ../../../CHANGELOG.rst:318 +msgid "2.0.3" +msgstr "" + +#: ../../../CHANGELOG.rst:319 +msgid "*Release date: 3 December 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:321 +msgid "Fixed issue where the 'prefix team name with institution name' checkbox would not be correctly saved when using the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:322 +msgid "Removed the scroll speed / text size buttons on mobile draw views that were making it difficult to view the table" +msgstr "" + +#: ../../../CHANGELOG.rst:323 +msgid "Improved the display of the motions tab page on mobile devices and fixed an issue where it appeared as if only half the vetoes were made" +msgstr "" + +#: ../../../CHANGELOG.rst:327 +msgid "2.0.2" +msgstr "" + +#: ../../../CHANGELOG.rst:328 +msgid "*Release date: 27 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Fixes and improvements to diversity overview" +msgstr "" + +#: ../../../CHANGELOG.rst:331 +msgid "Fixed average feedback rating from teams, it was previously (incorrectly) showing the average feedback rating from all adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:332 +msgid "Gender splits for average feedback rating now go by target adjudicator; this was previously source adjudicator" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Persons with unknown gender are now shown in counts (but not score/rating averages); a bug had previously caused them to be incorrectly counted as zero" +msgstr "" + +#: ../../../CHANGELOG.rst:334 +msgid "Improved query efficiency of the page" +msgstr "" + +#: ../../../CHANGELOG.rst:335 +msgid "Improved the BP motions tab for out-rounds by specifying advancing teams as \"top/bottom ½\" rather than as 1st/4th and removed the average-points-per-position graphs that were misleading" +msgstr "" + +#: ../../../CHANGELOG.rst:336 +msgid "Improved handling of long motions in the motion display interface" +msgstr "" + +#: ../../../CHANGELOG.rst:337 +msgid "Fixed issue where creating BP tournaments using the wizard would create an extra break round given the size of the break specified" +msgstr "" + +#: ../../../CHANGELOG.rst:338 +msgid "Fixed auto-allocation in consensus panels where there are fewer judges than debates in the round" +msgstr "" + +#: ../../../CHANGELOG.rst:339 +msgid "Fixed reply speaker validity check when speeches are marked as duplicate" +msgstr "" + +#: ../../../CHANGELOG.rst:340 +msgid "Prohibit assignment of teams to break categories of other tournaments in Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:344 +msgid "2.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:345 +msgid "*Release date: 21 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:347 +msgid "Fixed issue where results submission would crash if sides are unconfirmed" +msgstr "" + +#: ../../../CHANGELOG.rst:348 +msgid "Fixed issue where scoresheets would not display properly for adjudicators who lack institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:349 +msgid "Fixed issue where the round history indicators in the Edit Adjudicators page would sometimes omit the \"rounds ago\" indicator" +msgstr "" + +#: ../../../CHANGELOG.rst:353 +msgid "2.0.0 (Iberian Lynx)" +msgstr "" + +#: ../../../CHANGELOG.rst:354 +msgid "*Release date: 13 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "British Parliamentary support" +msgstr "" + +#: ../../../CHANGELOG.rst:357 +msgid "Full support for British Parliamentary format has been added and we're incredibly excited to see Tabbycat's unique features and design (finally) available as an option for those tabbing in the predominant global format" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "As part of the implementation of this format we've made significant improvements over existing tab software on how sides are allocated within BP draws. This means that teams are less likely to have 'imbalanced' proportions of side allocations (for example having many more debates as Opening Government than Closing Opposition)" +msgstr "" + +#: ../../../CHANGELOG.rst:359 +msgid "We've added a new \"Comparisons\" page added to the documentation to outline some of the key differences between Tabbycat and other software in the context of BP tabbing" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "Refreshed interface design" +msgstr "" + +#: ../../../CHANGELOG.rst:361 +msgid "The basic graphic elements of Tabbycat have had a their typography, icons, colours, forms, and more redesign for a more distinctive and clear look. We also now have an official logo!" +msgstr "" + +#: ../../../CHANGELOG.rst:362 +msgid "The \"Motions\" stage of the per-round workflow has now been rolled into the Display area to better accommodate BP formats and consolidate the Draw/Motion 'release' process" +msgstr "" + +#: ../../../CHANGELOG.rst:363 +msgid "Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks" +msgstr "" + +#: ../../../CHANGELOG.rst:364 +msgid "Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions" +msgstr "" + +#: ../../../CHANGELOG.rst:366 +msgid "Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "Improved handling of Break Rounds ballots and sides allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised" +msgstr "" + +#: ../../../CHANGELOG.rst:369 +msgid "Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores" +msgstr "" + +#: ../../../CHANGELOG.rst:370 +msgid "Now, like Break Categories, you can define arbitrary Categories such as 'Novice' or 'ESL' to create custom Speaker tabs for groups of Speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:371 +msgid "You can now release an Adjudicators Tab showing test scores, final scores, and/or per-round feedback averages" +msgstr "" + +#: ../../../CHANGELOG.rst:372 +msgid "Information Slides can now be added to the system; either for showing to an auditorium within Tabbycat or for displaying alongside the public list of motions and/or the motions tab" +msgstr "" + +#: ../../../CHANGELOG.rst:373 +msgid "Teams and adjudicators are no longer required to have institutions; something that should be very useful when setting up small IVs and the like" +msgstr "" + +#: ../../../CHANGELOG.rst:374 +msgid "Private URLs can now be incrementally generated. Records of sent mail are now also kept by Tabbycat, so that emails can be incrementally sent to participants as registration data changes" +msgstr "" + +#: ../../../CHANGELOG.rst:376 +msgid "After creating a new tournament you will now be prompted to apply a basic rules and public information preset" +msgstr "" + +#: ../../../CHANGELOG.rst:377 +msgid "Better handling of errors that arise when a debate team is missing or where two teams have been assigned the same side" +msgstr "" + +#: ../../../CHANGELOG.rst:378 +msgid "Fixed issue where the adjudicator feedback graphs would not sort along with their table" +msgstr "" + +#: ../../../CHANGELOG.rst:379 +msgid "The Feedback Overview page now makes it more clear how the score is determined, the current distribution of scores, and how scores affect the distribution of chairs, panellists, and trainees" +msgstr "" + +#: ../../../CHANGELOG.rst:380 +msgid "Speaker tabs now default to sorting by average, except for formats where we are certain that they must be sorted by total. The speaker tab page itself now prominently notes which setting is is currently using" +msgstr "" + +#: ../../../CHANGELOG.rst:381 +msgid "'Feedback paths' now default to a more permissive setting (rather than only allowing Chairs to submit feedback) and the Feedback Overview page will note that current configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:382 +msgid "Emails can be assigned to adjudicators and teams in the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:383 +msgid "More of the tables that allow you to set or edit data (such as the check-in tables for adjudicators, teams and venues) now automatically save changes" +msgstr "" + +#: ../../../CHANGELOG.rst:384 +msgid "When adding/editing users extraneous fields have been hidden and the \"Staff\" and \"Superuser\" roles have new sub-text clarifying what they mean for users with those permissions" +msgstr "" + +#: ../../../CHANGELOG.rst:385 +msgid "Team record pages now show cumulative team points, and if the speaker tab is fully released, speaker scores for that team in each debate" +msgstr "" + +#: ../../../CHANGELOG.rst:389 +msgid "1.4.6" +msgstr "" + +#: ../../../CHANGELOG.rst:390 +msgid "*Release date: 23 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:392 +msgid "Fixed issue where speaker standings with a large amount of non-ranking speakers would cause the page to load slowly or time-out." +msgstr "" + +#: ../../../CHANGELOG.rst:396 +msgid "1.4.5" +msgstr "" + +#: ../../../CHANGELOG.rst:397 +msgid "*Release date: 14 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:399 +msgid "Added warning message when adjudicator scores are outside the expected range" +msgstr "" + +#: ../../../CHANGELOG.rst:400 +msgid "Fixed handling of uniqueness failure in simple importer for teams" +msgstr "" + +#: ../../../CHANGELOG.rst:404 +msgid "1.4.4" +msgstr "" + +#: ../../../CHANGELOG.rst:405 +msgid "*Release date: 27 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:407 +msgid "Fixed Vue dependency issue preventing Heroku installs after a dependency release" +msgstr "" + +#: ../../../CHANGELOG.rst:408 +msgid "Fixed issue with formatting non-numeric standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:409 +msgid "Fixed behaviour of public tabs when all rounds are silent" +msgstr "" + +#: ../../../CHANGELOG.rst:413 +msgid "1.4.3" +msgstr "" + +#: ../../../CHANGELOG.rst:414 +msgid "*Release date: 9 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:416 +msgid "A number of improvements to error handling and logging" +msgstr "" + +#: ../../../CHANGELOG.rst:417 +msgid "Changed the \"previous round\" of an elimination round to point to the last one in the same break category" +msgstr "" + +#: ../../../CHANGELOG.rst:418 +msgid "Other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:422 +msgid "1.4.2" +msgstr "" + +#: ../../../CHANGELOG.rst:423 +msgid "*Release date: 23 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:425 +msgid "Minor bug fixes and error logging improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:429 +msgid "1.4.1" +msgstr "" + +#: ../../../CHANGELOG.rst:430 +msgid "*Release date: 2 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:432 +msgid "Fixed bug that prevented edited matchups from being saved" +msgstr "" + +#: ../../../CHANGELOG.rst:433 +msgid "Added flag to prevent retired sites from using the database for sessions" +msgstr "" + +#: ../../../CHANGELOG.rst:437 +msgid "1.4.0 (Havana Brown)" +msgstr "" + +#: ../../../CHANGELOG.rst:438 +msgid "*Release date: 26 July 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:" +msgstr "" + +#: ../../../CHANGELOG.rst:441 +msgid "Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping" +msgstr "" + +#: ../../../CHANGELOG.rst:442 +msgid "When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress" +msgstr "" + +#: ../../../CHANGELOG.rst:443 +msgid "Added conflicts and recent histories to the slideovers shown for teams/adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels" +msgstr "" + +#: ../../../CHANGELOG.rst:445 +msgid "Each interface's table is now sortable by a debate's importance, bracket, liveness, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:446 +msgid "Added a new \"Tournament Logistics\" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document" +msgstr "" + +#: ../../../CHANGELOG.rst:447 +msgid "Added (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)" +msgstr "" + +#: ../../../CHANGELOG.rst:448 +msgid "Added an ESL/EFL tab release option and status field" +msgstr "" + +#: ../../../CHANGELOG.rst:449 +msgid "Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this" +msgstr "" + +#: ../../../CHANGELOG.rst:450 +msgid "The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates" +msgstr "" + +#: ../../../CHANGELOG.rst:451 +msgid "Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished" +msgstr "" + +#: ../../../CHANGELOG.rst:452 +msgid "Added 'Average Speaks by Round' to the standings overview page" +msgstr "" + +#: ../../../CHANGELOG.rst:453 +msgid "Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important" +msgstr "" + +#: ../../../CHANGELOG.rst:454 +msgid "Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes" +msgstr "" + +#: ../../../CHANGELOG.rst:455 +msgid "Fixed issue where VenueCategories could not be edited if they did not have Venues set" +msgstr "" + +#: ../../../CHANGELOG.rst:456 +msgid "Various other small fixes and improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:460 +msgid "1.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:461 +msgid "*Release date: 26 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:463 +msgid "Fixed bug that allowed duplicate emoji to be occasionally generated" +msgstr "" + +#: ../../../CHANGELOG.rst:467 +msgid "1.3.0 (Genetta)" +msgstr "" + +#: ../../../CHANGELOG.rst:468 +msgid "*Release date: 9 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:470 +msgid "Added the ability to mark speeches as duplicates when entering ballots so that they will not show in speaker tabs, intended for use with 'iron-man' speeches and swing speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:471 +msgid "Reworked venue constraints and venue display options by streamlining \"venue groups\" and \"venue constraint categories\" into a single \"venue category\" type, with options for how they are used and displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:472 +msgid "Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:473 +msgid "Reworked the simple data importer (formerly the visual importer) to improve its robustness" +msgstr "" + +#: ../../../CHANGELOG.rst:474 +msgid "Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)" +msgstr "" + +#: ../../../CHANGELOG.rst:475 +msgid "Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release" +msgstr "" + +#: ../../../CHANGELOG.rst:476 +msgid "Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)" +msgstr "" + +#: ../../../CHANGELOG.rst:477 +msgid "Added the ability to redact individual person's identifying details from speaker tabs" +msgstr "" + +#: ../../../CHANGELOG.rst:478 +msgid "Added the ability for user passwords to be easily reset" +msgstr "" + +#: ../../../CHANGELOG.rst:479 +msgid "Added a minimal set of default feedback questions to newly created Tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:480 +msgid "When a tournament's current round is set, redirect to a page where it can be set, rather than crashing" +msgstr "" + +#: ../../../CHANGELOG.rst:481 +msgid "A number of other minor bug fixes and enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:485 +msgid "1.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:486 +msgid "*Release date: 17 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:488 +msgid "Improved the display of the admin ballot entry form on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:489 ../../../CHANGELOG.rst:497 +#: ../../../CHANGELOG.rst:505 +msgid "A number of other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:493 +msgid "1.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:494 +msgid "*Release date: 4 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:496 +msgid "Protected debate-team objects from cascaded deletion, and added warning messages with guidance when users would otherwise do this" +msgstr "" + +#: ../../../CHANGELOG.rst:501 +msgid "1.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:502 +msgid "*Release date: 25 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:504 +msgid "Printable feedback forms will now display the default rating scale, any configured introduction text, and better prompt you to add additional questions" +msgstr "" + +#: ../../../CHANGELOG.rst:509 +msgid "1.2.0 (Foldex)" +msgstr "" + +#: ../../../CHANGELOG.rst:510 +msgid "*Release date: 15 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:512 +msgid "Changed the core workflow by splitting display- and motion- related activities into separate pages to simplify each stage of running a round" +msgstr "" + +#: ../../../CHANGELOG.rst:513 +msgid "Added support for Docker-based installations to make local/offline installations much more simple" +msgstr "" + +#: ../../../CHANGELOG.rst:514 +msgid "Added a \"Tabbykitten\" version of Tabbycat that can be deployed to Heroku without a needing a credit/debit card" +msgstr "" + +#: ../../../CHANGELOG.rst:515 +msgid "Added button to load a demo tournament on the 'New Tournament' page so it is easier to test-run Tabbycat" +msgstr "" + +#: ../../../CHANGELOG.rst:516 +msgid "Changed venue groups to be separate to venue constraint categories" +msgstr "" + +#: ../../../CHANGELOG.rst:517 +msgid "Modified the licence to clarify that donations are required for some tournaments and added a more explicit donations link and explanation page" +msgstr "" + +#: ../../../CHANGELOG.rst:518 +msgid "Added information about autosave status to the adjudicator allocations page" +msgstr "" + +#: ../../../CHANGELOG.rst:519 +msgid "Added configurable side names so that tournaments can use labels like \"Proposition\"/\"Opposition\" instead of \"Affirmative\"/\"Negative\"" +msgstr "" + +#: ../../../CHANGELOG.rst:520 +msgid "Started work on basic infrastructure for translations" +msgstr "" + +#: ../../../CHANGELOG.rst:524 +msgid "1.1.7" +msgstr "" + +#: ../../../CHANGELOG.rst:525 +msgid "*Release date: 31 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:527 +msgid "Yet more minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:528 +msgid "The auto-allocation UI will now detail your minimum rating setting better" +msgstr "" + +#: ../../../CHANGELOG.rst:529 +msgid "Added guidance on database backups to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:533 +msgid "1.1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:534 +msgid "*Release date: 19 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:536 +msgid "A number of minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:537 +msgid "Added basic infrastructure for creating tabbycat translations" +msgstr "" + +#: ../../../CHANGELOG.rst:541 +msgid "1.1.5" +msgstr "" + +#: ../../../CHANGELOG.rst:542 +msgid "*Release date: 12 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:544 +msgid "A number of minor bug fixes and improvements to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:548 +msgid "1.1.4" +msgstr "" + +#: ../../../CHANGELOG.rst:549 +msgid "*Release date: 25 November 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:551 +msgid "Redesigned the footer area to better describe Tabbycat and to promote donations and related projects" +msgstr "" + +#: ../../../CHANGELOG.rst:552 +msgid "Slight tweaks to the site homepage and main menus to better accommodate the login/log out links" +msgstr "" + +#: ../../../CHANGELOG.rst:553 +msgid "A few minor bug fixes and improvements to error reporting" +msgstr "" + +#: ../../../CHANGELOG.rst:557 +msgid "1.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:558 +msgid "*Release date: 15 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:560 +msgid "Fixed bug affecting some migrations from earlier versions" +msgstr "" + +#: ../../../CHANGELOG.rst:561 +msgid "Made latest results show question mark rather than crash if a team is missing" +msgstr "" + +#: ../../../CHANGELOG.rst:562 +msgid "Fixed bug affecting the ability to save motions" +msgstr "" + +#: ../../../CHANGELOG.rst:563 +msgid "Fixed bug preventing draw flags from being displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:567 +msgid "1.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:568 +msgid "*Release date: 14 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:570 +msgid "Allow panels with even number of adjudicators (with warnings), by giving chair the casting vote" +msgstr "" + +#: ../../../CHANGELOG.rst:571 +msgid "Removed defunct person check-in, which hasn't been used since 2010" +msgstr "" + +#: ../../../CHANGELOG.rst:572 +msgid "Collapsed availability database models into a single model with Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:573 +msgid "Collapsed optional fields in action log entries into a single generic field using Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:574 +msgid "Added better warnings when attempting to create an elimination round draw with fewer than two teams" +msgstr "" + +#: ../../../CHANGELOG.rst:575 +msgid "Added warnings in Edit Database view when editing debate teams" +msgstr "" + +#: ../../../CHANGELOG.rst:576 +msgid "Renamed \"AIDA pre-2015\" break rule to \"AIDA 1996\"" +msgstr "" + +#: ../../../CHANGELOG.rst:580 +msgid "1.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:581 +msgid "*Release date: 8 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:583 +msgid "Fixed a bug where the team standings and team tab would crash when some emoji were not set" +msgstr "" + +#: ../../../CHANGELOG.rst:587 +msgid "1.1.0 (Egyptian Mau)" +msgstr "" + +#: ../../../CHANGELOG.rst:588 +msgid "*Release date: 3 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:590 +msgid "Added support for the United Asian Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:591 +msgid "Added support for the World Schools Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:592 +msgid "Made Windows 8+ Emoji more colourful" +msgstr "" + +#: ../../../CHANGELOG.rst:593 +msgid "Fixed an incompatability between Vue and IE 10-11 which caused tables to not render" +msgstr "" + +#: ../../../CHANGELOG.rst:594 +msgid "Minor bug fixes and dependency updates" +msgstr "" + +#: ../../../CHANGELOG.rst:598 +msgid "1.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:599 +msgid "*Release date: 19 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:601 +msgid "Fixed a minor bug with the visual importer affecting similarly named institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:602 +msgid "Fixed error message when user tries to auto-allocate adjudicators on unconfirmed or released draw" +msgstr "" + +#: ../../../CHANGELOG.rst:603 +msgid "Minor docs edits" +msgstr "" + +#: ../../../CHANGELOG.rst:607 +msgid "1.0.0 (Devon Rex)" +msgstr "" + +#: ../../../CHANGELOG.rst:608 +msgid "*Release date: 16 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Redesigned and redeveloped adjudicator allocation page" +msgstr "" + +#: ../../../CHANGELOG.rst:611 +msgid "Redesigned interface, featuring clearer displays of conflict and diversity information" +msgstr "" + +#: ../../../CHANGELOG.rst:612 +msgid "Changes to importances and panels are now automatically saved" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Added debate \"liveness\" to help identify critical rooms—many thanks to Thevesh Theva" +msgstr "" + +#: ../../../CHANGELOG.rst:614 +msgid "Panel score calculations performed live to show strength of voting majorities" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "New features" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "Added record pages for teams and adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:617 +msgid "Added a diversity tab to display demographic information about participants and scoring" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Significant general improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Shifted most table rendering to Vue.js to improve performance and design" +msgstr "" + +#: ../../../CHANGELOG.rst:620 +msgid "Drastically reduced number of SQL queries in large tables, *e.g.* draw, results, tab" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Break round management" +msgstr "" + +#: ../../../CHANGELOG.rst:622 +msgid "Completed support for break round draws" +msgstr "" + +#: ../../../CHANGELOG.rst:623 +msgid "Simplified procedure for adding remarks to teams and updating break" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Reworked break generation code to be class-based, to improve future extensibility" +msgstr "" + +#: ../../../CHANGELOG.rst:625 +msgid "Added support for break qualification rules: AIDA Australs, AIDA Easters, WADL" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:627 +msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Changed \"panellist feedback enabled\" option to \"feedback paths\", a choice of three options" +msgstr "" + +#: ../../../CHANGELOG.rst:630 +msgid "Dropped \"/t/\" from tournament URLs and moved \"/admin/\" to \"/database/\", with 301 redirects" +msgstr "" + +#: ../../../CHANGELOG.rst:631 +msgid "Added basic code linting to the continuous integration tests" +msgstr "" + +#: ../../../CHANGELOG.rst:632 +msgid "Many other small bug fixes, refactors, optimisations, and documentation updates" +msgstr "" + +#: ../../../CHANGELOG.rst:636 +msgid "0.9.0 (Chartreux)" +msgstr "" + +#: ../../../CHANGELOG.rst:637 +msgid "*Release date: 13 June 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:639 +msgid "Added a beta implementation of the break rounds workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:640 +msgid "Added venue constraints, to allow participants or divisions to preferentially be given venues from predefined groups" +msgstr "" + +#: ../../../CHANGELOG.rst:641 +msgid "Added a button to regenerate draws" +msgstr "" + +#: ../../../CHANGELOG.rst:642 +msgid "Refactored speaker standings implementation to match team standings implementation" +msgstr "" + +#: ../../../CHANGELOG.rst:643 +msgid "New standings metrics, draw methods, and interface settings for running small tournaments and division-based tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:644 +msgid "Improved support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:645 +msgid "Improved user-facing error messages in some scenarios" +msgstr "" + +#: ../../../CHANGELOG.rst:646 +msgid "Most frontend dependencies now handled by Bower" +msgstr "" + +#: ../../../CHANGELOG.rst:647 +msgid "Static file compilation now handled by Gulp" +msgstr "" + +#: ../../../CHANGELOG.rst:648 ../../../CHANGELOG.rst:660 +msgid "Various bug fixes, optimisations, and documentation edits" +msgstr "" + +#: ../../../CHANGELOG.rst:652 +msgid "0.8.3" +msgstr "" + +#: ../../../CHANGELOG.rst:653 +msgid "*Release date: 4 April 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:655 +msgid "Restored and reworking printing functionality for scoresheets/feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:656 +msgid "Restored Edit Venues and Edit Matchups on the draw pages" +msgstr "" + +#: ../../../CHANGELOG.rst:657 +msgid "Reworked tournament data importers to use csv.DictReader, so that column order in files doesn't matter" +msgstr "" + +#: ../../../CHANGELOG.rst:658 +msgid "Improved dashboard and feedback graphs" +msgstr "" + +#: ../../../CHANGELOG.rst:659 +msgid "Add separate pro speakers tab" +msgstr "" + +#: ../../../CHANGELOG.rst:664 +msgid "0.8.2" +msgstr "" + +#: ../../../CHANGELOG.rst:665 +msgid "*Release date: 20 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:667 +msgid "Fixed issue where scores from individual ballots would be deleted when any other panel in the round was edited" +msgstr "" + +#: ../../../CHANGELOG.rst:668 +msgid "Fixed issue where page crashes for URLs with \"tab\" in it but that aren't recognized tab pages" +msgstr "" + +#: ../../../CHANGELOG.rst:672 +msgid "0.8.1" +msgstr "" + +#: ../../../CHANGELOG.rst:673 +msgid "*Release date: 15 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:675 +msgid "Fixed a bug where editing a Team in the admin section could cause an error" +msgstr "" + +#: ../../../CHANGELOG.rst:676 +msgid "Added instructions on how to account for speakers speaking twice to docs" +msgstr "" + +#: ../../../CHANGELOG.rst:677 +msgid "Venues Importer wont show VenueGroup import info unless that option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:681 +msgid "0.8.0 (Bengal)" +msgstr "" + +#: ../../../CHANGELOG.rst:682 +msgid "*Release date: 29 February 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:684 +msgid "Upgraded to Python 3.4, dropped support for Python 2" +msgstr "" + +#: ../../../CHANGELOG.rst:685 +msgid "Restructured directories and, as a consequence, changed database schema" +msgstr "" + +#: ../../../CHANGELOG.rst:686 +msgid "Added Django migrations to the release (they were previously generated by the user)" +msgstr "" + +#: ../../../CHANGELOG.rst:687 +msgid "Migrated documentation to `Read The Docs `_" +msgstr "" + +#: ../../../CHANGELOG.rst:688 +msgid "New user interface design and workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:689 +msgid "Overhauled tournament preferences to use `django-dynamic-preferences `_" +msgstr "" + +#: ../../../CHANGELOG.rst:690 +msgid "Added new visual data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:691 +msgid "Improved flexibility of team standings rules" +msgstr "" + +#: ../../../CHANGELOG.rst:692 +msgid "Moved data utility scripts to Django management commands" +msgstr "" + +#: ../../../CHANGELOG.rst:693 +msgid "Changed emoji to Unicode characters" +msgstr "" + +#: ../../../CHANGELOG.rst:694 +msgid "Various other fixes and refinements" +msgstr "" + +#: ../../../CHANGELOG.rst:698 +msgid "0.7.0 (Abyssinian)" +msgstr "" + +#: ../../../CHANGELOG.rst:699 +msgid "*Release date: 31 July 2015*" +msgstr "" + +#: ../../../CHANGELOG.rst:701 +msgid "Support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:702 +msgid "Improved and extensible tournament data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:703 +msgid "Display gender, region, and break category in adjudicator allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:704 +msgid "New views for online adjudicator feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:705 +msgid "Customisable adjudicator feedback forms" +msgstr "" + +#: ../../../CHANGELOG.rst:706 +msgid "Randomised URLs for public submission" +msgstr "" + +#: ../../../CHANGELOG.rst:707 +msgid "Customisable break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:708 +msgid "Computerised break generation (break round draws not supported)" +msgstr "" + +#: ../../../CHANGELOG.rst:709 +msgid "Lots of fixes, interface touch-ups and performance enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:710 +msgid "Now requires Django 1.8 (and other package upgrades)" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/contributing.po b/docs/locale/cs/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..299d337a198 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/contributing.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: cs_CZ\n" + +#: ../../../CONTRIBUTING.rst:3 +msgid "Contributing" +msgstr "" + +#: ../../../CONTRIBUTING.rst:5 +msgid "Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation." +msgstr "" + +#: ../../../CONTRIBUTING.rst:7 +msgid "Feel free to `join our Facebook group `_ if you have any questions about how to get started." +msgstr "" + +#: ../../../CONTRIBUTING.rst:10 +msgid "Feedback and ideas" +msgstr "" + +#: ../../../CONTRIBUTING.rst:12 +msgid "These can be added as issues in the `GitHub repository `_; posts in our `Facebook group `_; or as an :ref:`email to the developers `." +msgstr "" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Bug reports" +msgstr "" + +#: ../../../CONTRIBUTING.rst:17 +msgid "Please report bugs by opening a new issue in our `GitHub repository `_. It is most helpful if you can include:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:19 +msgid "How Tabbycat was installed (on Heroku, locally on macOS, `etc.`)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Any details about your tournament and setup that might be helpful in troubleshooting" +msgstr "" + +#: ../../../CONTRIBUTING.rst:21 +msgid "Detailed steps for how to reproduce the bug" +msgstr "" + +#: ../../../CONTRIBUTING.rst:24 +msgid "Getting started with development" +msgstr "" + +#: ../../../CONTRIBUTING.rst:26 +msgid "To easily test your changes to Tabbycat you probably want a working :ref:`local install ` (without using Docker)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:27 +msgid "Please submit pull requests for features and bug fixes against `develop` (but not `master`)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:28 +msgid "We broadly use the `git-flow workflow `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:29 +msgid "We use Django's testing tools — adding unit tests to new features is greatly appreciated" +msgstr "" + +#: ../../../CONTRIBUTING.rst:31 +msgid "A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed." +msgstr "" + +#: ../../../CONTRIBUTING.rst:33 +msgid "A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:37 +msgid "Our ``package.json`` provides a convenience command that runs a standard set of development tools simultaneously, such as the Django server and the automatic recompilation with live injecting of javascript and CSS. Once you have set ``USE_WEBPACK_SERVER=True`` in your ``settings_local.py`` you can then run this with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:42 +msgid "Generating test data" +msgstr "" + +#: ../../../CONTRIBUTING.rst:44 +msgid "There are management commands to help developers quickly generate data for use in testing, including results and feedback. A list of all commands can be found from ``dj help``, but the most useful in this context are:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:46 +msgid "``dj importtournament ( minimal8team | australs24team | bp88team )``, which imports participant data for the 8-team (``minimal8team``), 24-team Australs (``australs24team``) and 88-team BP (``bp88team``) demonstration tournaments respectively." +msgstr "" + +#: ../../../CONTRIBUTING.rst:47 +msgid "``dj simulaterounds ROUND [ROUND ROUND ...]``, which simulates all of the rounds specified, generating a draw, an adjudicator allocation and a complete set of random results (but not feedback)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:48 +msgid "``dj generatefeedback ROUND [ROUND ROUND ...]``, which randomly generates feedback for all existing debates in the specified rounds." +msgstr "" + +#: ../../../CONTRIBUTING.rst:49 +msgid "``dj generateresults ROUND [ROUND ROUND ...]``, which randomly generates results for all existing debates in the specified rounds. (You don't need to run this if you ran ``simulaterounds``, because that already does it.)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:51 +msgid "Rounds can be specified by sequence number (``seq``) or abbreviation. You can find more information about each of them by adding ``--help`` after the command name." +msgstr "" + +#: ../../../CONTRIBUTING.rst:54 +msgid "Database schema changes" +msgstr "" + +#: ../../../CONTRIBUTING.rst:56 +msgid "When adding new features, it may be necessary to modify the database schema to support these new additions. After the changes are made, the migration files made by ``python manage.py makemigrations`` must also be committed. The migration files should also contain methods fill the new fields based on existing data if possible." +msgstr "" + +#: ../../../CONTRIBUTING.rst:58 +msgid "Fixture files (found under ``data/fixtures/``) may also need to be updated, which can be done by running the ``migrate_fixtures.py`` script under a unmigrated database, then committing the result. ::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:64 +msgid "Style guide" +msgstr "" + +#: ../../../CONTRIBUTING.rst:66 +msgid "For the front end interface design there is a style guide available at \"/style/\" once a tournament has been setup." +msgstr "" + +#: ../../../CONTRIBUTING.rst:68 +msgid "For python code, we use `flake8 `_ to check for a non-strict series of style rules. Warnings will trigger a Travis CI build to fail. The entire codebase can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:72 +msgid "For stylesheets, we use `stylelint `_. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:76 +msgid "For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:81 +msgid "Versioning convention" +msgstr "" + +#: ../../../CONTRIBUTING.rst:83 +msgid "Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:85 +msgid "the database can't be migrated forwards using ``python manage.py migrate --no-input``, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:86 +msgid "there is a major change to how the tournament workflow goes, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:87 +msgid "we make some other change that is, in our opinion, significant enough to warrant a milestone." +msgstr "" + +#: ../../../CONTRIBUTING.rst:89 +msgid "We write `data migrations `_ to allow existing systems to be upgraded easily. However, we don't always support backward database migrations. Our expectation is that long-lived installations keep up with our latest version." +msgstr "" + +#: ../../../CONTRIBUTING.rst:91 +msgid "One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:93 +msgid "Starting from version 0.7.0, we use cat breeds as the code names for major versions." +msgstr "" + +#: ../../../CONTRIBUTING.rst:96 +msgid "Documentation" +msgstr "" + +#: ../../../CONTRIBUTING.rst:98 +msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." +msgstr "" + +#: ../../../CONTRIBUTING.rst:100 +msgid "To preview the documentation locally, install the development dependencies and then start the server::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:104 +msgid "You should then be able to preview the docs at `127.0.0.1:7999 `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:107 +msgid "Project structure" +msgstr "" + +#: ../../../CONTRIBUTING.rst:109 +msgid "``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline." +msgstr "" + +#: ../../../CONTRIBUTING.rst:110 +msgid "``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively" +msgstr "" + +#: ../../../CONTRIBUTING.rst:111 +msgid "``docs`` contains our document source files and images (although some are linked from the root directory)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``tabbycat`` is the main directory containing the Django project" +msgstr "" + +#: ../../../CONTRIBUTING.rst:113 +msgid "``locale`` contains translation strings for shared templates (others are in respective app directories)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:114 +msgid "``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins." +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``utils`` contains shared utilities" +msgstr "" + +#: ../../../CONTRIBUTING.rst:116 +msgid "All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates." +msgstr "" + +#: ../../../CONTRIBUTING.rst:117 +msgid "In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:120 +msgid "Internationalization/Localization" +msgstr "" + +#: ../../../CONTRIBUTING.rst:122 +msgid "The `gettext `_ framework is used to enable the translation of strings in Python files and Django templates. Backend in this context signifies these types of files." +msgstr "" + +#: ../../../CONTRIBUTING.rst:124 +msgid "The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py)::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:128 +msgid "To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``." +msgstr "" + +#: ../../../CONTRIBUTING.rst:130 +msgid "These can then be compiled using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:134 +msgid "As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:136 +msgid "Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:141 +msgid "These are then also committed to git to save users needing to run `compilejsi18n` during setup. The resulting files are then bundled as part of the npm build task. Updating these translations in development (live-reload) requires the use of the ``cp-i18n`` npm task." +msgstr "" + +#: ../../../CONTRIBUTING.rst:144 +msgid "Release checklist" +msgstr "" + +#: ../../../CONTRIBUTING.rst:146 +msgid "Check that all migrations have been generated and committed into Git" +msgstr "" + +#: ../../../CONTRIBUTING.rst:147 +msgid "Merge translations from the Crowdin pull request and compile messages" +msgstr "" + +#: ../../../CONTRIBUTING.rst:148 +msgid "Bump version number in ``docs/conf.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:149 +msgid "Bump version number and (if applicable) codename in ``tabbycat/settings/core.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:150 +msgid "Update the main ``CHANGELOG.rst`` file (including release date)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Check the major current deployment options, including:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:152 +msgid "The ``deploy_heroku.py`` script" +msgstr "" + +#: ../../../CONTRIBUTING.rst:153 +msgid "The Tabbykitten version" +msgstr "" + +#: ../../../CONTRIBUTING.rst:154 +msgid "Docker (macOS, Windows 10*) and Docker Toolbox (Windows 10 Home) methods" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Using Bash and Powershell on Windows" +msgstr "" + +#: ../../../CONTRIBUTING.rst:156 +msgid "Using Terminal on macOS (at least test out a fresh install of the npm/pip dependencies)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:157 +msgid "Check that the last Travis CI build passed and run the full local test suite (this will include the Selenium tests that are not on Travis)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:158 +msgid "Shift remaining issues from the Github Milestone" +msgstr "" + +#: ../../../CONTRIBUTING.rst:159 +msgid "Create and finish the release branch as per git-flow" +msgstr "" + +#: ../../../CONTRIBUTING.rst:160 +msgid "Ensure the tag is correct (``vX.Y.Z``) and published to GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:161 +msgid "Back-merge ``master`` to the ``kitten`` branch" +msgstr "" + +#: ../../../CONTRIBUTING.rst:162 +msgid "Back-merge ``develop`` to the in-progress feature branches" +msgstr "" + +#: ../../../CONTRIBUTING.rst:163 +msgid "Issue a formal release with change notes on GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:164 +msgid "Post change notes on the Facebook page/group" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/licence.po b/docs/locale/cs/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..8ae73cd7837 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/licence.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: cs_CZ\n" + +#: ../../../LICENSE.rst:3 +msgid "Licence Information" +msgstr "" + +#: ../../../LICENSE.rst:5 +msgid "We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of A$1 (Australian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.)" +msgstr "" + +#: ../../../LICENSE.rst:8 +msgid "Use at for-profit or fundraising tournaments" +msgstr "" + +#: ../../../LICENSE.rst:10 +msgid "If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a donation of A$1 (Australian dollar) per team to the Tabbycat maintenance team, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit." +msgstr "" + +#: ../../../LICENSE.rst:12 +msgid "While we suggest that non-profit, non-fundraising tournaments budget for a donation of A$1 per team, it is not required in order for such tournaments to use Tabbycat." +msgstr "" + +#: ../../../LICENSE.rst:15 +msgid "Modifications to and redistributions of Tabbycat" +msgstr "" + +#: ../../../LICENSE.rst:17 +msgid "We grant you permission to modify and/or redistribute Tabbycat, provided that" +msgstr "" + +#: ../../../LICENSE.rst:19 +msgid "you do not receive any payment for this modification and/or redistribution," +msgstr "" + +#: ../../../LICENSE.rst:20 +msgid "if you modify Tabbycat, you add prominent notices stating that you modified it," +msgstr "" + +#: ../../../LICENSE.rst:21 +msgid "all references and functionality relating to donations are kept intact, and" +msgstr "" + +#: ../../../LICENSE.rst:22 +msgid "this licence page and all attributions of authorship are included as-is." +msgstr "" + +#: ../../../LICENSE.rst:24 +msgid "Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission." +msgstr "" + +#: ../../../LICENSE.rst:26 +msgid "If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required." +msgstr "" + +#: ../../../LICENSE.rst:29 +msgid "Disclaimer of warranty and liability" +msgstr "" + +#: ../../../LICENSE.rst:31 +msgid "We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided \"as is\", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.**" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/support.po b/docs/locale/cs/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..73f527e60e4 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/support.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: cs_CZ\n" + +#: ../../about/support.rst:3 +msgid "Support" +msgstr "" + +#: ../../about/support.rst:5 +msgid "There are a number of ways to report bugs, ask for help, or submit feedback." +msgstr "" + +#: ../../about/support.rst:8 +msgid "Facebook" +msgstr "" + +#: ../../about/support.rst:10 +msgid "`Our Facebook group `_ is a good place to ask for help. It's also a good place to keep up with new releases and participate in more general discussions of features and ideas." +msgstr "" + +#: ../../about/support.rst:13 +msgid "GitHub" +msgstr "" + +#: ../../about/support.rst:15 +msgid "Adding an issue to our `GitHub repository `_ is a great way to let us know about bugs or writeup suggestions for how to improve Tabbycat. Pull requests are also encouraged!" +msgstr "" + +#: ../../about/support.rst:17 +msgid "When submitting bugs or reporting errors please let us know your site address (if installed online) or operating system (if local) along with a complete description of the problem along with any error messages." +msgstr "" + +#: ../../about/support.rst:20 +msgid "Email" +msgstr "" + +#: ../../about/support.rst:22 +msgid "Feel free to :ref:`contact the maintainers directly ` if you are not able to access Facebook or GitHub." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/about/tournament-history.po b/docs/locale/cs/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..4a7d24908f6 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/about/tournament-history.po @@ -0,0 +1,248 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: cs_CZ\n" + +#: ../../about/tournament-history.rst:3 +msgid "Tournament History" +msgstr "" + +#: ../../about/tournament-history.rst:5 +msgid "A partial list of major national and international tournaments (that we know of) which have used Tabbycat." +msgstr "" + +#: ../../about/tournament-history.rst:8 +msgid "2017" +msgstr "" + +#: ../../about/tournament-history.rst:10 +msgid "`APU Philosophy CHallenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:11 +msgid "`ANU Spring IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:12 +msgid "`Australian British Parliamentary Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:13 +msgid "`Australasian Wom*ns Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:14 +msgid "Asia World Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:15 +msgid "`Asia British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:16 +msgid "`Borneo British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:17 +msgid "`Canadian British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:18 +msgid "`Cambridge Asian Schools BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:19 +msgid "Cambodia United Asian Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:20 +msgid "`China British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:21 +msgid "`Japan British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:22 +msgid "`Kings College London IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:23 +msgid "`Kuala Lumpur Open Challenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:24 +msgid "`KPU Pro Ams `_" +msgstr "" + +#: ../../about/tournament-history.rst:25 +msgid "`Malaysian National Intervarsity Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:26 +msgid "`Melbourne Mini `_" +msgstr "" + +#: ../../about/tournament-history.rst:27 +msgid "`New Zealand Easters 2017 `_" +msgstr "" + +#: ../../about/tournament-history.rst:28 +msgid "`New Zealand British Parliamentary Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:29 +msgid "`North East Asia Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:30 +msgid "`Swords Mini-Gong `_" +msgstr "" + +#: ../../about/tournament-history.rst:31 +msgid "`Shanghai Asian Schools British Parliamentary Debate Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:32 +msgid "`UCD Law Society IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:33 +msgid "`UCD Vice President's Cup `_" +msgstr "" + +#: ../../about/tournament-history.rst:34 +msgid "`UQ Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:35 +msgid "`UT MARA Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:36 +msgid "`Victoria Cup IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:37 +msgid "`Western Sydney BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:38 +msgid "`Wollongong Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:39 +msgid "`Yale IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:42 +msgid "2016" +msgstr "" + +#: ../../about/tournament-history.rst:44 +msgid "`Sydney Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:45 +msgid "`Joynt Scroll 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:46 +msgid "`Malaysia Debate Open 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:47 +msgid "`New Zealand Easters 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:48 +msgid "`Perth Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:49 +msgid "`Thailand United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:50 ../../about/tournament-history.rst:61 +msgid "The National Law School Debate" +msgstr "" + +#: ../../about/tournament-history.rst:51 +msgid "The Khazak National Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:54 +msgid "2015" +msgstr "" + +#: ../../about/tournament-history.rst:56 +msgid "`Bali United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:57 +msgid "`Daejeon Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:58 +msgid "`Joynt Scroll `_" +msgstr "" + +#: ../../about/tournament-history.rst:59 +msgid "`Malaysia Debate Open 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:60 +msgid "`New Zealand Easters 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:62 +msgid "`UNSW/UTS Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:65 +msgid "2014" +msgstr "" + +#: ../../about/tournament-history.rst:67 +msgid "`Joynt Scroll 2014 `_" +msgstr "" + +#: ../../about/tournament-history.rst:68 +msgid "NTU United Asian Debating Championships" +msgstr "" + +#: ../../about/tournament-history.rst:69 +msgid "`Otago Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:72 +msgid "2012" +msgstr "" + +#: ../../about/tournament-history.rst:74 +msgid "Wellington Australs" +msgstr "" + +#: ../../about/tournament-history.rst:77 +msgid "2010" +msgstr "" + +#: ../../about/tournament-history.rst:79 +msgid "Auckland Australs" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/cs/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..54f568da4b8 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/adjudicator-allocation.po @@ -0,0 +1,160 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: cs_CZ\n" + +#: ../../features/adjudicator-allocation.rst:5 +msgid "Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:7 +msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:10 +msgid "Assigning Debate Priority" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:12 +msgid "For tournaments with more than a few debates you generally want to begin the allocation process by applying a priority value to your debates. A debate's priority value is used by the automatic adjudicator allocator (or the preformed panel indicator) to match the strongest panels to the debates that need them most." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:16 +msgid "The prioritise button in the top-left allows you to assign a priority value automatically based on a debate's bracket or its 'liveness'. Remember that in early rounds there are usually not enough results for the liveness of each debate to be distinct and that Tabbycat measures liveness based on the sum of all live break categories — a debate can have more liveness points than it has teams if there are teams that are live in multiple categories." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:18 +msgid "The automatic prioritiser never uses the 'highest' priority value so that you can easily use this to highlight the debates that need the strongest panels without needing to redistribute the priority of other debates." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:20 +msgid "Regardless of whether you automatically assign priority, there are sliders to the left of each team that can be used to manually specify priority. These are usually used to override the automatic priority of a debate if that matchup needs and especially strong/weak/mediocre panel for reasons that are not reflected in its bracket/liveness." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:24 +msgid "If each debate's priority is the same, the automatic adjudicator will fall-back on using the debate's bracket as a substitute for priority. Thus, you can skip the prioritisation process (or only prioritise the most/least important debates) if you want a relatively even spread of panellists (e.g. during Round 1)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:27 +msgid "Automatic Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:29 +msgid "Once you are happy with your priorities you can begin assigning adjudicators. This also has an (optional) automatic process that will create panels for you. In creating these panels automatically, the allocator will:" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:31 +msgid "Avoid creating 'hard' conflicts (i.e. personal or institutional clashes) between adjudicators and teams while also trying to avoid 'soft' conflicts (i.e. avoiding an adjudicator seeing the same team again)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:32 +msgid "Form panels whose relative average voting score matches the relative priority you assigned to each debate." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:33 +msgid "Allocate trainees (unless disabled or none are under the threshold) to panels (allocated first to the highest-strength panels)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:34 +msgid "Violate the above intents in cases where there are inescapable constraints — e.g. if there are too many soft or hard conflicts to avoid creating panels that do not trigger them." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:36 +msgid "Remember that Tabbycat will only automatically allocate adjudicators that have been marked as available for this round." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:38 +msgid "To begin this process, click the *Allocate* button in the top-left. If you have :ref:`formed preformed panels ` for this round, the modal will first ask whether you want to assign adjudicators using those panels; otherwise the modal will contain a number of options that can be used to control the allocation. In general, the *minimum feedback score* value is the most important setting to consider as it determines the threshold needed for adjudicators to not be allocated as trainees." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:42 +msgid "Once you click *Auto-Allocate* the modal should disappear and your panels should appear. At large tournaments, and in the later rounds, it is not unheard of for this process to take a minute or longer." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:44 +msgid "You can re-run the automatic allocation process on top of an existing allocation. Thus it is worth tweaking your priorities or allocation settings if the allocation does not seem optimal to you. Also note that the allocation process is not deterministic — if you rerun it the panels will be different." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:46 +msgid "Once your adjudicators have been allocated you can drag and drop them on to different panels. You can also drag and drop them to the 'unused area' (the gray bar at the bottom of the page) if you wish to store them temporarily or remove them from the draw. Dropping an adjudicator into the chair position will 'swap' that adjudicator into the previous position of the new chair." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:49 +msgid "Saving, Live Updates, and Sharing" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:51 +msgid "Changes to your panels save automatically and you can exit the allocation page whenever you wish." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:53 +msgid "In addition, the allocation pages maintain a 'live' connection to the server that shows updates made by other users who are viewing/using the same page. That is to say, if two people on two computers are both viewing the allocation page they should see each other's changes in real-time. This allows you to 'distribute' the task of allocation across individual people (rather than sharing a screen/projector) if desired." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:55 +msgid "It is possible to have users 'undo' or 'overwrite' each others changes despite this live system, e.g. if both users drag and adjudicator somewhere at the same time." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:57 +msgid "If you are dividing the task of allocation across multiple people, the *Sharding* system can help by allowing individuals to limit their view of the draw. The use case here is usually to divide the draw up into mutually-exclusive subsets so that individuals (or groups) of the adjudication core can focus on creating panels across the draw in parallel." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:61 +msgid "To activate sharding, click the small icon to the right of the \"Allocate\" button. This then presents a number of options for how the draw is divide up into distinct sets. If you want to ensure that each person opens a completely distinct set of the draw, you will need to coordinate the options that each user selects here. They will need to set the **same** options for *Shard Mix*, *Shard Split* and *Shard Sort* but select a **different** *Open* option (i.e. opt-in to viewing a different shard from the other users). The ability to exit a sharded view is available in the same dialogue." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:64 +msgid "In-Place Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:66 +msgid "Adjudicators and teams may have borders of varying colors. These borders indicate that there is a clash — soft or hard — within a debate and highlights the teams/adjudicators that have triggered this. There is a key for these colors available at the top of the page — e.g. orange means *institutional conflict* while blue means *this adjudicator has seen this adjudicator/team before*." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:70 +msgid "In general, you want to be on the lookout for red borders ('hard conflicts') and for teams with orange borders (institutional conflicts). Blue borders on teams/adjudicators and orange borders between adjudicators are usually of lesser concern." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:72 +msgid "There are two 'special' types of highlight — a gray background in the chair position (no chair) or in the panellist position (the panel is not an odd-size). Adjudicators may also have a black background if they have not been marked as available." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:75 +msgid "Hover Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:77 +msgid "When you hover over an adjudicator or team, they will take on a purple background and other adjudicators or teams may suddenly have different colored backgrounds. These indicate the conflicts that this team/adjudicator has with those other teams/adjudicators. By showing this information you can avoid swapping that adjudicator into a new debate which they have a conflict with." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:81 +msgid "When you hover over an adjudicator or team the top-most area of the screen will show additional information about them, such as all of their previous institutions, their conflicts, their break category, their team members, their region, and who they saw in the last few rounds." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:84 +msgid "Toggle Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:86 +msgid "In the top-right of the interface are a number of toggles that changes the color of adjudicators and teams to more easily check specific types of information. For example, selecting the gender toggle will color-code teams and adjudicators with the gender that has been recorded in Tabbycat. Note that when a toggle is active, the color key will update to show the meaning of these new colors." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:90 +msgid "When finalising an adjudication you may want to ensure you have turned off any toggle highlights — often they make it more difficult to see the border colors that indicate conflicts." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/cs/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..c1c9ed72f0e --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/adjudicator-feedback.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: cs_CZ\n" + +#: ../../features/adjudicator-feedback.rst:5 +msgid "Adjudicator Feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:7 +msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:9 +msgid "Currently, there are two methods of setting questions:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:11 +msgid "Through the :ref:`edit database area `. Go to **Setup** > **Edit Database**, then click **Change** next to *Adjudicator feedback questions*. You can add questions here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:14 +msgid "Using the :ref:`importtournament command `." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:16 +msgid "Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field descriptions in the edit database area helpful.) Some more details are here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:20 +msgid "Answer types and options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Type" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Relevant options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Appearance" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +msgid "**checkbox**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +#: ../../features/adjudicator-feedback.rst:27 +#: ../../features/adjudicator-feedback.rst:35 +#: ../../features/adjudicator-feedback.rst:37 +msgid "\\-" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:27 +msgid "**yes/no (dropdown)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +msgid "**integer (textbox)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +#: ../../features/adjudicator-feedback.rst:31 +#: ../../features/adjudicator-feedback.rst:33 +msgid "min_value, max_value" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:31 +msgid "**integer scale**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:33 +msgid "**float**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:35 +msgid "**text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:37 +msgid "**long text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +msgid "**select one**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +#: ../../features/adjudicator-feedback.rst:41 +msgid "choices" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:41 +msgid "**select multiple**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:44 +msgid "Options:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:46 +msgid "**min_value** and **max_value** specify the minimum and maximum allowable values in the field. Mandatory for \"integer scale\" types and optional for \"integer (textbox)\" and \"float\" types." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:47 +msgid "**choices** is used with \"select one\" and \"select multiple\" types, and is a ``//``-delimited list of possible answers, *e.g.* ``biased//clear//concise//rambly//attentive//inattentive``" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:48 +msgid "**required** specifies whether users must fill out the field before clicking \"submit\". This requirement is only enforced on public submission forms. It is not enforced on forms entered by tab room assistants." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:50 +msgid "The exception to this is the \"checkbox\" type. For checkboxes, \"required\" means that the user cannot submit the form unless the box is checked. Think of it like an \"I agree to the terms\" checkbox. This isn't a deliberate design decision—it's just a quirk of how checkboxes work on web forms." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:53 +msgid "Want another answer type?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:55 +msgid "We don't really intend to add any further complexity to the built-in feedback system. If the above answer types don't cover your needs, we suggest using a third-party feedback system. You might be able to adapt `SurveyMonkey `_, `Google Forms `_ or `Qualtrics `_ to your needs." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:60 +msgid "We may be persuaded to make an exception if the new question type you have in mind is easy to add: that is, if it is straightforward to implement using standard web page elements and fits into the existing questionnaire framework (see :ref:`feedback-questionnaires` below). If you think there is such a case, please contact us using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:69 +msgid "Different questionnaires" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:71 +msgid "Tabbycat allows you to specify two questionnaires: one for feedback submitted by teams, and one for feedback submitted by adjudicators. You must specify in each question whether to include the question in each questionnaire." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:75 +msgid "**from_team**, if checked, includes the question in feedback submitted by teams" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:77 +msgid "**from_adj**, if checked, includes the question in feedback submitted by adjudicators" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:81 +msgid "Who gives feedback on whom?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:82 +msgid "Tabbycat allows for three choices for which adjudicators give feedback on which other adjudicators:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:85 +msgid "Chairs give feedback on panellists and trainees" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:86 +msgid "Chairs give feedback on panellists and trainees, and panellists give feedback on chairs" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:88 +msgid "All adjudicators, including trainees, give feedback on all other adjudicators they have adjudicated with" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:91 +msgid "You can set this in the **feedback paths** option under *Setup* > *Configuration* > *Feedback*. Your choice affects each of the following:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:94 +msgid "The options presented to adjudicators in the online feedback form" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:95 +msgid "The printable feedback forms" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:96 +msgid "The submissions expected when calculating feedback progress and highlighting missing feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:99 +msgid "The feedback paths option only affects feedback from adjudicators. Teams are always assumed to give feedback on the orallist, and they are encouraged to do so through hints on the online and printable feedback forms, but there is nothing technically preventing them from submitting feedback from any adjudicator on their panel." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:105 +msgid "Advanced users" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:108 +msgid "If you need a different setting, you need to edit the source code. Specifically, you should edit the function ``expected_feedback_targets`` in tabbycat/adjfeedback/utils.py." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:112 +msgid "Unless we can be convinced that they are very common, we don't intend to add any further choices to the feedback paths option. If your needs are specific enough that you need to differ from the available settings, they are probably also beyond what is sensible for a built-in feedback system, and we recommend using a third-party feedback system instead." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:119 +msgid "How is an adjudicator's score determined?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:121 +msgid "For the purpose of the automated allocation, an adjudicator's overall score is a function of their base score, the current round's feedback weight, and their average feedback score. This number is calculated according to the following formula:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:126 +msgid "\\textrm{score} = (1-w)\\times\\textrm{base score} + w\\times\\textrm{average feedback score}" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:130 +msgid "where :math:`w` is the feedback weight for the round. Note that because the feedback score is averaged across all pieces of feedback (rather than on a per-round total) rounds in which a person receives feedback from many sources (say from all teams and all panellists) could impact their average score much more than a round in which they only receive feedback from one or two sources." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:132 +msgid "Under this formula, each round's feedback weight can be used to determine the relative influence of the base score vs feedback in determining the overall score. As an example, say that an adjudicator received 5.0 as their base score, but their average feedback rating has thus far been 2.0. If the current rounds' feedback weight is set to 0.75, then their overall score would be 2.75. If the current round's feedback weight is set to 0.5 their score would be 3.5. If the weight was 0, their score will always be their base score; if the weight was 1 it will always be their average feedback value." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:141 +msgid "To change the weight of a round you will need to go to the Edit Database area, open the round in question, and change its *Feedback weight* value. It is common to set rounds with a low feedback weight value early on in the tournament (when feedback is scant) and to increase the feedback weight as the tournament progresses." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:143 +msgid "A participant's base score can, in conjunction with feedback weight, also be used as a manual override for an adjudicator's overall ranking. At several tournaments, adjudication cores have set every round's feedback weight to 0, and manually adjusted an adjudicator's base score in response to feedback they have received and reviewed. In this way complete control over every adjudicator's overall score can be exerted." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:145 +msgid "If feedback from trainee adjudicators is enabled, any scores that they submit in their feedback are not counted towards that adjudicator's overall score." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:148 +msgid "Ignoring/Discarding feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:150 +msgid "There are some cases where feedback should be discarded or ignored, but there are some differences between the two. Discarded feedback is mostly due to having another piece of feedback that supersedes the discarded ones. Ignored feedback is different as it still counts the affected feedback as submitted, just inconsequential, ignored in the adjudicator's score calculation." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:152 +msgid "Feedback can be marked as discarded in the database view, under the ``confirmed`` field. It can also be marked as ignored in the same view. Controls to reverse these designations are also available there. To mark feedback as ignored, an option is available in the administrator's and assistant's feedback adding form, as well in the form of a toggle link at the bottom of each card." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/backups.po b/docs/locale/cs/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..b782d550f0c --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/backups.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: cs_CZ\n" + +#: ../../features/backups.rst:5 +msgid "Backups" +msgstr "" + +#: ../../features/backups.rst:7 +msgid "Tabbycat doesn't provide an in-built backup system; instead you should create copies of your database directly. Heroku provides a very good backup utility for all sites hosted on Heroku which makes this easy, and for Heroku-based Tabbycat sites, we strongly recommend it." +msgstr "" + +#: ../../features/backups.rst:12 +msgid "You should **always** back up the database before deleting *any* data while in the Edit Database area, because deleting data cannot be undone. It is also a good idea to back up the database before doing anything in the Edit Database area, unless you're very familiar and confident with editing the Tabbycat database directly." +msgstr "" + +#: ../../features/backups.rst:18 +msgid "You may, as a matter of standard practice at large tournaments, wish to back up the database twice per round: Once just after you've generated the draw and allocated adjudicators, and once just after you've finished entering results." +msgstr "" + +#: ../../features/backups.rst:22 +msgid "If you're using an online version of Tabbycat, it's a good idea to download the backups. While it's extremely rare to lose internet access or have an outage in a critical web service (*i.e.*, Heroku), having a local copy of your backups allows you to :ref:`restore your tab to a local installation ` if this ever happens." +msgstr "" + +#: ../../features/backups.rst:29 +msgid "Installations on Heroku" +msgstr "" + +#: ../../features/backups.rst:31 +msgid "Heroku provides a utility to easily back up and restore the entire site database." +msgstr "" + +#: ../../features/backups.rst:35 +msgid "If you don't have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:36 +msgid "You can capture backups from the Heroku Dashboard:" +msgstr "" + +#: ../../features/backups.rst:38 +msgid "Go to the `Heroku Dashboard `_ and click on your app." +msgstr "" + +#: ../../features/backups.rst:40 +msgid "Under *Installed add-ons*, go to **Heroku Postgres**." +msgstr "" + +#: ../../features/backups.rst:41 +msgid "Scroll down, and click on the **Capture Backup** button." +msgstr "" + +#: ../../features/backups.rst:42 +msgid "Once the capture has finished, a **Download** button will be available." +msgstr "" + +#: ../../features/backups.rst:44 +msgid "You can't restore a backup without the Heroku Command Line Interface (CLI), so if you end up needing your backup, you'll need to install the `Heroku CLI `_, and then follow the instructions below." +msgstr "" + +#: ../../features/backups.rst:50 +msgid "If you have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:52 +msgid "The best guide to backing up databases is the `Heroku Dev Center's PGBackups guide `_." +msgstr "" + +#: ../../features/backups.rst:55 +msgid "To capture a backup::" +msgstr "" + +#: ../../features/backups.rst:59 +msgid "To download the most recently captured backup::" +msgstr "" + +#: ../../features/backups.rst:63 +msgid "To restore a backup::" +msgstr "" + +#: ../../features/backups.rst:67 +msgid "If you have multiple Tabbycat sites, you'll need to specify which one by adding ``--app mytournamentname`` to the end of the command." +msgstr "" + +#: ../../features/backups.rst:71 +msgid "Local installations" +msgstr "" + +#: ../../features/backups.rst:73 +msgid "There are lots of ways to back up local PostgreSQL databases, but we'd suggest using the `pg_dump `_ and `pg_restore `_ commands." +msgstr "" + +#: ../../features/backups.rst:83 +msgid "Restoring a Heroku backup to a local installation" +msgstr "" + +#: ../../features/backups.rst:85 +msgid "As detailed in the `Heroku Dev Center `_, you can restore a downloaded Heroku backup to a local installation. This might be useful if, say, your internet connection breaks irrecoverably in the middle of a tournament and you need to run offline. Of course, for this to work, you need to have downloaded your backup before your internet connection broke---a good reason to download a copy of your backups as soon as you make them." +msgstr "" + +#: ../../features/backups.rst:92 +msgid "Assuming your download is called ``latest.dump`` (this is the default name), your PostgreSQL username is ``tabbycat``, and you wish to call your local database ``fromheroku`` (if not, replace arguments as appropriate)::" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/breaks.po b/docs/locale/cs/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..7faea087cea --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/breaks.po @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: cs_CZ\n" + +#: ../../features/breaks.rst:5 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../features/breaks.rst:7 +msgid "In Tabbycat, elimination rounds (sometimes called *outrounds* or the *final series*) are called \"break rounds\", and the qualification of teams to compete in the elimination phase of a tournament is called the \"break\"." +msgstr "" + +#: ../../features/breaks.rst:12 +msgid "About break categories" +msgstr "" + +#: ../../features/breaks.rst:14 +msgid "Tabbycat supports multiple and arbitrarily-named break categories. Most tournaments will have just one category, typically called \"Open\", leading to the grand final. Some tournaments also have restricted-eligibility break categories, for example, for novice teams or teams for whom English is a second language." +msgstr "" + +#: ../../features/breaks.rst:19 +msgid "Having multiple break categories is intended for tournaments where multiple *parallel* elimination phases derive from the *same* preliminary rounds (inrounds). It's not for parallel but distinct competitions---for those, you should create distinct tournaments." +msgstr "" + +#: ../../features/breaks.rst:27 +msgid "Break qualification rules" +msgstr "" + +#: ../../features/breaks.rst:29 +msgid "Tabbycat supports several break qualification rules, and each break category must be configured to use one of them. Most tournaments will use \"Standard\", which is the default." +msgstr "" + +#: ../../features/breaks.rst:38 +msgid "Rule name (string to use in ``importtournament`` CSV files)" +msgstr "" + +#: ../../features/breaks.rst:39 +msgid "Descrption" +msgstr "" + +#: ../../features/breaks.rst:41 +msgid "Standard (``standard``)" +msgstr "" + +#: ../../features/breaks.rst:42 +msgid "The top *n* teams break. This is the default, and most tournaments use this rule." +msgstr "" + +#: ../../features/breaks.rst:45 +msgid "AIDA 1996 (``aida-1996``)" +msgstr "" + +#: ../../features/breaks.rst:46 +msgid "The top *n* teams that are also in the top three teams from their institution break." +msgstr "" + +#: ../../features/breaks.rst:49 +msgid "AIDA 2016 (Australs) (``aida-2016-australs``)" +msgstr "" + +#: ../../features/breaks.rst:50 +msgid "The top *n* teams that fulfil either of these criteria break:" +msgstr "" + +#: ../../features/breaks.rst:53 +msgid "They are in the top *n* teams overall, and in the top three teams from their institution." +msgstr "" + +#: ../../features/breaks.rst:55 +msgid "They have at least as many wins as the *n*\\ th-ranked team, and they are the top team from their institution." +msgstr "" + +#: ../../features/breaks.rst:58 +msgid "If fewer than *n* teams fulfil either criterion, then the best teams not fulfilling the criteria are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:62 +msgid "AIDA 2016 (Easters) (``aida-2016-easters``)" +msgstr "" + +#: ../../features/breaks.rst:63 +msgid "As for AIDA 2016 (Australs), except that if fewer than *n* teams fulfil either criterion, then only the best teams who are in the top three teams from their institution are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:68 +msgid "The break generators are somewhat more complex than described in the above table: among other things, they also handle cases where there is a tie for the last place in the break, and for those break categories marked \"general\", they will show where ineligible teams would have broken, had they been eligible." +msgstr "" + +#: ../../features/breaks.rst:75 +msgid "Setting up break categories and rounds" +msgstr "" + +#: ../../features/breaks.rst:77 +msgid "For each break category in your tournament, you need to do two things:" +msgstr "" + +#: ../../features/breaks.rst:79 +msgid "Create (and name) a break category" +msgstr "" + +#: ../../features/breaks.rst:80 +msgid "Create break rounds for the category" +msgstr "" + +#: ../../features/breaks.rst:81 +msgid "Set the eligibility of teams to compete in the category" +msgstr "" + +#: ../../features/breaks.rst:83 +msgid "If you only have one break category (open) and you create your tournament using the \"Create New Tournament\" page, simply enter the number of teams in the break (*e.g.*, 8 if you're breaking to quarterfinals). Tabbycat will create the break category and break rounds for you. For any further break categories, you'll need to go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Break Categories**. Fill out the forms for the number of new break categories and save. Rounds will be created automatically. You'll still need to set the eligibility of teams though, as in (3) below." +msgstr "" + +#: ../../features/breaks.rst:92 +msgid "If you create your tournament using the `importtournament` command or in **Edit Database**, you'll need to do all three steps above yourself. You may also want to edit the break rounds (2) to change their names." +msgstr "" + +#: ../../features/breaks.rst:97 +msgid "1. Creating break categories" +msgstr "" + +#: ../../features/breaks.rst:99 +msgid "If using the `importtournament` command, there is an example file, *break_categories.csv*, that you can copy and adjust. If using **Edit Database**, add categories under **Break Qualification > Break categories**." +msgstr "" + +#: ../../features/breaks.rst:103 +msgid "Most of the fields are self-explanatory or described on the Edit Database form, except for one: \"rule\", which sets the break qualification rule. Permissible values are described in :ref:`breakqual-rules` above. If using `importtournament`, be sure to use the correct string (in brackets in the table). The rule defaults to \"Standard\" (``standard``)." +msgstr "" + +#: ../../features/breaks.rst:109 +msgid "The \"institution cap\" field was removed in Tabbycat 1.0. All Australs break qualification rules are now hard-coded to a cap of three teams per institution." +msgstr "" + +#: ../../features/breaks.rst:114 +msgid "2. Creating break rounds" +msgstr "" + +#: ../../features/breaks.rst:116 +msgid "You should create a round for every break round you intend to hold, including it in *rounds.csv* if using `importtournament`, or adding them under **Tournaments > Rounds** if using **Edit Database**. Be careful to set the following fields correctly:" +msgstr "" + +#: ../../features/breaks.rst:121 +msgid "*Break category* must be set to the relevant break category." +msgstr "" + +#: ../../features/breaks.rst:122 +msgid "*Stage* and *draw type* must both be set to \"Elimination\"." +msgstr "" + +#: ../../features/breaks.rst:125 +msgid "3. Setting break eligibility" +msgstr "" + +#: ../../features/breaks.rst:127 +msgid "Once a break category has been created it will not have any teams eligible for it, even if it was marked as \"Is general\". To edit the eligibility of teams for any break round go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Team Eligiblity**." +msgstr "" + +#: ../../features/breaks.rst:132 +msgid "Here you can select \"all\" or \"none\" to toggle all team eligiblities or edit them using the tick boxes. Once you **save** it should return you to the main break page which will display the number of teams marked eligible." +msgstr "" + +#: ../../features/breaks.rst:136 +msgid "Adjudicators can be marked as \"breaking\" on the **Feedback** page; clicking **Adjudicators** on the breaks page will take you straight there." +msgstr "" + +#: ../../features/breaks.rst:140 +msgid "Generating the break" +msgstr "" + +#: ../../features/breaks.rst:142 +msgid "Unlike team or speaker standings, each category's break (and the break ranks of teams) are not determined automatically and updated continuously. Instead each can be generated (and regenerated) as desired." +msgstr "" + +#: ../../features/breaks.rst:146 +msgid "To do so go to the **Breaks** item in the left-hand menu and then click the white button that corresponds to the break category you'd like to determine the rankings for. When prompted, select **Generate the break for all categories** to display the list of breaking teams." +msgstr "" + +#: ../../features/breaks.rst:151 +msgid "From this page you can update the breaking teams list for this break category (or all categories) as well as view and edit 'remarks' that account for cases in which a team may not break (such as being capped or losing a coin toss)." +msgstr "" + +#: ../../features/breaks.rst:155 +msgid "Please double-check the generated break before announcing or releasing it. Although the break generation code is designed to handle edge cases, we don't test the code for such cases." +msgstr "" + +#: ../../features/breaks.rst:160 +msgid "Creating draws for break rounds" +msgstr "" + +#: ../../features/breaks.rst:162 +msgid "Creating a draw for a break round proceeds as normal, except that the team availability process is skipped. Instead, when you visit the availability page for that round it will have automatically determined which teams should be debating based upon the determined break for that category. Once a draw has been generated it will then use the relevant break ranks to create the matchups (ie 1st-breaking vs 16th-breaking, 2nd vs 15th, *etc.*). Subsequent break rounds will then also automatically determine matchups based on the previous round's results and room ranks." +msgstr "" + +#: ../../features/breaks.rst:171 +msgid "If the \"break size\" of a break category is not a power of 2, it will treat the first break round as a partial-elimination draw and only create a draw for the teams not skipping the partial-elimination round. Subsequent break rounds will then process as described above." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/check-ins.po b/docs/locale/cs/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..e942e2fa898 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/check-ins.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: cs_CZ\n" + +#: ../../features/check-ins.rst:5 +msgid "Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:7 +msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." +msgstr "" + +#: ../../features/check-ins.rst:9 +msgid "Check-ins serve a similar purpose to the :ref:`availability ` system. However availabilities are tied to a particular round rather than to a particular time — they are generally used to record instances where you know ahead of time whether a person should or should not be included in a draw. In contrast, check-ins are useful for when you *don't* know ahead of time whether a person will be able to be put into the draw and so want to be able to confirm their presence with a high degree of confidence. That said the two systems interact — the standard availability pages allow you to easily set all adjudicators or teams who have checked-in as available for a given round." +msgstr "" + +#: ../../features/check-ins.rst:12 +msgid "Check-In Identifiers" +msgstr "" + +#: ../../features/check-ins.rst:14 +msgid "Check-ins are associated with a 'identifier' — a number that is unique to each speaker and adjudicator. To generate these numbers go to the *Identifiers* section under the Check-Ins menu. From here you generate identifiers for Speakers, Adjudicators, and Venues as needed. Note also that Identifiers can be manually added or edited in the *Edit Database* area if necessary." +msgstr "" + +#: ../../features/check-ins.rst:18 +msgid "Once this number has been generated it can be transformed into a barcode so that it can be easily included on tournament badges or otherwise printed and disbursed. On the same *Identifiers* page you can use the *View barcodes* option to open up a page that lists all the barcodes for the speakers, adjudicators, or venues." +msgstr "" + +#: ../../features/check-ins.rst:22 +msgid "The identifiers for ballots are automatically generated when printing ballots." +msgstr "" + +#: ../../features/check-ins.rst:25 +msgid "Recording Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:27 +msgid "On the *Scanning* section of Check-ins you can record a particular check-in. This can be done in a few different ways:" +msgstr "" + +#: ../../features/check-ins.rst:29 +msgid "You can type in the Identifier number into the box. Once five numbers have been identified it will automatically issue the check-in and clear the input field for the next number." +msgstr "" + +#: ../../features/check-ins.rst:31 +msgid "If you have purchased barcode scanners and configured them as USB keyboards they should then be compatible with this page: upon page load the cursor should be positioned in the input field, and any scanned barcodes should populate it with the specified number, issue the check-in, and then clear the box for the next scan." +msgstr "" + +#: ../../features/check-ins.rst:33 +msgid "Barcode scanners are probably cheaper than you think. A perfectly serviceable model should be around $20 USD or less although a cursory Google search might at first turn up models that are many times that amount. If you are a curious tab director, or are involved in a tournament with a little spare money, having just one or two around for critical tasks can be highly valuable." +msgstr "" + +#: ../../features/check-ins.rst:35 +msgid "If your device has a (web)cam you can use the Scan Using Camera button. Any barcodes put in front of the camera's video stream will be scanned into the form. A sound will play when a barcode has been identified — so be aware that turning sound on or using headphones can help identify when a scan has been made." +msgstr "" + +#: ../../features/check-ins.rst:39 +msgid "Camera scanning works on most modern browsers although it will only work with Safari 11 or higher (iOS 11+ and macOS 10.13+). Camera scanning may also not work when using a local-installation of Tabbycat in all browsers, *except* Firefox where it seems to. Depending on the quality of your camera barcodes that are less than 4cm wide may not be recognised — ideally barcodes should be at least 5cm if using this method as your main way of checking-in things." +msgstr "" + +#: ../../features/check-ins.rst:41 +msgid "The Check-in status page (described below) allows assistants and administrators to manually check-in particular people or entire institutions without needing to know their identifiers." +msgstr "" + +#: ../../features/check-ins.rst:44 +msgid "The Check-In 'Window'" +msgstr "" + +#: ../../features/check-ins.rst:46 +msgid "Because Check-In events are not explicitly linked to rounds there is essentially a 'window' or time period in which a check-in is still considered valid. The time of this 'window' in hours can be set in *Setup* > *Configuration* > *Data Entry*." +msgstr "" + +#: ../../features/check-ins.rst:48 +msgid "At tournaments the run check-ins during the start of each day the check-in 'window' (i.e. the time before check-ins expire) you can leave this window setting at the default time (12 hours) which should give enough time to distinguish between the first check-ins of that day as compared to the last check-ins of the previous day. At tournaments where you want to run a check-in process at the start of every round you may want to set the time to around 2 hours or something much shorter." +msgstr "" + +#: ../../features/check-ins.rst:51 +msgid "Viewing Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:53 +msgid "On the *People Statuses* section of Check-ins you can view who has or has not been checked-in. This page will live-update with the latest check-ins so you should be able to leave it open to monitor income attendances." +msgstr "" + +#: ../../features/check-ins.rst:57 +msgid "The blue \"tick\" boxes allow you to manually check-in people and/or entire institutions (for *People*) or venues and/or venue groups (for *Venues*) , without the need to scan their identifiers. This style of check-in is designed for use an auditorium roll-call type situation where you might be running through a list of people to the room or identifying absences on a per-institution basis." +msgstr "" + +#: ../../features/check-ins.rst:59 +msgid "A public version of this check-in status page can be enabled under *Setup* > *Configuration* > *Public Features* which can be useful for allowing people to self-police check-ins and/or validate their check-in worked." +msgstr "" + +#: ../../features/check-ins.rst:62 +msgid "Check-Ins for Ballots" +msgstr "" + +#: ../../features/check-ins.rst:64 +msgid "Ballots can be checked-in to quickly validate which ballots are physically present in the tab room. This can help more quickly identify ballots that are missing. Which ballots have or have not been checked-in will show up on the Results page. Ballots can be scanned using the standard 'Scan Identifiers' page." +msgstr "" + +#: ../../features/check-ins.rst:66 +msgid "Barcodes are automatically assigned and included to ballots when they are printed. Barcodes have no check-in window — any relevant check-in event counts regardless of how long ago it was." +msgstr "" + +#: ../../features/check-ins.rst:69 +msgid "Check-Ins for Venues" +msgstr "" + +#: ../../features/check-ins.rst:71 +msgid "Venues can be checked-in, but what a 'venue check-in' means is a bit more flexible. It might be used to validate which rooms are debate-ready at the start of a day (i.e. unlocked; has a desk) or it could be used during the rounds to record which rooms have returned their ballots." +msgstr "" + +#: ../../features/check-ins.rst:73 +msgid "Venues have a separate check-in window setting to that of people." +msgstr "" + +#: ../../features/check-ins.rst:75 +msgid "Venues have their own Status page (like people) and can be checked-in there manually. Like speakers and adjudicators their barcodes can also be printed off." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/data-entry.po b/docs/locale/cs/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..e00b2203446 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/data-entry.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: cs_CZ\n" + +#: ../../features/data-entry.rst:5 +msgid "Entering Ballots and Feedback" +msgstr "" + +#: ../../features/data-entry.rst:8 +msgid "Ballot check-in" +msgstr "" + +#: ../../features/data-entry.rst:10 +msgid "For tournaments that require it, there is a \"ballot check-in\" page that can be used to record the arrival of ballots to the tab room. When there's a missing ballot, it can help establish whether the ballot never made it to the tab room, or whether it's probably floating around in the room forgotten. Also, it can help enforce early checks that panels return the correct number of ballots to the room." +msgstr "" + +#: ../../features/data-entry.rst:12 +msgid "To get to the ballot check-in, click the relevant round in the menu of the admin area, and then click \"Results\" and then \"Ballot Check-In\". This requires superuser privileges." +msgstr "" + +#: ../../features/data-entry.rst:14 +msgid "There's no adverse effect from not using the ballot check-in. Data enterers will still be able to enter and confirmed ballots, even if not checked in." +msgstr "" + +#: ../../features/data-entry.rst:18 +msgid "Since the ballot check-in tends to require a dedicated computer or two, it can be worth creating a separate superuser account for ballot check-in, so that it doesn't appear on the action logs as being by a particular person." +msgstr "" + +#: ../../features/data-entry.rst:19 +msgid "Don't forget to provision a computer or two for this if you're planning to use it." +msgstr "" + +#: ../../features/data-entry.rst:20 +msgid "Ballot check-ins can be a bottleneck, so you might decide they're not worth using. Alternatively, you might have multiple computers for this purpose, or you might dedicate a tab room helper to driving the process (since this is probably faster than runners doing the typing in turn)." +msgstr "" + +#: ../../features/data-entry.rst:23 +msgid "Ballot entry" +msgstr "" + +#: ../../features/data-entry.rst:27 +msgid "Most tab rooms run some sort of check system to ensure data is entered accurately. In Tabbycat, this is built into the system, which also helps speed it up." +msgstr "" + +#: ../../features/data-entry.rst:29 +msgid "As a general principle, Tabbycat requires all ballots to be looked at by two people. The first person enters the data from the ballot, and the second person checks it. The second person isn't allowed to modify the data—they either confirm it or reject it, and if they reject it, then the whole process starts again. This is by design: to be confirmed, the *same* data must have been seen by at least two people." +msgstr "" + +#: ../../features/data-entry.rst:31 +msgid "The administrator area does **not** work like this. It's designed to be flexible, so allows you to edit, confirm or unconfirm any ballot at any time. For this reason, you should use the **assistant** area to enter ballots, even if you have a superuser account." +msgstr "" + +#: ../../features/data-entry.rst:35 +msgid "Don't forget to check the totals against the ballot—they're a useful integrity check too." +msgstr "" + +#: ../../features/data-entry.rst:36 +msgid "Don't forget to check the winner against the ballot! If the adjudicator gets it wrong, it's worth asking to clarify." +msgstr "" + +#: ../../features/data-entry.rst:37 +msgid "It can be helpful to think about the room layout to maximize efficiency." +msgstr "" + +#: ../../features/data-entry.rst:38 +msgid "Some tab rooms like to assign some to data entry and some to verification. This isn't really necessary, since Tabbycat doesn't let the same person enter and verify the same ballot. (This is one of many reasons why every person should have their own account.)" +msgstr "" + +#: ../../features/data-entry.rst:39 +msgid "Emails can be configured to be sent to adjudicators as a receipt of their ballot once confirmed." +msgstr "" + +#: ../../features/data-entry.rst:42 +msgid "Duplicate/Swing Speeches" +msgstr "" + +#: ../../features/data-entry.rst:46 +msgid "When entering the ballots there is a toggle label *'Iron' speeches*. When set to \"yes\" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel)." +msgstr "" + +#: ../../features/data-entry.rst:48 +msgid "Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate." +msgstr "" + +#: ../../features/data-entry.rst:50 +msgid "There is also an option under **Standings** in the **Configuration** section that specifies the number of debates a speaker can miss before you will not show on the tab. By default there is no limit, but if need be this can be set to hide swing speakers from the final speaker tab." +msgstr "" + +#: ../../features/data-entry.rst:53 +msgid "Feedback entry" +msgstr "" + +#: ../../features/data-entry.rst:57 +msgid "Feedback doesn't have the same verification process as ballots. Feedback that is entered by the tab room is assumed to be confirmed. If feedback is entered multiple times, all copies are retained but only the last one \"counts\" (is considered confirmed)." +msgstr "" + +#: ../../features/data-entry.rst:60 +msgid "Online entry" +msgstr "" + +#: ../../features/data-entry.rst:62 +msgid "There are two methods of allowing ballots and feedback to be submitted online. Both are set in the **Data Entry** page of each tournament's **Configuration** section and can be set independently; both in whether each can be submitted online at all and in which method of online submission are available." +msgstr "" + +#: ../../features/data-entry.rst:68 +msgid "Private URLs" +msgstr "" + +#: ../../features/data-entry.rst:70 +msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." +msgstr "" + +#: ../../features/data-entry.rst:72 +msgid "Private URLs should provide more than adequate security for almost all tournaments' purposes, but they aren't foolproof. Anyone with access to the URL for a participant can submit feedback or ballots on their behalf, so it's important that participants not share their URLs. This also means participants need to be careful when submitting from devices they do not own, because the URL will be logged in that device's browser history." +msgstr "" + +#: ../../features/data-entry.rst:74 +msgid "These links must be generated within Tabbycat after the preference is enabled. To do so go to the **Feedback** section and then the **Private URLs** area. Once there you will be prompted to generate those URLs for all participants, which — once generated — will be presented in separate tables (one for teams; one for adjudicators)." +msgstr "" + +#: ../../features/data-entry.rst:78 +msgid "These URLs can then be distributed to each person in a number of ways. There are pages within Tabbycat for printing them out (one URL per page labelled by recipient) or emailing them out (providing participants have been assigned email addresses). In the past tournaments have also used data from this table to send out SMSs by bulk, or distributed them to institutional representatives to disburse." +msgstr "" + +#: ../../features/data-entry.rst:82 +msgid "You can assign email address to participants using the :ref:`importtournament command ` when importing your registration data, or by going to the *Edit Data* area and looking up each Speaker/Adjudicator." +msgstr "" + +#: ../../features/data-entry.rst:83 +msgid "If, after generating the private URLs, you add additional Teams or Adjudicators you can go to the *Edit Database* area , look up each Speaker/Adjudicator, and type in a bunch of random characters as their *Url key* to assign them a private URL." +msgstr "" + +#: ../../features/data-entry.rst:84 +msgid "You can delete the current set of URLs by running this command in a shell on your server (replacing TOURNAMENT_SLUG with the appropriate value): ``python manage.py privateurls delete --tournament TOURNAMENT_SLUG``" +msgstr "" + +#: ../../features/data-entry.rst:89 +msgid "Public URLs" +msgstr "" + +#: ../../features/data-entry.rst:91 +msgid "The second method of data entry is using 'normal URLs'. This essentially means that any users visiting the public version of the site is able to submit a ballot or feedback (as specified by their respective settings). They do so by self-selecting which Team or Adjudicator they are then entering in a form as normal." +msgstr "" + +#: ../../features/data-entry.rst:93 +msgid "This is, rather obviously, not a particularly secure method of data entry — nothing is stopping anyone on the site from entering data as someone else. The data can be checked, verified, and edited as normal by admins however. As such, this method is only recommended for small tournaments where you can trust those present to enter accurate information (or where accuracy is not crucial)." +msgstr "" + +#: ../../features/data-entry.rst:95 +msgid "There is an additional setting to set a 'tournament password' that needs to be submitted to enable the form. It is imagined, that if enabled, this password would only be distributed to tournament participants. However this only helps (at best) prevent non-participants from entering information; the fundamental problem of not verifying who is submitting what information is still present." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/data-importers.po b/docs/locale/cs/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..fddf67c1e69 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/data-importers.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: cs_CZ\n" + +#: ../../features/data-importers.rst:5 +msgid "Tournament Data Importers" +msgstr "" + +#: ../../features/data-importers.rst:7 +msgid "This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary." +msgstr "" + +#: ../../features/data-importers.rst:9 +msgid "The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_." +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "Todo" +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/data-importers.rst:14 +msgid "Why write your own?" +msgstr "" + +#: ../../features/data-importers.rst:16 +msgid "While Tabbycat has standard import formats, you might find that none of them fit the data that you need to import." +msgstr "" + +#: ../../features/data-importers.rst:18 +msgid "It's not possible to devise a single, universally-convenient import file format. Tabbycat supports way too many permutations of configurations for this to be workable. Instead, we provide the ones that have been useful before and are therefore likely to be useful again—but if your tournament has different needs, you might decide that it's easier to write an importer to conform to you, rather than conform to the importer." +msgstr "" + +#: ../../features/data-importers.rst:20 +msgid "A base importer class abstracts away most of the nitty-gritty of parsing files, allowing new importers to focus on their interpretation with as little code as possible." +msgstr "" + +#: ../../features/data-importers.rst:22 +msgid "To allow new importers to be written with as little code as possible, most of the work is abstracted to the base class. The flipside of this abstraction is that it induces a learning curve." +msgstr "" + +#: ../../features/data-importers.rst:25 +msgid "Basic workflow" +msgstr "" + +#: ../../features/data-importers.rst:27 +msgid "Choose a name. We name importers after items of clothing in alphabetical order (starting at 'Anorak')." +msgstr "" + +#: ../../features/data-importers.rst:28 +msgid "Write a subclass of ``BaseTournamentDataImporter``." +msgstr "" + +#: ../../features/data-importers.rst:29 +msgid "Write the front-end interface. This will probably be a `Django management command `_." +msgstr "" + +#: ../../features/data-importers.rst:32 +msgid "A basic example" +msgstr "" + +#: ../../features/data-importers.rst:34 +msgid "It's easiest to start with an example. Here's a basic importer with just one import method, which imports adjudicators." +msgstr "" + +#: ../../features/data-importers.rst:60 +msgid "Let's break this down. The method ``import_adjudicators()`` takes a single argument, a file object representing the CSV file. Most of the work is passed off to ``self._import()``. This helper method is defined in ``BaseTournamentDataImporter`` and is where most of the intelligence lies." +msgstr "" + +#: ../../features/data-importers.rst:65 +msgid "When called, ``self._import(f, model, interpreter)`` does the following:" +msgstr "" + +#: ../../features/data-importers.rst:67 +msgid "It reads the CSV file using a `csv.DictReader `_. A ``DictReader`` iterates through the CSV file, yielding a dict for each line, whose keys are given by the column header names in the first row of the file." +msgstr "" + +#: ../../features/data-importers.rst:72 +msgid "On each line:" +msgstr "" + +#: ../../features/data-importers.rst:74 +msgid "It passes the dict given by the ``DictReader`` to ``interpreter``. The interpreter modifies the dict (or creates a new one) to prepare it for the model constructor, and returns it." +msgstr "" + +#: ../../features/data-importers.rst:78 +msgid "The dict returned by ``interpreter`` is then passed as keyword arguments to the ``model`` constructor." +msgstr "" + +#: ../../features/data-importers.rst:81 +msgid "So in very simplified form, ``self._import(f, model, interpreter)`` does this:" +msgstr "" + +#: ../../features/data-importers.rst:92 +msgid "(There's a lot more to it than that, but that's the basic idea.)" +msgstr "" + +#: ../../features/data-importers.rst:94 +msgid "A consequence of relying on column headers to identify fields is that the header names in CSV files must match model field names exactly, unless they are deleted by the interpreter using the ``DELETE`` keyword (see below)." +msgstr "" + +#: ../../features/data-importers.rst:100 +msgid "Interpreters" +msgstr "" + +#: ../../features/data-importers.rst:101 +msgid "The main task of an importer, then, is to provide interpreters so that ``self._import`` knows how to interpret the data in a CSV file. An interpreter takes a dict and returns a dict. For example:" +msgstr "" + +#: ../../features/data-importers.rst:113 +msgid "This interpreter does the following:" +msgstr "" + +#: ../../features/data-importers.rst:115 +msgid "Replaces ``line['institution']`` with an Institution object, by looking up the original value by name." +msgstr "" + +#: ../../features/data-importers.rst:117 +msgid "Replaces ``line['gender']`` with a ``Person.GENDER_*`` constant. We'll come back to how this works later." +msgstr "" + +#: ../../features/data-importers.rst:119 +msgid "Adds a new ``line['tournament']`` entry to the dict, being the Tournament object represented by ``self.tournament``, the tournament that was passed to the importer's constructor." +msgstr "" + +#: ../../features/data-importers.rst:122 +msgid "Leaves all other entries in the dict unchanged." +msgstr "" + +#: ../../features/data-importers.rst:124 +msgid "This looks simple enough, but it's very robust. What if a cell in the CSV file is blank, or what if the file omits a column? (For example, some tournaments might not collect information about participant gender, so Tabbycat doesn't require it.) We could deal with these scenarios on a case-by-case basis, but that's cumbersome." +msgstr "" + +#: ../../features/data-importers.rst:130 +msgid "Instead, we provide a ``make_interpreter`` method that returns an interpreter method which, in turn, takes care of all these details. This way, all you have to do is provide the functions that transform fields. So the following is equivalent to the above, but better:" +msgstr "" + +#: ../../features/data-importers.rst:143 +msgid "Notice that we provided a callable in two of these keyword arguments, and a (non-callable) Tournament object to the third. ``make_interpreter`` is smart enough to tell the difference, and treat them differently. What it does with each field depends on (a) whether a value exists in the CSV file and (b) what transformation function was provided, as summarised in the following table:" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Value in CSV file" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Transformation" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Action" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "provided and not callable" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "populate model field with interpreter value" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "does not exist or blank" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "callable or not provided" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "do not pass to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:158 ../../features/data-importers.rst:161 +msgid "exists and not blank" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "callable" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "call interpreter on column value, pass result to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "not provided" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "pass column value directly to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:169 +msgid "If a transformation isn't an existing method, you might find `lambda functions `_ useful. For example: ``lambda x: Speaker.objects.get(name=x)``." +msgstr "" + +#: ../../features/data-importers.rst:173 +msgid "You shouldn't check for mandatory fields. If a mandatory field is omitted, the model constructor will throw an error, and ``self._import()`` will catch the error and pass a useful message on to the caller. On the other hand, if it's an optional field in the model, it should optional in the importer, too. Similarly, interpreters generally shouldn't specify defaults; these should be left to model definitions." +msgstr "" + +#: ../../features/data-importers.rst:180 +msgid "You don't need to include interpreter transformations for things like converting strings to integers, floats or booleans. Django converts strings to appropriate values when it instantiates models. So, for example, adding ``test_score=float`` to the above interpreter would be redundant." +msgstr "" + +#: ../../features/data-importers.rst:186 +msgid "More complicated interpreters" +msgstr "" + +#: ../../features/data-importers.rst:188 +msgid "If you have a column in the CSV file that shouldn't be passed to the model constructor, you can tell the interpreter to remove it by using the special ``DELETE`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:199 +msgid "The ``make_interpreter`` can only deal with modifications where each field is modified separately of the others (or not at all). If you want to combine information from multiple fields, you need to write your interpreter the long way (perhaps calling a function returned by ``make_interpreter`` to do some of the work)." +msgstr "" + +#: ../../features/data-importers.rst:205 +msgid "On the other hand, if you don't need to do any transformations involving some sort of object or constant lookup, then you can just omit the ``interpreter`` argument of ``self._lookup()``, and it'll just leave the fields as-is." +msgstr "" + +#: ../../features/data-importers.rst:210 +msgid "Lookup functions" +msgstr "" + +#: ../../features/data-importers.rst:211 +msgid "In the above example, we used a function ``self.lookup_gender`` to convert from the text in the CSV file to a ``Person.GENDER_*`` constant. To make this easier, the importer provides a convenience function to define such lookup functions. Let's look at the relevant lines again:" +msgstr "" + +#: ../../features/data-importers.rst:224 +msgid "This should be a member of your subclass, in our case, ``ExampleTournamentDataImporter``. It generates a function that looks something like:" +msgstr "" + +#: ../../features/data-importers.rst:241 +msgid "The ``make_lookup`` function takes two arguments. The first is a text description of what it's looking up; this is used for the error message if the value in the CSV file isn't recognised. The second is a dict mapping tuples of valid strings to constants." +msgstr "" + +#: ../../features/data-importers.rst:247 +msgid "Debugging output" +msgstr "" + +#: ../../features/data-importers.rst:249 +msgid "The ``BaseTournamentDataImporter`` constructor accepts a ``loglevel`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:255 +msgid "If ``loglevel`` is set to ``logging.DEBUG``, the importer will print information about every instance it creates." +msgstr "" + +#: ../../features/data-importers.rst:258 +msgid "You can also pass in a logger for it to use (instead of the default one) with the ``logger`` argument." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/cs/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..be1fd18b344 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/draw-generation-bp.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: cs_CZ\n" + +#: ../../features/draw-generation-bp.rst:5 +msgid "Draw Generation (BP)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:7 +msgid "The draw generator for British Parliamentary tournaments tries to rotate teams through positions by assigning them positions they've been in less often before the current round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:12 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `. Options in `italics` with an asterisk are not WUDC-compliant. The recommended options are shown in **bold**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:19 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation-bp.rst:20 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation-bp.rst:21 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation-bp.rst:22 +msgid ":ref:`Pullup distribution `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:23 +msgid "Where pullup teams get placed" +msgstr "" + +#: ../../features/draw-generation-bp.rst:24 +msgid "**Anywhere in bracket**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:25 +msgid "*All in the same room*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:26 +msgid ":ref:`Position cost `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:27 +msgid "Which cost function to use to indicate which position profiles are preferred" +msgstr "" + +#: ../../features/draw-generation-bp.rst:28 +#: ../../features/draw-generation-bp.rst:179 +msgid "Simple" +msgstr "" + +#: ../../features/draw-generation-bp.rst:29 +msgid "**Rényi entropy**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:30 +#: ../../features/draw-generation-bp.rst:254 +msgid "Population variance" +msgstr "" + +#: ../../features/draw-generation-bp.rst:31 +msgid ":ref:`Rényi order `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:32 +msgid "Order of Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:33 +msgid "Any non-negative number (default: **1**, *i.e.* Shannon entropy)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:34 +msgid ":ref:`Position cost exponent `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:35 +msgid "Degree to which large position imbalances should be prioritised" +msgstr "" + +#: ../../features/draw-generation-bp.rst:36 +msgid "Any non-negative number (default: **4**)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:37 +msgid ":ref:`Assignment method `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:38 +msgid "Algorithm used to assign positions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:39 +msgid "*Hungarian*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:40 +msgid "**Hungarian with preshuffling**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:45 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation-bp.rst:47 +msgid "To try to achieve position balance, Tabbycat treats the allocation of teams to debates as an `assignment problem `_. That is, it computes the \"cost\" of assigning each team to each position in each debate, and finds an assignment of all teams to a position in a debate that minimises the total cost (the sum over all teams)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:50 +msgid "A simple example" +msgstr "" + +#: ../../features/draw-generation-bp.rst:52 +msgid "Here's a small example, to illustrate the idea. Say you have a tournament with 16 teams, and you're about to draw round 4. There are sixteen \"places\" in the draw: four positions in each of four rooms. Tabbycat calculates the \"cost\" of putting each team in each place, and puts them in a matrix, like this:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Room" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Top" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Second" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Third" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Bottom" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "Position" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +msgid "**A (8)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "16" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +msgid ":q:`0`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "∞" +msgstr "" + +#: ../../features/draw-generation-bp.rst:67 +msgid "**B (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:69 +msgid "**C (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +msgid "**D (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:95 +msgid "0" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:95 +msgid ":q:`16`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:73 +msgid "**E (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:75 +msgid "**F (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:77 +msgid "**G (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:79 +msgid "**H (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:81 +msgid "**I (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:83 +msgid "**J (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:85 +msgid "**K (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:87 +msgid "**L (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:89 +msgid "**M (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:91 +msgid "**N (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:93 +msgid "**O (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:95 +msgid "**P (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:98 +msgid "Each \"16\" is the cost of putting a team in a position it's seen once; each \"0\" is the cost of putting a team in the position it hasn't. (Details of how this is calculated are :ref:`below `.) For example, team A (on 8 points) has been in every position except CO. The ∞'s indicate places where the team isn't allowed to go, because the room isn't in their bracket. For example, the three teams on 6 points (D, E, F) can go in either the top or second room, because any of them can be the pullup team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:100 +msgid "The algorithm then chooses entries so that one is selected from each row and one is selected from each column, in a way that minimises the sum of the selected entries. In this case, the selected entries are highlighted in blue. For example, the top room comprises teams E (OG), B (OO), C (CG) and A (CO)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:102 +msgid "Sometimes, particularly in round 4, it simply isn't possible to \"satisfy\" everyone. For example, among the top eight teams, five haven't been in OO, but only two can be accommodated within those brackets. In this case, teams B and G got lucky; there are also many other draws that would have incurred the same total cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:104 +msgid "More generally, in most cases, there will be many optimal solutions. To randomise the selection among them, Tabbycat (under default settings) randomly permutes the rows and columns of the matrix before starting the assignment algorithm." +msgstr "" + +#: ../../features/draw-generation-bp.rst:107 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:112 +msgid "Pullup distribution" +msgstr "" + +#: ../../features/draw-generation-bp.rst:114 +msgid "If the number of teams in a bracket is not a multiple of four, it pulls up teams from the next bracket down. The pullup distribution then governs how those teams are paired into the upper bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:116 +msgid "The available options are as follows:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:120 +msgid "**Anywhere in bracket:** The pullup teams are treated as if they were any other team in their new bracket. For example, if there are 17 teams in a 10-point bracket, then the three 9-point teams that get pulled up may be paired anywhere in the 10-point bracket, independently of each other. Chance might put them in the same room, but more likely, they will not all be in the same room, so there will be multiple pullup rooms in the 10-point bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:122 +msgid "**All in the same room:** All of the pullup teams will be paired into the same room. This means that there will be at most one pullup room per bracket, effectively creating an \"intermediate bracket\"." +msgstr "" + +#: ../../features/draw-generation-bp.rst:124 +msgid "While it can be argued that the `All in the same room` setting is fairer, it is prohibited by the WUDC constitution. If your tournament follows WUDC rules, you cannot use this setting." +msgstr "" + +#: ../../features/draw-generation-bp.rst:126 +msgid "The teams that get pulled up aren't specifically chosen---they're just assigned as part of the algorithm described :ref:`above `, which optimises for position balance. Tabbycat doesn't support taking anything else into account when choosing pullup teams. (WUDC rules wouldn't allow it, either.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:131 +msgid "Position cost options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:133 +msgid "The `position cost function` is a function that indicates how \"bad\" it would be if a team were to be allocated a certain position (OG, OO, CG, CO) in a debate. When generating a draw, Tabbycat chooses from among the draws that minimise the sum of the position costs for each team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:135 +msgid "More formally:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:139 +msgid "A `position history` or just `history` :math:`\\mathbf{h}` is a 4-tuple where each element is the number of times a team has already been in the corresponding position. For example, :math:`\\mathbf{h} = (0, 2, 1, 1)` means that a team has been in OO twice, CG and CO once each, and hasn't been in OG." +msgstr "" + +#: ../../features/draw-generation-bp.rst:140 +msgid "A cost function :math:`C(\\mathbf{h},s)` is a function specifying how \"bad\" it would be if a team with position history :math:`\\mathbf{h}` were assigned the position :math:`s` in the next round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:142 +msgid "Tabbycat allows you to choose from a number of different **position cost functions**, as well as a **position cost exponent** :math:`\\beta`. Then, when allocating teams to debates, Tabbycat allocates teams to positions :math:`(s_t, t \\in\\mathcal{T})` to minimise" +msgstr "" + +#: ../../features/draw-generation-bp.rst:144 +msgid "\\sum_{t \\in \\mathcal{T}} [C(\\mathbf{h}_t,s_t)]^\\beta" +msgstr "" + +#: ../../features/draw-generation-bp.rst:148 +msgid "where :math:`\\mathcal{T}` is the set of all teams, :math:`\\mathbf{h}_t` is the position history of team :math:`t` and :math:`s_t` is the position to which team :math:`t` would be allocated." +msgstr "" + +#: ../../features/draw-generation-bp.rst:153 +msgid "Position cost exponent" +msgstr "" + +#: ../../features/draw-generation-bp.rst:155 +msgid "The **position cost exponent** :math:`\\beta` controls how different teams trade off with each other." +msgstr "" + +#: ../../features/draw-generation-bp.rst:159 +msgid "The **larger** :math:`\\beta` is, the more concerned it is with preventing *very* bad situations. That is, it will give more teams some slight unevenness in order to prevent one team from getting a `very` uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:161 +msgid "The **smaller** :math:`\\beta` is, the more concerned it is with preventing *any* unevenness. That is, it will try to keep more teams from being uneven *at all*, at the cost of possibly letting just one team get a very uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:163 +msgid "At the large extreme, as :math:`\\beta\\rightarrow\\infty`, it will do everything it can to minimise the plight of the *worst-off* team, and it won't care for *any* team other than the worst-off." +msgstr "" + +#: ../../features/draw-generation-bp.rst:165 +msgid "At the small extreme, as :math:`\\beta\\rightarrow 0`, it will do everything it can to minimise the number of teams with a non-optimal profile---but if it's impossible to protect a team from sub-optimality, it won't care *how* uneven the unlucky team gets." +msgstr "" + +#: ../../features/draw-generation-bp.rst:167 +msgid "The \"balanced\" approach would be :math:`\\beta = 1`, which just takes the cost function as-is. This doesn't mean that this is the best idea, however---you'd typically want to bias towards preventing very uneven histories a bit more. Most tournaments will probably want :math:`\\beta` to be somewhere between 2 and 5. (Note that :math:`\\beta` need not be an integer.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:172 +msgid "Position cost functions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:174 +msgid "Tabbycat allows you to choose between three position cost functions :math:`C(\\mathbf{h},s)`: **Simple**, **Rényi entropy** and **Population variance**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:176 +msgid "In the descriptions that follow, :math:`\\mathcal{S} = \\{\\texttt{OG}, \\texttt{OO}, \\texttt{CG}, \\texttt{CO}\\}`, the set of all BP positions." +msgstr "" + +#: ../../features/draw-generation-bp.rst:181 +msgid "The simple cost function :math:`C_\\textrm{simple}(\\mathbf{h},s)` returns the number of times the team has already been in position :math:`s`, less the number of times the team has been in its least frequent position. That is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:183 +msgid "C_\\mathrm{simple}(\\mathbf{h},s) = \\mathbf{h}[s] - \\min_{s' \\in\\mathcal{S}} \\mathbf{h}[s']" +msgstr "" + +#: ../../features/draw-generation-bp.rst:187 +msgid "where :math:`\\mathbf{h}[s]` is the element of :math:`\\mathbf{h}` corresponding to position :math:`s`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:190 +msgid "Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:192 +msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:194 +msgid "The Rényi entropy takes one parameter, known as its *order*, :math:`\\alpha`, which will be further discussed below." +msgstr "" + +#: ../../features/draw-generation-bp.rst:196 +msgid "More formally, the Rényi entropy cost function :math:`C_\\textrm{R\\'enyi}(\\mathbf{h},s)` is defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:198 +msgid "C_\\textrm{R\\'enyi}(\\mathbf{h},s) = n_\\mathbf{h} [2 - H_\\alpha(\\hat{p}_{\\mathbf{h},s})]" +msgstr "" + +#: ../../features/draw-generation-bp.rst:202 +msgid "where" +msgstr "" + +#: ../../features/draw-generation-bp.rst:206 +msgid ":math:`n_\\mathbf{h} = \\sum_{s'} \\mathbf{h}[s']` is the number of rounds the team has competed in so far." +msgstr "" + +#: ../../features/draw-generation-bp.rst:207 +msgid ":math:`\\hat{p}_{\\mathbf{h},s}` is the *normalised hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:209 +msgid "\\hat{p}_{\\mathbf{h},s}[s'] = \\begin{cases} \\frac{1}{n_\\mathbf{h} + 1} (\\mathbf{h}[s'] + 1), &\\text{ if } s = s', \\\\ \\frac{1}{n_\\mathbf{h} + 1} \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:216 +msgid "Note that :math:`\\hat{p}_{\\mathbf{h},s}` is a probability distribution (that is, its elements sum to 1)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:218 +msgid ":math:`H_\\alpha(\\cdot)` is the `Rényi entropy `_ of order :math:`\\alpha` of a probability distribution, defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:220 +msgid "H_\\alpha(p) = \\frac{1}{1-\\alpha} \\log_2 \\left( \\sum_{s\\in\\mathcal{S}} (p[s])^\\alpha \\right), \\qquad \\alpha \\ne 1." +msgstr "" + +#: ../../features/draw-generation-bp.rst:224 +msgid "In the special (limiting) case where :math:`\\alpha=1`, it reduces to the `Shannon entropy `_," +msgstr "" + +#: ../../features/draw-generation-bp.rst:226 +msgid "H_1(p) =-\\sum_{s\\in\\mathcal{S}} p[s] \\log_2 p[s]." +msgstr "" + +#: ../../features/draw-generation-bp.rst:230 +msgid "Note that for all :math:`\\alpha`, :math:`0 \\le H_\\alpha(p) \\le \\log_2(4) = 2` (since there are four positions in BP)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:234 +msgid "The **Rényi order** is the parameter :math:`\\alpha` above, and it controls *what it means to be \"even among positions\"* for a team. Note that \"evenness\" is not easily defined. After round 8, which position history is more even: (0, 2, 3, 3) or (1, 1, 1, 5)? The Rényi order allows us to tune this definition." +msgstr "" + +#: ../../features/draw-generation-bp.rst:238 +msgid "The **smaller** :math:`\\alpha` is, the more it cares that teams compete in every position *at least* once, favouring (1, 1, 1, 5) over (0, 2, 3, 3): it's worse to have never OGed, than it is to have COed five times." +msgstr "" + +#: ../../features/draw-generation-bp.rst:240 +msgid "The **larger** :math:`\\alpha` is, the more it cares that teams do not compete in *any* (one) position too many times, favouring (0, 2, 3, 3) over (1, 1, 1, 5): it's worse to have COed five times, than it is to have never OGed." +msgstr "" + +#: ../../features/draw-generation-bp.rst:242 +msgid "At the small extreme, as :math:`\\alpha\\rightarrow0`, it *only* counts how many positions a team has seen at least once, and doesn't care about the distribution among them so long as a team has been in each position once." +msgstr "" + +#: ../../features/draw-generation-bp.rst:244 +msgid "At the large extreme, as :math:`\\alpha\\rightarrow\\infty`, it *only* looks at how many times each team has seen its *most frequent* position, and tries to keep this number even among all teams." +msgstr "" + +#: ../../features/draw-generation-bp.rst:246 +msgid "The \"balanced\" approach would be :math:`\\alpha=1` (the `Shannon entropy `_), though of course it's arguable what \"balanced\" means. Tabbycat defaults to this value." +msgstr "" + +#: ../../features/draw-generation-bp.rst:248 +msgid "To give some intuition for the useful range: In round 9, a strict ordering by number of positions seen at least once occurs for approximately :math:`\\alpha < 0.742`. A strict ordering by number of times in the most frequent position occurs for :math:`\\alpha>3`. Changing :math:`\\alpha` outside the range :math:`[0.742, 3]` will still affect the relative (cardinal) weighting *between teams*, but will not affect the *ordinal* ranking of possible histories." +msgstr "" + +#: ../../features/draw-generation-bp.rst:250 +msgid "The purpose of weighting costs by :math:`n_\\mathbf{h}` is to prioritise those teams who have competed in every round over those who have competed in fewer rounds." +msgstr "" + +#: ../../features/draw-generation-bp.rst:256 +msgid "The **population variance** cost function is just the population variance of the history 4-tuple," +msgstr "" + +#: ../../features/draw-generation-bp.rst:258 +msgid "C_\\textrm{popvar}(\\mathbf{h},s) = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\left(\\mathbf{\\hat{h}}_s[s'] - \\mu_{\\mathbf{\\hat{h}}_s} \\right)^2," +msgstr "" + +#: ../../features/draw-generation-bp.rst:262 +msgid "where :math:`\\mathbf{\\hat{h}}_s` is the *hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:264 +msgid "\\mathbf{\\hat{h}}_s[s'] = \\begin{cases} \\mathbf{h}[s'] + 1, &\\text{ if } s = s', \\\\ \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:271 +msgid "and where :math:`\\mu_{\\mathbf{\\hat{h}}_s}` is the mean of :math:`\\mathbf{\\hat{h}}_s`," +msgstr "" + +#: ../../features/draw-generation-bp.rst:273 +msgid "\\mu_{\\mathbf{\\hat{h}}_s} = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\mathbf{\\hat{h}}_s[s']." +msgstr "" + +#: ../../features/draw-generation-bp.rst:277 +msgid "At the extremes, a team that has seen all positions evenly will have a population variance of zero, while a team that has seen just one position :math:`n` times will have a population variance of :math:`\\frac{3n^2}{16}`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:282 +msgid "Assignment method" +msgstr "" + +#: ../../features/draw-generation-bp.rst:284 +msgid "Tabbycat uses the `Hungarian algorithm `_ to solve the `assignment problem `_ of assigning teams to positions in debates. This can be run with or without preshuffling:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:288 +msgid "**Hungarian algorithm** just runs the Hungarian algorithm as-is, with no randomness. This probably isn't what you want." +msgstr "" + +#: ../../features/draw-generation-bp.rst:290 +msgid "**Hungarian algorithm with preshuffling** also runs the Hungarian algorithm on the position cost matrix, but shuffles the input so that the draw is randomised, subject to having optimal position allocations." +msgstr "" + +#: ../../features/draw-generation-bp.rst:292 +msgid "Preshuffling doesn't compromise the optimality of position allocations: It simply shuffles the order in which teams and debates appear in the input to the algorithm, by randomly permuting the rows and columns of the position cost matrix. The Hungarian algorithm still guarantees an optimal position assignment, according to the chosen position cost function." +msgstr "" + +#: ../../features/draw-generation-bp.rst:294 +msgid "Running the Hungarian algorithm *without* preshuffling has the side effect of grouping teams with similar speaker scores in to the same room, and is therefore prohibited by WUDC rules. Its inclusion as an option is mainly academic; most tournaments will not want to use it in practice." +msgstr "" + +#: ../../features/draw-generation-bp.rst:296 +msgid "No other assignment methods are currently supported. For example, Tabbycat can't run fold (high-low) or adjacent (high-high) pairing *within* brackets." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/draw-generation.po b/docs/locale/cs/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..64f2596a59c --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/draw-generation.po @@ -0,0 +1,436 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: cs_CZ\n" + +#: ../../features/draw-generation.rst:5 +msgid "Draw Generation" +msgstr "" + +#: ../../features/draw-generation.rst:7 +msgid "The draw generator is quite flexible. You can specify a number of settings to suit different tournaments' rules." +msgstr "" + +#: ../../features/draw-generation.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation.rst:11 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `." +msgstr "" + +#: ../../features/draw-generation.rst:18 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation.rst:19 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation.rst:20 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation.rst:22 +msgid ":ref:`Odd bracket resolution method `" +msgstr "" + +#: ../../features/draw-generation.rst:23 +msgid "How to resolve odd brackets" +msgstr "" + +#: ../../features/draw-generation.rst:24 +msgid "Pull up from top" +msgstr "" + +#: ../../features/draw-generation.rst:25 +msgid "Pull up from bottom" +msgstr "" + +#: ../../features/draw-generation.rst:26 +msgid "Pull up from middle" +msgstr "" + +#: ../../features/draw-generation.rst:27 +msgid "Pull up at random" +msgstr "" + +#: ../../features/draw-generation.rst:29 +msgid "If sides are `Random` or `Balance`:" +msgstr "" + +#: ../../features/draw-generation.rst:31 +msgid "Intermediate" +msgstr "" + +#: ../../features/draw-generation.rst:32 +msgid "Intermediate with bubble-up-bubble-down" +msgstr "" + +#: ../../features/draw-generation.rst:34 +msgid "If sides are `Pre-allocated`:" +msgstr "" + +#: ../../features/draw-generation.rst:36 +msgid "Intermediate 1" +msgstr "" + +#: ../../features/draw-generation.rst:37 +msgid "Intermediate 2" +msgstr "" + +#: ../../features/draw-generation.rst:39 +msgid ":ref:`Side allocations method `" +msgstr "" + +#: ../../features/draw-generation.rst:40 +msgid "How to allocate aff/neg" +msgstr "" + +#: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 +msgid "Random" +msgstr "" + +#: ../../features/draw-generation.rst:42 +msgid "Balance" +msgstr "" + +#: ../../features/draw-generation.rst:43 +msgid "Pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:44 +msgid "Manual ballot" +msgstr "" + +#: ../../features/draw-generation.rst:46 +msgid ":ref:`Pairing method `" +msgstr "" + +#: ../../features/draw-generation.rst:47 +msgid "How to pair teams within brackets" +msgstr "" + +#: ../../features/draw-generation.rst:48 +msgid "Slide" +msgstr "" + +#: ../../features/draw-generation.rst:49 +msgid "Fold" +msgstr "" + +#: ../../features/draw-generation.rst:50 +msgid "Adjacent" +msgstr "" + +#: ../../features/draw-generation.rst:53 +msgid ":ref:`Conflict avoidance method `" +msgstr "" + +#: ../../features/draw-generation.rst:54 +msgid "How to avoid history/institution conflicts" +msgstr "" + +#: ../../features/draw-generation.rst:55 +msgid "Off" +msgstr "" + +#: ../../features/draw-generation.rst:56 +msgid "One-up-one-down" +msgstr "" + +#: ../../features/draw-generation.rst:58 +msgid ":ref:`Pullup restriction `" +msgstr "" + +#: ../../features/draw-generation.rst:59 +msgid "Whether and how to restrict pullups" +msgstr "" + +#: ../../features/draw-generation.rst:60 +msgid "No restriction" +msgstr "" + +#: ../../features/draw-generation.rst:61 +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../features/draw-generation.rst:62 +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: ../../features/draw-generation.rst:64 +msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." +msgstr "" + +#: ../../features/draw-generation.rst:67 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation.rst:68 +msgid "When generating a power-paired draw, Tabbycat goes through five steps:" +msgstr "" + +#: ../../features/draw-generation.rst:70 +msgid "First, it divides teams into \"raw brackets\", grouping them by the number of wins." +msgstr "" + +#: ../../features/draw-generation.rst:71 +msgid "Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called \"pulling up\" teams." +msgstr "" + +#: ../../features/draw-generation.rst:72 +msgid "Third, within each bracket, it pairs teams into debates using the pairing method." +msgstr "" + +#: ../../features/draw-generation.rst:73 +msgid "Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts." +msgstr "" + +#: ../../features/draw-generation.rst:74 +msgid "Finally, it assigns sides to teams in each debate." +msgstr "" + +#: ../../features/draw-generation.rst:76 +msgid "For each of these steps except the first, Tabbycat allows you to choose between a number of different methods." +msgstr "" + +#: ../../features/draw-generation.rst:80 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation.rst:85 +msgid "Odd bracket resolution" +msgstr "" + +#: ../../features/draw-generation.rst:86 +msgid "The **draw odd brackets** option specifies what you do when a bracket has an odd number of teams. (Obviously you have to do something, otherwise you can't pair off teams within the bracket.) There are two groups of methods: pull-up and intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:90 +msgid "**Pull-up methods** take one or more teams from the next bracket down, and move them into the odd bracket to fill the bracket." +msgstr "" + +#: ../../features/draw-generation.rst:92 +msgid "**Intermediate brackets** take the excess teams from the odd bracket and move them down into a new bracket, which sits between the odd bracket and the next one down (the \"intermediate bracket\"). It then takes teams from the next bracket down and moves them up to fill the new intermediate bracket." +msgstr "" + +#: ../../features/draw-generation.rst:94 +msgid "The exact mechanics depend on whether or not sides are pre-allocated." +msgstr "" + +#: ../../features/draw-generation.rst:97 +msgid "When sides are not pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:101 +msgid "**Pull-up methods:** Take a team from the next bracket down, and add them to the odd bracket to form an even bracket. You can choose to pull up the top team from the next bracket, or the bottom team, or the middle team, or a randomly chosen team. (If you pull up the middle team, and the bracket has an even number of teams, then it will choose randomly from the two middle teams.)" +msgstr "" + +#: ../../features/draw-generation.rst:103 +msgid "**Intermediate brackets:** Take the bottom team from the odd bracket and match them against the top team from the next bracket. An intermediate bracket always has two teams." +msgstr "" + +#: ../../features/draw-generation.rst:105 +msgid "If you're using conflict avoidance and intermediate brackets, you will probably want to use **Intermediate with bubble-up-bubble-down** instead. This uses the \"bubble-up-bubble-down\" rule to swap teams out of an intermediate bracket if there is a history or institution conflict. This is defined in the Australs constitution and is analogous to the \"one-up-one-down\" rule." +msgstr "" + +#: ../../features/draw-generation.rst:107 +msgid "Using `Intermediate` with `One-up-one-down` does **not** imply `Intermediate with bubble-up-bubble-down`. You must enable `Intermediate with bubble-up-bubble-down` specifically." +msgstr "" + +#: ../../features/draw-generation.rst:110 +msgid "When sides are pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:111 +msgid "When sides are pre-allocated, an \"odd bracket\" is one that has an uneven number of affirmative and negative teams. (So odd brackets can have an even number of teams, *e.g.* 4 affs and 2 negs.)" +msgstr "" + +#: ../../features/draw-generation.rst:115 +msgid "**Pull-up methods:** Take as many teams from the next bracket down as necessary to fill the bracket. If there aren't enough teams in the next bracket down, take teams from the bracket after that, and so on, until the (original) odd bracket is filled. Higher brackets are always filled first. You can choose to pull up the top teams from the next bracket, the bottom teams, or a random selection of teams." +msgstr "" + +#: ../../features/draw-generation.rst:117 +msgid "**Intermediate brackets:** Take the unpaired teams in a bracket, and move them down to a new intermediate bracket. Then, take the number of teams necessary from the opposite side, from the next bracket down, to fill the next bracket." +msgstr "" + +#: ../../features/draw-generation.rst:119 +msgid "**Intermediate 1** and **Intermediate 2** differ only in what happens if there aren't enough teams in the next bracket to fill the intermediate bracket. In **Intermediate 1**, it will just take teams from the bracket after that, and so on, until the intermediate bracket is filled. In **Intermediate 2**, it will split the intermediate bracket: the teams that can be paired with the next bracket form the first intermediate bracket, and then the teams that aren't form a new (unfilled) intermediate bracket, to be filled from teams from the bracket after that. This keeps going, splitting into as many intermediate brackets as necessary, until all excess teams from the original odd bracket are paired." +msgstr "" + +#: ../../features/draw-generation.rst:124 +msgid "Side allocations" +msgstr "" + +#: ../../features/draw-generation.rst:125 +msgid "There are four methods:" +msgstr "" + +#: ../../features/draw-generation.rst:129 +msgid "**Random** allocates randomly. Some tournaments might like this, but most will probably want to use Balance, because Random doesn't guarantee that a team won't be (say) affirming the entire tournament." +msgstr "" + +#: ../../features/draw-generation.rst:130 +msgid "**Balance** assigns the team that has affirmed less so far the affirmative side (and, therefore, the team that has negated less the negative side). If both teams have affirmed the same number of times, it assigns sides randomly." +msgstr "" + +#: ../../features/draw-generation.rst:131 +msgid "**Preallocated** is used for pre-allocated sides. If used, you must enter data for pre-allocated sides into the database, as specified below." +msgstr "" + +#: ../../features/draw-generation.rst:132 +msgid "**Manually enter from ballot** is used for tournaments where the sides of the teams involved are not assigned in advance, but are instead determined by the teams themselves" +msgstr "" + +#: ../../features/draw-generation.rst:135 +msgid "Pre-allocated sides" +msgstr "" + +#: ../../features/draw-generation.rst:136 +msgid "There isn't currently any way to edit side allocations from the front end. To do so from the back end, you need to create one ``TeamPositionAllocation`` entry for each team in each round. All teams must have an allocation for every round. There are a few ways to do this, take your pick:" +msgstr "" + +#: ../../features/draw-generation.rst:140 +msgid "If you're using the :ref:`importtournament command `, it reads sides from the file sides.csv." +msgstr "" + +#: ../../features/draw-generation.rst:141 +msgid "You can do this from the Django admin interface (under Setup > Edit Database) by going to the relevant team and adding a **team position allocation** entry. That is:" +msgstr "" + +#: ../../features/draw-generation.rst:143 +msgid "Click **Admin** on the bottom right of any page after logging into an account with :ref:`superuser access `." +msgstr "" + +#: ../../features/draw-generation.rst:144 +msgid "Next to **Teams**, click **Change**." +msgstr "" + +#: ../../features/draw-generation.rst:145 +msgid "Click on the name of the team you want to edit side allocations for." +msgstr "" + +#: ../../features/draw-generation.rst:146 +msgid "Add or edit the entry or entries in the **Team position allocations** table at the bottom." +msgstr "" + +#: ../../features/draw-generation.rst:148 +msgid "You can also do this by writing a script that creates ``TeamPositionAllocation`` objects and saves them. Have a look at `draw/management/commands/generatesideallocations.py `_ for an example." +msgstr "" + +#: ../../features/draw-generation.rst:153 +msgid "Pairing method" +msgstr "" + +#: ../../features/draw-generation.rst:154 +msgid "It's easiest to describe these by example, using a ten-team bracket:" +msgstr "" + +#: ../../features/draw-generation.rst:156 +msgid "**Fold**: 1 vs 10, 2 vs 9, 3 vs 8, 4 vs 7, 5 vs 6. (Also known as high-low pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:157 +msgid "**Slide**: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10." +msgstr "" + +#: ../../features/draw-generation.rst:158 +msgid "**Adjacent**: 1 vs 2, 3 vs 4, 5 vs 6, 7 vs 8, 9 vs 10. (Also known as high-high pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:159 +msgid "**Random**: paired at random within bracket." +msgstr "" + +#: ../../features/draw-generation.rst:161 +msgid "Teams are always paired within their brackets, after resolving odd brackets." +msgstr "" + +#: ../../features/draw-generation.rst:166 +msgid "Conflict avoidance method" +msgstr "" + +#: ../../features/draw-generation.rst:167 +msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." +msgstr "" + +#: ../../features/draw-generation.rst:169 +msgid "You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented." +msgstr "" + +#: ../../features/draw-generation.rst:171 +msgid "**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict:" +msgstr "" + +#: ../../features/draw-generation.rst:173 +msgid "It tries to swap teams with the debate \"one up\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:174 +msgid "If that doesn't work, it tries to swap teams with the debate \"one down\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:175 +msgid "If neither of those works, it accepts the original conflicted debate." +msgstr "" + +#: ../../features/draw-generation.rst:177 +msgid "It's a bit more complicated than that, for two reasons:" +msgstr "" + +#: ../../features/draw-generation.rst:181 +msgid "History conflicts are prioritised over (*i.e.*, \"worse than\") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa." +msgstr "" + +#: ../../features/draw-generation.rst:182 +msgid "Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could \"one down\" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps." +msgstr "" + +#: ../../features/draw-generation.rst:187 +msgid "Pullup restriction" +msgstr "" + +#: ../../features/draw-generation.rst:188 +msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" +msgstr "" + +#: ../../features/draw-generation.rst:192 +msgid "You can **choose from teams who have been pulled up the fewest times so far**, that is, in rounds before the current round. Most of the time, this is equivalent to saying that a team cannot be pulled up more than once. But if *all* teams in a bracket have been pulled up at least once, it then chooses from among teams who have been pulled up *only* once (if any), and so on." +msgstr "" + +#: ../../features/draw-generation.rst:194 +msgid "You can **choose from teams with the lowest draw strength so far**, by **wins** or **speaks**." +msgstr "" + +#: ../../features/draw-generation.rst:196 +msgid "If you choose speaks, it's unlikely that two teams will have the same draw strength by speaks, so most of the time this will just choose the team in the lower bracket that's had the easiest draw so far (as measured by their opponents' speaker scores)." +msgstr "" + +#: ../../features/draw-generation.rst:198 +msgid "Pullup restrictions only apply when the :ref:`odd bracket resolution method ` is a pullup method. They have no effect on intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:201 +msgid "What do I do if the draw looks wrong?" +msgstr "" + +#: ../../features/draw-generation.rst:203 +msgid "You can edit match-ups directly from the draw page. Functionally, you can do anything you want. Of course, operationally, you should only edit the draw when you *know* that the draw algorithm got something wrong. If you need to do this, even just once, please file a bug report by creating a new issue on `our issues page on GitHub `_." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/notifications.po b/docs/locale/cs/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..6dfea09c2dc --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/notifications.po @@ -0,0 +1,257 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: cs_CZ\n" + +#: ../../features/notifications.rst:3 +msgid "Sending Notifications" +msgstr "" + +#: ../../features/notifications.rst:5 +msgid "Tabbycat offers integrations with email delivery services to send notifications to participants on certain enumerated events. For sending these emails, `SendGrid `_ is readily available as an add-on in Heroku. It may be necessary to install the `SendGrid add-on `_ manually. Other integrations may also be used in its place by changing the relevant environment variables." +msgstr "" + +#: ../../features/notifications.rst:8 +msgid "Events" +msgstr "" + +#: ../../features/notifications.rst:10 +msgid "Tabbycat includes a number of templated notifications that can be sent in various times. Variables which are included between curly brackets which are substituted for personalized information passed by email. Links to email will redirect to a page where the message can be changed and the participants selected." +msgstr "" + +#: ../../features/notifications.rst:12 +msgid "All emails have the ``{{ USER }}`` and ``{{ TOURN }}`` variables to indicate who the email is sent to, and the tournament it relates to. The \"From\" in the emails will also be the tournament's name." +msgstr "" + +#: ../../features/notifications.rst:17 +msgid "Email content and description" +msgstr "" + +#: ../../features/notifications.rst:18 +msgid "Variables" +msgstr "" + +#: ../../features/notifications.rst:20 +msgid "**Adjudicator draw notification**" +msgstr "" + +#: ../../features/notifications.rst:22 +msgid "Email to adjudicators indicating their room assignment." +msgstr "" + +#: ../../features/notifications.rst:24 ../../features/notifications.rst:36 +#: ../../features/notifications.rst:74 +msgid "Available through the admin draw page." +msgstr "" + +#: ../../features/notifications.rst:25 ../../features/notifications.rst:37 +msgid "``{{ ROUND }}``: The round name" +msgstr "" + +#: ../../features/notifications.rst:26 ../../features/notifications.rst:38 +msgid "``{{ VENUE }}``: The venue of the assigned debate" +msgstr "" + +#: ../../features/notifications.rst:27 ../../features/notifications.rst:39 +msgid "``{{ PANEL }}``: A list of all the adjudicators assigned to the venue (with positions)" +msgstr "" + +#: ../../features/notifications.rst:28 ../../features/notifications.rst:40 +msgid "``{{ DRAW }}``: A list of the team matchup with their roles" +msgstr "" + +#: ../../features/notifications.rst:29 +msgid "``{{ POSITION }}``: The target adjudicator's position in the panel" +msgstr "" + +#: ../../features/notifications.rst:30 +msgid "``{{ URL }}``: A link to the adjudicator's private URL page" +msgstr "" + +#: ../../features/notifications.rst:32 +msgid "**Team draw notification**" +msgstr "" + +#: ../../features/notifications.rst:34 +msgid "Email to teams indicating their pairing." +msgstr "" + +#: ../../features/notifications.rst:41 +msgid "``{{ TEAM }}``: The team's code or short name" +msgstr "" + +#: ../../features/notifications.rst:42 +msgid "``{{ SIDE }}``: The team's side" +msgstr "" + +#: ../../features/notifications.rst:44 +msgid "**Private URL distribution**" +msgstr "" + +#: ../../features/notifications.rst:46 +msgid "Email to participants giving them their private URL for electronic forms." +msgstr "" + +#: ../../features/notifications.rst:48 +msgid "Available through the private URLs page." +msgstr "" + +#: ../../features/notifications.rst:49 +msgid "``{{ URL }}``: The personalized URL" +msgstr "" + +#: ../../features/notifications.rst:50 +msgid "``{{ KEY }}``: The private code in the URL" +msgstr "" + +#: ../../features/notifications.rst:52 +msgid "**Ballot submission receipt**" +msgstr "" + +#: ../../features/notifications.rst:54 +msgid "Email to adjudicators of their ballot after tabroom confirmation." +msgstr "" + +#: ../../features/notifications.rst:56 +msgid "Sent automatically when their ballot's result status becomes confirmed, if enabled in the \"Notifications\" section of the tournament options." +msgstr "" + +#: ../../features/notifications.rst:58 +msgid "``{{ DEBATE }}``: The name (with round & venue) of the relevent debate" +msgstr "" + +#: ../../features/notifications.rst:59 +msgid "``{{ SCORES }}``: The submitted ballot with speaker scores ands team names" +msgstr "" + +#: ../../features/notifications.rst:61 +msgid "**Current team standings**" +msgstr "" + +#: ../../features/notifications.rst:63 +msgid "Email to speakers with their point total." +msgstr "" + +#: ../../features/notifications.rst:65 +msgid "Available through the \"Confirm Round Completion\" page." +msgstr "" + +#: ../../features/notifications.rst:66 +msgid "``{{ URL }}``: The URL of the team standings page (if public)" +msgstr "" + +#: ../../features/notifications.rst:67 +msgid "``{{ TEAM }}``: The team's name" +msgstr "" + +#: ../../features/notifications.rst:68 +msgid "``{{ POINTS }}``: The team's number of points" +msgstr "" + +#: ../../features/notifications.rst:70 +msgid "**Motion release**" +msgstr "" + +#: ../../features/notifications.rst:72 +msgid "Email to speakers with the motion(s) of the current round." +msgstr "" + +#: ../../features/notifications.rst:75 +msgid "``{{ ROUND }}``: The name of the round" +msgstr "" + +#: ../../features/notifications.rst:76 +msgid "``{{ MOTIONS }}``: A list of the motions released" +msgstr "" + +#: ../../features/notifications.rst:78 +msgid "**Team information**" +msgstr "" + +#: ../../features/notifications.rst:80 +msgid "Email to speakers with information pertaining to their team, such as eligibility and codes." +msgstr "" + +#: ../../features/notifications.rst:82 +msgid "Available through the Participants page." +msgstr "" + +#: ../../features/notifications.rst:83 +msgid "``{{ SHORT }}``: The team's short name" +msgstr "" + +#: ../../features/notifications.rst:84 +msgid "``{{ LONG }}``: The team's long name" +msgstr "" + +#: ../../features/notifications.rst:85 +msgid "``{{ CODE }}``: The team's code name" +msgstr "" + +#: ../../features/notifications.rst:86 +msgid "``{{ EMOJI }}``: The team's assigned emoji" +msgstr "" + +#: ../../features/notifications.rst:87 +msgid "``{{ DIVISION }}``: The team's division if applicable" +msgstr "" + +#: ../../features/notifications.rst:88 +msgid "``{{ BREAK }}``: Break categories which the team is a member" +msgstr "" + +#: ../../features/notifications.rst:89 +msgid "``{{ SPEAKERS }}``: A list of the speakers in the team" +msgstr "" + +#: ../../features/notifications.rst:90 +msgid "``{{ INSTITUTION }}``: The team's affiliation" +msgstr "" + +#: ../../features/notifications.rst:93 +msgid "Event Webhook" +msgstr "" + +#: ../../features/notifications.rst:95 +msgid "With SendGrid, the status of sent emails can be sent to Tabbycat to be displayed, giving an indication of failures and whether participants have opened the messages. To activate this feature, setup must be done both in your SendGrid account and in Tabbycat." +msgstr "" + +#: ../../features/notifications.rst:97 +msgid "Set a secret key in the Email section of the tournament's preferences. This key must be alphanumeric without any spaces." +msgstr "" + +#: ../../features/notifications.rst:98 +msgid "Copy the \"web-hook\" link presented in a box at the top of the \"email participants\" page." +msgstr "" + +#: ../../features/notifications.rst:99 +msgid "Go to https://app.sendgrid.com/settings/mail_settings and select \"Event Notifications\"" +msgstr "" + +#: ../../features/notifications.rst:100 +msgid "Enable the feature and paste the Tabbycat URL under \"HTTP POST URL\"." +msgstr "" + +#: ../../features/notifications.rst:101 +msgid "Select the notifications to keep track (or all of them)." +msgstr "" + +#: ../../features/notifications.rst:103 +msgid "Each email and change in status sent to Tabbycat will add a row to the database. If the number of rows is limited, as is for free Heroku apps, enabling the webhook may use up a significant number of rows. Be selective in the events to keep track." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/preformed-panels.po b/docs/locale/cs/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..95aaa1e240a --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/preformed-panels.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: cs_CZ\n" + +#: ../../features/preformed-panels.rst:5 +msgid "Preformed Panels" +msgstr "" + +#: ../../features/preformed-panels.rst:7 +msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." +msgstr "" + +#: ../../features/preformed-panels.rst:9 +msgid "Tabbycat's implementation of preformed panels is more powerful, but less simple, than many others. The chief difference is that our workflow does not simply transpose a linear set of preformed panels atop a draw. Instead we employ Tabbycat's existing allocation tools, primarily the notion of a debate's *priority*, to allow for a non-linear matching of preformed panels that avoids adjudicator conflicts and better adapts to a given draw — particularly when the most important debates do not strictly follow the highest debate brackets." +msgstr "" + +#: ../../features/preformed-panels.rst:11 +msgid "The central concept is that each preformed panel has a priority value. When applying preformed panels to a draw, the allocator ties to best match the priority value of each preformed panel to the priority of each actual debate. This is similar to how Tabbycat's normal auto-allocator matches the strength of each panel (as measured by adjudicators' ratings) to the priority of each debate." +msgstr "" + +#: ../../features/preformed-panels.rst:14 +msgid "Step 1: Create preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:16 +msgid "You can find the preformed panels section either" +msgstr "" + +#: ../../features/preformed-panels.rst:18 +msgid "under the **Setup** menu (for all rounds), or" +msgstr "" + +#: ../../features/preformed-panels.rst:19 +msgid "on the **Draw** page (for the current and next round)." +msgstr "" + +#: ../../features/preformed-panels.rst:21 +msgid "Initially, the preformed panels page will have no panels. Click the **Create Panels** button in the top left to make some. The panels it creates are based upon a projection of that round's general results using the results of the previous round. As a result, each preformed panel will have a *bracket range*, the lowest and highest brackets that debate might be in, and a *liveness range*, the maximum number of teams that could be live in that room." +msgstr "" + +#: ../../features/preformed-panels.rst:25 +msgid "Like the normal adjudicator allocation interface, the preformed panel interfaces will indicate when an adjudicator has not been marked as available. If using preformed panels, you may want to set adjudicator availability earlier than you would otherwise." +msgstr "" + +#: ../../features/preformed-panels.rst:27 +msgid "Liveness in the anticipated draw only pertains to the open category (the first break category that is marked as a \"general\" category). It's not possible to meaningfully predict where teams open-dead but live in other categories will end up." +msgstr "" + +#: ../../features/preformed-panels.rst:30 +msgid "Step 2: Assign priorities to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:32 +msgid "By default the priority slider for all preformed panels is in the neutral position. You can use the \"Prioritise\" button in the top left to assign priority values automatically, based upon their brackets or liveness. Before or after this step you can alter the priorities as usual — even after you have allocated adjudicators." +msgstr "" + +#: ../../features/preformed-panels.rst:34 +msgid "It's important to remember to assign a range of priorities to the panels. Without distinct priority values, the application of your preformed panels to the actual draw will be essentially random. If allocating priorities manually, it is a good idea to keep a relatively even distribution of priorities — use the range!" +msgstr "" + +#: ../../features/preformed-panels.rst:36 +msgid "In Round 1, each debate has a liveness and bracket of 0. If you are using preformed panels in this instance you may need to manually-differentiate their priorities." +msgstr "" + +#: ../../features/preformed-panels.rst:39 +msgid "Step 3: Allocate adjudicators to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:43 +msgid "Now that your panels have a priority, you can begin allocating adjudicators. You can do this manually, but do note that the normal auto-allocator for adjudicators also works in this context (the \"Allocate\" button). Even if you want to tweak your panels extensively, the auto-allocator can provide a good first-pass collection of panels, because it will give stronger adjudicators to the panels that you have marked as important." +msgstr "" + +#: ../../features/preformed-panels.rst:45 +msgid "The created panels all auto-save, so you can leave the page and return to pick up where you left. Like the main allocation interface, changes should appear 'live' across different computers and the sharding system is available to divide up each person's view of the draw." +msgstr "" + +#: ../../features/preformed-panels.rst:48 +msgid "Step 4: Generate the draw" +msgstr "" + +#: ../../features/preformed-panels.rst:50 +msgid "Proceed with the creation of the draw as usual. Open up the normal adjudicator allocation page for that round." +msgstr "" + +#: ../../features/preformed-panels.rst:53 +msgid "Step 5: Assign priorities to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:55 +msgid "When allocating preformed panels, the priority levels are what connects the preformed panels to the actual debates. It is thus crucial that you assign priorities to the debates in the actual draw using automatic prioritisation or the manual sliders. Because the automatic prioritiser does not employ the highest priority value, it is worth having a look at the draw and seeing if any debates justify this before proceeding." +msgstr "" + +#: ../../features/preformed-panels.rst:58 +msgid "Step 6: Allocate preformed panels to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:60 +msgid "To allocate preformed panels to your debates, click the normal \"Allocate\" button and then select the *Preformed Panels* option." +msgstr "" + +#: ../../features/preformed-panels.rst:64 +msgid "This will then allocate the preformed panels to debates." +msgstr "" + +#: ../../features/preformed-panels.rst:68 +msgid "You can the edit the allocation as normal. If needed, you can redo the allocation of the preformed panels at any point." +msgstr "" + +#: ../../features/preformed-panels.rst:71 +msgid "How does the allocator work?" +msgstr "" + +#: ../../features/preformed-panels.rst:73 +msgid "Roughly speaking, the allocator tries to match panel priorities to debate priorities, while avoiding conflicts. It'll mostly try to swap panels within priority levels in order to avoid conflicts. If there aren't exactly as many panels at each priority level as there are debates, it'll do its best to match what it can." +msgstr "" + +#: ../../features/preformed-panels.rst:75 +msgid "More formally, it treats the allocation of preformed panels to debates as an `assignment problem `_, with a cost of assigning each panel :math:`p` to each debate :math:`d` given by" +msgstr "" + +#: ../../features/preformed-panels.rst:77 +msgid "C(p,d) = w_\\mathrm{mism} [\\mathrm{importance}(p) - \\mathrm{importance(d)}]^2 + w_\\mathrm{conf} \\, \\mathrm{conflicts}(p,d) + w_\\mathrm{hist} \\, \\mathrm{history}(p,d)" +msgstr "" + +#: ../../features/preformed-panels.rst:81 +msgid "where" +msgstr "" + +#: ../../features/preformed-panels.rst:83 +msgid ":math:`w_\\mathrm{mism}` is the \"Importance mismatch penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:84 +msgid ":math:`w_\\mathrm{hist}` is the \"Adjudicator conflict penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:85 +msgid ":math:`w_\\mathrm{conf}` is the \"Adjudicator history penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:86 +msgid ":math:`\\mathrm{importance}(p)` is the importance of panel :math:`p`," +msgstr "" + +#: ../../features/preformed-panels.rst:87 +msgid ":math:`\\mathrm{importance}(d)` is the importance of debate :math:`d`," +msgstr "" + +#: ../../features/preformed-panels.rst:88 +msgid ":math:`\\mathrm{conflicts}(p,d)` is the number of adjudicator-team conflicts between panel :math:`p` and debate :math:`d`, and" +msgstr "" + +#: ../../features/preformed-panels.rst:89 +msgid ":math:`\\mathrm{history}(p,d)` is the number of adjudicators and teams who have seen each other between panel :math:`p` and debate :math:`d`." +msgstr "" + +#: ../../features/preformed-panels.rst:91 +msgid "It then uses the `Hungarian algorithm `_ to find the assignment of panels to debates that minimizes the total cost of the pairings." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/printing.po b/docs/locale/cs/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..cc386225f2a --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/printing.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: cs_CZ\n" + +#: ../../features/printing.rst:3 +msgid "Printing Ballots and Feedback" +msgstr "" + +#: ../../features/printing.rst:5 +msgid "Tabbycat offers the ability to print scoresheets and feedback sheets on a per-round basis. This means that each scoresheet is customised to match the draw, and so will display:" +msgstr "" + +#: ../../features/printing.rst:7 +msgid "The motion or possible motions that could have been chosen from" +msgstr "" + +#: ../../features/printing.rst:8 +msgid "The teams, and a list of speakers for each team" +msgstr "" + +#: ../../features/printing.rst:9 +msgid "The room number, and name of the adjudicators present" +msgstr "" + +#: ../../features/printing.rst:11 +msgid "Feedback sheets will also be customised in this manner; displaying:" +msgstr "" + +#: ../../features/printing.rst:13 +msgid "A 'from' source. Sheet will be printed for each possible piece of feedback in that room: ie adjudicators will each get a sheet for their panellists and trainees while teams and panellists will get sheets for the chair." +msgstr "" + +#: ../../features/printing.rst:14 +msgid "The specific questions you established when configuring the :ref:`adjudicator feedback questions `" +msgstr "" + +#: ../../features/printing.rst:15 +msgid "The room number" +msgstr "" + +#: ../../features/printing.rst:17 +msgid "To print the ballots for each round, you would go to the **Display** page for that round, the click one of the two relevant print links. This opens a new window. In each window, you then use your browser's print function (CTRL-P). In the resulting print interface (from your browser) you'll want to turn background graphics on, header/footers off, and set the layout to portrait (feedback sheets) or landscape (score sheets)." +msgstr "" + +#: ../../features/printing.rst:19 +msgid "Typically you'd save these to PDF for printing, although you should be able to print straight from this dialogue box." +msgstr "" + +#: ../../features/printing.rst:21 +msgid "Printing works best in Safari and Firefox; use those if possible." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/standings-rules.po b/docs/locale/cs/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..51f464fff36 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/standings-rules.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 21:01\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: cs_CZ\n" + +#: ../../features/standings-rules.rst:5 +msgid "Standings Rules" +msgstr "" + +#: ../../features/standings-rules.rst:8 +msgid "Team standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:10 +msgid "In Tabbycat, you can choose how teams are ranked in the team standings. For example, at Australs, teams are ranked first on the number of wins, and second on their total speaker score. The setting that specifies how teams are ranked is called the **team standings precedence**. The team standings precedence is used:" +msgstr "" + +#: ../../features/standings-rules.rst:15 +msgid "When displaying the team tab," +msgstr "" + +#: ../../features/standings-rules.rst:16 +msgid "Whenever a power-paired draw is generated, and" +msgstr "" + +#: ../../features/standings-rules.rst:17 +msgid "When computing which teams are in the break." +msgstr "" + +#: ../../features/standings-rules.rst:19 +msgid "When you choose the team standings precedence, you choose from a list of *metrics*. Then, in the standings, teams will be sorted first by the first metric, then by the second metric, and so on. You must choose at least one metric, and you can choose up to eight. Teams tied on all metrics will have the same rank." +msgstr "" + +#: ../../features/standings-rules.rst:25 +msgid "If you like, you can also choose **team standings extra metrics**, which are metrics that will be shown in the team standings, but not used to rank teams." +msgstr "" + +#: ../../features/standings-rules.rst:33 ../../features/standings-rules.rst:132 +msgid "Metric" +msgstr "" + +#: ../../features/standings-rules.rst:34 ../../features/standings-rules.rst:133 +msgid "Description" +msgstr "" + +#: ../../features/standings-rules.rst:36 +msgid "Wins" +msgstr "Výhry" + +#: ../../features/standings-rules.rst:37 +msgid "How many debates the team has won." +msgstr "" + +#: ../../features/standings-rules.rst:39 +msgid "Points" +msgstr "Body" + +#: ../../features/standings-rules.rst:40 +msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." +msgstr "" + +#: ../../features/standings-rules.rst:44 +msgid "Total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:45 +msgid "The sum of all speaker scores attained in all debates." +msgstr "" + +#: ../../features/standings-rules.rst:47 +msgid "Average total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:48 ../../features/standings-rules.rst:157 +msgid "The average total speaker score over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:51 +msgid "Average individual speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:52 +msgid "The total substantive speaker score, over all debates the team has had and the number of speakers. Provides an equivalent metric to average total speaker score in no-reply formats, but within the substantive speech scoring range." +msgstr "" + +#: ../../features/standings-rules.rst:57 +msgid "Speaker score standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:58 +msgid "The standard deviation of total speaker scores over all debates the team has had, not counting debates where they or their opponents forfeited. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:63 +msgid "Sum of margins" +msgstr "" + +#: ../../features/standings-rules.rst:64 +msgid "The sum of all margins. Wins are positive, losses are negative." +msgstr "" + +#: ../../features/standings-rules.rst:66 +msgid "Average margin" +msgstr "" + +#: ../../features/standings-rules.rst:67 +msgid "The average margin over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:70 +msgid "Draw strength by wins" +msgstr "" + +#: ../../features/standings-rules.rst:71 +msgid "The sum of the number of wins of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:73 +msgid "This is also known in some circuits as *win points*, *opponent wins* or *opponent strength*." +msgstr "" + +#: ../../features/standings-rules.rst:76 +msgid "Draw strength by speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:77 +msgid "The sum of speaker scores of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:79 +msgid "Votes/ballots carried" +msgstr "" + +#: ../../features/standings-rules.rst:80 +msgid "The number of adjudicators that gave this team a win across all of their debates. Also known as the number of *ballots* or *judges* a team has." +msgstr "" + +#: ../../features/standings-rules.rst:83 +msgid "In cases where the panel is smaller or larger than 3, this number is normalised to be out of 3. For example, if a panel of five splits 3--2, then the winning team is recorded as gaining 1.8 votes, and the losing team is recorded as gaining 1.2. This also means that solo adjudicators are always worth three votes." +msgstr "" + +#: ../../features/standings-rules.rst:89 +msgid "Number of firsts" +msgstr "" + +#: ../../features/standings-rules.rst:90 +msgid "The number of debates in which the team came first. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:93 +msgid "Number of seconds" +msgstr "" + +#: ../../features/standings-rules.rst:94 +msgid "The number of debates in which the team came second. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:97 +msgid "Number of pullups before this round" +msgstr "" + +#: ../../features/standings-rules.rst:98 +msgid "The number of times the team has been pulled up as part of :ref:`draw generation `. You probably wouldn't use this as a metric to rank teams, but you may wish to display it as an \"extra metric\" in the team standings for transparency." +msgstr "" + +#: ../../features/standings-rules.rst:103 +msgid "Who-beat-whom" +msgstr "" + +#: ../../features/standings-rules.rst:104 +msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." +msgstr "" + +#: ../../features/standings-rules.rst:110 +msgid "If there are more than two teams tied, this metric is not applied." +msgstr "" + +#: ../../features/standings-rules.rst:112 +msgid "This metric can be specified multiple times. Each time who-beat-whom occurs, it applies to all the metrics earlier in the precedence than the occurrence in question." +msgstr "" + +#: ../../features/standings-rules.rst:118 +msgid "Speaker standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:120 +msgid "The speaker standings precedence is only used in speaker standings (*i.e.*, it doesn't affect the operation of the tournament). As for team standings, the **speaker standings precedence** specifies which metrics are used to rank speakers, with the second metric tie-breaking the first, the third tie-breaking the second, and so on. The **speaker standings extra metrics** are metrics that will be shown in the speaker standings, but won't be used to rank speakers." +msgstr "" + +#: ../../features/standings-rules.rst:135 +msgid "Total" +msgstr "" + +#: ../../features/standings-rules.rst:136 +msgid "The sum of all speaker scores attained by the speaker. Note that if a speaker misses a round, they'll typically be relegated to the bottom of the speaker standings by this metric." +msgstr "" + +#: ../../features/standings-rules.rst:140 +msgid "Average" +msgstr "" + +#: ../../features/standings-rules.rst:141 +msgid "The average of all speaker scores attained by the speaker." +msgstr "" + +#: ../../features/standings-rules.rst:143 +msgid "Trimmed mean" +msgstr "" + +#: ../../features/standings-rules.rst:144 +msgid "The average speaker score after excluding their highest and lowest speaker scores. Also known as the *high-low drop*, *truncated mean* or *Olympic average*." +msgstr "" + +#: ../../features/standings-rules.rst:148 +msgid "If the speaker has only one or two scores, this metric just returns the average of those scores, without excluding any." +msgstr "" + +#: ../../features/standings-rules.rst:151 +msgid "Standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:152 +msgid "The standard deviation of all speaker scores attained by the speaker. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:156 +msgid "Average speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:160 +msgid "Number of speeches given" +msgstr "" + +#: ../../features/standings-rules.rst:161 +msgid "The number of speaker scores associated with the speaker. (In tournaments where teams can rotate speakers, this may not be all rounds.) This metric is normally used as an \"extra\" (unranked) metric, because it'd be weird to rank by number of speeches given, but you can if you want to." +msgstr "" + +#: ../../features/standings-rules.rst:168 +msgid "Motion balance" +msgstr "" + +#: ../../features/standings-rules.rst:170 +msgid "The motion balance page applies a statistical test to estimate the degree to which a motion is imbalanced. This is calculated by first making an underlying assumption that a motion is generally fair. This will be our null hypothesis: that, for a given motion, affirmative teams won the same number of times as negative teams." +msgstr "" + +#: ../../features/standings-rules.rst:172 +msgid "Our chi-squared test will then be centred around disproving this hypothesis. If we disprove the hypothesis, we say that, in the context of this tournament and this draw, the motion ended up being unbalanced. However (technically speaking) if we fail to reject the null hypothesis, we would conclude that there is insufficient evidence to suggest that the motion was unbalanced in the context of this tournament." +msgstr "" + +#: ../../features/standings-rules.rst:174 +msgid "The test proceeds by `calculating the chi-squared stat, then running a series of tests `_. The tests are where we go a little off-book with respect to statistical methodology. Normally we would test at a single \"level of significance\" (ie. with a certain degree of certainty), but that's insufficient in telling us how bad a motion ended up being. So, instead, we conduct a range of tests with a range of levels of significance, and calculate the minimum level of significance that causes our null hypothesis to be rejected. Using the minimum level of significance that rejects our null hypothesis, we can then grade the fairness of the motion on a scale. Motions whose tests fall below a certain threshold will be considered fair, while others will be graded based on the minimum." +msgstr "" + +#: ../../features/standings-rules.rst:176 +msgid "For formats with topic selection, the same test is applied using the number of affirmative and negative vetoes in place of wins. The assumption here is that, during the time allotted for motion selection, teams estimate how appealing a motion is from their position, and then veto the topic that they feel is least favourable. Thus, the null hypothesis is that a motion that is perceived of as fair would be vetoed by affirmative and negative teams to an equal degree." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/team-code-names.po b/docs/locale/cs/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..99984463bff --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/team-code-names.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: cs_CZ\n" + +#: ../../features/team-code-names.rst:5 +msgid "Team Code Names" +msgstr "" + +#: ../../features/team-code-names.rst:7 +msgid "Some tournaments use \"code names\" to obscure the institutional affiliations of teams. For example, rather than calling a team \"Harvard DK\", they would be presented in the draw as \"Butterfly\". A natural way to do this would be just to change the name of every team, but then the team's \"real name\" would be hidden from tournament staff, too." +msgstr "" + +#: ../../features/team-code-names.rst:13 +msgid "Instead, Tabbycat allows you to assign code names to teams, alongside their real names. This way, you can have code names show to participants, while real team names show in administrative views (*e.g.* allocating adjudicators). It also allows you to \"decode\" team names for elimination rounds or final tab release easily, without having to actually change every team's name." +msgstr "" + +#: ../../features/team-code-names.rst:19 +msgid "While the most frequently-used public views have been checked to ensure that they show only code names, not all views have been checked thoroughly. Please check views using demonstration data on a test site, configured in the same way that you would use it at your tournament, before using code names at a real tournament." +msgstr "" + +#: ../../features/team-code-names.rst:26 +msgid "Assigning code names" +msgstr "" + +#: ../../features/team-code-names.rst:28 +msgid "Most methods of importing teams, including the simple importer and the ``importtournament`` command, automatically assign code names to teams. The code name is the name of the emoji that is automatically assigned at the same time. For example, the team assigned 🦋 will be code-named \"Butterfly\"." +msgstr "" + +#: ../../features/team-code-names.rst:33 +msgid "If you wish to use your own code names, you need to set the \"code name\" field of each team. Here are two ways to do this:" +msgstr "" + +#: ../../features/team-code-names.rst:36 +msgid "**Edit Database area:** Enter the Edit Database area, and under **Participants > Teams**, click **Change**. Modify each team one by one, entering a new code name then saving." +msgstr "" + +#: ../../features/team-code-names.rst:39 +msgid "``importtournament`` **command:** If you imported a tournament from CSV files, you can just add a ``code_name`` column to your teams CSV file." +msgstr "" + +#: ../../features/team-code-names.rst:43 +msgid "Displaying code names" +msgstr "" + +#: ../../features/team-code-names.rst:45 +msgid "Code names are disabled by default; to enable then, go to **Setup > Configuration > Public Options**, and change the **Team code names** option. You can choose between the following options:" +msgstr "" + +#: ../../features/team-code-names.rst:49 +msgid "Do not use code names" +msgstr "" + +#: ../../features/team-code-names.rst:50 +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: ../../features/team-code-names.rst:51 +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:52 +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:53 +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: ../../features/team-code-names.rst:55 +msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." +msgstr "" + +#: ../../features/team-code-names.rst:58 +msgid "One typical use is as follows:" +msgstr "" + +#: ../../features/team-code-names.rst:60 +msgid "Before the tournament, set the team code names setting to *Use code names for public; real names with code names in tooltips for admins*. This hides real names from anything participants would see, but continues to refer to teams in administrative views by real names." +msgstr "" + +#: ../../features/team-code-names.rst:64 +msgid "After the break is announced, set it to *Use real names everywhere, and show code names in tooltips*. This basically decodes all team names, while still allowing people to look up the (now former) code name of a team." +msgstr "" + +#: ../../features/team-code-names.rst:68 +msgid "If you're enabling team codes, you probably want to disable the **Show team institutions** option too." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/user-accounts.po b/docs/locale/cs/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..75b6991e584 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/user-accounts.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: cs_CZ\n" + +#: ../../features/user-accounts.rst:5 +msgid "User Accounts" +msgstr "" + +#: ../../features/user-accounts.rst:7 +msgid "For obvious reasons, user logins are required to data entry and administrative functions. Conceptually, there are four levels of access:" +msgstr "" + +#: ../../features/user-accounts.rst:14 +msgid "Access" +msgstr "" + +#: ../../features/user-accounts.rst:15 +msgid "Should be used by" +msgstr "" + +#: ../../features/user-accounts.rst:16 +msgid "Grants access to" +msgstr "" + +#: ../../features/user-accounts.rst:17 +msgid "Is capable of" +msgstr "" + +#: ../../features/user-accounts.rst:19 +msgid "Public" +msgstr "" + +#: ../../features/user-accounts.rst:20 +msgid "The public" +msgstr "" + +#: ../../features/user-accounts.rst:21 +msgid "Publicly available information." +msgstr "" + +#: ../../features/user-accounts.rst:22 +msgid "Viewing things, and submitting new ballots/feedback if electronic submission is permitted by the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:24 +msgid "Assistant" +msgstr "" + +#: ../../features/user-accounts.rst:25 +msgid "Data entry helpers" +msgstr "" + +#: ../../features/user-accounts.rst:26 +msgid "The assistant area" +msgstr "" + +#: ../../features/user-accounts.rst:27 +msgid "Entering, confirming and printing ballots and feedback, checking in ballots and people, and displaying the draw." +msgstr "" + +#: ../../features/user-accounts.rst:29 +msgid "Superuser" +msgstr "" + +#: ../../features/user-accounts.rst:30 +msgid "Chief adjudicators" +msgstr "" + +#: ../../features/user-accounts.rst:31 +msgid "The administrator and assistant areas" +msgstr "" + +#: ../../features/user-accounts.rst:32 +msgid "Generating draws, allocating adjudicators and venues, and editing ballots, feedback and adjudicator scores." +msgstr "" + +#: ../../features/user-accounts.rst:34 +msgid "Staff and superuser" +msgstr "" + +#: ../../features/user-accounts.rst:35 +msgid "Tab director" +msgstr "" + +#: ../../features/user-accounts.rst:36 +msgid "The administrator, assistant and Edit Database areas" +msgstr "" + +#: ../../features/user-accounts.rst:37 +msgid "Editing the database directly." +msgstr "" + +#: ../../features/user-accounts.rst:39 +msgid "If a user account on the tab system belongs to someone who is also a participant in the tournament (*e.g.*, a chief adjudicator), these two capacities are completely separate. User accounts are only used to regulate access to administrative functions. Tabbycat doesn't know about any relationship between user accounts, and who is participating in the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:42 +msgid "Account roles" +msgstr "" + +#: ../../features/user-accounts.rst:44 +msgid "You should create an account for each person who needs to access the tab system. When you create an account in the Edit Database area, there are checkboxes for **Superuser status** and **Staff access**. Superusers have access to the administrator area, and staff have access to the Edit Database area. You should grant permissions as follows:" +msgstr "" + +#: ../../features/user-accounts.rst:46 +msgid "Tab directors should get both superuser and staff status." +msgstr "" + +#: ../../features/user-accounts.rst:47 +msgid "Chief adjudicators and their deputies should get superuser status, but not staff status." +msgstr "" + +#: ../../features/user-accounts.rst:48 +msgid "Tab assistants (helping only with data entry) should get neither superuser nor staff status." +msgstr "" + +#: ../../features/user-accounts.rst:50 +msgid "Tournament participants (other than tab staff) do not need an account. Everything they need to know can be accessed without an account. If you're using electronic ballots or electronic feedback, they access these using a URL that only they know (see :ref:`private-urls`)." +msgstr "" + +#: ../../features/user-accounts.rst:52 +msgid "When doing data entry, users with superuser status should use the **assistant area**. The administrator area is intended for managing the tournament, and doesn't include someand should **not** in general be used for data entry. Specifically, the administrator area lacks checks that are important for data integrity assurance. It should be used only to override the normal :ref:`data entry ` procedure, for example, to unconfirm or modify a ballot." +msgstr "" + +#: ../../features/user-accounts.rst:54 +msgid "The **Edit Database** interface should not be used except where it is actually necessary. There are a few functions which require this, but as a principle, it shouldn't be used as a matter of course." +msgstr "" + +#: ../../features/user-accounts.rst:56 +msgid "In theory, you could grant an account staff status but not superuser status. But then they'd be allowed to edit the database, but not run the tournament, which would be weird." +msgstr "" + +#: ../../features/user-accounts.rst:59 +msgid "Adding accounts" +msgstr "" + +#: ../../features/user-accounts.rst:61 +msgid "To add an account:" +msgstr "" + +#: ../../features/user-accounts.rst:63 +msgid "Go to the Edit Database area of the site." +msgstr "" + +#: ../../features/user-accounts.rst:65 +msgid "Under **Authentication and Authorization**, click the **Add** link next to **Users**." +msgstr "" + +#: ../../features/user-accounts.rst:67 +msgid "Ask the user to enter a username, password and possibly email address." +msgstr "" + +#: ../../features/user-accounts.rst:69 +msgid "Only they should know what the password is." +msgstr "" + +#: ../../features/user-accounts.rst:70 +msgid "If you're hosting on the internet, all passwords should be at least moderately strong!" +msgstr "" + +#: ../../features/user-accounts.rst:71 +msgid "Passwords are not stored as raw passwords, so you can't figure out what their password is." +msgstr "" + +#: ../../features/user-accounts.rst:72 +msgid "The email address is optional." +msgstr "" + +#: ../../features/user-accounts.rst:73 +msgid "This email address is only used to reset their password if they forget it, and has nothing to do with the email address that Tabbycat uses to send emails to tournament participants (*e.g.* private URL links)." +msgstr "" + +#: ../../features/user-accounts.rst:75 +msgid "If they are being assigned superuser and/or staff status, check the relevant boxes." +msgstr "" + +#: ../../features/user-accounts.rst:77 +msgid "Click \"Save\" or \"Save and add another\"." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/features/venue-constraints.po b/docs/locale/cs/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..b0278c378cd --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/features/venue-constraints.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: cs_CZ\n" + +#: ../../features/venue-constraints.rst:5 +msgid "Venue Constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:7 +msgid "Tabbycat supports a basic form of venue constraints. A **venue constraint** is a requirement that a particular **team, adjudicator, institution** or **division** be assigned to a venue in a particular **venue category**. Typical uses would include:" +msgstr "" + +#: ../../features/venue-constraints.rst:12 +msgid "Meeting venue accessibility requirements of particular teams (*e.g.* step-free access)" +msgstr "" + +#: ../../features/venue-constraints.rst:14 +msgid "Placing adjudication core and tab team members close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:15 +msgid "Keeping all debates in a division in one location" +msgstr "" + +#: ../../features/venue-constraints.rst:17 +msgid "Constraints apply to **venue categories**, not individual venues. That is, you specify that (say) a team should be given a venue from a particular *list* of venues. Of course, it's permissible for a venue category to have only one venue in it." +msgstr "" + +#: ../../features/venue-constraints.rst:22 +msgid "The algorithm used to satisfy venue constraints is not guaranteed to be optimal. In some rare cases, it may propose an allocation that fails some constraints, even though some other allocation would have satisfied all (or more) constraints. In almost all practical circumstances, however, it should work, and save human effort (and time) in specially allocating rooms." +msgstr "" + +#: ../../features/venue-constraints.rst:29 +msgid "Adding venue categories" +msgstr "" + +#: ../../features/venue-constraints.rst:31 +msgid "Before you add venue constraints, you first need to add venue categories. Each venue category is a list of venues, typically satisfying a particular need. For example, you might have a category for each of the following:" +msgstr "" + +#: ../../features/venue-constraints.rst:35 +msgid "Venues with step-free access" +msgstr "" + +#: ../../features/venue-constraints.rst:36 +msgid "Venues that are close to general assembly (the briefing room)" +msgstr "" + +#: ../../features/venue-constraints.rst:37 +msgid "Venues that are close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:38 +msgid "Venues that are, or venues that are not, being live-streamed" +msgstr "" + +#: ../../features/venue-constraints.rst:40 +msgid "Each venue can be in as many categories as you like (or none at all)." +msgstr "" + +#: ../../features/venue-constraints.rst:44 +msgid "To add or edit venue categories, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Categories**. Note that this page will show all existing Venue Categories first before showing the blank forms that allow you to create new categories. Give your category a name (like \"Step-free access\"), assign it some venues, then click the \"Save Venue Categories\" button at the bottom of the page." +msgstr "" + +#: ../../features/venue-constraints.rst:47 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue categories\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:50 +msgid "Adding venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:52 +msgid "To add or edit venue constraints, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Constraints**. Note that this page will show all existing Venue Constraints first before showing the blank forms that allow you to create new categories. Note that the \"Constrainee ID\" field should let you select from a dropdown or type in the name of an adjudicator, institution, or team (rather than having to lookup the exact ID)." +msgstr "" + +#: ../../features/venue-constraints.rst:57 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue constraints\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:59 +msgid "For each constraint, you need to specify four things:" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "**Category**" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "The venue category to which the subject of this constraint should be locked." +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "**Priority**" +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "This is a number used to resolve conflicts between constraints. Constraints with higher priority (greater number) take precedence over those with lower priority. If none of your constraints will ever conflict, then the priority is arbitrary (but it must still be specified)." +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "**Subject content** **type**" +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "The type of subject to which this constraint relates: adjudicator, team, institution or division." +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "**Subject ID**" +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "Which adjudicator, team, institution or division the constraint relates to. The textbox takes a number (the ID of the object in the database), but you can search for the subject by clicking on the search icon next to it. This will bring up a table of objects of the type specified in \"subject content type\" for you to choose from. (You need to select the subject content type first.)" +msgstr "" + +#: ../../features/venue-constraints.rst:86 +msgid "Applying venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:88 +msgid "If you don't have any venue constraints for adjudicators, venue constraints are applied automatically when the draw is generated." +msgstr "" + +#: ../../features/venue-constraints.rst:91 +msgid "However, if you have one or more venue constraints for adjudicators, it's not possible to take adjudicator venue constraints into account during draw generation, because the adjudicator allocation isn't known then. You'll need to run the venue allocation yourself after you've allocated adjudicators." +msgstr "" + +#: ../../features/venue-constraints.rst:96 +msgid "To run venue allocation, go to **Edit Venues** (while looking at the draw), then in the screen where you can edit venues, click the **Auto Allocate** button. You can also do this at any other point (say, after adding a new venue constraint) if, for whatever reason, you would like to re-run the venue allocation algorithm." +msgstr "" + +#: ../../features/venue-constraints.rst:102 +msgid "If a venue constraint couldn't be met, a message will show in the \"conflicts/flags\" column of the draw. A constraint might not be met for a number of reasons:" +msgstr "" + +#: ../../features/venue-constraints.rst:106 +msgid "It could be that constraints of different parties (say, one team and one adjudicator) conflicted, so only one could be fulfilled." +msgstr "" + +#: ../../features/venue-constraints.rst:108 +msgid "It could be that all available rooms in the relevant category were already taken by other, higher-priority constraints." +msgstr "" + +#: ../../features/venue-constraints.rst:110 +msgid "It could just be one of those edge cases that's too hard for the naïve algorithm to handle." +msgstr "" + +#: ../../features/venue-constraints.rst:113 +msgid "Currently, Tabbycat doesn't tell you which of these happened, so if the venue allocation fails to meet all your constraints, it's on you to figure out why. In most scenarios, we imagine you'll have few enough constraints that this will be obvious; for example, if the chief adjudicator is judging a team with accessibility requirements, it might be obvious that the latter's constraint took priority. We might in future add support for more useful guidance on conflicting constraints, but we currently consider this to be of low priority." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/guide/comparisons.po b/docs/locale/cs/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..fb4f4c2b82b --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/guide/comparisons.po @@ -0,0 +1,338 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: cs_CZ\n" + +#: ../../guide/comparisons.rst:5 +msgid "Tab Software Comparisons" +msgstr "" + +#: ../../guide/comparisons.rst:7 +msgid "If you're reading this, you're probably interested in using Tabbycat, and wondering how it compares to other options. Perhaps you're a long-time user of another tab system, and wondering what Tabbycat can do better. This page is our effort to help answer this. Tabbycat's been around since 2010, but since BP support is a recent addition (2017), we thought it would be useful to outline the differences between Tabbycat and other BP software." +msgstr "" + +#: ../../guide/comparisons.rst:9 +msgid "Obviously, this page is written by the developers of Tabbycat, and naturally, we have our biases. But rarely is there a single best option for everyone and every situation: different tab programs imagine the tabbing process in a different ways and have made unique trade-offs in their development process and design decisions. So we've tried to be as fair and accurate as we can, and we've consulted experienced tab directors (other than us!) and chief adjudicators to help provide a balanced overview." +msgstr "" + +#: ../../guide/comparisons.rst:11 +msgid "At present, this guide just focuses on the major options available for the British Parliamentary format, although we'd like to expand this to incorporate the other formats that Tabbycat supports at some point in the future. As with all of our documentation, the source for this page `is on GitHub `_, and we welcome feedback and contributions." +msgstr "" + +#: ../../guide/comparisons.rst:14 +msgid "On feature lists" +msgstr "" + +#: ../../guide/comparisons.rst:16 +msgid "In the first draft of this document, we had a table that listed every feature we could think of, along with which software does and doesn't support it. This ended up not being a great idea, for a couple of reasons." +msgstr "" + +#: ../../guide/comparisons.rst:18 +msgid "Firstly, the largest feature disparities are for relatively niche features. All of the software discussed can do the basics necessary to run a tournament: generate draws, allocate adjudicators, enter results, etc. As a result, we will — like a good whip speech — be comparative and note key feature disparities when discussing each alternative software directly." +msgstr "" + +#: ../../guide/comparisons.rst:20 +msgid "Secondly, we felt that the 'checklist' approach to comparing tab software would do a disservice to the reasons you would actually choose one software over another. Except where a niche capability is essential, raw technical specifications rarely define the experience of using a product such as a phone, a car, or indeed, tabbing software. With Tabbycat, we've spent eight years continuously refining the tabbing workflow and smoothing out rough edges, and we believe you'll find the result extremely user-friendly and robust. As always, the best way to check this out is by :ref:`setting up a demo site and taking it for a spin `!" +msgstr "" + +#: ../../guide/comparisons.rst:23 +msgid "Comparison with Tabbie2" +msgstr "" + +#: ../../guide/comparisons.rst:26 +msgid "Centralised site vs individual sites" +msgstr "" + +#: ../../guide/comparisons.rst:28 +msgid "Tabbie2 and Tabbycat are both internet-based systems. Tabbie2 hosts all tournaments on a single site. However, when using Tabbycat, each tournament or organisation sets up its own site. Each model has its advantages and disadvantages in different areas:" +msgstr "" + +#: ../../guide/comparisons.rst:30 +msgid "**User identification**. Tabbie2's centralised model allows for site-wide user accounts for all tournament participants. This means that they can use the same login information for all tournaments, and perform tasks such as submitting ballots and feedback through that unified account. If you're in an established circuit, most of your participants probably already have user accounts which are identified and collected (via e-mail addresses) during registration. If you're in a newer circuit, or one where Tabbie2 is rarely used, most of your participants will probably need to create an account — a process which Tabbie2 handles by e-mailing them a request to do so when that person is added to your tournament." +msgstr "" + +#: ../../guide/comparisons.rst:32 +msgid "In Tabbycat's decentralised model, there is no persistent 'account' for tournament participants on each tab site or across different tab sites. Indeed, the only people who can log in to the site are those who have been given accounts by the tab director, such as tab staff and members of the adjudication core." +msgstr "" + +#: ../../guide/comparisons.rst:34 +msgid "For secure e-ballot and e-feedback submissions, Tabbycat assigns a \"private URL\" to each adjudicator or team. This is essentially a password that allows a participant to only submit data that they should have access to in that specific tournament. This means participants don't need user accounts and you don't need to collect user account information; however if your tournament uses e-ballots or e-feedback you will need to distribute those private URLs to participants. Tabbycat can e-mail these to participants for you, or print them to give them to participants, or you could distribute the URLs using your own means." +msgstr "" + +#: ../../guide/comparisons.rst:36 +msgid "**Control over data**. Some participant information in Tabbie2 is shared between tournaments, like their names and conflicts (discussed below). This means participants can manage it directly through their user accounts, without needing to go through you. On the other hand, this requires your participants to co-operate in keeping their accounts up to date, and to provide the correct e-mail address during registration (you'd be surprised how many don't). Furthermore, participants may look to you for assistance, and your ability to help is limited to directing them through Tabbie2 channels—easy enough if they forget their password, but not so much if they forget their account's e-mail address." +msgstr "" + +#: ../../guide/comparisons.rst:38 +msgid "Because each Tabbycat site is its own, you'll need to collect and import all participant details yourself. This might seem like more to do, but it also means there's no need to match your data to existing accounts, which can be time-consuming and prone to participant error. It also means you can freely change data, for example, to correct a participant's name or institution, or to add data like conflicts on an ad-hoc basis." +msgstr "" + +#: ../../guide/comparisons.rst:40 +msgid "**Data privacy**. Conflicts are typically entered into the tab, and are sensitive information. Tabbie2's centralisation allows for conflicts to be self-nominated by users and stored in their user accounts. This, in theory, saves the need for users to report conflicts to tab directors and other tournament staff. In practice, however, only special \"super\" users on Tabbie2 have access to the stored conflicts of users (otherwise anyone could access a user's conflicts by creating a new tournament and adding that user as a participant), so many tournaments need to collect this information from participants anyway." +msgstr "" + +#: ../../guide/comparisons.rst:42 +msgid "Tabbycat's decentralised model means that no-one will have access to conflict information except for the tab staff of each individual instance of Tabbycat. Unlike Tabbie2, Tabbycat's developers do not have any access to your tournament's data — conflicts or otherwise. However, to help us continually improve the software, Tabbycat does send error reports to its developers if there is a serious bug or crash in the code, which could potentially contain confidential information depending on which page triggered the report. As a result of Tabbycat's decentralised data storage, each tournament does need to collect and enter conflicts as part of their registration process." +msgstr "" + +#: ../../guide/comparisons.rst:44 +msgid "**When things go wrong**. In our view, this is probably the most important factor. Obviously, we all hope you never have to fix things. But no software is perfect, and software developed by volunteers in their spare time (as both Tabbie2 and Tabbycat are) is especially imperfect. On occasion, glitches or edge cases occur, and fixing them requires you to directly edit the offending data in the database. Being able to do this without assistance can be the difference between a delay of minutes and a delay of hours." +msgstr "" + +#: ../../guide/comparisons.rst:46 +msgid "In Tabbycat, because it's your site, you have full control of the database, and can edit it through Tabbycat's \"Edit Database\" area. This allows you to fix things (or break things, if you're not careful!). Tabbie2's centralisation prevents this—for obvious reasons, only Tabbie2's developers have direct database access, which makes their intervention necessary if direct database access is required to resolve a problem." +msgstr "" + +#: ../../guide/comparisons.rst:49 ../../guide/comparisons.rst:138 +msgid "Running your tournament" +msgstr "" + +#: ../../guide/comparisons.rst:51 +msgid "Tabbie2 and Tabbycat have broadly similar workflows for running rounds; at least on paper. Key differences are discussed below:" +msgstr "" + +#: ../../guide/comparisons.rst:53 +msgid "**Data import**. Tabbie2 takes CSV files for import. Tabbycat has a CSV file importer, but it's (for now) only accessible through a command-line interface and is only expected to be used for large tournaments by experienced tab directors. As a more user-friendly alternative, Tabbycat also has an import wizard that's designed to make it easy to copy and paste CSV data. This works well for small and medium scale tournaments, but is cumbersome for large ones." +msgstr "" + +#: ../../guide/comparisons.rst:55 +msgid "**Public interface**. Tabbycat can optionally publish the entire draw, as well as current team point standings and results of previous rounds, online. Tabbie2 shows to a logged-in user information about the debate that user is in for that round, but doesn't allow people to check up on people who are not themselves." +msgstr "" + +#: ../../guide/comparisons.rst:57 +msgid "**Position rotation**. Tabbie2 uses an algorithm known as the \"Silver Line algorithm\", which keeps swapping pairs of teams until no further improvement is found. Because it stops at any 'local optimum', this method isn't guaranteed to be the best possible distribution of positions, and for large tournaments it often isn't. Tabbycat instead uses the `Hungarian algorithm `_, an well-known algorithm that finds the (globally) optimal allocation of positions. (One might describe this algorithm, in technical terms, as 'powerful'.) Tabbycat also produces a position balance report, so that in every round you can see which teams have unbalanced position histories." +msgstr "" + +#: ../../guide/comparisons.rst:59 +msgid "**Venue allocations**. Both Tabbie2 and Tabbycat allow for debate venues to be automatically assigned and manually edited. Tabbycat also allows you to specify 'venue constraints' that can automatically match particular participants with their accessibility requirements, or alternatively allow for tournament staff, such as a convenor or chief adjudicator, to be allocated rooms close to the briefing hall or tab room." +msgstr "" + +#: ../../guide/comparisons.rst:61 +msgid "**Ballot entry**. Both Tabbie2 and Tabbycat support entering ballots online ('e-ballots') and entering ballots from paper from the tab room. Tabbie2 was built with e-ballots in mind, while Tabbycat was originally built for tab room staff, and the ballot entry paradigms reflect that. Both are flexible, just a little different—the best way to understand the difference is to try a demo of each. Also, Tabbycat takes note of the order in which speakers in a team spoke (i.e. who was PM and who was DPM), whereas Tabbie2 just records scores." +msgstr "" + +#: ../../guide/comparisons.rst:63 +msgid "As discussed earlier in *User identification*; Tabbie2's e-ballots are tied to unified user accounts, whereas Tabbycat's e-ballots are tied to per-tournament and per-adjudicator 'private URLs'." +msgstr "" + +#: ../../guide/comparisons.rst:65 +msgid "**Break and speaker categories**. Tabbie2 has ESL, EFL and novice markers, which you can enable in a tournament's settings. Tabbycat supports user-defined break and speaker categories, so if your tournament has ESL, EFL, novice or any other form of category, you can define and customise those categories as needed." +msgstr "" + +#: ../../guide/comparisons.rst:67 +msgid "**Adjudicator allocation algorithm**. Both Tabbie2 and Tabbycat use an algorithm to recommend an initial allocation of adjudicators to debates. In principle, they both work by assigning \"costs\" to allocations, and trying to find the minimum-cost assignment. Some notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:69 +msgid "Tabbie2 uses simulated annealing, which is not guaranteed to be optimal and technically needs to be tuned to be effective (which you're probably not doing). Tabbycat uses the Hungarian algorithm, which guarantees an optimal solution." +msgstr "" + +#: ../../guide/comparisons.rst:70 +msgid "On the other hand, the Hungarian algorithm can't account for relationships between adjudicators on a panel, so adjudicator-adjudicator conflicts aren't considered by Tabbycat's algorithm (though they are highlighted in the interface)." +msgstr "" + +#: ../../guide/comparisons.rst:71 +msgid "Tabbycat's cost function is simpler and more naive. On the other hand, Tabbie2's is more complicated and can be rather opaque (even if you read its source code)." +msgstr "" + +#: ../../guide/comparisons.rst:72 +msgid "Tabbie2 allows for single-gender panels to be charged an additional cost. Tabbycat's algorithm doesn't, but the interface does provide a way to easily check for this visually." +msgstr "" + +#: ../../guide/comparisons.rst:73 +msgid "Tabbie2 automatically calculates the importance of a room based on its bracket (team points). In Tabbycat, debate importance can be assigned for all debates automatically based on on a room's bracket or the quantity of live break categories inside it. Instead of — or subsequent to — automatic classification any importance value can be manually tweaked as desired. These options mean there is a greater flexibility in determining which debates the allocation algorithm should prioritise." +msgstr "" + +#: ../../guide/comparisons.rst:75 +msgid "**Adjudicator allocation interface**. While both interfaces use drag and drop interactions, and allow for color highlights to help identify adjudicators by gender, region, and feedback rating, Tabbycat's allocation interface was designed to be usable on both small screens and projectors, and has a number of extra features that can help inform allocations. These features include:" +msgstr "" + +#: ../../guide/comparisons.rst:77 +msgid "Clashes are shown directly in the interface when they apply, but dragging an adjudicator will also show you the potential conflicts that would occur if they were relocated in a new panel. This can make it much easier to avoid creating new clashes when shifting adjudicators around the draw." +msgstr "" + +#: ../../guide/comparisons.rst:78 +msgid "An inline display of an estimate of whether a team is 'live' for each of their break categories — i.e. whether they are 'safe' (have enough points to break); 'dead' (cannot gain enough points to break); or 'live' (still in contention)." +msgstr "" + +#: ../../guide/comparisons.rst:79 +msgid "'History' conflicts (where an adjudicator has seen a team before, or previously was on a panel with another judge) are displayed so they can be avoided." +msgstr "" + +#: ../../guide/comparisons.rst:80 +msgid "Each adjudicator is present as occupying a particular position (chair, panellist, trainee) rather than having those positions calculated automatically." +msgstr "" + +#: ../../guide/comparisons.rst:81 +msgid "Chairs can be 'swapped' by dragging adjudicators on top of each other, and an 'unallocated' area can be used to view and store adjudicators that have not been allocated." +msgstr "" + +#: ../../guide/comparisons.rst:83 +msgid "**Adjudicator feedback customisation**. Both Tabbie2 and Tabbycat have built-in adjudicator feedback forms, and allow you to specify the questions on the feedback form. Notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:85 +msgid "Setting up questions is painless on neither system. Tabbycat requires you to use the Edit Database area; Tabbie2 makes you click through a slightly more opaque maze of pages and forms." +msgstr "" + +#: ../../guide/comparisons.rst:86 +msgid "Tabbycat allows for a richer range of types of questions than Tabbie2 does." +msgstr "" + +#: ../../guide/comparisons.rst:87 +msgid "Tabbie2 allows you to specify different questionnaires for team-on-chair, chair-on-panellist and panellist-on-chair. Tabbycat only differentiates between team-on-adjudicator and adjudicator-on-adjudicator." +msgstr "" + +#: ../../guide/comparisons.rst:88 +msgid "Tabbycat gives you more control over who is expected to submit feedback on whom; e.g. whether teams submit on panellists, and whether panellists submit on each other. In Tabbie2, you can effect this with blank questionnaires, but only for the three options listed above." +msgstr "" + +#: ../../guide/comparisons.rst:89 +msgid "Tabbycat can, optionally, automatically incorporate feedback into adjudicator scores using a naive weighted average with the adjudicator base score. This can be disabled by simply setting feedback weight to zero, as some adjudication cores prefer. Tabbie2 has no ability to automatically incorporate feedback." +msgstr "" + +#: ../../guide/comparisons.rst:90 +msgid "Tabbycat produces a \"shame list\" of unsubmitted feedback, which you can optionally publish on the public-facing site to try to incentivise submission." +msgstr "" + +#: ../../guide/comparisons.rst:92 +msgid "(How participants access adjudicator feedback submission is discussed in *User identification* above.)" +msgstr "" + +#: ../../guide/comparisons.rst:95 ../../guide/comparisons.rst:149 +msgid "Other considerations" +msgstr "" + +#: ../../guide/comparisons.rst:97 +msgid "**Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface." +msgstr "" + +#: ../../guide/comparisons.rst:99 +msgid "**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:101 +msgid "**Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level." +msgstr "" + +#: ../../guide/comparisons.rst:103 +#, python-format +msgid "**Hosting location**. Tabbycat recommends using Heroku, an established cloud platform service for deploying web applications. Heroku is in turn hosted on Amazon Web Services (AWS). Both Heroku and AWS are highly reliable and widely used; downtime for both has historically been (at worst) less than 0.05% over an annual period. Tabbie2 is hosted on `Uberspace `_; a pay-what-you-want web hosting service. To the best of our knowledge, uptime statistics are not available." +msgstr "" + +#: ../../guide/comparisons.rst:105 +msgid "**Multi-format support**. If you are interested in tabbing both four- and two- team formats there may be some value in using and learning Tabbycat as it will let you use the same software in both settings." +msgstr "" + +#: ../../guide/comparisons.rst:108 +msgid "Comparison with Tournaman" +msgstr "" + +#: ../../guide/comparisons.rst:111 +msgid "Native app vs web app" +msgstr "" + +#: ../../guide/comparisons.rst:113 +msgid "The crucial strength — and limitation — of Tournaman is that it is a Windows desktop application. Naturally, being a desktop app limits the features it can offer, relative to web apps like Tabbycat or Tabbie2, since it can't offer any online access. On the other hand, working with a desktop app can often be simpler than a web app." +msgstr "" + +#: ../../guide/comparisons.rst:115 +msgid "**Installation**. You'll need to run (or emulate) a Windows machine to run Tournaman. Assuming you're using Windows, Tournaman's installation process is easy and familiar." +msgstr "" + +#: ../../guide/comparisons.rst:117 +#, python-format +msgid "Tabbycat has a simple one-click installation process if you're deploying online (:ref:`to Heroku `). However, if you want to run Tabbycat on your own computer rather than a website, this is substantially more complicated. Local installations of Tabbycat work by having your computer emulate a web server, and while we've tried to make this as accessible as possible, a technical background is definitely helpful for this. Using our :ref:`Docker-based method ` should be simple, but it's not 100% reliable, and if it fails it can be difficult to figure out why. If internet access is available, we recommend running Tabbycat on Heroku." +msgstr "" + +#: ../../guide/comparisons.rst:119 +msgid "**Online features**. Because Tournaman runs fully offline, it naturally can't support many internet-based features: electronic ballots, online publication of draws and live team standings, and integrated tab release. Typically, if you wanted to publish anything online from Tournaman, you'd do so by publishing the files that Tournaman generates locally. In Tabbycat, all of these are built in, so there's a single website for all tab information." +msgstr "" + +#: ../../guide/comparisons.rst:121 +msgid "**Multi-user access**. Tournaman can be configured to allow networked ballot entry, but in order to set it up, you need to be comfortable with basic computer networking. This works best on small isolated networks that you control directly, e.g. a dedicated router set up in the tab room. It's not a great idea to set this up on computers connected to a university-wide network: many IT departments won't permit it, and even if they do, it's insecure, since anyone on the network can access it." +msgstr "" + +#: ../../guide/comparisons.rst:123 +msgid "Tournaman's multi-user access is designed primarily to allow tab assistants to enter data. Key administrative tasks, such as draw generation and adjudicator allocation, must still be done on the computer on which Tournaman is installed. In contrast, web-based systems like Tabbycat and Tabbie2 allow users to login from any internet-connected device to access the functionality permitted by their account. This is often extremely useful if, say, you want to log in to a lectern computer, or have tab assistants work on mobile devices that they have with them." +msgstr "" + +#: ../../guide/comparisons.rst:125 +msgid "If you choose to install Tabbycat offline (rather than on Heroku), it's also possible to have the computer on which the local installation resides serve the website to other computers on the same network. This then permits anyone on the same network to access the \"local\" installation as if it were hosted on the internet. However, like Tournaman, such a configuration requires at least basic networking experience, and for security reasons is only advisable on small isolated networks that you control." +msgstr "" + +#: ../../guide/comparisons.rst:127 +msgid "**Backups and portability**. Both Tournaman and Tabbycat (unlike Tabbie2) store data in a way that is completely accessible to you. Tournaman does this by saving files on your computer's hard drive, while Tabbycat stores data in a SQL database that belongs to you." +msgstr "" + +#: ../../guide/comparisons.rst:129 +msgid "It should be emphasized that in both Tournaman and Tabbycat, actually needing to revert to a backup is extremely rare. Almost always, any glitch or error that breaks the tab can be resolved by editing data directly, without needing to \"roll back\" to a previous state. In Tournaman, this is done by editing the files that it writes to your hard drive (they're just XML files). In Tabbycat, this is done through the \"Edit Database\" area." +msgstr "" + +#: ../../guide/comparisons.rst:131 +msgid "Tournaman's storage of data as XML files makes backups easy, although effort should be made to have backups stored on other computers or the cloud (e.g. on Dropbox) in case the tab computer breaks or is lost. Restoring data from those backups (or transferring the tab to a different computer) is typically a simple process of copying the files back to the original location." +msgstr "" + +#: ../../guide/comparisons.rst:133 +msgid "As for Tabbycat, in online installations, backups can be taken easily using Heroku's `database backup capability `_. However, restoring backups requires you to have the Heroku command line interface installed. In offline installations, PostgreSQL's \"dump\" and \"restore\" commands are recommended, and may require some perseverance to get going reliability, particularly if you don't have prior SQL experience." +msgstr "" + +#: ../../guide/comparisons.rst:135 +msgid "Generally there is no need for data portability when working with an online copy of Tabbycat — the website can be accessed anywhere. However if working with an offline/local copy, a tab can be transferred between machines by creating a backup of the database and restoring it to the other machine's database (doing so requires technical knowledge)." +msgstr "" + +#: ../../guide/comparisons.rst:140 +msgid "**Adjudicator feedback**. Tournaman lets you assign judges rankings, however it does not directly manage or assist the process of collecting judge feedback. As such tab directors generally need to run a parallel feedback system, and then manually copy over changes to an adjudicator's ranking into Tournaman itself. In contrast, Tabbycat has integrated methods for collecting judge feedback that allow it to be more easily issued, collected, viewed, and automatically translated into modifications to an adjudicator's rank." +msgstr "" + +#: ../../guide/comparisons.rst:142 +msgid "**Adjudicator allocation**. Tournaman has a fixed judge ranking scale and (from what we understand) has a relatively fixed procedure for allocating panels according to their absolute ranks. We are unsure about the exact mechanics of how this works, but broad details are `available here `_." +msgstr "" + +#: ../../guide/comparisons.rst:144 +msgid "As with the discussion of allocation interfaces vis-à-vis Tabbie2, there are a number of features in the Tabbycat allocation interface that mean it is more easily used in a collaborative setting and can display additional information to inform draws." +msgstr "" + +#: ../../guide/comparisons.rst:146 +msgid "**Flexibility in draw rules**. As we've said, all major tab systems are WUDC-compliant. But if you want to deviate from WUDC rules, Tournaman has a few more options. Whereas Tabbycat allows you to use intermediate brackets (rather than pull-ups), Tournaman allows you to sacrifice power-pairing integrity for position balance (though this generally isn't necessary to achieve position balance), fold within brackets and avoid teams hitting their own institution. On the other hand, Tabbycat allows you to tune how position balance trades off between teams (which the WUDC constitution doesn't precisely specify)." +msgstr "" + +#: ../../guide/comparisons.rst:151 +msgid "**Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2." +msgstr "" + +#: ../../guide/comparisons.rst:153 +msgid "**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:155 +msgid "**Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed." +msgstr "" + +#: ../../guide/comparisons.rst:158 +msgid "Comparison with hand tabbing" +msgstr "" + +#: ../../guide/comparisons.rst:160 +msgid "Hand tabbing is easy, until it isn't. Traditionally, using a spreadsheet has been the go-to option for smallish tournaments because, hey, you're pretty handy with Excel, right? Making draws in spreadsheets (or on paper) seems like a pretty approachable task; ultimately it's all cells and formulae and numbers unlike the more arcane underpinnings of actual tab software." +msgstr "" + +#: ../../guide/comparisons.rst:162 +msgid "However, hand tabbing does require you to have a good working knowledge of how your format's rules work and how your spreadsheet software of choice can be made to work them. That process might be easy for you, or it might not be. But, either way, we'd like to think that Tabbycat offers a better alternative to hand-tabbing; regardless of how well you can actually hand-tab. The setup costs of creating a copy of Tabbycat are pretty low and you can speed through the process of draw creation, adjudicator allocation, and result entry at a pace. It's still not going to be as fast a spreadsheet for a small tournament, but we think it's getting pretty close. And in exchange for a little speed you get a much stronger guarantee of your draws being correct, options for online data entry, a more comprehensive and shareable final tab, and much more. Give it a shot!" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/guide/scaling.po b/docs/locale/cs/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..23369eb7699 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/guide/scaling.po @@ -0,0 +1,252 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: cs_CZ\n" + +#: ../../guide/scaling.rst:5 +msgid "Scaling & Performance on Heroku" +msgstr "" + +#: ../../guide/scaling.rst:7 +msgid "If you expect your Tabbycat site to gain lots of traffic — either because it has lots of participants or will be followed by lots of people online — there are a number of strategies to ensure that it will remain fast despite this attention. This is typically only necessary for very large tournaments that will display information on the public-facing version of your Tabbycat site; and even then only minor amounts of 'scaling' are needed at particular moments. However, if your site does become slow you want to know what to do and how to do it ahead of time in order to prevent disruptions." +msgstr "" + +#: ../../guide/scaling.rst:9 +msgid "By default, a Tabbycat installation runs on Heroku's free tier. This is a resource-constrained environment and improving performance will typically require paying for higher levels of Heroku services. These services are billed on a per-minute (not monthly) basis, meaning that if you make use of any upgrades mentioned below, you will only be billed for the actual duration used — i.e. if an upgrade is listed at $100/month, but you only use it for 4 hours, the final bill will be around $0.50. As such you can make use of high-performing resources just when they are needed, without needing to pay the full monthly price to maintain the resource indefinitely." +msgstr "" + +#: ../../guide/scaling.rst:13 +msgid "This page was largely written before a number of improvements in the ``2.2`` release of Tabbycat that have significantly increased traffic capacity. Its recommendations may be overly cautious given these improvements." +msgstr "" + +#: ../../guide/scaling.rst:17 +msgid "Scaling for performance reasons is a separate issue to that of `upgrading the database capacity `_ of your tab which just provides the ability to store data. That said, typically only tournaments that are large enough to need an upgraded database will be the ones that ever need to consider scaling for performance anyway." +msgstr "" + +#: ../../guide/scaling.rst:20 +msgid "Introduction to Scaling" +msgstr "" + +#: ../../guide/scaling.rst:22 +msgid "Heroku's primary resource is that of a 'dyno'. Each dyno can be thought of as running a copy of Tabbycat. Following the 'many hands make light work' principle, running a greater number of dynos will generally improve the ability of your site to serve lots of pages simultaneously because traffic is divided up amongst all of the available dynos. In normal circumstances most Tabbycat pages on the public site are served by Heroku in under a second; however they can take noticeably longer than that when the quantity of incoming traffic exceeds the capacity of the existing dyno(s) to serve it. In such cases the delay accrues because the excess page loads need to first wait for an available dyno in addition to the standard wait for a page to be processed and transferred to the user." +msgstr "" + +#: ../../guide/scaling.rst:24 +msgid "Thus scaling is almost always a process of increasing *throughput* in order to decrease the chance that any page load needs to wait in order to be served by a dyno. On the flip side, having extra dynos or upgraded dynos won't make Tabbycat itself run any faster in general — they are essentially wasted unless there is sufficient large amounts of traffic that a single dyno cannot serve all of it without creating a queue." +msgstr "" + +#: ../../guide/scaling.rst:26 +msgid "Dynos can be scaled by adding more dynos ('horizontally') or by adding upgraded dynos ('vertically'). In general, horizontal scaling should be the first and most effective strategy — the problem traffic causes is due to *concurrency* or lots of people loading lots of pages all at once. The traffic on Tabbycat sites typically fluctuates a lot, with moments of high intensity clustering around draw releases, round advances, and the final tab release. As such you generally only need to scale your dynos for very short periods of time." +msgstr "" + +#: ../../guide/scaling.rst:28 +msgid "In order to increase the number of dynos you first need to be using at least the **Standard 1X** level of dyno. Once set the Heroku Dashboard will show you a slider that can be used to increase the dyno count. While dynos higher than the **Standard 1X** level may help serve pages a tiny bit faster, having *more* dynos is far more effective than having *upgraded* dynos. Upgrading beyond **Standard 1X** is generally only required if you need additional memory (as described below) or want to use auto-scaling (also described below)." +msgstr "" + +#: ../../guide/scaling.rst:32 +msgid "There should be no need to increase the number of 'worker' dynos. While 'web' dynos are responsible for serving traffic, the worker only handles a few rare tasks such as serving email and creating allocations." +msgstr "" + +#: ../../guide/scaling.rst:34 +msgid "At large tournaments you should always upgrade your existing '**Free**' dyno to a '**Hobby**'-level dyno. This upgrade is crucial as it will enable a \"Metrics\" tab on your Heroku dashboard that provides statistics which are crucial to understanding how your site is performing and how to improve said performance. If you are at all unsure about how your site will perform it is a good idea to do this pre-emptively and keep an eye on these metrics over the course of the tournament." +msgstr "" + +#: ../../guide/scaling.rst:38 +msgid "If pages are not loading it could be due to two things: your site being overloaded with traffic, or a bug in Tabbycat itself. Generally, if you see a generic or Heroku-branded 'application error' page that means it is the former problem, whereas a Tabbycat-branded page indicates the latter." +msgstr "" + +#: ../../guide/scaling.rst:41 +msgid "Scaling Dynos" +msgstr "" + +#: ../../guide/scaling.rst:43 +msgid "Once you have upgraded your dyno to the **Hobby** level, the metrics tab provides a number of graphs that can be used to help identify how your site is performing. The first graph, **Events** provides an overview of any problems that are occurring:" +msgstr "" + +#: ../../guide/scaling.rst:47 +msgid "Red marks, or those labelled *Critical* typically indicate some sort of problem. H13 errors are a good measure of the amount of pages failing to load during heavy traffic, however they can be triggered under normal conditions — you want to check how many are occurring within a given time period and ensure its more than a handful." +msgstr "" + +#: ../../guide/scaling.rst:50 +msgid "Response Time & Throughput" +msgstr "" + +#: ../../guide/scaling.rst:54 +msgid "The response time is the amount of time it takes a dyno to load a page and serve it to your users. Smaller response times are thus good, and long response times (over fifteen seconds) indicate that a site is struggling to serve its content due to a large amount of queueing." +msgstr "" + +#: ../../guide/scaling.rst:56 +msgid "Heroku dynos have a maximum response time of 30 seconds, at which point they will stop serving the request. To users this appears as an error page or as a page that never loads. Thus if you see the graph is at or approaching 30 seconds at any point you need to try and diagnose what is causing this and add more resources to reduce the response time." +msgstr "" + +#: ../../guide/scaling.rst:60 +msgid "You can toggle the percentiles in this graph. Problems are much more severe if it affects the 50th percentile which represents a site that is probably not loading for the majority of its users. There are also a couple of Tabbycat functions (like automatic adjudicator allocation) that naturally take 10-20 seconds which means that the maximum or 99th percentile metrics are not very reflective of general traffic." +msgstr "" + +#: ../../guide/scaling.rst:62 +msgid "Closely related to this is the **Throughput** graph (further down) which shows how many pages your site is serving per second. Normally this is not particularly interesting, however note that the red part of the bar graph shows the amount of failed page requests. Like the **Response Time** graph, this can indicate issues with the site — normally this red portion should be well below 1rps (and ideally 0rps). If it is above 0.5 it represents a site that is producing a significant number of failed page loads." +msgstr "" + +#: ../../guide/scaling.rst:64 +msgid "You can verify if pages are not being served to users by checking the **Events** graph and looking for H12 errors, although occasionally they are not reported properly. A large amount of H13 errors can also be a cause for concern." +msgstr "" + +#: ../../guide/scaling.rst:67 +msgid "Dyno Load" +msgstr "" + +#: ../../guide/scaling.rst:71 +msgid "This graph shows how well your dynos are being utilised. It is scaled relative to the total number of dynos you are running (or have run previously). So if you have 10 dynos and the bar graph is near the '10' this shows that each dyno is being utilised 100% (either on average over a 1-minute period or as the maximum use over a 1-minute period)." +msgstr "" + +#: ../../guide/scaling.rst:73 +msgid "If this bar graph is hitting the top it will usually mean that a site that is slow or failing to load pages — if each dyno is busy it can't serve a new page until it is finished. This issue can often compound, with more traffic coming in than it is possible to serve and clear." +msgstr "" + +#: ../../guide/scaling.rst:75 +msgid "If your average, rather than maximum, dyno load is approaching the upper limit of however many dynos you are running now (remember the y-axis will often exceed however many dynos you are currently running) that is a very good sign that you should increase the quantity of dynos being run. Continue adding dynos and evaluate how this effects load so that the bar is not hitting its limit." +msgstr "" + +#: ../../guide/scaling.rst:77 +msgid "If you are consistently needing to scale things (or having previously had issues and are expecting a very heavy burst of traffic) it may be worth upgrading to the **Performance-M** dyno type, which will then allow you to enable the *Auto-scaling* feature. This will automatically add dynos as needed to cope with traffic, and remove them when they become unnecessary. This is very effective; however, note that this dyno-type is $250/month per dyno and will self-add dynos (within an upper limit you can specify). While this is not a huge price on a per hour/minute basis (even running 10 for an hour is only $4) you definitely want to ensure you keep a close eye on it and turn it off when it is not necessary. Note that it also tends to be quite aggressive in how many dynos it 'thinks' you need — you may want to increase the default response time threshold to prevent it scaling so quickly." +msgstr "" + +#: ../../guide/scaling.rst:80 +msgid "Memory Usage" +msgstr "" + +#: ../../guide/scaling.rst:84 +msgid "It is very rare that Tabbycat sites will hit the memory limits of the Free or Hobby level dynos — its almost always hovering around 256MB of the (standard dyno) limit of 512MB. However, if the graph is approaching the dashed line you may want to first restart the dynos (in the *More* dropdown in the upper-right) and see if that resolves it." +msgstr "" + +#: ../../guide/scaling.rst:86 +msgid "You can also confirm that memory limits are causing the app to fail by checking for the presence of R14 errors in the Events chart. If your site continues to come very close to that memory limit you will want to upgrade your dynos to the higher level dynos which have increased memory." +msgstr "" + +#: ../../guide/scaling.rst:89 +msgid "Alerts" +msgstr "" + +#: ../../guide/scaling.rst:91 +msgid "If the site is really struggling to perform its usually relatively obvious. However, if you want to be pre-warned of this, or just ensure things are as fast as possible, you can use the \"Configure Alerts\" feature on the Metrics page to receive emails when things are getting slow. We would recommend creating a Response Time Threshold warning of ``15000ms`` and a Response Requests Percentage Threshold of ``5%``." +msgstr "" + +#: ../../guide/scaling.rst:94 +msgid "Understanding Caching" +msgstr "" + +#: ../../guide/scaling.rst:96 +msgid "When a page is 'cached' it means that Tabbycat has stored a copy of the final output of the page. It can then send that copy directly to a user who is loading that page without needing to go through the normal process of fetching the data from the database, running any calculations, and formatting the results. Pages that are cached will serve quickly — if a page is taking more than a few seconds to load it usually means that page has not been cached (or your site is having too much traffic to serve pages quickly in general). The downside is that changes to the underlying data won't update until the cache has 'expired' and is regenerated. So, for example, a cached copy of the draw will not immediately reflect change to panels and a newly-release motion or tab page will not show up in the menu immediately." +msgstr "" + +#: ../../guide/scaling.rst:98 +msgid "By default Tabbycat caches public pages according to three levels: a 1-minute timeout, a 3.5-minute timeout, and a 2-hour timeout. The only pages on the 2-hour timeout are those that come with a full tab release — such as speaker standings, the motions tab, etc. Public pages that need to update quickly, such as the draw and homepage, are on the 1-minute timeout to ensure data is up to date. Public pages that update less frequently such as Standings, Results, Participants, and Breaks are on the 3.5-minute timeout." +msgstr "" + +#: ../../guide/scaling.rst:100 +msgid "Caching means that a Tabbycat site should actually perform *faster* when it is being viewed by many people at once, as the caches are constantly up-to-date and can be used to serve the majority of requests. When there is less traffic the caches are more likely to be regenerated each time someone goes to a page resulting in slower page loads. Most often performance problems come when a popular page, such as a newly-released draw gains a large amount of traffic suddenly (such as by people constantly refreshing the draw). If the page hasn't finished caching it has to do a full page calculation for each of those new loads, which will spike the amount of resource use until the page load queue is cleared." +msgstr "" + +#: ../../guide/scaling.rst:102 +msgid "One way to help mitigate this is to try and load those pages first yourself to ensuring the cache is populated before other people access it. To do so you would generally open a new private browsing tab, and navigate to the specific page(s) immediately after you have enabled them. This may require going to the URL directly rather than relying on the homepage or menu (which may not have been updated to show the new information). In the case of draw releases, this can also be mitigated by not release online draws until they have been first shown on a projector (so that people aren't trying to get draw information ahead of time)." +msgstr "" + +#: ../../guide/scaling.rst:104 +msgid "You can also increase the 1-minute timeout for the pages that are popular during the in-rounds, by going to the **Settings** section of your Heroku dashboard, clicking *Reveal Config Vars*, and creating a new key/value of ``PUBLIC_FAST_CACHE_TIMEOUT`` and ``180`` (to set the timeout to be 3 minutes i.e. 180 seconds). This should only be necessary as a last resort. Turning off public pages is also an option." +msgstr "" + +#: ../../guide/scaling.rst:106 +msgid "If you ever need to clear the cache (say to force the site to quickly show an update to the speaker tab) you can install `Heroku's Command Line Interface `_ and run the following command, replacing ``YOUR_APP`` with your site's name in the Heroku dashboard::" +msgstr "" + +#: ../../guide/scaling.rst:111 +msgid "Postgres Limits" +msgstr "" + +#: ../../guide/scaling.rst:113 +msgid "The free tier of the Postgres database services has a limit of 20 'connections'. As with Redis, it is rare that a Tabbycat site will exceed this limit; most Australs-sized tournaments will see a maximum of 12 connections at any point in time." +msgstr "" + +#: ../../guide/scaling.rst:117 +msgid "You can monitor this in your Heroku Dashboard by going to the **Resources** tab and clicking on the purple Postgres link. The **Connections** graph here will show you how close you are to the limit. The first tier up from the 'free' Hobby tiers (i.e. ``Standard-0``) has a connection limit of 120 which can be used to overcome these limits if you do encounter them." +msgstr "" + +#: ../../guide/scaling.rst:120 +msgid "Mirror Admin Sites" +msgstr "" + +#: ../../guide/scaling.rst:122 +msgid "If you *really* want to be safe, or are unable to resolve traffic issues and unable to quickly complete tasks on the admin site, it is possible to create a 'mirror' of the tab site just for admin use. This site can be configured to share the same database as the primary site — meaning it is in effect always identical — but because it is at a separate URL it won't have to respond to public traffic and so can't be swamped with a large page load queue." +msgstr "" + +#: ../../guide/scaling.rst:124 +msgid "This requires some technical knowledge to setup and hasn't been rigorously tested. It works fine in our experience but we haven't tested it extensively. If using this make sure you backup (and now how to restore backups) before setting one up." +msgstr "" + +#: ../../guide/scaling.rst:126 +msgid "To do so you would deploy a new copy of Tabbycat on Heroku as you normally would. Once the site has been setup, go to it in the Heroku Dashboard, click through to the **Resources** tab and remove the Postgres and Redis Add-ons. Using the `Heroku Command Line Interface `_ run this command, substituting ``YOUR_APP`` with your *primary* tab site's name (i.e. the app that you had initially setup before this)::" +msgstr "" + +#: ../../guide/scaling.rst:130 +msgid "Here, make a copy of the ``DATABASE_URL`` and ``REDIS_URL`` values. They should look like ``postgres://`` or ``redis://`` followed by a long set of numbers and characters. Once you have those, go to the *Settings* tab of the Heroku dashboard for your *mirror* tab site. Click **Reveal Config Vars**. There should be no set ``DATABASE_URL`` or ``REDIS_URL`` values here — if there are check you are on the right app and that the add-ons were removed as instructed earlier. If they are not set, then add in those values, with ``DATABASE_URL`` on the left, and that Postgres URL from earlier on the right. Do the same for ``REDIS_URL`` and the Redis URL. Then restart the app using the link under **More** in the top right." +msgstr "" + +#: ../../guide/scaling.rst:132 +msgid "Once you visit the mirror site it should be setup just like the original one, with changes made to one site also affecting the other as if they were just a single site." +msgstr "" + +#: ../../guide/scaling.rst:135 +msgid "Estimated Costs" +msgstr "" + +#: ../../guide/scaling.rst:137 +msgid "As a quick and rough benchmark, here is a list of typical prices you would encounter if scaling to meet the performance needs of a high-team-count high-traffic tournament at the approximate scale of an Australs (~100 teams) or above. This is a probably an overly-conservative estimate in that it is based on tournaments run on the ``2.1`` version of Tabbycat. Versions ``2.2`` and above should perform dramatically better and thus have less need to scale using Standard and Performance dynos." +msgstr "" + +#: ../../guide/scaling.rst:139 +msgid "1x ``Hobby Basic Postgres Plan`` ($9/month) run all day for 14 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:140 +msgid "A tournament of this size will require an upgraded database tier for the time when you are adding new data; i.e. during registration and rounds. Once the tab is released (and no further data changes needed) however you can downgrade it back to the ``Hobby Dev`` tier." +msgstr "" + +#: ../../guide/scaling.rst:141 +msgid "1x ``Hobby Dyno`` ($7/month each) run all day for 7 days = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:142 +msgid "As recommended, 1 hobby dyno should be run as a baseline in order to see the metrics dashboard; but this can be downgraded a day or so after the tab has been released and traffic is sparse." +msgstr "" + +#: ../../guide/scaling.rst:143 +msgid "3x ``Standard 1X Dyno`` ($25/month each) run 10 hours a day for 4 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:144 +msgid "This higher quantity of dynos should only be necessary during traffic spikes (i.e. draw releases, immediately after round advances, and tab release) but unless you want to be constantly turning things on/off its usually easier just to upgrade them at the start of each day of in-rounds (or when the tab is published) and downgrade them at the end of each day. As mentioned earlier, you should occasionally check the *Dyno Load* in the Metrics area and adjust the number of dynos as needed." +msgstr "" + +#: ../../:1 +msgid "``Autoscaled Performance M Dynos`` ($250/month each) average of 5 run for 1 hour = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:146 +msgid "For just round 1 it is a good idea to upgrade to the ``Performance M`` tier so you can enable auto-scaling and thus have the site automatically adjust the number of dynos to the amount of traffic it's getting (rather than having to guess the number of dynos needed ahead of time). Doing so ensures that the first round runs smoothly and means that you can then review the Metrics graphs to see what your 'peak' load looks like and resume using whatever quantity of ``Standard 1X Dyno`` will accommodate this peak load in future rounds." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/cs/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..742ba0921fb --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/guide/tournament-logistics.po @@ -0,0 +1,1394 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: cs_CZ\n" + +#: ../../guide/tournament-logistics.rst:5 +msgid "Tournament Logistics" +msgstr "" + +#: ../../guide/tournament-logistics.rst:7 +msgid "Unlike the rest of our documentation, this section does not deal with particular features or technical concerns with Tabbycat itself. Instead it is an attempt to outline the logistics of tab direction and aims to be of general relevance for people running major tournaments. At present, it is organised by the various ‘stages' of tabbing a tournament, and most of the content takes the form of check-lists or comments designed to highlight and provide guidance on common issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:9 +msgid "Whilst it aims for general relevance, we should note that this guide is relatively opinionated and mostly written from the perspective of people whose primary experience is tabbing at Australasian tournaments using Tabbycat. That said, we welcome feedback and additions that can account for different format and regional considerations. In the future, if the guide becomes more general and more extensive, it could be spun off into a separate project." +msgstr "" + +#: ../../guide/tournament-logistics.rst:11 +msgid "As with the rest of our documentation, this page is source-available and we welcome :ref:`feedback and contributions `. Note also that we've formatted this guide a single page to reduce clutter, but the sub-sections in the sidebar can be used to help navigate across sections." +msgstr "" + +#: ../../guide/tournament-logistics.rst:14 +msgid "Planning and Preparation" +msgstr "" + +#: ../../guide/tournament-logistics.rst:16 +msgid "This section aims to outline concerns that occur in the months before the tournament: after you have agreed to help with tabbing and while the organising committee and adjudication core are deciding how they want to run key processes such as registration and feedback. It is organised in terms of who you should coordinate with in order to plan for a well-tabbed tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:19 +msgid "General Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:21 +msgid "You should avoid being the sole person responsible for that tab unless it is a small tournament. There are many cases where you want to be in several places at once and the easiest way to accommodate that is by having co-directors or trusted assistants. Few tab decisions require a single source of authority; it is far better to have multiple people available to share responsibilities around." +msgstr "" + +#: ../../guide/tournament-logistics.rst:23 +msgid "In a similar manner, it is worth considering how you can use the tournament to help train other people. Typically, knowledge of tabbing is concentrated in relatively few people and gained mostly through on-the-ground experience; meaning that every tournament should be approached as rare opportunity to help spread knowledge about tabbing more widely in a circuit. Consider reaching out to institutions or the tournament as a whole to see if they have anyone who would be interested in helping out." +msgstr "" + +#: ../../guide/tournament-logistics.rst:26 +msgid "Convenors" +msgstr "" + +#: ../../guide/tournament-logistics.rst:28 +msgid "It might sound obvious but it will pay to have a very thorough conversation about the tab process (more or less the contents of this document) with the convenors a few months out from the tournament. Do this even if you know the convenors to be knowledgeable or experienced debaters. Key concerns are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:32 +msgid "Whether internet access will be available and whether participants can be presumed to have smart phones. This has an obvious impact on how online feedback, ballots, and draw release is done. Note that Eduroam is not necessarily a reliable guarantee of access; many participants will come from universities who don't have access to it or will need to follow a setup process that is onerous or requires them to be at their home institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:33 +msgid "What kind of room is the tab room going to be? Is it possible to optimize its placement when the bookings for rooms are made? Key details include: How large is it? Does it have a sufficient amount of desk space (for data entry)? Does it have a good projector (for allocations)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:34 +msgid "If they have the resources, having an adjacent room available for just the adjudication core to use can also be useful. While you want to work closely with the adjudication core, they may want to discuss sensitive information (motions, equity) in a space without volunteers present; or they might at times get in the way of things, such as by eating lunch in the middle of a frenetic ballot entry process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:35 +msgid "Ensure that plans are made for food to be brought to tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams." +msgstr "" + +#: ../../guide/tournament-logistics.rst:36 +msgid "What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible." +msgstr "" + +#: ../../guide/tournament-logistics.rst:37 +msgid "What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors." +msgstr "" + +#: ../../guide/tournament-logistics.rst:38 +msgid "Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:39 +msgid "You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense." +msgstr "" + +#: ../../guide/tournament-logistics.rst:40 +msgid "Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:41 +msgid "How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:42 +msgid "How will critical information be shared between the tab team, adjudication core, and logistics/convening teams? For smaller/medium sized tournaments a group chat augmented by phone calls (assuming everyone knows everyone else's number) can be sufficient, but even then, you need to ensure that any critical information conveyed privately (i.e. in a call or in person) is conveyed back to the group channel. At very large tournaments (or if you have the resources) walkie-talkies are an excellent way to manage communication — just make sure you have (ahead of time) reserve the different channels to a distinct and known purpose (i.e. general discussion; just the tab team & adjudication core; just convenors)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:43 +msgid "As part of this it is ideal if the organising committees can procure local SIM cards for members of the tab team and adjudication core who are not local. These should be relatively generous in their plans — you don't want to worry about running out of minutes or data if on a critical call or using a hotspot to make critical allocation adjustments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:44 +msgid "At major tournaments you want to arrive at least a day before check-in; and ideally whenever it is that the adjudication core is arriving for their own preparation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:47 +msgid "Registration" +msgstr "" + +#: ../../guide/tournament-logistics.rst:49 +msgid "Having effective registration systems and processes is one of the most important aspects of preparing to tab a large tournament. Bad registration data *will* make setting up a tab extremely painful and introduces the chance for mistakes or inconsistencies in tab data that will only come to light in the first round. As such:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:53 +msgid "You should check in with the registration team and see what they plan to do as soon as possible after being brought on-board. As part of this you should make it clear that you should be consulted on any decisions they make about what data to collect, when to collect it, and how to collect it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:54 +msgid "Registration data should be collected into a shared and live-updating source, such as a Google Sheet. There should be as few canonical sources (ideally one) of data as possible; i.e. there should be a single sheet for individual details, a single sheet for team details, etc; and these should be maintained all the way through to check-in. For both you, and the registration team, having multiple conflicting or outdated copies of data will lead to errors. However, for the registration team these errors can usually be easily sorted out in person (at check-in) but for you that information always needs to be reliable and up to date otherwise what is imported into the tab cannot be trusted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:56 +msgid "At this point our recommendation is to, in most cases, not use specialised registration systems as they are somewhat less intuitive and less flexible than setting up good Google Forms/Sheets." +msgstr "" + +#: ../../guide/tournament-logistics.rst:58 +msgid "If, for whatever reason, the registration team are not able to give you 'live' access to the data they have on hand, make sure they send you copies of it (even if it is incomplete) well before you need it to setup the tab itself. You want to be able to verify what data is actually being collected and how it is formatted well in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:60 +msgid "You should have access to *all* of the data collected; often registration teams will make (false) assumptions about what you do or do not need. It is better to have everything and then selectively filter out what is not relevant to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:61 +msgid "It is critical that the registration team should check in with you before setting up forms asking for information. Every additional time that registration asks for data there will be less and less participation in the process, so you should aim to gather all that you need at the first opportunity; typically during the canonical individual registration phase. Particular information that should not be overlooked for tab purposes:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:63 +msgid "Individual registration should ask whether a participant is a speaker or an adjudicator." +msgstr "" + +#: ../../guide/tournament-logistics.rst:64 +msgid "If that person is a speaker it should ask for their team name/number (reconciling these later is painful)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:65 +msgid "Individual registration should ask for any accessibility requirements of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:66 +msgid "Individual registration should ask for the previous institutions of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:67 +msgid "Individual registration should ask for the email addresses of all participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:68 +msgid "Individual registration should ask for the phone numbers of adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:69 +msgid "Individual registration should ask for the gender identity of both adjudicators and speakers. Even if you are not *planning* on using this to inform processes, such as adjudicator allocations, you want it on hand in case plans change." +msgstr "" + +#: ../../guide/tournament-logistics.rst:71 +msgid "Independent adjudicators and the adjudication core should follow normal registration procedures. Having them not go through the normal process makes it easy to overlook their data or not get a complete picture of it. For example, adjudication core members might forget to nominate conflicts, or neglect to provide their previous institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:72 +msgid "You should confirm how the registration team plans to manage how people check-in to the accommodation in particular. Check-in is when issues with registration data come to light and it is vital that these changes are noted and recorded. Some form of validation of registration data *must* occur at check-in — in particular all adjudicators should be (individually) verified as present and all members of a team should confirm their presence along with their team's name/number and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:73 +msgid "After check-in you need to have a definitive list of who is physically present at the tournament so you can run a first-round draw with confidence. Registration must know this and have processes in place for recording people individually as they arrive, and for that data to filter back to you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:75 +msgid "If you are using Tabbycat's secret links for feedback or ballots these are best distributed at check-in. The registration team should know about this, prepare for it, and be provided with the pdfs to print and distribute." +msgstr "" + +#: ../../guide/tournament-logistics.rst:78 +msgid "Adjudication cores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:80 +msgid "If there is a group chat for the adjudication core you probably want to be part of it; even if you don't contribute much. There are lots of small things that end up being discussed without consideration of how they will affect tab issues and it is also a chance to get to know — ahead of time — the people you will be working with closely over the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:82 +msgid "Members of the adjudication core will often leave tab-relevant decisions until the days prior to the first round or whenever it is that they can first meet with the tab team in person. This often wastes critical time and forces rushed decisions. Many considerations can instead be raised and discussed prior to the tournament. These could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:86 +msgid "How to manage the feedback process. This typically benefits from foresight and pre-planning, rather than being decided on the ground. Key considerations are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:90 +msgid "Who submits feedback on whom? Do trainees do so on their chairs? Do panellists do so on each other? (Presuming your tab software supports these options)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:91 +msgid "Is feedback mandatory? If so, how will this be enforced exactly?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:92 +msgid "How much weight does each adjudicator's test or CV score have over the course of the tournament? By Round 3, or by Round 8, what proportion of an adjudicator's score is derived from their test and what proportion is derived from their feedback?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:93 +msgid "Will the adjudication core tweak an adjudicator's score to 'artificially' increase or decrease it to where they think it should be. For example, this could be done by adjusting a test/CV score upwards in order to compensate for bad feedback that (for whatever reason) they did not think was reliable or fair? Depending on your adjudication core's preferences and your tab software's allowances it is not unheard of for them to maintain full manual control over scores by reading/processing feedback results but only ever manually adjusting scores as a result (rather than having it automatically adjust due to the ratings in the feedback)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:94 +msgid "What is the score scale going to be? What do each of those numbers represent? How will this be communicated to participants so they can score accurately and consistently?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:95 +msgid "What kind of questions will feedback forms ask? If using :ref:`customisable printed or online forms ` consider how these questions be used tactically to identify key issues (say discriminatory scoring) or more easily identify people who should be promoted/demoted. While managing feedback is often a messy and subjective task, it can often be improved by being more targeted in what data it collects." +msgstr "" + +#: ../../guide/tournament-logistics.rst:96 +msgid "How will feedback be monitored, and how will this information feed back into the scores and allocations? At large tournaments it is not unusual for an adjudication core member to sit off each round to review and process feedback — there isn't really a good stretch of available time to do so otherwise. However even if doing this note that there are communication issues to manage here, as each adjudication core member will each end up with a relatively incomplete overview of the total volume of feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:98 +msgid "If possible it's nice to plan in advance for when the tab will be released (i.e. on the last night; the day after; etc.) as this often gets left to the last minute to be decided. Also the possibility of whether people can redact themselves from tabs should be raised, as that might be useful to inform participants of during online registration or tournament briefings. In a similar fashion, some adjudication cores might also want to limit speaker tabs to only a certain number of places, particularly at novice-centric tournaments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:99 +msgid "How to handle conflict collection; see the following section." +msgstr "" + +#: ../../guide/tournament-logistics.rst:100 +msgid "How to handle the submission of scoresheets and feedback, primarily in terms of which parts of the process should be done online and offline. Some adjudication cores will have strong thoughts here; others will happily follow whatever you recommend. Key considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:104 +msgid "Paper-based feedback is much more taxing to enter than paper-based scoresheets — typically there is much more of it; it asks for a greater variety of data; and it is submitted at inconsistent times. The one advantage is that it is easier to make feedback mandatory with paper, as you can ensure all teams and adjudicators have done so prior to leaving the room. Thus, in most cases, a good online feedback system is much more preferable than paper. If using paper be aware that you will need a lot of volunteers to ensure the feedback is collected promptly. If internet or smartphone access is limited at your tournament it is probably best to accommodate both paper-based and online methods." +msgstr "" + +#: ../../guide/tournament-logistics.rst:105 +msgid "The consequences of having incorrect or missing ballots are much more severe than for feedback. As such major tournaments use paper ballots in some form as the final stage in a checking process to ensure that the results of a debate are definitely correct — adjudicators will always make mistakes and while digital ballots can catch/prevent some types of error (i.e. a low point win) they can't catch others (assigning the wrong scores to the wrong speaker, nominating the wrong winning team, etc.). Assuming your software supports both options, the choice is thus whether to use a hybrid approach (online submission followed by paper verification) or to rely entirely on paper. A fully-paper based approach will be simpler for both yourself and adjudicators, and can be almost as efficient if you have a sufficient number of volunteers. In contrast, a hybrid approach will be potentially much faster if you are short of volunteers and if you expect that almost all adjudicators will have access to the internet, a smartphone, and are capable of following instructions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:107 +msgid "In some circuits, and when using some particular tab software, tournaments might run a 'dual tab' where there is a second, independent, version of the tab software and database into which all data is *also* entered. From what we understand this performs a dual role, as both a backup system that can take over from the main one (say if internet access drops) and as a way of verifying ballot data (by comparing draws or databases between software rather than having a two-step entry process operating for a single tab). This practice seems obsolete when working with modern web-based tab software that is capable of backing up and restoring to an offline system, but we would like to hear your feedback if you think that is not the case." +msgstr "" + +#: ../../guide/tournament-logistics.rst:110 +msgid "Conflicts/Clashes (registration/equity/adjudication core)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:114 +msgid "There should always be a *single* means of collecting conflicts (i.e. a single Google Sheet/Form) and all conflicts should go through it. Because the nature of this data is sensitive and evolving, there must be a single location where it can be easily captured and verified as having been entered into the tab. Conflicts data should never be spread across a loose collection of emails/personal messages/spreadsheets; otherwise keeping track and knowing which ones have been entered into the system will be painful and error prone. Get in touch in with equity and registration in advance and make it clear that they should not make their own conflicts form; or if they've already made one, make sure you adopt it and have access/control of it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:115 +msgid "Conflicts should, ideally, *only be collected after a participants list has been published* and requests for people to nominate conflicts should also be sent out as few times as possible. Most people will only fill this form in once, so it is vital that when asked to nominate conflicts they have as much information as they need to do so comprehensively. Without a public and reasonably-complete participants list people will either nominate conflicts that are not present (wasting your time in cross-referencing data) or not realise someone is present and raise the conflict at a latter, less opportune time." +msgstr "" + +#: ../../guide/tournament-logistics.rst:116 +msgid "In some circuits only adjudicators are allowed to nominate conflicts because of the risk of teams using conflicts 'tactically' to block adjudicators that they think are terrible judges. However, having teams nominate conflicts can be useful: adjudicators may overlook a conflict or there may be equity-based reasons that a conflict is non-symmetrical. This trade-off can be handled in two ways:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:120 +msgid "Not allow teams to nominate conflicts during registration; but allow them to approach equity teams before, or during, the tournament to identify the conflict. Equity can then raise the issue with the tab team and adjudication core and it can be added to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:121 +msgid "Allow teams to nominate conflicts during registration; but have the adjudication core review the data for 'tactical' conflicts. These are usually relatively easily identified, although can be overlooked if the adjudication core does not know the participants or their region/circuit well. The adjudication core can then override the conflict, discuss it with the teams, or raise it with equity. However, if going down this route, the tab team should discuss with the adjudication core how to manage this process well-ahead of the tournament, and ensure they actually do review the conflicts prior to the first round — otherwise it will likely surface during an allocation and become a major distraction during a critical time period." +msgstr "" + +#: ../../guide/tournament-logistics.rst:123 +msgid "As mentioned in the previous section, the adjudication core (possibly with equity) should provide some degree of guidance about what kinds of debating-related conflicts should be provided. People should be able to self-define what constitutes a conflict, but there are circumstances where they are overly cautious and can be reassured that it is not necessary. The opposite problem may occur also, where many people may have a very high bar for what defines a conflict which could lead to perceptions of bias from other participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:124 +msgid "Generally, it is preferable that each form nominates a single conflict, and people are asked to re-submit for each conflict they are adding." +msgstr "" + +#: ../../guide/tournament-logistics.rst:126 +msgid "To save you some hassle the conflict form should make this very clear (i.e. that one conflict = one submission; ensure the field labels reinforce this)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:127 +msgid "The conflict form should also make clear that you shouldn't use the form if you don't have any conflicts (i.e. people will submit 'None', 'None' etc)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:128 +msgid "The conflicts form should also make clear that adjudicator's don't need to submit a conflict for their current institution and that team's don't need to submit conflicts for adjudicators from their current institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:130 +msgid "In poorly-structured conflict forms, identifying exactly who is doing the conflicting and who is being conflicted is a nightmare. You want to structure the questions to minimise this ambiguity. A form should definitely ask:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:132 +msgid "Who are you (the conflict-specifier)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:133 +msgid "Are you a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:134 +msgid "Which institution are you from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:135 +msgid "If part of a team, which team are you in?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:136 +msgid "Who are you conflicting?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:137 +msgid "Are they a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:138 +msgid "Which institution are they from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:139 +msgid "If they are in a team, which team is it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:140 +msgid "Have previously attended any other institutions; or have other reasons to conflict entire institutions? If so, specify those institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:142 +msgid "Note that this last question can be tricky to deal with; good tab software will let you conflict an adjudicator from an institution other than their own, but it is harder to mark an individual team as having members previously attending another institution. These circumstances are rare and typically very 'soft' conflicts but are probably best handled by creating individual conflicts between that team and adjudicators from the previous institution in question." +msgstr "" + +#: ../../guide/tournament-logistics.rst:143 +msgid "Adjudication core members will often not nominate their own conflicts; presuming that they will notice and correct them during allocations. They often forget or overlook this. Their conflicts should be entered as per normal." +msgstr "" + +#: ../../guide/tournament-logistics.rst:146 +msgid "Scheduling (convenors / venue organisers)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:148 +msgid "One of the easiest ways to have things run late is to set an unrealistic schedule. As much as possible the timing allocated to rounds (inclusive of events such as lunch or committee forums) should conform to an even distribution of how long it takes to process results and create a draw/allocation — you don't want to be in a position where particular rounds have too much time and others too little time to spend on allocations and other crucial tasks. This is something that should definitely be working on in conjunction with convenors and other critical parties before they lock down timing details with food suppliers or the operators of the debating venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:150 +msgid "Note also that in most circumstances it is preferable to create a draw and allocation for the first day of the next round at the night before. This time should be built in to the schedule of the previous day, and raised with the adjudication core so they don't expect to be able to immediately depart after the day's rounds are done." +msgstr "" + +#: ../../guide/tournament-logistics.rst:152 +msgid "Below is the time taken within each round at Australs 2017. For context, this was neither a particular efficiently or inefficiently tabbed tournament. Notable details:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:156 +msgid "The tournament was ~40 rooms each round and had access to 3-6 runners and data enterers. Paper ballots were pre-printed and distributed by runners to rooms prior to the debates starting, then collected sometime after the 15 minute deliberation period. Feedback was submitted online. At Australs all adjudicators (excluding trainees) submit their own ballots." +msgstr "" + +#: ../../guide/tournament-logistics.rst:157 +msgid "The adjudication core were neither particular slow nor fast in allocating adjudicators compared to other adjudication cores. At Australs most adjudication cores will create allocations by using first running an automatic allocation then extensively tweak the results." +msgstr "" + +#: ../../guide/tournament-logistics.rst:158 +msgid "There were no serious issues that delayed the tabbing of any particular round beyond the routine and expected issues of last-minute draw changes, adjudicators producing incomprehensible ballots, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:159 +msgid "Whilst the tab ran relatively quickly, there were minor delays because of mismatches between the planned schedule and the optimal schedule from a tab perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:160 +msgid "A round at Australs takes around 2 hours from a debater's perspective: 30m of prep, ~60m for a debate, ~15m for deliberation, and ~15m for the oral adjudication and feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:161 +msgid "We didn't note the timing of data-entry in Round 8 as there was no time pressure. After data entry was finished, finalising and double-checking the breaks took through to ~7-8pm." +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Day" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "One" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Two" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Three" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "Round" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "1" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "2" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "3" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "4" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "5" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "6" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "7" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "8" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "Draw generated" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +#: ../../guide/tournament-logistics.rst:169 +msgid "*Night prior**" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:43" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "16:12" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:17*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:05" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "15:46" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:10*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:07" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "Allocation finished" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:17 ``+34m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:36 ``+24m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "20:28* ``+71m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "12:58 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:24 ``+38m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "21:30* ``+140m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:25 ``+78m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "Motions released" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:28" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:50 ``+33m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:47 ``+11m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:22" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:14 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:40 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "9:30" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "14:18 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "First ballot received" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:51 ``+143m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:46 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:52 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:18 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:13 ``+119m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:40 ``+120m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:35 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +#: ../../guide/tournament-logistics.rst:172 +msgid "?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "Last ballot confirmed" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:38 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "16:07 ``+21m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:15 ``+23m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:05 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "15:44 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:09 ``+29m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:06 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:176 +msgid "Tab Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:178 +msgid "Setting up a tab site is the most technically challenging (or at least annoying) part of tabbing. It is where you need to reconcile large amounts of data and configure a variety of settings to ensure everything will run without issues during rounds. While this is often done a day or two before the tournament, ideally you should look to do as much as possible in the week or two beforehand where there is much less time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:181 +msgid "Importing data: workflow" +msgstr "" + +#: ../../guide/tournament-logistics.rst:185 +msgid "First check with registration people if their data is complete, and if not who is missing. If it's only a few people it's viable (for tab purposes) to use place-holders for them, as long as you remember to follow up and edit their data manually later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:186 +msgid "Familiarise yourself with the different methods for importing data into your tabbing program. Typically, these include options for bulk-importing spreadsheets, for adding information piece-by-piece through a graphical interface, or a hybrid systems. Depending on your tabbing software it may be easiest to first setup your tournament on a local copy of the tab (where it will be faster to rectify mistakes) and transfer the data to the live site when everything is mostly complete." +msgstr "" + +#: ../../guide/tournament-logistics.rst:188 +msgid "If you are using Tabbycat our spreadsheet importer is definitely easiest to use on a local copy; however using the visual importer is perfectly viable for larger tournaments if you are not comfortable with the command line. When using the spreadsheet importer note that it will likely take several iterations to get the data to import cleanly as there will typically be small mismatches in speaker/institution names and the like." +msgstr "" + +#: ../../guide/tournament-logistics.rst:190 +msgid "If the tournament (or the host society) has their own domain name and your tab software is self-hosted consider whether you want to setup the tab site on their domain so that the URL is nicer and/or easier to type." +msgstr "" + +#: ../../guide/tournament-logistics.rst:192 +msgid "If you are using Tabbycat, and deploying to Heroku, be sure to read our documentation about the size of Postgres database your tournament will require. Setting up the correct size of database from the start is the best way to go, as transferring information at a later stage is a hassle and could delay the tab at inopportune times." +msgstr "" + +#: ../../guide/tournament-logistics.rst:195 +msgid "Importing data: regions/societies" +msgstr "" + +#: ../../guide/tournament-logistics.rst:199 +msgid "Societies will often have special names that they like to use in draws (that are not the same as their institution's name or acronym). These can be gathered from institutional reps or from prior tabs. When in doubt err on the colloquial / most recognisable name; particularly for formats where teams need to find each other prior to the debate." +msgstr "" + +#: ../../guide/tournament-logistics.rst:200 +msgid "If your tabbing software has methods for assigning region information to teams and adjudicators (for diversity purposes) determine with the adjudication core the types of regions that will be used." +msgstr "" + +#: ../../guide/tournament-logistics.rst:203 +msgid "Importing data: participants" +msgstr "" + +#: ../../guide/tournament-logistics.rst:207 +msgid "Check you have emails/phone numbers included in your data that will be imported (presuming your tabbing software supports this) there are useful to have on hand later for either emailing out information or quickly following up errant adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:208 +msgid "Often, the easiest way to prepare registration data for tab imports is to create new tabs in the registration spreadsheet, and use referencing to automatically order and arrange their data into the format your tab software wants. If the registration data changes significantly this will also make it easier to re-import things." +msgstr "" + +#: ../../guide/tournament-logistics.rst:209 +msgid "Often some adjudicators, typically local independents, may not be available for all rounds. Try and find out who this affects and when; once data has been imported you can :ref:`pre-check these adjudicators in and out of rounds ` (if your tab software supports this; otherwise note it for later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:210 +msgid "Remember that the swing team(s) probably also need to be imported into the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:213 +msgid "Data import: rooms" +msgstr "" + +#: ../../guide/tournament-logistics.rst:217 +msgid "Ideally you want not just a list of rooms, but also of their types and categories — i.e. what building a room is in and/or it will be coded so that participants can find it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:218 +msgid "You want to know if access to some rooms is conditional; i.e. if some rooms are only available for some rounds. Again, if your tab software supports it you can :ref:`record this availability information into the system ` (once data is imported) otherwise you can note it for later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:219 +msgid "Registration should have collected information about accessibility requirements; they should be imported into your tab software (if it :ref:`supports automatically matching accessibility requirements `) or note for later. In general you will also want to use a similar process to ensure that members of the adjudication core are assigned rooms that are close to the tab room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:220 +msgid "You also want some idea of priority; that is to say if some rooms are inconvenient (and you have more rooms than you need) they should be marked as a low priority so they will be allocated only if needed. Again, this might be automatically done by your tab software or something you will need to note and manually change after each draw is made." +msgstr "" + +#: ../../guide/tournament-logistics.rst:223 +msgid "Data import: adjudicator test/CV scores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:225 +msgid "Ideally the adjudication core should do this themselves as they are marking the test or scoring CVs. If they won't, or you don't trust them with full tab access, be prepared to do so yourself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:228 +msgid "Data import: tab access" +msgstr "" + +#: ../../guide/tournament-logistics.rst:230 +msgid "Set up user accounts for the adjudication core with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:231 +msgid "Set up user accounts for runners/assistants with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:233 +msgid "If using Tabbycat and using online ballots or feedback with the private URLs method, participants should be emailed out their private URLs before they start travelling to arrive at the tournament (i.e. when they have a reasonable chance of checking their email). This can be done using the inbuilt pages on Tabbycat, or by importing participants data into a service such as Mailchimp." +msgstr "" + +#: ../../guide/tournament-logistics.rst:236 +msgid "Pre-Rounds Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:239 +msgid "Setting up the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:241 +msgid "This is typically the first order of business, as all future pre-round setup tasks (i.e. training the adjudication core, testing printing, etc.) are better for being done in the same space that will be used throughout the rounds. Once you're in the space there are a couple of small checks to run through before the larger question of how to arrange and use the space should be tackled:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:245 +msgid "Check with convenors whether things can be left in the tab room overnight. If they can't you'll need to make plans for how to move any big items (printers; ballot stacks) to and from the tab room each day." +msgstr "" + +#: ../../guide/tournament-logistics.rst:246 +msgid "Check that the internet access in the tab room is reliable." +msgstr "" + +#: ../../guide/tournament-logistics.rst:247 +msgid "Check that the projector system works, both with whatever wired-in computer is in the room and when connected to your laptop." +msgstr "" + +#: ../../guide/tournament-logistics.rst:248 +msgid "Check what items either yourself, or the organisers, have at hand and check if anything needs to be acquired before the next day. Critical items for tab rooms are typically:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:252 +msgid "An extension cord with multi box; ideally a pair of each." +msgstr "" + +#: ../../guide/tournament-logistics.rst:253 +msgid "Whiteboard markers (assuming there is a whiteboard) otherwise permanent markers and large sheets of paper (i.e. A2) can suffice." +msgstr "" + +#: ../../guide/tournament-logistics.rst:254 +msgid "Boxes. Lots of boxes. Loose ballots are a source of confusion and error, so you want some way of temporarily storing ballots as they proceed through the entering and checking process. You probably want at least three large boxes (for ballots to-enter, ballots to-check, and finished ballots) but more will be useful." +msgstr "" + +#: ../../guide/tournament-logistics.rst:255 +msgid "Spare printing ink/toner, and paper for the printer. Ideally your paper would be multi-coloured, with each colour being used for a different round. Pastel colours are ideal, and you ideally want at least three different colours so that you don't have to repeat a colour within the same day. Be sure to calculate how many sheets you will need per round and ensure you have a generous number of spares." +msgstr "" + +#: ../../guide/tournament-logistics.rst:256 +msgid "If tabbing a format that can produce multiple ballots per-debate, staplers are essential to keep those ballots organised. Buy at least two sturdy ones." +msgstr "" + +#: ../../guide/tournament-logistics.rst:258 +msgid "Non-essential, but often useful to have items:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:262 +msgid "Whatever dongles/adapters you need to connect your laptop to the projectors, both in the tab room and in the briefing room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:263 +msgid "An Ethernet cable (or two) as a backup option if WiFi drops or is overloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:264 +msgid "Post-it notes are a great way to temporarily mark ballots with information; typically used to indicate ballots that need correcting." +msgstr "" + +#: ../../guide/tournament-logistics.rst:265 +msgid "You'll often need to make impromptu signs; sticky tape and/or blu-tack are good here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:266 +msgid "Spare pens for the people doing data entry to use" +msgstr "" + +#: ../../guide/tournament-logistics.rst:267 +msgid "Trash bags for collecting rubbish as it accumulates" +msgstr "" + +#: ../../guide/tournament-logistics.rst:268 +msgid "A Chrome Cast can occasionally be very useful if a projector or screen doesn't have accessible input cables or so that you can use a projector without having your laptop tethered to a particular podium and desk." +msgstr "" + +#: ../../guide/tournament-logistics.rst:270 +msgid "If you haven't already it's a good idea to check your printing setup by printing off a bunch of generic ballots and feedback forms to have on hand if the need arises (i.e. a ballot is missing and needs to go out ASAP; or if someone can't do feedback online and needs to do so on paper). At worst, the blank ballots you print can be used for the out-rounds. While printing these off, time how long it takes the printer to print say 25 ballots and extrapolate from that to figure out how long it will take to print the entire round's worth of ballots. Note that if printing off a round's ballots is relatively quick it can be useful to delay it in order to better accommodate any last-minute changes to the draw that happen post-announcement. It's also worth thinking about how you (or at least who will) group up the printed ballots in order to distribute them to runners." +msgstr "" + +#: ../../guide/tournament-logistics.rst:272 +msgid "At this point you should also setup whatever process you need for managing runners and the ballot collection process. At a minimum, this should probably be a spreadsheet or a list on a whiteboard outlining the different groups of rooms with spaces to mark in which runners are delivering/collecting ballots for each location. Who is running where might change from day to day and should be kept updated. It should also have some method for contacting each runner (i.e. a cell phone number)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:274 +msgid "The question of how to arrange the actual room is one with many answers, and is obviously shaped by the peculiarities of the space itself. However there needs to be some system behind it so that people know exactly where to go and what to do when there is time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:276 +msgid "The key consideration behind this system is typically the 'flow' of ballots: what happens after they are brought back from runners, but before they are completely entered into the system. Think through how you want this process to operate and how the space can be arranged to make each step as smooth as possible. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:280 +msgid "When runners initially return a big stack of ballots, what happens? They could be transferred directly to the data-enterers to start on, but it is often useful to have preliminary checks here in order to keep the job of the data-enterers as simple as possible. These checks could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:284 +msgid "For formats with multiple ballots per-debate, you typically want to identify and staple together all the ballots from a given panel." +msgstr "" + +#: ../../guide/tournament-logistics.rst:285 +msgid "For tournaments where ballots are liable to go missing (or for when you have plenty of data-enterers and want peace of mind) it is worth using the :ref:`ballot 'check-in' system of your tab software ` (if it has one) to mark off ballots as physically present in the tab room. This allows you to quickly identify which ballots are missing and begin tracking them down earlier than you would do otherwise if just waiting for the 'to enter' pile to be exhausted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:286 +msgid "Depending on your preferences and resources, ballots could at this stage be checked for errors. This could include a basic sweep for missing information (i.e. totals) or a comprehensive sweep that includes checking math errors, ambiguous handwriting, low-point wins, etc.). While this will delay the time between ballots arriving and being entered, it will mean that you can start correcting ballots sooner, and lessens the burden on (potentially inexperienced) data-enterers to check and catch these. If you have many runners, and they are familiar with how debating scoring works, this is recommended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:288 +msgid "Once this preliminary step has occurred the next task is actually entering the ballots. The number of steps here is dependent on your tab software and tab settings; you might have had the 'draft' ballot be submitted online by chairs or you might have the whole two-step process of a 'draft' ballot entry and the 'confirmed' ballot entry taking place within the tab room. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:292 +msgid "Regardless of whether you are working with a one-step or a two-step process, you want to arrange the tables where data-enterers are sitting such that their need to move is minimised. That might mean either have a central inbox of ballots to enter in the centre of the tables (such that everyone can reach it) or having multiple 'clusters' of enterers around boxes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:293 +msgid "If work with a two-step process you want those two steps to be an active part of the spatial arrangement. That is to say, typically there will be a grouping of enterers who are working on the initial ballot entry (clustered around a box or boxes) and then a separate 'downstream' grouping of enterers that work on confirming/validating those entries. Depending on the size of tournament and quantity of runners, you either want it so that individuals from the first group can easily pass their ballots to the box of the second group; i.e. by reaching across the table or walking a short distance. At huge tournaments, you might want a dedicated person to transfer ballots between boxes to prevent enterers having to get up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:294 +msgid "In a two-step process people may need to transfer roles, as generally you want to prioritise entry and then validation. Often this isn't necessarily much more efficient, but if 'rebalancing' the roles make sure that the spaces assigned to each role can accommodate extra people, and that people physically move to occupy each role." +msgstr "" + +#: ../../guide/tournament-logistics.rst:295 +msgid "In general, you want to minimise the number of ballots that each enterer feels the need to 'hoard' to work through to keep the work evenly distributed. If people are taking a large number of ballots to process, at the final stages of entering some people will have a bunch to work through while others will be finished. Making it easy to collect and pass on ballots in the space itself helps cut down on this while keeping entry efficient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:296 +msgid "While the exact spatial arrangement depends on your numbers and what furniture is available, a long rectangle is a good starting point as the ballot process is in general linear (check, enter, validate, finish). Typically, this might look like a series of tables in a row with enterers sitting on either side and with the various ballot boxes in the middle." +msgstr "" + +#: ../../guide/tournament-logistics.rst:297 +msgid "When ballots have finished being enter/validated there definitely should be some sort of final 'done' box. Take care how ballots are put here, a common source of error is people putting ballots there before they are fully finished." +msgstr "" + +#: ../../guide/tournament-logistics.rst:298 +msgid "When ballots need to be corrected you generally want to 'extract' them from this process and hand them off to a tab-director or assistant to chase up and collect. There should be a forethought process for managing this; and ideally a dedicated space for it to prevent ballots being lost and to make it easy to identify ongoing issues. This might look like a process of sticking a post-it note (outlining the error) to the ballot, and then pulling it from entry/validation and placing it on a desk. Ideally you also want one of the tab directors always *not* doing data entry so that they are immediately available to manage this process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:301 +msgid "Training volunteers" +msgstr "" + +#: ../../guide/tournament-logistics.rst:303 +msgid "If at all feasible you want to train that volunteers acting as runners and/or data enterers the day *before* the tournament starts otherwise the first round will be rough. It's generally a good idea for this training session to generally mirror the process of running a round. It's also generally a good idea that — even if you have enough people for dedicated runner and data-enterer roles — to train all volunteers so that they are familiar with each role and can fill in if needed. This has a couple of stages:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:307 +msgid "Introductions and details" +msgstr "" + +#: ../../guide/tournament-logistics.rst:311 +msgid "Volunteering is typically thankless and often stressful. It's also quite a dull and mechanical process: deliver paper; collect paper; enter numbers; check numbers. Given the rather unglamorous nature of their role you want your volunteers to feel welcome and a crucial part of a wider team. When meeting everyone for the first time try and run the introductions in a non-perfunctory manner and get to know people's background/interests and outline how valuable they are to the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:312 +msgid "As part of this process you should, note their cell phone numbers or whatever means you will use to coordinate communication between the team." +msgstr "" + +#: ../../guide/tournament-logistics.rst:313 +msgid "Figure out what will be happening during downtime and how you can make it more enjoyable. Would volunteers like to watch debates, work in the tab room, etc. Is there anything they would like during those down times (music, snacks, coffee, etc.)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:315 +msgid "Rooms and Running" +msgstr "" + +#: ../../guide/tournament-logistics.rst:319 +msgid "If runners are unfamiliar with debating in general, outline the basics of what draws are, what ballots are actually for, and what this process looks like from a debater's perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:320 +msgid "Outline how/when the printing process occurs and who will sort/assign the ballots. Now is a good time to assign different runners to the different groups/rooms that they will be working with." +msgstr "" + +#: ../../guide/tournament-logistics.rst:321 +msgid "It is critical that, as a group, you actually go to everyone one of the venue groups and identify all of the venue rooms that are listed so that everyone knows exactly where to go. This may take some time. But it is a good chance to both check those rooms actually exist and pre-identify any problems that might occur with runners and debaters finding them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:322 +msgid "Outline in general what happens during ballot collecting: when to do it, how to approach chairs, what do to if they are slow or delaying. You should raise the chance of chairs being belligerent and outline how they (and you) should deal with this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:323 +msgid "If you are having runners pre-check ballots it's a good idea to fill out a few 'bad' ballots to demonstrate the kinds of checking required. If you are using any communication systems (i.e. having runners mark of buildings as 'done' in an online system) go through that now also." +msgstr "" + +#: ../../guide/tournament-logistics.rst:325 +msgid "Data entry and checking" +msgstr "" + +#: ../../guide/tournament-logistics.rst:329 +msgid "Before starting, setup logins for everyone and show them how to login. Also get an idea of what devices they will be using, or can bring, for data entry purposes. Check/ensure that they will have internet access on those devices." +msgstr "" + +#: ../../guide/tournament-logistics.rst:330 +msgid "Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots which they will occur." +msgstr "" + +#: ../../guide/tournament-logistics.rst:331 +msgid "Run through how the seating/table/box arrangement works and the types of roles at different positions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:332 +msgid "Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else." +msgstr "" + +#: ../../guide/tournament-logistics.rst:333 +msgid "Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:336 +msgid "Training the adjudication core" +msgstr "" + +#: ../../guide/tournament-logistics.rst:338 +msgid "Typically making the first-round's draw and allocation is the best time to really run through how your tab software and processes work in a 'real' environment as well as the expectations surrounding their and your role. Generous amounts of time should be budgeted for this; it's not uncommon for it to take up most of an evening. It's also worth having an older tab, or a tab full of fake data handy in order to show them how, say, the feedback or allocation interfaces look like when full of data." +msgstr "" + +#: ../../guide/tournament-logistics.rst:340 +msgid "To kick off you should probably setup tab logins for the adjudication core as necessary, outline what kinds of access they have, and (particularly if they haven't used your tab software before) outline broadly what pages they should and shouldn't access. In particular, show them how to find and parse feedback as that is often the interface where they will be spending most of their time individually. As part of this tour outline (if you haven't already) how feedback will work, as well as the means by which the adjudication core can use the tab software to keep track of feedback as it comes in. Ideally some sort of general strategy should be formed for this, so that particular people sit out rounds, or are delegated the task of catching up on feedback at other points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:342 +msgid "Depending on how many runners you have it may be necessary, or beneficial, if the adjudication core helps out with data entry. However, if you go down this route the adjudication core need to be highly trained; they are often much more likely than volunteers (who are less self-confident and have more experience) to make errors. Whether you do or don't do this, ensure that adjudication core members know to come to the tab room ASAP after they have finished adjudications rather than swanning around socialising or going to lunch. Draws will often be held up just by the fact that not enough adjudication core members are present to start or finish an allocation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:344 +msgid "The first-round allocation is the last thing you want to cover. It is typically your only change to slowly and comprehensively walk the adjudication core through the allocation interface and the allocation system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:346 +msgid "Allocation interfaces, while often complex, should be stepped through so that the adjudication core knows precisely how to operate it themselves (if needed). They should know what it can (and can't do) and how the different features can be used and activated. For example, diversity highlights might be an optional toggle (in which case you explain how to active it, when to do so, and what it represents) or there might be parts of the interface that detail information such as a room's liveness, energy, or bracket which should be highlighted and explained (i.e. how 'liveness' is determined)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:348 +msgid "Secondly, and most importantly, is outlining how the automated process of adjudicator allocation operates, and how this can be made to match the adjudication core's preferences. Typically, you want to rely on automatic adjudicator allocations as much as possible in order to decrease the time taken to do an allocation; however every adjudication core has a different philosophy on what their perfect allocation looks like, and it is your job to try and align that ideal with what the automated system produces as much as is possible. The precursor to this is yourself knowing how your tab system allocation works: what is the relationship between a debate's bracket (or assigned priority/energy) and the numeric ranking of the automatically generated panel? Does the software optimise panel strength for a voting majority, or across all panellists? When does the software allocate solo chairs over panels? How does it avoid conflicts? Does it have (and enforce) particular expectations for a given adjudicator's score; or does it rely on a more relative comparison? The answers to the questions will often be dramatically different between different programs and you should know them in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:350 +msgid "Most tab software will have at least some options for you to configure those automated processes — either by changing the automatic allocation's parameters directly or by controlling the ranking and feedback systems that feed into it. The first round is the prime opportunity to configure these options so that they align as close as possible with what the priorities of the adjudication core. If your feedback ranking system is mismatched with how you expect the automatic allocation to place adjudicators, or if the distribution of adjudicators across the draw is not what you expect, the adjudication core will end up wasting significant amounts of time adjusting allocations. Even if things work well using the default settings, ensure you experiment and demonstrate the consequences of changing the settings just to show that it can be done, what the general effects are, and to see if there are even-better configurations." +msgstr "" + +#: ../../guide/tournament-logistics.rst:352 +msgid "This process of tweaking the automatic allocation settings is one you should also revisit as the rounds progress." +msgstr "" + +#: ../../guide/tournament-logistics.rst:354 +msgid "How to approach diversity (typically in terms of region and gender) across an allocation in particular is something that some members of an adjudication core will not have had to consider in the context of a large tournament with time pressure or in terms of having to make explicit trade-offs. Again, you should make it clear how the software can accommodate this, and get the adjudication core to plan for how (in general) they want to approach this. Often it will form the final phase of the allocation process, and so can easily be forgotten or skipped over; or people will have different philosophies of how to approach this which are only raised at critical points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:356 +msgid "Outline that there will usually be a trade-off between the quality of each allocations and the speed at which the tournament runs. When time is not a factor, many adjudication cores will often take an hour or more in order to create a perfect allocation; but they should know though that aiming for perfect during many rounds will break the schedule. You should try and get them to set some sort of time goal for allocations, and (during the rounds) ensure that they are aware of when they are going too fast or too slow. Depending on your personal preferences and the norms surrounding tab direction in your circuit you may want to actual enforce these time limits." +msgstr "" + +#: ../../guide/tournament-logistics.rst:358 +msgid "Finally, outline how you will all communicate. Again, there should be a single medium for this so that everyone knows what is going on; and this is ideally something that has been planned out beforehand with them and the organising committee. But at this point the tab team may have expanded, or there may be better options than what was being used previously. It's also worth outlining which parts of the tab team will generally be doing what roles and where — i.e. who will be rolling the draw, who will be chasing up people, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:361 +msgid "Preparing a briefing" +msgstr "" + +#: ../../guide/tournament-logistics.rst:365 +msgid "At large tournaments there should be some form of briefing covering ballots and feedback process, even if it is just quick one. Usually you will want to be the person to design and deliver this; other people less-familiar with the system may miss details." +msgstr "" + +#: ../../guide/tournament-logistics.rst:366 +msgid "Liaise with convenors and the other people doing briefings to ensure (a) they know you're doing one; and (b) you are not overlapping in terms of content." +msgstr "" + +#: ../../guide/tournament-logistics.rst:367 +msgid "See the last section of this document for notes on what can be useful to include here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:370 +msgid "Final checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:374 +msgid "Check if the convenors have made a map that clearly outlines where the rooms are. Ensure it's clear and post it to either the tab site (ideally) or somewhere like Facebook." +msgstr "" + +#: ../../guide/tournament-logistics.rst:375 +msgid "Check that convenors have some sort of way-finding system in place, i.e. chalked directions or colour-coded signs. Check these colour codes match the names of your venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:376 +msgid "Check that the draw types are correct for each round in the tab system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:377 +msgid "Check with adjudication core if/when there are secret rounds and that these are correct in the edit data base area." +msgstr "" + +#: ../../guide/tournament-logistics.rst:378 +msgid "Check how the draw will be displayed and managed. Is the projector good; how big does the text size need to be? How fast is the scroll?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:379 +msgid "If you will pre-print ballots check that you've set the \"return ballots to\" configuration setting; even if it just says \"to runners\"." +msgstr "" + +#: ../../guide/tournament-logistics.rst:382 +msgid "Managing Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:384 +msgid "Once everything has been setup and everyone knows what they should do, the actual process of running each round should go smoothly. It probably won't though. The earlier sections should have laid out what the ideal process for managing data entry and allocations, so this section will instead focus on what can go wrong and what to keep an eye out for." +msgstr "" + +#: ../../guide/tournament-logistics.rst:387 +msgid "Disaster scenarios" +msgstr "" + +#: ../../guide/tournament-logistics.rst:389 +msgid "There are two broad classes of disaster scenario here. The first, and more rare case is when either internet access at the venue goes out or if a web service that your tab software depends on has an outage (for example, both Tabbie 2 and Heroku-deployed Tabbycat instances depend on Amazon Web Services). The first can at least be solved temporarily if tethering is available, but if that is not possible (or the latter case occurs) you may need to switch to using an offline copy of that tab by restoring from a backup if the outage is non-transient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:391 +msgid "Obviously, for this to work, you should be taking regular backups using whatever mechanism your tab software allows. Key times to do so are critical events such as finishing entering a round's data or finalising an adjudication allocation as these are especially difficult to recreate. Importantly, these backups are only useful to you if you have a downloaded copy of them; ideally download to a Dropbox or some other cloud service that will spread them across multiple computers and an online service." +msgstr "" + +#: ../../guide/tournament-logistics.rst:393 +msgid "Having an outage of internet access or a key web service go down to the point of having to switch to an offline tab is an exceedingly rare event, but one worth planning for at large tournaments. That is to say you should have ideally have an offline copy of your tabbing software setup on your local machine, and know how to restore a backup to it if necessary." +msgstr "" + +#: ../../guide/tournament-logistics.rst:395 +msgid "Backups are also useful as guards against a much more common source of error: data loss caused by user error. It is not unheard of for even experienced tab directors (or inexperienced adjudication core members) to accidentally delete an entire allocation, delete a round, or some other form of destructive action that would require a lot of work to redo. Taking backups at key points, and knowing how to restore them (to the online copy of the tab) is a useful — and occasionally essential — skill." +msgstr "" + +#: ../../guide/tournament-logistics.rst:397 +msgid "The much more common source of a major tab disruption is a major user-error or a bug within your tab software itself. Fixing these will be highly-context dependent and the best way you can prepare for them is to know your tab software well enough to understand what might have caused it or be able to contact someone else who does. That said, having backups on hand can also allow you to restore your database to before the bug or user-error occurred and try to proceed without re-triggering it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:400 +msgid "Expected problems" +msgstr "" + +#: ../../guide/tournament-logistics.rst:402 +msgid "Incorrect ballots are an inevitable tragedy. Many more optimistic tab directors will imagine that these can be prevented through sufficiently detailed briefings, recurring public shamings, or fool-proof ballot designs. While these might help in cutting down the number of errors, eliminating them entirely seems to be an unachievable goal. Note that this is particularly true at international tournaments and/or at tournaments that draw participants from circuits which have more than one predominant format." +msgstr "" + +#: ../../guide/tournament-logistics.rst:404 +msgid "While debaters as a whole display astonishing levels of innovation in discovering new ways to incorrectly fill in a ballot, there are a couple of broad cases that you should look out for an prepare people to deal with:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:408 +msgid "Not adding up score correctly. Pretty much everyone who does this will note that this is the first time that it has ever happened to them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:409 +msgid "Omitting some information. Most common are not filling in total scores, the nominating winner, or the margin. Having omitted an entire team's scores or speaker names is not uncommon." +msgstr "" + +#: ../../guide/tournament-logistics.rst:410 +msgid "Scores that are outside the range." +msgstr "" + +#: ../../guide/tournament-logistics.rst:411 +msgid "Low-point wins, or tied-point wins. Typically occurs in conjunction with (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:412 +msgid "Poor handwriting rendering numbers illegible. While one could 'guess' whether a number is in fact a 6 or a 5 based on a team's total score, doing so is dangerous as it assumes that the person hasn't also done (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:413 +msgid "'Correcting' information in an ambiguous way. For example, using arrows to swap a speaker's order (which is typically circular/ambiguous) or drawing numbers over other numbers in a way that makes it unclear which is the original and which is the replacement." +msgstr "" + +#: ../../guide/tournament-logistics.rst:414 +msgid "Ballots just going entirely missing because either a runner missed the room, the chair forgot to return it, or the chair just left it in the room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:416 +msgid "Ballots aside, there are a number of other common occurrences that will necessitate changes to the drawn and allocations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:420 +msgid "Teams will not turn up to debates, or turn up to debates extremely late. In both cases they will often not notifying anyone. Aside from needing to swap in a swing team in their place in the draw, it's worth keeping in mind that the necessity of a swing team might not be known until right when debates are about to start (which can lead to issues if you assume trainees or runners will be filling up the 'spare' swing team)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:421 +msgid "Adjudicators will also go missing. As with teams this can usually be caught during roll call; but might also not be known up until debates start. If the adjudication core is available they can make adjustments, but often you will need to make a call as to whether to form an even-sized panel or to redistribute adjudicators from elsewhere." +msgstr "" + +#: ../../guide/tournament-logistics.rst:422 +msgid "When a draw is released there will often be conflicts that were unknown to the tab system, and will necessitate making changes to the draw post-release. It's important that when making these changes you keep a clear record of what needs to change (if there are multiple swaps needed it can get tricky to keep track of) and ensure that all parties involved know about where they are being swapped to." +msgstr "" + +#: ../../guide/tournament-logistics.rst:425 +msgid "Ongoing checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:427 +msgid "You will have a decent amount of downtime during rounds when debates are happening. A couple of things its worth keeping an eye on during that time:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:431 +msgid "Ensuring your backups have been taken and downloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:432 +msgid "Ensuring the tab room isn't devolving into mess." +msgstr "" + +#: ../../guide/tournament-logistics.rst:433 +msgid "If you can be bothered (and if no adjudication core member is doing so) reviewing feedback for critical issues (i.e. comments highlighting severe issues, or chairs getting very low scores) is a good way to be useful. If using paper-based feedback this can look like physically separating out these feedback forms for the attention of the adjudication core; while if using online feedback systems you may want to keep a collection of browser tabs to show." +msgstr "" + +#: ../../guide/tournament-logistics.rst:434 +msgid "Chasing up the language committee (if one exists for this tournament) to confirm which teams are in which category and what their break preferences are (if multiple breaks are not allowed). You want to have this information confirmed as soon as possible as it becomes of critical value to allocations once the draw starts segmenting into live/dead rooms." +msgstr "" + +#: ../../guide/tournament-logistics.rst:435 +msgid "Reviewing how efficiently things are running and whether there are any bottlenecks that can be better addressed in the next round. It's generally a good idea to (on a whiteboard or a spreadsheet) keep track of how long each stage of a round is taking (running, data-entry, allocation) and what (if anything) is causing delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:437 +msgid "If hosting Tabbycat on Heroku keep an eye on the metrics section of the dashboard area, noting if there are 'timeout errors' and what the average response times are. Adding more dynos should help with both." +msgstr "" + +#: ../../guide/tournament-logistics.rst:440 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:443 +msgid "Generating the adjudicator's break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:445 +msgid "Determining the adjudicator break generally involves a complex set of considerations rather than strictly ranking based on feedback. As such most adjudication cores will use whiteboards or Google docs to draft and discuss the possible options. One thing to note here is that breaking adjudicators will need to be marked as such in the tab at some point (both so they can be on future draws, and for publication) so you want to be careful that the tab is the final source of authority here — it is easy for information to get out of sync between what the adjudication core is using to draft the break and the system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:447 +msgid "When the adjudication core is determining the break ensure that they have an idea of the *quantity* of adjudicators needed (breaking too few or too many will cause issues) and whether there are any special considerations (such as having conflicts with large portions of the draw, or leaving at a given point) that involve a specific adjudicator being considered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:450 +msgid "Generating the team break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:452 +msgid "Before doing so in an automated fashion, first check in your tab software whether all teams are assigned to the right break categories. Depending on whether your software supports multiple formats you probably also want to check that each break category is using the right 'rule' specified by the tournament (i.e. a WUDC- or Australs- compliant break ranking). Also double check the break size itself is correct in the software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:454 +msgid "Hopefully the automated system will generate a correct break, but this should always be checked against what you'd expect the results to be from standings. Note also that there are cases, such as when a team has to leave, or when teams are or are not double-breaking, that mean the automated break results need to be overridden (typically in Tabbycat you would add a marker or note to include their ranking, but exclude them from having a break rank)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:457 +msgid "Announcing the break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:459 +msgid "Mistakes are made surprisingly often during results announcements. Again, this is often a problem with incomplete or out of sync data, where print-outs, slides, or the tab site itself might not reflect (for example) last minute changes about breaks or have potentially mixed up teams or adjudicators with similar names. Things that can help:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:463 +msgid "Have a single source for what is being read out — i.e. a printed list (recommended) or the tab site itself — but don't mix and match. If making slides (often a good idea for large/crowded venues) copy the data from the canonical source being announced." +msgstr "" + +#: ../../guide/tournament-logistics.rst:464 +msgid "Double check what is being read out against the tab site, and/or whatever draft lists were used to determine the adjudicator's break. Verify with the adjudication core that everyone who should be there is, and that nobody is missing." +msgstr "" + +#: ../../guide/tournament-logistics.rst:465 +msgid "Clarify what information should be on the print-outs and the general order in which things are read. For example, it might be easy to omit breaking adjudicator's institutions, to use ambiguous abbreviations over full institution names, or to have an inconsistent approach to how the information is read (i.e. whether it is read as *wins* then *team points* then *team name*)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:466 +msgid "Without revealing any details try and get at least some guidance on how to pronounce names that people are not familiar with pronounce." +msgstr "" + +#: ../../guide/tournament-logistics.rst:467 +msgid "Have backup copies of whatever is being read from and clarify who is reading off what portions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:468 +msgid "Try to publish the break list on the tab website (or via some other online method) shortly after it is announced in order to minimise the chance of misinformation spreading." +msgstr "" + +#: ../../guide/tournament-logistics.rst:471 +msgid "Managing the out-rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:473 +msgid "Out-rounds are generally under less time pressure and can be managed by just one or two members of the tab team. However, they tend to be run in a more haphazard fashion, so there are a couple of things to keep on top of:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:477 +msgid "You should keep track of which adjudicators have or have not been used throughout the finals allocations. It is easy for adjudication cores to forget to allocate someone and have to either drop them or promote them beyond what they had originally intended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:478 +msgid "It is very easy for ballots to get lost in break rounds as chairs have less defined roles and processes in what they do with their ballots. While having correct speaker scores correctly entered for break rounds isn't a strict necessity, it is nice to have and the alternative (using fake speaks just to record the winner) can cause confusion. Closely manage distributing ballots to the chairs and collecting them as soon as possible afterwards; especially if there is any time pressure. Generally it is not worth printing off per-debate ballots; just print a stack of generic ballots at the start of the out-rounds and distribute as needed." +msgstr "" + +#: ../../guide/tournament-logistics.rst:479 +msgid "You should know, in addition to when the break rounds are, when the results announcements are. Often these announcements are saved (for suspense or logistics reasons) until particular points of time (i.e. until the evening social; or until other out-rounds are finished). Obviously it's important not to accidentally release results; but often convenors and the adjudication core will often have different ideas about when results are meant to be released." +msgstr "" + +#: ../../guide/tournament-logistics.rst:481 +msgid "If using Tabbycat to manage out-rounds with multiple break categories, note that the round progression is no longer strictly linear. So be careful with when/if results are released online and note that often you can't rely on online interface to release draws publicly." +msgstr "" + +#: ../../guide/tournament-logistics.rst:484 +msgid "Preparing for tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:486 +msgid "At some point, if you haven't already, have a discussion with the adjudication core about when the tab itself will be released and what data will be released. Well before the tab is due to be released you want to check that anonymisations and any speaker flags (i.e. Novice, ESL) are up to date in your tab software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:489 +msgid "Managing the tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:491 +msgid "Almost there!" +msgstr "" + +#: ../../guide/tournament-logistics.rst:493 +msgid "If hosting Tabbycat on Heroku it's worth increasing the resources available to the server for the ~12 hour period following tab release; it's by far the most concentrated burst of traffic the site will receive. Because Heroku bills by the hour, even going to a relatively expensive option, such as performance dynos with auto-scaling, will be very cheap if run just for this period. That said the site should be relatively resilient even in the face of large amounts of traffic; even running with the most basic resources allocated, at worst pages will be temporarily slow or not load." +msgstr "" + +#: ../../guide/tournament-logistics.rst:495 +msgid "To get an idea of how the site is performing in the Heroku dashboard keep an eye on the average request time number and adjust the number of dynos to try and keep it under say two seconds; ideally just one. When you first turn on the tab release settings, make sure you go through and load every page before announcing it to the public, doing so will trigger the caching mechanism that means potentially complex pages (say the speaker tab) don't need to be calculated from scratch each time someone loads the page." +msgstr "" + +#: ../../guide/tournament-logistics.rst:498 +msgid "Post-tournament" +msgstr "" + +#: ../../guide/tournament-logistics.rst:500 +msgid "Once you have sufficiently recovered, consider writing up and sharing a post-script about how things went; noting things that did or didn't go well. Next year's tab directors would certainly appreciate it, and it would be great to see this kind of knowledge spread more widely. The developers of your tab software would also appreciate hearing your feedback; particularly if there were issues that could have been prevented or ameliorated by the software itself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:503 +msgid "Appendix: Briefing Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:505 +msgid "This is a very loose, but not exhaustive, collection of things that are useful to communicate to speakers and adjudicators in a tab briefing. While briefing fatigue is real, having clear expectations about how things like ballots and feedback work are highly valuable uses of the tournament's time if they can at all help cut down the kinds of problems that delay the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:508 +msgid "How feedback works" +msgstr "" + +#: ../../guide/tournament-logistics.rst:510 +msgid "Is it online, or offline? If online did people receive links? What do they do if they have lost it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:511 +msgid "Is feedback mandatory? What accountability mechanisms are there? Will you publish the shame list online or raise it in between rounds?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:512 +msgid "Who will be submitting feedback on who? Do trainees do so?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:513 +msgid "Remind teams that only one of their feedbacks count; they should coordinate who is doing it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:514 +msgid "What is the feedback scale? What does it correspond to? Common sources of confusion:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:516 +msgid "Feedback scales are not like Uber. You do not get five stars for being adequate and generic." +msgstr "" + +#: ../../guide/tournament-logistics.rst:517 +msgid "Feedback scales are not relative to position; it is an absolute scale. That is to say, if your trainee was good, they probably do not deserve the highest rating; they get whatever rating indicates they should be a panellist or low-chair." +msgstr "" + +#: ../../guide/tournament-logistics.rst:518 +msgid "Consider accompanying the score/scale with a statement characterising how these numbers correspond to positions - e.g. a 4.0 means 'should continue on good panels, should chair low rooms'" +msgstr "" + +#: ../../guide/tournament-logistics.rst:520 +msgid "If using online submission options, what should people without phones or internet access do?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:523 +msgid "How ballots work" +msgstr "" + +#: ../../guide/tournament-logistics.rst:525 +msgid "This part of the presentation will be condescending. It is also necessary. The two causes of delays in the draw running late, and thus the tournament running late are (1) people not filling out ballots correctly or (2) people's ballots going missing. Emphasise that this should be taken seriously; minutes spent chasing bad ballots are often minutes that delay every single person at the tournament from doing what they are actually here to do. You should highlight, ideally with illustrated examples:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:529 +msgid "Which parts of the ballot *must* be filled in; people will often overlook margins, or special fields such as motion vetoes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:530 +msgid "That people must specify the full names of speakers; not nicknames or just-first names. Often names will be written poorly or have ambiguities (i.e. two speakers on a team called James) and having the full name is the only way to resolve it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:531 +msgid "That people should **not draw arrows to swap the order of speakers** as these are impossible to decipher. Here, and in other areas, always *cross-out* information clearly and write it again rather than using arrows or drawing over what is there." +msgstr "" + +#: ../../guide/tournament-logistics.rst:532 +msgid "That people should try and write numbers in a manner that makes them crystal clear. Put cross-bars in 7s; bases on 1's. Make 8's actually look like two circles. If people know they have poor handwriting maybe consider writing the literal words — *seventy-one* below the numbers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:533 +msgid "That for styles that do not have a single ballot for a panel, reiterate that everyone fills in their own ballots. At Australs, if this isn't made absolutely clear someone will average their panels ballots in order to try and 'help' you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:534 +msgid "That runners do not fill out ballots. In BP, remind them that only chairs should fill out ballots (i.e. it cannot be deputised to a wing). In formats with individual ballots, remind chairs to make sure their wings have actually filled out a ballot, and get them to check for errors or ambiguities." +msgstr "" + +#: ../../guide/tournament-logistics.rst:535 +msgid "That everyone is bad at math. People who think they are good at math just haven't messed up their ballot *yet*. Emphasize that people should always use their phone's calculators to check totals. At typical tournaments using exclusively paper ballots math errors happen multiple times a round, almost every round." +msgstr "" + +#: ../../guide/tournament-logistics.rst:536 +msgid "How long people have to fill out their ballots. Suggest that chairs actually keep track of this time during a stopwatch, and start moving towards critical steps (i.e. scoring) well *before* the time is up, not *once* it is up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:537 +msgid "Outline what chairs should do to return ballots. If ballots are being run by runners, outline what they should do if a runner doesn't appear. If they are not being run by runners remind people that returning ballots should be there number one priority, over say giving a lengthy adjudication or team feedback. Or getting lunch." +msgstr "" + +#: ../../guide/tournament-logistics.rst:538 +msgid "Remind people to *be nice to runners* and that being mean to runners will have serious consequences." +msgstr "" + +#: ../../guide/tournament-logistics.rst:539 +msgid "Remind people that the tab team and adjudication core will not, except for absolutely exceptional circumstances, accept photos or messaged descriptions of ballots; that all results must be on paper and handled in the same manner. The adjudication core should also be reminded of this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:542 +msgid "How to locate the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:544 +msgid "People should know how to get to the tab room, either to raise issues with the adjudication core or to correct ballot errors. Make it crystal clear where it is and how to get there. Also ensure people know not to barge in; that they should knock and wait." +msgstr "" + +#: ../../guide/tournament-logistics.rst:546 +msgid "Clearly communicate the contact details of the tab directors and get people to take them down. In most cases you do not want people going through convenors or the adjudication core for any tab-related issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:549 +msgid "Misc" +msgstr "" + +#: ../../guide/tournament-logistics.rst:551 +msgid "Now is a good time to encourage people to consider getting involved with tabbing and tab-development. Emphasize that both do not necessarily require technical skills and that tabbers are (or should be) open to feedback and ideas from the wider community. Tell people to come find you and chat if they are interested and put up a link to the `Facebook tabbing group `_." +msgstr "" + +#: ../../guide/tournament-logistics.rst:553 +msgid "If you appreciated this guide we'd appreciate a slide promoting `Timekept `_ and `Debatekeeper `_. This would also be a good point to remind people that their timekeeping apps shouldn't be making noise *unless* they have been explicitly assigned to keep time by the chair." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/guide/upgrading.po b/docs/locale/cs/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..63279af4a31 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/guide/upgrading.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: cs_CZ\n" + +#: ../../guide/upgrading.rst:5 +msgid "Upgrading Tabbycat" +msgstr "" + +#: ../../guide/upgrading.rst:7 +msgid "Generally only want to upgrade copies of tab sites that are used on an ongoing basis for multiple tournaments, or if there is a bugfix release between when you setup your site and when the tournament is running." +msgstr "" + +#: ../../guide/upgrading.rst:11 +msgid "Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade." +msgstr "" + +#: ../../guide/upgrading.rst:14 +msgid "Upgrading a Local Copy" +msgstr "" + +#: ../../guide/upgrading.rst:16 +msgid "Assuming you haven't made any changes to the Tabbycat code, upgrading a locally installed copy should just be a matter of `downloading the latest source code `_ and replacing the existing files with the new ones. If you used git to download these files initially you can just pull down the latest copy of the master branch to do this." +msgstr "" + +#: ../../guide/upgrading.rst:18 +msgid "You would then repeat the \"Install Tabbycat\" instructions for your original installation method." +msgstr "" + +#: ../../guide/upgrading.rst:21 +msgid "Upgrading on Heroku" +msgstr "" + +#: ../../guide/upgrading.rst:23 +msgid "The easiest way to upgrade a Heroku site is to create an account on Github and then to `'fork' `_ the `Tabbycat repository `_." +msgstr "" + +#: ../../guide/upgrading.rst:25 +msgid "Once you have done this you can login to your Heroku Dashboard, go to your app, and then navigate to the Deploy tab. In this tab, adjacent to *Deployment method* select the GitHub option. This will bring up a new 'Connect to GitHub' section where you can search for 'Tabbycat' to find the copy of the repository you made earlier and connect it." +msgstr "" + +#: ../../guide/upgrading.rst:29 +msgid "Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/index.po b/docs/locale/cs/LC_MESSAGES/index.po new file mode 100644 index 00000000000..b31b9668d53 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/index.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: cs_CZ\n" + +#: ../../index.rst:18 +msgid "Installation" +msgstr "" + +#: ../../index.rst:32 +msgid "Using Tabbycat" +msgstr "" + +#: ../../index.rst:41 +msgid "Tabbing Guide" +msgstr "" + +#: ../../index.rst:52 +msgid "Feature notes" +msgstr "" + +#: ../../index.rst:75 +msgid "About" +msgstr "" + +#: ../../index.rst:8 +msgid "Tabbycat User Guide" +msgstr "" + +#: ../../index.rst:10 +msgid "Tabbycat is a draw tabulation system for parliamentary debate tournaments. It supports two-team formats such as Australs, World Schools, Asians, Australian Easters and all New Zealand formats, as well as British Parliamentary (WUDC). It is also highly configurable, supporting many custom variations of the above formats too. If you're looking for a general overview of the software, check out our `README on Github `_." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/docker.po b/docs/locale/cs/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..dd4a9328319 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/docker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: cs_CZ\n" + +#: ../../install/docker.rst:5 +msgid "Installing Locally using Docker" +msgstr "" + +#: ../../install/docker.rst:7 +msgid "Is this the best install method for you?" +msgstr "" + +#: ../../install/docker.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/docker.rst:12 +#, python-format +msgid "If you need an offline copy of Tabbycat, installing using Docker should be simpler and quicker than using the \"Install Locally on…\" instructions for your operating system. However if a Docker installation doesn't work as outlined below, it's harder to address what isn't working. If you encounter any problems with Docker, we recommend using the \"Install Locally on…\" option as a fallback, but if you need to do so, `please also report the issue you're having on GitHub `_ or :ref:`contact the developers `." +msgstr "" + +#: ../../install/docker.rst:14 +msgid "Docker is an application that makes it very easy to load and run a specific collection of software. It allows us to bundle everything necessary to run Tabbycat into a single package rather than have users install everything needed step-by-step. Once set up, Docker will allow you to start and stop a webserver (that in turn runs Tabbycat) on your computer whenever you want and without the need for internet access." +msgstr "" + +#: ../../install/docker.rst:18 +msgid "1. Download Tabbycat" +msgstr "" + +#: ../../install/docker.rst:20 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/docker.rst:22 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/docker.rst:24 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/docker.rst:28 +msgid "2. Install Docker" +msgstr "" + +#: ../../install/docker.rst:31 +msgid "If using macOS or Linux" +msgstr "" + +#: ../../install/docker.rst:33 +msgid "Install the **Docker Community Edition (stable)** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:36 +msgid "If using Windows 10 Pro, Enterprise, or Education Edition" +msgstr "" + +#: ../../install/docker.rst:40 +msgid "Install the ****Docker Community Edition (stable)*** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:41 +msgid "Before or shortly after installing it, Docker may ask you to enable hypervisor and restart your PC. If it asks you this follow the prompts and restart as asked." +msgstr "" + +#: ../../install/docker.rst:42 +msgid "Once Docker has finished installing, open up the newly-installed Docker application, then right-click the app's icon (the whale) in the Taskbar." +msgstr "" + +#: ../../install/docker.rst:43 +msgid "From there, hit *Settings* in the menu and *Shared Drives* in the sidebar. Tick the checkbox next to your hardrive and then click *Apply*. After that has applied exit and reopen the docker app (ie right-click the taskbar icon and hit exit) and verify that the checkbox is still there." +msgstr "" + +#: ../../install/docker.rst:49 +msgid "If using Windows 7, Windows 8, or Windows 10 Home Edition" +msgstr "" + +#: ../../install/docker.rst:51 +msgid "Install the **Docker Toolbox** from the `Docker Toolbox downloads page `_." +msgstr "" + +#: ../../install/docker.rst:53 +msgid "Not sure which edition of Windows you have? Click Start, search for \"System\", and open the Control Panel item \"System\"." +msgstr "" + +#: ../../install/docker.rst:57 +msgid "3. Run Tabbycat in Docker" +msgstr "" + +#: ../../install/docker.rst:60 +msgid "If using the Docker App" +msgstr "" + +#: ../../install/docker.rst:62 +msgid "*These instructions apply if you installed the Docker App, i.e., if you are using macOS, Linux or Windows Pro/Enterprise/Education.*" +msgstr "" + +#: ../../install/docker.rst:66 +msgid "Ensure that Docker application is open (there should be a whale icon in your menu/task bar) and that it says that Docker is running." +msgstr "" + +#: ../../install/docker.rst:68 +msgid "Browse to the location where you extracted Tabbycat to. Open up the **bin** folder there. Within that folder:" +msgstr "" + +#: ../../install/docker.rst:70 +msgid "If you're on macOS, press the Control key, click the icon for **osx_docker_start.command**, then choose Open from the shortcut menu." +msgstr "" + +#: ../../install/docker.rst:71 +msgid "If you're on Windows, open **windows_docker_start.bat**." +msgstr "" + +#: ../../install/docker.rst:72 +msgid "If you're on Linux, open up a terminal in the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:74 +msgid "A terminal window should popup and bunch of text scroll by. If this is your first time running Docker it may take a while (30 minutes or more) to download the virtual machine. When the text has stopped scrolling by you should see a `Finished building Tabbycat!` message." +msgstr "" + +#: ../../install/docker.rst:76 +msgid "Open up http://localhost:8000/ (Windows) or http://0.0.0.0:8000 (OSX/Linux) in a browser of your choice!" +msgstr "" + +#: ../../install/docker.rst:78 ../../install/docker.rst:100 +msgid "If you want to reopen Tabbycat at a later time (say after restarting) repeat steps 1 through 4 here." +msgstr "" + +#: ../../install/docker.rst:81 +msgid "If using the Docker Toolbox" +msgstr "" + +#: ../../install/docker.rst:83 +msgid "*These instructions apply if you installed the Docker Toolbox, i.e., if you are using Windows 7, Windows 8 or Windows 10 Home.*" +msgstr "" + +#: ../../install/docker.rst:87 +msgid "Start the **Docker Quickstart Terminal**." +msgstr "" + +#: ../../install/docker.rst:89 +msgid "Run the command ``docker-machine ip``. Take note of the IP address it shows, for example::" +msgstr "" + +#: ../../install/docker.rst:94 +msgid "Navigate to the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:96 +msgid "Open a browser and go to http://192.168.99.100:8000/, replacing \"192.168.99.100\" with whatever IP address was shown in step 2." +msgstr "" + +#: ../../install/docker.rst:98 +msgid "Once you're done and want to stop the Tabbycat server, press Ctrl+C, wait until the next prompt appears, and then run ``docker-machine stop``." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/heroku.po b/docs/locale/cs/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..5a1ba19848e --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/heroku.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: cs_CZ\n" + +#: ../../install/heroku.rst:5 +msgid "Installing on Heroku" +msgstr "" + +#: ../../install/heroku.rst:7 +msgid "When running Tabbycat on the internet, we set it up on `Heroku `_. The project is set up to be good to go on Heroku, and it works well for us, so if you'd like to run it online, we recommend that you do the same. Naturally, this requires you to have a Heroku account." +msgstr "" + +#: ../../install/heroku.rst:9 +msgid "There are two ways to do this: a **short way** and a **long way**. Most people should use the short way. The long way requires some familiarity with command-line interfaces and Git, and requires a :ref:`local installation ` as a prerequisite, but makes it easier to :ref:`upgrade versions ` later on and (unlike the short way) allows you to import data from CSV files." +msgstr "" + +#: ../../install/heroku.rst:12 +msgid "The short way" +msgstr "" + +#: ../../install/heroku.rst:13 +msgid "Click this button:" +msgstr "" + +#: ../../install/heroku.rst:18 +msgid "This is the easiest way to deploy an instance of Tabbycat online. It requires no technical background." +msgstr "" + +#: ../../install/heroku.rst:20 +msgid "If you don't already have a Heroku account, it'll prompt you to create one. Once you're logged in to Heroku, choose a name for your installation, then scroll down and click **Deploy**. Once it's finished, click **View** and follow the prompts. Once finished, open the site and from there you can easily set up a demo data set (if you just want to learn Tabbycat) or use the data importer to set up a real tournament." +msgstr "" + +#: ../../install/heroku.rst:22 +msgid "During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard." +msgstr "" + +#: ../../install/heroku.rst:24 +msgid "If you can't access a credit card, you can instead install a limited version, which we call \"Tabbykitten\". However, Tabbykitten cannot send any e-mails or handle as much public traffic. We therefore strongly recommend it only as a last resort, and even then only for small tournaments. `Use this link to set up a Tabbykitten site `_." +msgstr "" + +#: ../../install/heroku.rst:27 +msgid "The long way" +msgstr "" + +#: ../../install/heroku.rst:28 +msgid "The long way sets you up with more control over your environment. Because you'll clone `our GitHub repository`_, it'll be easier for you to :ref:`upgrade your app ` when a new version is released. You'll also have the flexibility to make and contribute updates to the source code. We recommend it if you have experience with Git. It's also easier with this method to import CSV files using the command-line importer, so if you have a very large tournament, this might make importing initial data easier." +msgstr "" + +#: ../../install/heroku.rst:30 +msgid "We've tested these instructions successfully on Windows, Linux and macOS." +msgstr "" + +#: ../../install/heroku.rst:33 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/heroku.rst:35 +msgid "You need to have at least a passing familiarity with command-line interfaces to get through the longer traditional method. We'll talk you through the rest." +msgstr "" + +#: ../../install/heroku.rst:37 +msgid "When we say \"command shell\", on Windows we mean **Command Prompt**, and on Linux and macOS we mean **Terminal** (or your favourite command shell)." +msgstr "" + +#: ../../install/heroku.rst:39 ../../install/heroku.rst:100 +msgid "Advanced users" +msgstr "" + +#: ../../install/heroku.rst:42 +msgid "Tabbycat is a `Django `_ project. As such, it can be installed on any web platform that supports Django, using any SQL system that Django supports. Just be aware that we haven't tried any other platform." +msgstr "" + +#: ../../install/heroku.rst:45 +msgid "Short version of the long way" +msgstr "" + +#: ../../install/heroku.rst:47 +msgid "We provide a \"short version\" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below." +msgstr "" + +#: ../../install/heroku.rst:56 +msgid "If you want to :ref:`import tournament data ` from CSV files, :ref:`install Tabbycat locally `, put your CSV files in ``data/yourtournamentname``, then::" +msgstr "" + +#: ../../install/heroku.rst:68 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/heroku.rst:70 +msgid "Install the `Heroku Command Line Interface (CLI) `_, then log in with the command ``heroku login``." +msgstr "" + +#: ../../install/heroku.rst:72 +msgid "If you don't already have **Git**, follow the `instructions on the GitHub website `_ to set up Git." +msgstr "" + +#: ../../install/heroku.rst:75 +msgid "2. Set up a local installation" +msgstr "" + +#: ../../install/heroku.rst:77 +msgid "If you don't already have a local installation, follow the instructions on the page for your operating system, listed below, to set up a local installation." +msgstr "" + +#: ../../install/heroku.rst:79 +msgid "When downloading the source code, you **must** take the option involving cloning the GitHub repository using Git. In the macOS and Windows instructions, this means the option described in the \"Advanced users\" box. To do so, use these commands:" +msgstr "" + +#: ../../install/heroku.rst:86 +msgid "Do not download the .tar.gz or .zip file and extract it." +msgstr "" + +#: ../../install/heroku.rst:88 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/heroku.rst:89 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/heroku.rst:90 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/heroku.rst:91 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/heroku.rst:93 +msgid "If you do already have a local installation, update to the latest version using:" +msgstr "" + +#: ../../install/heroku.rst:103 +msgid "It's not *strictly* necessary to have a fully functional local installation if you don't want to import data from CSV files. But it certainly helps." +msgstr "" + +#: ../../install/heroku.rst:106 +msgid "3. Deploy to Heroku" +msgstr "" + +#: ../../install/heroku.rst:110 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/heroku.rst:114 +msgid "Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``." +msgstr "" + +#: ../../install/heroku.rst:120 +msgid "This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details." +msgstr "" + +#: ../../install/heroku.rst:122 +msgid "When this script finishes, it will open the app in your browser. It should look something like this:" +msgstr "" + +#: ../../install/heroku.rst:127 +msgid "4. Import tournament data locally" +msgstr "" + +#: ../../install/heroku.rst:129 +msgid "Steps 4 and 5 are optional; there are other methods of :ref:`importing data `. However the following method is most useful for large tournaments where manual entry would be tedious." +msgstr "" + +#: ../../install/heroku.rst:131 +msgid "Step 4 is the same as the process described in :ref:`importtournament-command`." +msgstr "" + +#: ../../install/heroku.rst:135 +msgid "Place your CSV files in ``data/yourtournamentname``, as described in :ref:`importing-initial-data`." +msgstr "" + +#: ../../install/heroku.rst:137 +msgid "Create a new, blank local database::" +msgstr "" + +#: ../../install/heroku.rst:141 +msgid "It's normally easiest to name your local database after your app name, so that if you have multiple sites, you know which one relates to which." +msgstr "" + +#: ../../install/heroku.rst:143 +msgid "Reconfigure ``DATABASES`` in your settings_local.py file to point to this new database." +msgstr "" + +#: ../../install/heroku.rst:145 +msgid "Activate your virtual environment::" +msgstr "" + +#: ../../install/heroku.rst:149 +msgid "Run initial migrations on your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:154 +msgid "Import your tournament data into your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:158 +msgid "If your data's not clean, it might take a few attempts to get this right. We recommend either destroying and recreating the database (``dropdb``, ``createdb``), or wiping it using ``dj flush``, before retrying." +msgstr "" + +#: ../../install/heroku.rst:160 +msgid "Check it looks like how you expect it to look, by starting your local installation::" +msgstr "" + +#: ../../install/heroku.rst:165 +msgid "5. Push the local database to Heroku" +msgstr "" + +#: ../../install/heroku.rst:167 +msgid "Once you're happy with how your local import went, you can push the local database to Heroku." +msgstr "" + +#: ../../install/heroku.rst:169 +msgid "This step wipes the Heroku database clean, and replaces it with the contents of your local database. If you have any data on the Heroku site that isn't also in your local database, **that data will be lost** and will not be recoverable." +msgstr "" + +#: ../../install/heroku.rst:171 +msgid "If you have multiple Heroku sites, you may find that the ``heroku`` commands refuse to run, prompting you to specify an app. If so, add ``--app yourappname`` to each ``heroku`` command." +msgstr "" + +#: ../../install/heroku.rst:173 +msgid "Enable maintenance mode. This takes the site offline, to ensure that no-one can possibly create or change any data on the site while you're pushing a new database up::" +msgstr "" + +#: ../../install/heroku.rst:177 +msgid "Reset the database. (Caution: This permanently deletes all information on your Heroku database!)" +msgstr "" + +#: ../../install/heroku.rst:183 +msgid "Push your local database to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:187 +msgid "You might need to specify your local PostgreSQL credentials by adding ``PGUSER=yourusername PGPASSWORD=******** PGHOST=localhost`` to the *beginning* of that command. (This sets environment variables to those values for the duration of that one command.)" +msgstr "" + +#: ../../install/heroku.rst:189 +msgid "Disable maintenance mode::" +msgstr "" + +#: ../../install/heroku.rst:195 +msgid "Heroku options you may want to change" +msgstr "" + +#: ../../install/heroku.rst:197 +msgid "If you have a large tournament, you may want to customize your Heroku app. This section provides some guidance on upgrades and settings you may wish to consider. Some of these configurations require you to have the `Heroku Command Line Interface (CLI) `_ installed." +msgstr "" + +#: ../../install/heroku.rst:202 +msgid "Upgrading your database size" +msgstr "" + +#: ../../install/heroku.rst:204 +msgid "The free plan of `Heroku Postgres `_, \"Hobby Dev\", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea:" +msgstr "" + +#: ../../install/heroku.rst:206 +msgid "Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows." +msgstr "" + +#: ../../install/heroku.rst:207 +#, python-format +msgid "The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows." +msgstr "" + +#: ../../install/heroku.rst:208 +msgid "A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows" +msgstr "" + +#: ../../install/heroku.rst:210 +msgid "If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, \"Hobby Basic\", should certainly be more than sufficient." +msgstr "" + +#: ../../install/heroku.rst:212 +msgid "If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity." +msgstr "" + +#: ../../install/heroku.rst:215 +msgid "Custom domain names" +msgstr "" + +#: ../../install/heroku.rst:217 +msgid "Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center:" +msgstr "" + +#: ../../install/heroku.rst:219 +msgid "`Custom Domain Names for Apps `_" +msgstr "" + +#: ../../install/heroku.rst:220 +msgid "`Heroku SSL `_" +msgstr "" + +#: ../../install/heroku.rst:222 +msgid "The custom domain name basically requires two things: a DNS ``CNAME`` entry on your website targeting ``yourappname.herokuapp.com``, and the custom domain configured on Heroku using ``heroku domains:add tab.yourwebsite.com``. You'll also need to provide an SSL certificate for your custom domain and add it using the ``heroku certs:add`` command." +msgstr "" + +#: ../../install/heroku.rst:225 +msgid "HTTPS" +msgstr "" + +#: ../../install/heroku.rst:227 +msgid "All Tabbycat sites deployed to Heroku redirect all traffic to HTTPS by default." +msgstr "" + +#: ../../install/heroku.rst:229 +msgid "For a myriad of reasons, we strongly advise against disabling this. But if for some reason you need to run on plain HTTP, you can do this by setting the ``DISABLE_HTTPS_REDIRECTS`` config variable in Heroku to ``disable`` (see `Heroku documentation on config vars `_). The value of the config var must be ``disable``; if it's anything else, HTTPS redirects will remain in place." +msgstr "" + +#: ../../install/heroku.rst:231 +msgid "Most modern browsers, after having been redirected by a site to HTTPS once, remember that that site requires HTTPS and go there for all subsequent visits even if the user typed in a plain http\\:// address. It may do this because it cached the HTTP 301 permanent redirect, stored an HSTS entry and/or tagged its session cookie to require HTTPS. If, after disabling HTTPS on your Tabbycat site, you find that you're still being redirected to HTTPS, first try a browser or computer that *hasn't* visited the site before. If that works, then remove the relevant entry from your (original) browser's cache, HSTS set and cookies, and try again." +msgstr "" + +#: ../../install/heroku.rst:234 +msgid "Time zone" +msgstr "" + +#: ../../install/heroku.rst:236 +msgid "If you want to change the time zone you nominated during deployment, you can do so by going to the `Heroku Dashboard `_, clicking on your app, going to the **Settings** tab, clicking **Reveal Config Vars** and changing the value of the ``TIME_ZONE`` variable. This value must be one of the names in the IANA tz database, *e.g.* ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``. You can find a `list of these on Wikipedia `_ in the 'TZ\\*' column." +msgstr "" + +#: ../../install/heroku.rst:239 +msgid "SendGrid account details" +msgstr "" + +#: ../../install/heroku.rst:241 +msgid "By default, Heroku will automatically create a SendGrid account for you. For small tournaments, this should work fine. For larger ones, though, SendGrid typically doesn't allow new accounts to send so many emails without additional vetting. This vetting is separate to the verification you did for your Heroku account, and as far as we're aware, it can't be done until you send your first email, by which time it's probably too late." +msgstr "" + +#: ../../install/heroku.rst:243 +msgid "If you're running a large tournament, you may wish to use your own SendGrid account instead. The free tier probably won't suffice after the trial period, but the Essentials tier should be more than adequate. If you're a student and have the `GitHub Education Pack `_, you might find the SendGrid plan here useful." +msgstr "" + +#: ../../install/heroku.rst:245 +msgid "If you set up and use your own SendGrid account, you can remove the SendGrid add-on from your Heroku app. The SendGrid add-on is only necessary if you wish to use Heroku's auto-created SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:247 +msgid "To set up your app to use your own SendGrid account:" +msgstr "" + +#: ../../install/heroku.rst:251 +msgid "`Sign up for a SendGrid account `_, if you don't already have one." +msgstr "" + +#: ../../install/heroku.rst:253 +msgid "`Create an API key `_ in your SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:255 +msgid "There are `instructions for how to do this in the SendGrid documentation `_. The only permission that is needed is the \"Mail Send\" permission, so you can turn off all others if you want to be safe." +msgstr "" + +#: ../../install/heroku.rst:257 +msgid "Set the following config vars in Heroku Dashboard (or using the Heroku CLI, if you have it):" +msgstr "" + +#: ../../install/heroku.rst:259 +msgid "``SENDGRID_USERNAME`` should be set to ``apikey`` (not your username)." +msgstr "" + +#: ../../install/heroku.rst:260 +msgid "``SENDGRID_PASSWORD`` should be set to your API key, which will start with ``SG*******``." +msgstr "" + +#: ../../install/heroku.rst:262 +msgid "The `Heroku SendGrid instructions `_ to do something with ``SENDGRID_API_KEY`` are **incorrect**. We figured this out by contacting SendGrid support staff. Use the above config vars instead." +msgstr "" + +#: ../../install/heroku.rst:268 +msgid "Upgrading an existing Heroku app" +msgstr "" + +#: ../../install/heroku.rst:270 +msgid "For most users, we recommend starting a new site for every tournament, when you set up the tab for that tournament. There's generally not a pressing need to upgrade Tabbycat after a tournament is concluded, and every time you deploy a new site, you'll be using the latest version at the time of deployment." +msgstr "" + +#: ../../install/heroku.rst:272 +msgid "To upgrade an existing Heroku-based Tabbycat app to the latest version, you need to *deploy* the current version of Tabbycat to your Heroku app. There are several ways to do this. We list one below, primarily targeted at users with some background in Git." +msgstr "" + +#: ../../install/heroku.rst:274 +msgid "The essence of it is that you need to `create a Git remote `_ for your Heroku app (if you don't already have one), then `push to it `_." +msgstr "" + +#: ../../install/heroku.rst:276 +msgid "You should **always** :ref:`back up your database ` before upgrading Tabbycat." +msgstr "" + +#: ../../install/heroku.rst:278 +msgid "You'll need both Git and the Heroku CLI, and you'll need to be logged in to the Heroku CLI already." +msgstr "" + +#: ../../install/heroku.rst:280 +msgid "Take a backup of your database::" +msgstr "" + +#: ../../install/heroku.rst:284 +msgid "If you haven't already, clone our Git repository and check out the master branch::" +msgstr "" + +#: ../../install/heroku.rst:289 +msgid "If you've already cloned our Git repository, don't forget to pull so you're up to date::" +msgstr "" + +#: ../../install/heroku.rst:294 +msgid "Check to see if you have a Git remote already in place::" +msgstr "" + +#: ../../install/heroku.rst:300 +msgid "If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``." +msgstr "" + +#: ../../install/heroku.rst:302 +msgid "If a Git remote URL for your Tabbycat site *doesn't* appear, then create one::" +msgstr "" + +#: ../../install/heroku.rst:307 +msgid "If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments." +msgstr "" + +#: ../../install/heroku.rst:309 +msgid "Push to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:313 +msgid "This will take a while to complete." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/linux.po b/docs/locale/cs/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..1533402c904 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/linux.po @@ -0,0 +1,249 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: cs_CZ\n" + +#: ../../install/linux.rst:5 +msgid "Installing Locally on Linux" +msgstr "" + +#: ../../install/linux.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/linux.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/linux.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Linux, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/linux.rst:14 +msgid "The instructions apply to both Linux, and :ref:`Linux on Windows `." +msgstr "" + +#: ../../install/linux.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/linux.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/linux.rst:21 ../../install/linux.rst:56 +#: ../../install/linux.rst:130 +msgid "Advanced users" +msgstr "" + +#: ../../install/linux.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/linux.rst:27 +msgid "Short version" +msgstr "" + +#: ../../install/linux.rst:38 +msgid "Then create **settings/local.py** as described :ref:`below `, then::" +msgstr "" + +#: ../../install/linux.rst:53 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/linux.rst:54 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/linux.rst:59 +msgid "These instructions are for Ubuntu, and are targeted at Ubuntu 18.04. If you have another distribution of Linux, we trust you'll know how to navigate the package manager for your distribution to install the dependencies." +msgstr "" + +#: ../../install/linux.rst:64 +msgid "1(a). Python" +msgstr "" + +#: ../../install/linux.rst:65 +msgid "Tabbycat requires Python 3.6 or later. You probably already have Python 3.6, but you'll also need the development package in order to install Psycopg2 later. The ``venv`` module will come in handy too. Install::" +msgstr "" + +#: ../../install/linux.rst:69 +msgid "Check the version::" +msgstr "" + +#: ../../install/linux.rst:74 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/linux.rst:77 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/linux.rst:78 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/linux.rst:80 +msgid "Install PostgreSQL using the `PostgreSQL installation instructions here `_." +msgstr "" + +#: ../../install/linux.rst:82 +msgid "Normally, installing the latest stable version should be best, but if you're having issues, install the same version as the current `default version on Heroku `_, as that will be what is currently most commonly used with Tabbycat. If you're planning on pushing data between your local installation and a Heroku site, it's best to match the Heroku's current default version." +msgstr "" + +#: ../../install/linux.rst:84 +msgid "You'll also need the ``libpq-dev`` package in order to install Psycopg2 later::" +msgstr "" + +#: ../../install/linux.rst:91 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/linux.rst:92 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/linux.rst:94 +msgid "Tabbycat requires Node and its package manager to compile front-end dependencies. Install using:" +msgstr "" + +#: ../../install/linux.rst:104 +msgid "1(d). Other development tools" +msgstr "" + +#: ../../install/linux.rst:105 +msgid "Some of the Python packages require GCC, G++ and Make in order to install::" +msgstr "" + +#: ../../install/linux.rst:112 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/linux.rst:114 +msgid "Choose either of the following two methods." +msgstr "" + +#: ../../install/linux.rst:117 +msgid "Method 1 (Git clone)" +msgstr "" + +#: ../../install/linux.rst:119 +msgid "If you have Git, life will be easier if you clone `our GitHub repository`_:" +msgstr "" + +#: ../../install/linux.rst:126 +msgid "(You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.)" +msgstr "" + +#: ../../install/linux.rst:128 +msgid "The default branch is ``develop``, so you need to explicitly change the branch to ``master``, which is what the ``git checkout master`` line does." +msgstr "" + +#: ../../install/linux.rst:133 +msgid "You might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/linux.rst:136 +msgid "Method 2 (tarball)" +msgstr "" + +#: ../../install/linux.rst:138 +msgid "If you don't want to use Git, simply download and extract:" +msgstr "" + +#: ../../install/linux.rst:147 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/linux.rst:149 +msgid "You can skip step 1 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/linux.rst:151 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``. Grant this user the ability to create databases, since this'll make it easier to spin up new instances of Tabbycat in the future." +msgstr "" + +#: ../../install/linux.rst:157 +msgid "If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*." +msgstr "" + +#: ../../install/linux.rst:159 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/linux.rst:167 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/linux.rst:168 +msgid "Almost there!" +msgstr "" + +#: ../../install/linux.rst:170 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/linux.rst:176 +msgid "Start a new virtual environment. We suggest the name ``venv``, though it can be any name you like:" +msgstr "" + +#: ../../install/linux.rst:182 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/linux.rst:186 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/linux.rst:192 +msgid "Navigate to the **tabbycat/settings** sub folder and copy **local.example** to **local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/linux.rst:207 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/linux.rst:211 +msgid "Navigate to the **tabbycat** sub-directory, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/linux.rst:219 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/linux.rst:225 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/linux.rst:229 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/linux.rst:234 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/linux.rst:237 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/linux.rst:238 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/local.po b/docs/locale/cs/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..e8ce52aa432 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/local.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:55\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: cs_CZ\n" + +#: ../../install/local.rst:5 +msgid "Local Installations" +msgstr "" + +#: ../../install/local.rst:8 +msgid "What is a local installation?" +msgstr "" + +#: ../../install/local.rst:10 +msgid "Tabbycat is a web-based system: it's designed to run as a web site. However, instead of installing it on a web server, you can install it on your computer, serving web pages to yourself. This is called a local installation." +msgstr "" + +#: ../../install/local.rst:12 +msgid "Then, when you open your browser, you can use Tabbycat like any other web site. The only difference is that this one is on **your** computer, not some computer in a data centre in a far-away land. In effect, you are getting your computer to behave like a web server." +msgstr "" + +#: ../../install/local.rst:17 +msgid "Should I use a local installation?" +msgstr "" + +#: ../../install/local.rst:19 +msgid "In most cases, you should make an online Tabbycat installation by :ref:`setting up an instance on Heroku `. This has a number of major advantages:" +msgstr "" + +#: ../../install/local.rst:21 +msgid "The installation process is easier." +msgstr "" + +#: ../../install/local.rst:22 +msgid "You can enter ballots and manage your tournament from multiple computers." +msgstr "" + +#: ../../install/local.rst:23 +msgid "Participants can access the draw, motions, results and more online." +msgstr "" + +#: ../../install/local.rst:24 +msgid "Heroku's data centers are less likely to fail than your computer is." +msgstr "" + +#: ../../install/local.rst:25 +msgid "Heroku e-mails Tabbycat's developers error reports to help us fix bugs." +msgstr "" + +#: ../../install/local.rst:27 +msgid "In some cases, you might have a good reason to use a local installation. We can think of just one such reason: If you won't have access to the internet at your tournament, or if internet access will be flaky, then you should use a local installation." +msgstr "" + +#: ../../install/local.rst:32 +msgid "You'll need internet access to download dependencies during the local installation process. So if you're not expecting to have reliable internet access at your tournament, be sure to have Tabbycat installed *before* you get there!" +msgstr "" + +#: ../../install/local.rst:37 +msgid "Advanced users" +msgstr "" + +#: ../../install/local.rst:40 +msgid "Tabbycat is a `Django `_ project, so if you have your own preferred method of running Django projects, you can also do that. Just be aware that we haven't tried it." +msgstr "" + +#: ../../install/local.rst:45 +msgid "Okay, so how do I do it?" +msgstr "" + +#: ../../install/local.rst:47 +msgid "The easiest option is to :ref:`install Tabbycat using Docker `. This method should work across all operating systems and is by far the easiest way to get a local copy running." +msgstr "" + +#: ../../install/local.rst:49 +msgid "If installing using Docker does not work, or if you want to be able to modify Tabbycat's code we also have a number of instructions for manually setting up a copy of Tabbycat. There instructions are here:" +msgstr "" + +#: ../../install/local.rst:51 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/local.rst:52 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/local.rst:53 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/local.rst:54 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/local.rst:57 +msgid "Advanced uses" +msgstr "" + +#: ../../install/local.rst:60 +msgid "Can others access my local install?" +msgstr "" + +#: ../../install/local.rst:62 +msgid "Local installations can also take advantage of multiple-computer site access, including data entry---it's just takes more work than a Heroku installation to set up." +msgstr "" + +#: ../../install/local.rst:64 +msgid "Since a local installation is just having your computer run a web server, it can serve other computers too. You can make this work even if you don't have internet access: all you need is a router that you can use to connect a few computers together. Then other computers on your local network can access the Tabbycat site hosted on your computer. We did this at Victoria Australs 2012." +msgstr "" + +#: ../../install/local.rst:66 +msgid "We don't provide detailed instructions for this; we leave it for advanced users to set up themselves. As a rough guide:" +msgstr "" + +#: ../../install/local.rst:68 +msgid "You need to pass in your computer's IP address and port to the `runserver` command, for example, if your computer (the one acting as a server) is 196.168.0.2 and you want to run it on port 8000: ``dj runserver 192.168.0.2:8000``" +msgstr "" + +#: ../../install/local.rst:69 +msgid "You need to configure your firewall settings to allow incoming connections on the IP address and port you specified in that command." +msgstr "" + +#: ../../install/local.rst:70 +msgid "Be aware that local installs use the Django development server, whose **security is not tested**. Therefore, it's a good idea to make sure your firewall **only lets in computers on your local network** (or, if you're really paranoid, isolate the network from the internet completely)." +msgstr "" + +#: ../../install/local.rst:73 +msgid "Can I run an internet-accessible website from a local installation?" +msgstr "" + +#: ../../install/local.rst:75 +msgid "Probably not. Even if you disable your firewall, chances are your home router (or university router) will block any connections from the outside world to you. Even if you can though, **you really shouldn't**. The local installation uses the *Django development server*, which is a lightweight server designed for developers. Specifically, Django **does not test the security of its development server** in the way that proper web servers do. That is: It's a security risk to run a local installation as an internet-accessible site. Don't do it. `Install Tabbycat on Heroku `_ instead." +msgstr "" + +#: ../../install/local.rst:77 +msgid "Alternatively, if you have a background in web development, you might choose to install Tabbycat on your own production server. It's a Django project, so any means of supporting Django projects should work fine." +msgstr "" + +#: ../../install/local.rst:79 +msgid "It's safe to run on a small, isolated network (see above) with your firewall correctly configured because you presumably trust everyone you let on the network!" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/osx.po b/docs/locale/cs/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..0f77ae8eeec --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/osx.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: cs_CZ\n" + +#: ../../install/osx.rst:5 +msgid "Installing Locally on macOS" +msgstr "" + +#: ../../install/osx.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/osx.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/osx.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on macOS, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/osx.rst:15 +msgid "Requisite technical knowledge" +msgstr "" + +#: ../../install/osx.rst:17 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/osx.rst:19 +msgid "Every line in the instructions that begins with ``$`` is a command that you need to run in a **Terminal**, but without the ``$``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/osx.rst:21 ../../install/osx.rst:42 ../../install/osx.rst:68 +msgid "Advanced users" +msgstr "" + +#: ../../install/osx.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/osx.rst:27 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/osx.rst:29 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/osx.rst:32 +msgid "1(a). Python" +msgstr "" + +#: ../../install/osx.rst:33 +msgid "Tabbycat requires Python 3.6 or later. macOS only comes with Python 2.7, so you'll need to install this. You can download the latest version from the `Python website `_." +msgstr "" + +#: ../../install/osx.rst:35 +msgid "The executable will probably be called ``python3``, rather than ``python``. Check::" +msgstr "" + +#: ../../install/osx.rst:40 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/osx.rst:45 +msgid "These instructions will use the ``venv`` module. If you prefer, you can use `Virtualenv `_ instead." +msgstr "" + +#: ../../install/osx.rst:48 +msgid "1(b). Postgres.app" +msgstr "" + +#: ../../install/osx.rst:50 +msgid "Download `Postgres.app `_, move it to your Applications folder, and open it. This should place an icon in your menu bar, showing that the postgres database is running. Whenever you are running Tabbycat you'll need to have this app running." +msgstr "" + +#: ../../install/osx.rst:52 +msgid "You'll need to use the PostgreSQL command-line tools, so run the command that the Postgres.app suggests in its `installation instructions `_ for adding them to your ``$PATH``. As of February 2018, it was::" +msgstr "" + +#: ../../install/osx.rst:57 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/osx.rst:59 +msgid "Download and run the `node.js 8 macOS Installer (.pkg) `_" +msgstr "" + +#: ../../install/osx.rst:62 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/osx.rst:64 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/osx.rst:65 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/osx.rst:66 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/osx.rst:71 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/osx.rst:73 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/osx.rst:76 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/osx.rst:78 +msgid "You can skip steps 1--3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/osx.rst:80 +msgid "Open up a copy of the Terminal app, then copy/paste or type in::" +msgstr "" + +#: ../../install/osx.rst:84 +msgid "Hit enter then quit and reopen the Terminal app." +msgstr "" + +#: ../../install/osx.rst:86 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``." +msgstr "" + +#: ../../install/osx.rst:92 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/osx.rst:96 +msgid "In terminal type in::" +msgstr "" + +#: ../../install/osx.rst:101 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/osx.rst:102 +msgid "Almost there!" +msgstr "" + +#: ../../install/osx.rst:104 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/osx.rst:108 +msgid "Copy **settings/local.example** to **settings/local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/osx.rst:123 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/osx.rst:127 +msgid "Ensure you are in the main Tabbycat directory (not the config folder where **settings_local.py** is and start a new virtual environment. We suggest the name ``venv``, though it can be any name you like::" +msgstr "" + +#: ../../install/osx.rst:131 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/osx.rst:135 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/osx.rst:141 +msgid "Navigate to the **tabbycat** sub folder, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/osx.rst:149 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/osx.rst:155 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/osx.rst:159 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/osx.rst:164 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/osx.rst:167 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/osx.rst:168 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/windows.po b/docs/locale/cs/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..94ddc1a8efe --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/windows.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: cs_CZ\n" + +#: ../../install/windows.rst:5 +msgid "Installing Locally on Windows" +msgstr "" + +#: ../../install/windows.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/windows.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/windows.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/windows.rst:14 +msgid "If you have Windows 10 and any experience with Linux, we recommend installing it on :ref:`Linux on Windows (WSL) ` instead, which is much easier than the process below." +msgstr "" + +#: ../../install/windows.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/windows.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/windows.rst:21 +msgid "In these instructions, we'll use **Windows PowerShell**, a command-line interface that comes with every installation of Windows (since XP). The easiest way to find it (on Windows 7 and later) is to search for it in your Start Menu. Every line in the instructions that begins with ``>`` is a command that you need to run in PowerShell, but without the ``>``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/windows.rst:23 ../../install/windows.rst:81 +#: ../../install/windows.rst:104 +msgid "Advanced users" +msgstr "" + +#: ../../install/windows.rst:26 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/windows.rst:29 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/windows.rst:31 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/windows.rst:36 +msgid "1(a). Python" +msgstr "" + +#: ../../install/windows.rst:37 +msgid "*Python is a popular programming language, and the language in which the core of Tabbycat is coded.*" +msgstr "" + +#: ../../install/windows.rst:39 +msgid "Download and install the latest version of Python 3.6 from the `Python website `_. In the installer, check the box to add Python to your PATH (see box below)." +msgstr "" + +#: ../../install/windows.rst:42 +msgid "Which file should I download?" +msgstr "" + +#: ../../install/windows.rst:44 +msgid "Regardless of if you have 64-bit or 32-bit Windows, choose the \"Windows x86 executable installer\"." +msgstr "" + +#: ../../install/windows.rst:46 +msgid "**Please take note:** Just after you open the installer, **check the \"Add Python 3.6 to PATH\" box**:" +msgstr "" + +#: ../../install/windows.rst:51 +msgid "To check that Python is installed correctly, open Windows PowerShell, type ``python`` and press Enter. It should look something like this. If you installed the 32-bit version, it will say ``32 bit`` instead of ``64 bit``." +msgstr "" + +#: ../../install/windows.rst:55 +msgid "(To exit Python, type ``exit()`` then press Enter.)" +msgstr "" + +#: ../../install/windows.rst:57 +msgid "**If you already have Python**, great! Some things to double-check:" +msgstr "" + +#: ../../install/windows.rst:59 +msgid "You must have at least Python 3.6 (Python 2 is not supported.)" +msgstr "" + +#: ../../install/windows.rst:60 +msgid "Your installation path must not have any spaces in it." +msgstr "" + +#: ../../install/windows.rst:61 +msgid "If that doesn't work, note that the following must be part of your ``PATH`` environment variable: ``C:\\Python36;C:\\Python36\\Scripts`` (or as appropriate for your installation directory). Follow `the instructions here `_ to add this to your path." +msgstr "" + +#: ../../install/windows.rst:66 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/windows.rst:67 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/windows.rst:69 +msgid "Go to the `PostgreSQL downloads page `_, then follow the link through to EnterpriseDB to download and install the latest version of PostgreSQL." +msgstr "" + +#: ../../install/windows.rst:71 +msgid "Once PostgreSQL is installed, the PostgreSQL service will run on your computer whenever you are using it. You might prefer to configure it so that it only runs when you want to run Tabbycat. To do this, open \"Services\" in your Control Panel on Windows, find the PostgreSQL service, and change its startup type to \"Manual\". This will tell it not to start whenever you log in. Then, if you want to run the server (so you can use Tabbycat), you can do so from \"Services\" by selecting the PostgreSQL service and clicking \"Start the service\"." +msgstr "" + +#: ../../install/windows.rst:74 +msgid "1(c). Git" +msgstr "" + +#: ../../install/windows.rst:75 +msgid "*Git is a version control system.*" +msgstr "" + +#: ../../install/windows.rst:77 +msgid "We won't use Git directly, but Node.js (which we install in the next step) requires Git to work. So, install the latest version for Windows from the `Git website `_." +msgstr "" + +#: ../../install/windows.rst:84 +msgid "If you already have `GitHub Desktop `_ installed, you might think that this would be good enough. Unfortunately, it's not---GitHub Desktop installs a portable version of Git. Node.js, on the other hand, requires the ``git`` to be in the ``PATH``, so it can call it directly. The easiest (but not only) way to do this is just to install Git from the link above." +msgstr "" + +#: ../../install/windows.rst:92 +msgid "1(d). Node.js/NPM" +msgstr "" + +#: ../../install/windows.rst:93 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/windows.rst:95 +msgid "Download and run the node.js 8 Installer (.msi) for either `x64 versions `_ of Windows or `x86 versions `_." +msgstr "" + +#: ../../install/windows.rst:98 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/windows.rst:100 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/windows.rst:101 +msgid "Download the zip file." +msgstr "" + +#: ../../install/windows.rst:102 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/windows.rst:107 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/windows.rst:109 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/windows.rst:114 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/windows.rst:116 +msgid "You can skip steps 2 and 3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/windows.rst:118 +msgid "Open the **pgAdmin** tool, which you installed as part of installing PostgreSQL. In the object browser on the left, double-click the server marked \"(localhost:5432)\". Log in using the password you set during installation." +msgstr "" + +#: ../../install/windows.rst:120 +msgid "Right-click Login Roles, and click \"New Login Role…\"" +msgstr "" + +#: ../../install/windows.rst:124 +msgid "Fill in the New Login Role box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:126 +msgid "In the **Properties** tab, in **Role Name**, choose a user account name. (If you don't know what to pick, we suggest \"tabbycat\".)" +msgstr "" + +#: ../../install/windows.rst:127 +msgid "In the **Definition** tab, choose a **Password** and type it in **Password (again)**." +msgstr "" + +#: ../../install/windows.rst:129 +msgid "Then click OK. (Remember this user name and password, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:131 +msgid "Right-click Databases, and click \"New Database…\"" +msgstr "" + +#: ../../install/windows.rst:135 +msgid "Fill in the New Database box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:137 +msgid "In the **Properties** tab, in **Name**, choose a database name (with no spaces in it)." +msgstr "" + +#: ../../install/windows.rst:138 +msgid "In the **Properties** tab, in **Owner**, type the name of the login role you just created." +msgstr "" + +#: ../../install/windows.rst:140 +msgid "Then click OK. (Remember the database name, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:143 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/windows.rst:145 +msgid "Almost there!" +msgstr "" + +#: ../../install/windows.rst:147 +msgid "Open a Windows PowerShell. Navigate to the folder where you cloned/extracted Tabbycat. For example, if you installed it in ``C:\\Users\\myusername\\Documents\\GitHub\\tabbycat``, then run::" +msgstr "" + +#: ../../install/windows.rst:151 +msgid "Make a copy of **settings\\\\local.example** and rename it to **settings\\\\local.py**. Open your new **local.py** file. Find this part, and fill in the blanks (the empty quotation marks) as indicated:" +msgstr "" + +#: ../../install/windows.rst:166 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/windows.rst:170 +msgid "Start a new virtual environment. We suggest the name `venv`, though it can be any name you like::" +msgstr "" + +#: ../../install/windows.rst:174 +msgid "Run the `Activate.ps1` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/windows.rst:178 +msgid "If you get an error message saying that the script isn't digitally signed, open a PowerShell with administrator privileges by right-clicking PowerShell in the Start meny and clicking \"Run as administrator\". Then run this command::" +msgstr "" + +#: ../../install/windows.rst:182 +msgid "Read the warning message, then type ``y`` to confirm. By default, the execution policy on Windows is ``Restricted``, which does not permit scripts like ``activate`` to be run. Changing it to ``RemoteSigned`` relaxes it to allow local scripts to be run without checking the signature." +msgstr "" + +#: ../../install/windows.rst:184 +msgid "Install Tabbycat's requirements." +msgstr "" + +#: ../../install/windows.rst:186 +msgid "If you installed **32-bit Python**::" +msgstr "" + +#: ../../install/windows.rst:192 +msgid "You might be wondering: I thought I already installed the requirements. Why am I installing more? And the answer is: Before, you were installing the requirements to create a Python virtual environment for Tabbycat to live in. Now, you're *in* the virtual environment, and you're installing everything required for *Tabbycat* to operate." +msgstr "" + +#: ../../install/windows.rst:194 +msgid "Initialize the database and create a user account for yourself::" +msgstr "" + +#: ../../install/windows.rst:202 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/windows.rst:208 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/windows.rst:212 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000/). It should look something like this:" +msgstr "" + +#: ../../install/windows.rst:216 +msgid "If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/windows.rst:218 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/windows.rst:221 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/windows.rst:223 +msgid "To start your Tabbycat instance up again next time you use your computer, open a PowerShell and::" +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/install/wsl.po b/docs/locale/cs/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..8c8135158a3 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/install/wsl.po @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: cs_CZ\n" + +#: ../../install/wsl.rst:5 +msgid "Installing Locally on Linux on Windows (WSL)" +msgstr "" + +#: ../../install/wsl.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/wsl.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/wsl.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/wsl.rst:14 +msgid "Windows Subsystem for Linux is only available on Windows 10. If you have an older version of Windows, :ref:`install Tabbycat locally on Windows ` instead." +msgstr "" + +#: ../../install/wsl.rst:18 +msgid "Windows Subsystem for Linux (WSL) was taken out of beta in the `Windows 10 Fall Creators Update `_, which was released in October 2017. On Windows 10 computers, we now recommend this local installation method over :ref:`installing it directly on Windows `." +msgstr "" + +#: ../../install/wsl.rst:21 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/wsl.rst:23 +msgid "It will help a lot if you have some experience with Linux, but mainly you need to be familiar with command-line interfaces, and you should be willing to install and work with the `Windows Subsystem for Linux `_. You might need to be prepared to familiarise yourself with aspects of WSL not covered in these instructions. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/wsl.rst:27 +msgid "A. Install Ubuntu on Windows" +msgstr "" + +#: ../../install/wsl.rst:29 +msgid "*If you already have a Linux distribution installed on your PC, skip to* :ref:`part B `." +msgstr "" + +#: ../../install/wsl.rst:31 +msgid "First, `check that you have the Fall Creators Update (build 1709) `_. If you don't, update Windows." +msgstr "" + +#: ../../install/wsl.rst:33 +msgid "Then, install the Windows Subsystem for Linux. For most people, this involves the following:" +msgstr "" + +#: ../../install/wsl.rst:35 +msgid "Enable the Windows Subsystem for Linux feature, by finding **Turn Windows features on or off** on the Start Menu, then checking the box for **Windows Subsystem for Linux** and clicking **OK**. You'll be prompted to restart your computer to make the changes take effect." +msgstr "" + +#: ../../install/wsl.rst:39 +msgid "Install Ubuntu by finding it on the Microsoft Store. For your convenience, `here's a direct link to Ubuntu on the Microsoft Store `_." +msgstr "" + +#: ../../install/wsl.rst:41 +msgid "Launch Ubuntu and follow the instructions. You'll be prompted to create a user account for your Ubuntu system." +msgstr "" + +#: ../../install/wsl.rst:43 +msgid "Some more detailed instructions, including some troubleshooting, are `available on Microsoft's website `_." +msgstr "" + +#: ../../install/wsl.rst:45 +msgid "Advanced users" +msgstr "" + +#: ../../install/wsl.rst:48 +msgid "You can, of course, use any Linux distribution that Windows supports. We just suggest Ubuntu because it's the most well-known (and the one that we use)." +msgstr "" + +#: ../../install/wsl.rst:53 +msgid "B. Install Tabbycat" +msgstr "" + +#: ../../install/wsl.rst:55 +msgid "You now have a Linux subsystem running on your computer, so head over to the :ref:`instructions to install Tabbycat locally on Linux ` and follow those (in full)." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..d6ddc438316 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: cs_CZ\n" + +#: ../../use/finishing-a-tournament.rst:5 +msgid "Finishing a Tournament" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:7 +msgid "This page outlines some final steps to take after the conclusion of outrounds." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:10 +msgid "Tab Release" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:12 +msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:14 +msgid "Team Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:15 +msgid "Speakers Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:16 +msgid "Replies Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:17 +msgid "Motions Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:19 +msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:21 +msgid "If you defined any speaker categories (for example, Novice, ESL or EFL), a tab for each category marked \"public\" can also be released using the **Release speaker category tabs to public**. You can similarly limit each of these tabs to display just the top few speakers, in the definition of the speaker categories. The speaker categories not marked public are *not* released by this option." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:23 +msgid "You can also redact individual speaker's identifying details (name, team, and institution) from the public individual tabs. You can do so by going into the **Edit Database** area, going to *Participants > Speakers*, finding the speaker and clicking the **Anonymous** box (and saving)." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:25 +msgid "Public tab pages are cached for performance reasons. This means that any changes that affect a tab page (say redacting a speaker or changing a speaker score) may not show up on the public site for up to an hour." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:28 +msgid "Wrapping Up" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:30 +msgid "You probably want to turn off the *Public ballots*, *Public feedback*, *Feedback progress*, and *Public draw* features under **Configuration** at this stage as they no longer have any use." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:32 +msgid "You also want to go into the **Edit Database** area, find the tournament and hit \"release all\" so that the results for the final round can be released." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/use/importing-data.po b/docs/locale/cs/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..f135c1aec8c --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/use/importing-data.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: cs_CZ\n" + +#: ../../use/importing-data.rst:5 +msgid "Importing Initial Data" +msgstr "" + +#: ../../use/importing-data.rst:7 +msgid "Once you've got Tabbycat installed, the next step is to import data for the tournament: that is, import details of teams, speakers, adjudicators and rounds. There are a few ways to do this, each with their advantages and disadvantages." +msgstr "" + +#: ../../use/importing-data.rst:9 +msgid "To help you decide which to choose, here's a summary:" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Method" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Best for" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawcard" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawback" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "**Demonstration data**" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Trying out Tabbycat" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Loads sample data in one click" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Not for use with real tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "**Simple importer**" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Small and medium-sized tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Easy to use" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Only deals with basic data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "**Edit database**" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding data not handled by the simple importer or editing existing data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Can handle all types of information" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding large amounts of data is time consuming" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "``importtournament`` **command**" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Large tournaments" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Easier to repeat, can handle most formats of information" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Requires basic knowledge of how to use a command line interface" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "**Developing your own importer**" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Large tournaments with custom needs" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Easier to repeat, will take information in whatever format it is already in" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Requires background in Python and and learning about the importer classes" +msgstr "" + +#: ../../use/importing-data.rst:41 +msgid "Demonstration data" +msgstr "" + +#: ../../use/importing-data.rst:42 +msgid "If you're just learning or experimenting with Tabbycat, there are two demonstration datasets available, each with a sample set of teams, adjudicators, *etc.*, so that you can immediately start running rounds. Just be aware that these probably won't relate to anyone at your real-life tournament." +msgstr "" + +#: ../../use/importing-data.rst:44 +msgid "To load a demonstration dataset, click **New Tournament** link on the home page (once logged in as admin). You'll see a page titled \"Create New Tournament\". Scroll to the bottom of this page and click on one of the links at the bottom." +msgstr "" + +#: ../../use/importing-data.rst:47 +msgid "Simple importer" +msgstr "" + +#: ../../use/importing-data.rst:48 +msgid "The simple importer is the easiest way to get a tournament going, and we recommend it for small- and medium-sized tournaments. It allows you to add institutions, teams, adjudicators, venues, venue categories and venue constraints. (If you need to add anything else, use the :ref:`Edit Database area ` instead.)" +msgstr "" + +#: ../../use/importing-data.rst:50 +msgid "To get started, create a new tournament using the **New Tournament** link on the home page (once logged in as admin). It'll ask you for a few basic pieces of information." +msgstr "" + +#: ../../use/importing-data.rst:54 +msgid "Then, once you're in your tournament, click **Setup** in the left-hand menu, then **Import Data**, to open the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:58 +msgid "You first need to add institutions. Once institutions are added, you can then add teams and adjudicators in the relevant sections. Each of these is a two-step process:" +msgstr "" + +#: ../../use/importing-data.rst:60 +msgid "For **institutions** and **venues**, it will first ask you to copy-paste a list of names and properties in a comma-separated table format. The second step is to confirm individual fiels." +msgstr "" + +#: ../../use/importing-data.rst:61 +msgid "For **teams** and **adjudicators**, it will first ask you how many teams/adjudicators to add for each institution (or who lack an institutional affiliation). The second step is to fill in their details, for example, names." +msgstr "" + +#: ../../use/importing-data.rst:69 +msgid "Finally, if you would like to use venue categories and/or :ref:`venue constraints `, you can do so using the two last sections of the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:71 +msgid "If copying and pasting from a spreadsheet, an easy way to make a comma-separated table is to save a spreadsheet with the relevant information as a \\*.csv file, then open this file in a plain text editor (such as Notepad or TextEdit), and copying it from there." +msgstr "" + +#: ../../use/importing-data.rst:76 +msgid "Editing the database" +msgstr "" + +#: ../../use/importing-data.rst:77 +msgid "Sometimes, the simple importer just isn't enough---whether because you need more customization than the simple importer handles (*e.g.* adjudicator feedback questions), or because some participants changed their details after you imported the inital data. In this case, the easiest thing to do is to edit the database via the Django administrative interface (under Setup > Edit Database)." +msgstr "" + +#: ../../use/importing-data.rst:79 +msgid "The general pattern goes like this: Go to **Setup > Edit Database**, find the type of object you wish to add/change, and click \"Add\" or \"Change\". Then, fill in what you need to and save the object." +msgstr "" + +#: ../../use/importing-data.rst:81 +msgid "The Edit Database area is very powerful, and naturally if you mess things up, you can insert potentially catastrophic inconsistencies into the database. For participant information this is hard to do, but it's worth keeping in mind." +msgstr "" + +#: ../../use/importing-data.rst:86 +msgid "The ``importtournament`` command on local installations" +msgstr "" + +#: ../../use/importing-data.rst:88 +msgid "We've written a management command called ``importtournament`` to help automate the tournament set-up. The script, however, is neither foolproof nor comprehensive, so you might find you need to modify things slightly if your tournament structure is different from ours. Be prepared to try this a few times to get it to work. Nonetheless, this is probably the fastest way to set up a tournament." +msgstr "" + +#: ../../use/importing-data.rst:90 +msgid "Copy and rename the ``data/demo`` folder" +msgstr "" + +#: ../../use/importing-data.rst:91 +msgid "See the CSV files in the new folder, and add/replace the data as per your tournament. Note that the institutions (*i.e.* first column) in the ``speakers.csv`` and ``adjudicators.csv`` files must match the institutions in the second column of the ``institutions.csv`` file. And that all CSV files must end with a blank line." +msgstr "" + +#: ../../use/importing-data.rst:92 +msgid "Use this command, replacing ``YOUR_DATA_DIR`` with your new folder's name. (Square brackets indicate optional arguments; if you use them, omit the square brackets. All of them relate to the name of your tournament.)" +msgstr "" + +#: ../../use/importing-data.rst:98 +msgid "This script has a number of options. They're worth taking a look at before you run the script. For details, see::" +msgstr "" + +#: ../../use/importing-data.rst:102 +msgid "Assuming the command completes successfully without errors, you should double check the data in the Django interface, as described above in :ref:`import-edit-database`. In particular you should check that the *Rounds* have the correct draw types and that silent rounds have been marked correctly." +msgstr "" + +#: ../../use/importing-data.rst:105 +msgid "``importtournament`` on Heroku installs" +msgstr "" + +#: ../../use/importing-data.rst:107 +msgid "Instructions for using the ``importtournament`` command on Heroku installations are in steps 4 and 5 of :ref:`install-heroku`. The recommended procedure is first to import the tournament into a local installation, :ref:`as described above `, and then to push the local database to Heroku using the ``heroku pg:push`` command." +msgstr "" + +#: ../../use/importing-data.rst:110 +msgid "Developing your own importer" +msgstr "" + +#: ../../use/importing-data.rst:112 +msgid "If our suggested file formats cause you headaches, it might be easier to write your own importer. We have a generic importer framework that should make this easier, so for some tournaments it might (very conceivably) be faster to write your own importer to conform to your data, than it is to make your data conform to our importer. You need a background in Python in order to do this. For more details, see :ref:`tournament-data-importers`." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/cs/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..e1b5e9d1701 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/use/running-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: cs_CZ\n" + +#: ../../use/running-a-tournament.rst:5 +msgid "Running a Tournament" +msgstr "" + +#: ../../use/running-a-tournament.rst:7 +msgid "Once you've finished the steps in :ref:`starting-a-tournament`, you're ready to go! This page outlines what you would do for each round during the tournament. After the tournament, proceed to :ref:`finishing-a-tournament`." +msgstr "" + +#: ../../use/running-a-tournament.rst:9 +msgid "This is all done from the admin area (*i.e.*, by the tab director or adjudication core member). In the admin area, tournament-wide pages (feedback, standings, and break) are at the top of the left-hand menu, while round-specific pages (availability, draw, display, motions, and results) are in dropdown's organised by each round's abbreviation." +msgstr "" + +#: ../../use/running-a-tournament.rst:11 +msgid "The basic workflow for each round is:" +msgstr "" + +#: ../../use/running-a-tournament.rst:13 +msgid ":ref:`Mark the teams, adjudicators, and venues present as available `" +msgstr "" + +#: ../../use/running-a-tournament.rst:14 +msgid ":ref:`Generate the draw ` and allocate the adjudicators" +msgstr "" + +#: ../../use/running-a-tournament.rst:15 +msgid ":ref:`Show/release the draw `" +msgstr "" + +#: ../../use/running-a-tournament.rst:16 +msgid ":ref:`Release/enter ` the motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:17 +msgid "Have the debates" +msgstr "" + +#: ../../use/running-a-tournament.rst:18 +msgid ":ref:`Enter results `" +msgstr "" + +#: ../../use/running-a-tournament.rst:19 +msgid ":ref:`Advance to the next round `" +msgstr "" + +#: ../../use/running-a-tournament.rst:24 +msgid "Availability" +msgstr "" + +#: ../../use/running-a-tournament.rst:26 +msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." +msgstr "" + +#: ../../use/running-a-tournament.rst:28 +msgid "To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance." +msgstr "" + +#: ../../use/running-a-tournament.rst:34 +msgid "You can set availabilities in advance of the current round — ie if you know the venue/adjudicator schedules their availabilities can be set ahead of time." +msgstr "" + +#: ../../use/running-a-tournament.rst:37 +msgid "Generating the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:39 +msgid "**Confirm the draft draw**. After advancing from availability section you will first be shown a draft draw that details how the draw was formulated, pointing out pull-ups and conflict swaps and the like." +msgstr "" + +#: ../../use/running-a-tournament.rst:43 +msgid "The draft draw is for you to double-check. While there are some basic tests on the draw algorithm, it never hurts to sanity-check it again." +msgstr "" + +#: ../../use/running-a-tournament.rst:45 +msgid "If you *do* find something wrong with a draft draw, you can edit the match-ups, but please also let us know what the problem was! You can find our contact details in the :ref:`authors` section." +msgstr "" + +#: ../../use/running-a-tournament.rst:47 +msgid "Once on the confirmed draw page you can click **Edit Adjudicators**." +msgstr "" + +#: ../../use/running-a-tournament.rst:51 +msgid "**Allocate the adjudicators**. Changes here will auto-save; feel free to return to the **Draw** when needed. See :ref:`adjudicator allocation ` for more details about the allocation process." +msgstr "" + +#: ../../use/running-a-tournament.rst:55 +msgid "If you are using venue constraints the **Draw** page may prompt you to Auto Allocate the venues used to satisfy those constraints; see :ref:`venue-constraints ` for more details. Regardless of whether you are using venue constraints or not you can change the Venues per-debate in the **Edit Venues** area." +msgstr "" + +#: ../../use/running-a-tournament.rst:60 +msgid "Releasing the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:62 +msgid "Once you're happy with your adjudicator allocation, you're ready to start the round." +msgstr "" + +#: ../../use/running-a-tournament.rst:64 +msgid "**Release to general assembly.** From the *Display* page for that round, go to **Show by Venue** or **Show by Team** (whichever you prefer). Then put it up on the projector. There are automatic scroll buttons and buttons for changing text sizing." +msgstr "" + +#: ../../use/running-a-tournament.rst:68 +msgid "**Release to public.** If you're using the public draw function (where the draw is posted publicly to your Tabbycat website) use the **Release to Public** button to allow the page to display." +msgstr "" + +#: ../../use/running-a-tournament.rst:72 +msgid "To avoid the site from being overloaded by anxious refreshers, we recommend that large tournaments not release the draw to the public until after it's been seen by general assembly. That said, note that due to caching there can be a delay of up to 1 minute between when a draw is released and when it first shows up on the public site." +msgstr "" + +#: ../../use/running-a-tournament.rst:73 +msgid "Tabbycat can be set to send emails once the draw is released to adjudicators informing them of their assignments for convenience." +msgstr "" + +#: ../../use/running-a-tournament.rst:78 +msgid "Entering and Releasing Motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:80 +msgid "Tabbycat is agnostic as to whether you enter motions into Tabbycat before or after they are shown publicly. However, they must be entered *at some point* before ballots are entered." +msgstr "" + +#: ../../use/running-a-tournament.rst:82 +msgid "**Enter the motion text.** Either before or after their public release motions can be entered in the **Motions** section for that round." +msgstr "" + +#: ../../use/running-a-tournament.rst:84 +msgid "**Release to general assembly.** If you are entering motions *before* they are publicly revealed note that there is a *Display Motions* button in the **Display** area that allows you to do a Power Point style motion release." +msgstr "" + +#: ../../use/running-a-tournament.rst:86 +msgid "**Release to public.** As with draws, if you have the *enable public view of motions* setting configured your Tabbycat website will display a running list of motions from the tournament. When this is on, using the **Release Motions to Public** button on the **Motions** page will mark the current set of motions as able to be displayed on this page." +msgstr "" + +#: ../../use/running-a-tournament.rst:91 +msgid "Entering Results" +msgstr "" + +#: ../../use/running-a-tournament.rst:93 +msgid "Enter debate results and feedback as they come in (and/or allow online entry of results and feedback)." +msgstr "" + +#: ../../use/running-a-tournament.rst:95 +msgid "Both results and feedback entered in the tab room or online need to be confirmed before the results are counted. To confirm a debate ballot and the debate as a whole, the confirmed checkbox under *Ballot Status* should be ticket in addition to the *Debate Status* being set to Confirmed." +msgstr "" + +#: ../../use/running-a-tournament.rst:97 +msgid "Note that you can track data entry progress from the **Overview** page for the tournament." +msgstr "" + +#: ../../use/running-a-tournament.rst:99 +msgid "See :ref:`data-entry` for more details about the data entry process." +msgstr "" + +#: ../../use/running-a-tournament.rst:101 +msgid "We strongly recommend entering all data using the assistant area, not the admin area. This is because the admin area (intentionally) does not enforce the data confirmation procedure." +msgstr "" + +#: ../../use/running-a-tournament.rst:106 +msgid "Advancing to the next round" +msgstr "" + +#: ../../use/running-a-tournament.rst:108 +msgid "Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button." +msgstr "" + +#: ../../use/running-a-tournament.rst:112 +msgid "When you advance to the next round, if you've enabled public results, the results for the current round (which is now the previous round) will be released to the public **unless** the round is marked as \"silent\" in the database. So if you're careful about when results should be released, don't change the current round until you're ready to release those results." +msgstr "" + +#: ../../use/running-a-tournament.rst:114 +msgid "There is a design assumption that you will always want to release results for non-silent rounds before you start working on the draw for the next round. If this isn't true for you, please get in touch with us so that we know. The workaround is to make all rounds silent, then unsilent them when you're ready to release results." +msgstr "" + +#: ../../use/running-a-tournament.rst:116 +msgid "Emails can be sent to speakers informing them of their team's win/loss/points record before advancing rounds. This is independent from whether the whole round's results are released to the public." +msgstr "" + diff --git a/docs/locale/cs/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/cs/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..4b37069dea7 --- /dev/null +++ b/docs/locale/cs/LC_MESSAGES/use/starting-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2021-01-17 20:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: cs_CZ\n" + +#: ../../use/starting-a-tournament.rst:5 +msgid "Starting a Tournament" +msgstr "" + +#: ../../use/starting-a-tournament.rst:7 +msgid "This page outlines a few things you should do at the start of a tournament, after you've :ref:`imported the initial data `. Once you've done these, proceed to :ref:`running a tournament `." +msgstr "" + +#: ../../use/starting-a-tournament.rst:9 +msgid "Tabbycat is developed for — and tested on — modern web browsers. If you are using **Internet Explorer versions 8, 7, or 6** the interface may look odd or not function properly. Switch to a newer browser if possible." +msgstr "" + +#: ../../use/starting-a-tournament.rst:13 +msgid "Tournament configuration" +msgstr "" + +#: ../../use/starting-a-tournament.rst:15 +msgid "After importing all your data you can log into the site as an administrator by loading up the homepage and then using the **Login** button in the lower-right. From there you should go to the administration section of your tournament, and then go to the tournament configuration page by clicking **Setup** then **Configuration** in the menu." +msgstr "" + +#: ../../use/starting-a-tournament.rst:17 +msgid "Here you can adjust the debate rules and interface options to your liking then hit **Save** when finished. We also offer a number of presets that apply particular rule sets (such as the Australs rules) or feature sets (such as displaying information normally released during briefs on the website)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:20 +msgid "Special data types and options" +msgstr "" + +#: ../../use/starting-a-tournament.rst:22 +msgid "There are a few optional fields that are not covered in the initial data templates, in the visual importer, or that may only be relevant in particular scenarios. It's worth going over these quickly to see if they are needed for your tournament. You can view and edit these fields in the **Edit Database** area (link is in the menu under **Setup**)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "Adjudicator Feedback > Adj Feedback Questions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "As described in :ref:`adjudicator-feedback`, the types of questions that can be posed for adjudicator feedback are able to be heavily customised. If you are customising your feedback form it should be done here, and before the tournament starts." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "Authentication and Authorisation > Users" +msgstr "" + +#: ../../use/starting-a-tournament.rst:28 +msgid "Here you can add new admin users (those with full access) as well as new assistant users those (who can only do common data-entry tasks but not edit or view the full tab interface). See :ref:`user-accounts` for information on how to do this." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "The people you're adding accounts for should be physically present when you do this, so that they can enter their password." +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Participants > Regions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Optionally, each institution may belong to a *Region*. An institution's region is used within the adjudicator allocation process to visually identify teams and adjudicators for the purposes of highlighting diversity issues. These have traditionally been used for geographic regions (such as Oceania), although could be repurposed as arbitrary markers of information — for example they could be used to denote teams from a particular State, institutional size, or circuit." +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Participants > Adjudicators" +msgstr "" + +#: ../../use/starting-a-tournament.rst:36 +msgid "An adjudicators *Base Score* represents their relative ability to judge important rooms, where adjudicators with higher numbers will, relative to the other adjudicators, be placed in better roles (ie as Chairs) and in the rooms you deem most important in each round. If you are running a small tournament, and plan to do your allocations manually, you can set everyone's number to the same amount." +msgstr "" + +#: ../../use/starting-a-tournament.rst:37 +msgid "For larger tournaments, particularly those that collect feedback, see the :ref:`adjudicator-feedback` section for more information on how base scores and other variables influence the automated allocation process." +msgstr "" + +#: ../../use/starting-a-tournament.rst:38 +msgid "Regardless of how you score the adjs, if you have changed the minimimum chairing score in settings, you'll want to make sure there are enough adjudicators that meet this minimum threshold or the automated allocator may not function effectively." +msgstr "" + +#: ../../use/starting-a-tournament.rst:39 +msgid "All types of conflicts are assigned to the relevant adjudicator. Adjudicator's can be conflicted against particular teams, particular institutions, and other adjudicators. Each of these is a located in a tab at the top of the page." +msgstr "" + +#: ../../use/starting-a-tournament.rst:40 +msgid "Each adjudicator's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Each adjudicator's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "Participants > Teams" +msgstr "" + +#: ../../use/starting-a-tournament.rst:44 +msgid "Note the distinction here between full name and short name. The latter is used on pages where space is tight, such as the draw displays or the adjudicator allocation interface." +msgstr "" + +#: ../../use/starting-a-tournament.rst:45 +msgid "Note that \"Uses institutional prefix\" option. With this option on, a team from the 'MUDS' insttution named '1' or 'Gold' would be displayed as 'MUDS 1' or 'MUDS Gold'." +msgstr "" + +#: ../../use/starting-a-tournament.rst:46 +msgid "At present, setting a team's type to Bye, Swing, or Composite only affects very particular circumstances, and should be considered unnecessary." +msgstr "" + +#: ../../use/starting-a-tournament.rst:47 +msgid "If you do have composite teams, and wish to have them be conflicted by adjudicators from each respective instutution, you'll need to add a new team conflict to each adjudicator from each institution." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "If you do have swing teams, or teams that are otherwise ineligible for breaking, this is typically handled through the breaks interface in the main site" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Participants > Speakers" +msgstr "" + +#: ../../use/starting-a-tournament.rst:51 +msgid "Each speaker's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Each speaker's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "Tournaments > Divisions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "At the moment divisions are only useful for running tournaments that use round-robin style draws. Here, each division represents a draw pool within a round. Division support here is under development and not tested in many scenarios." +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Tournaments > Tournaments" +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Note that tournaments can have a welcome message (useful for displaying maps and other information on the homepage)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "Venues > Venues" +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "A venue's priority determines its priority in being allocated. If there are 20 debates, and 30 rooms, the 20 rooms with the highest priorities will be chosen. Furthermore, if particular debates are marked as important during the draw process, those debates will receive the rooms with the highest priorities. In this way you can give close rooms to members of the adj core, or give larger rooms to debates that will draw a large audience." +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venues > Venue Categories" +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venue categories are not needed for most kinds of tournaments. Their purpose is to classify particular venues, such as venues all within one building or venues that are accessible. Once assigned these categories can display in the venue's name — ie \"Red 01.01\" or be used to assign Venue Constraints that match particular teams, institutions, or adjudicators to particular types of venues." +msgstr "" + +#: ../../use/starting-a-tournament.rst:67 +msgid "Information for the briefing" +msgstr "" + +#: ../../use/starting-a-tournament.rst:69 +msgid "If you're using the online submissions feature, some things you should probably mention in the briefing:" +msgstr "" + +#: ../../use/starting-a-tournament.rst:71 +msgid "Adjudicators must fill out ballots completely, including motions and venues—they are entered into the system." +msgstr "" + +#: ../../use/starting-a-tournament.rst:72 +msgid "There is a static URL for each person's ballots and feedback forms. It can be bookmarked, or the page can refreshed after each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:73 +msgid "If people submit a result or feedback online, they should indicate that they have done so on the paper copy of their ballot." +msgstr "" + diff --git a/docs/locale/de/LC_MESSAGES/about/authors.po b/docs/locale/de/LC_MESSAGES/about/authors.po index ea37af572cb..a6fbf77cd95 100644 --- a/docs/locale/de/LC_MESSAGES/about/authors.po +++ b/docs/locale/de/LC_MESSAGES/about/authors.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:21\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" "Language: de_DE\n" #: ../../../AUTHORS.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/about/changelog.po b/docs/locale/de/LC_MESSAGES/about/changelog.po index c353b85c4ba..0803f4e7b5f 100644 --- a/docs/locale/de/LC_MESSAGES/about/changelog.po +++ b/docs/locale/de/LC_MESSAGES/about/changelog.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:38\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" "Language: de_DE\n" #: ../../../CHANGELOG.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/about/contributing.po b/docs/locale/de/LC_MESSAGES/about/contributing.po index e277a549b52..f2cd080988c 100644 --- a/docs/locale/de/LC_MESSAGES/about/contributing.po +++ b/docs/locale/de/LC_MESSAGES/about/contributing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:21\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" "Language: de_DE\n" #: ../../../CONTRIBUTING.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/about/licence.po b/docs/locale/de/LC_MESSAGES/about/licence.po index 2f9df93a54c..09dca099c21 100644 --- a/docs/locale/de/LC_MESSAGES/about/licence.po +++ b/docs/locale/de/LC_MESSAGES/about/licence.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" "Language: de_DE\n" #: ../../../LICENSE.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/about/support.po b/docs/locale/de/LC_MESSAGES/about/support.po index 2339210e0bf..7e4f1c3ac7d 100644 --- a/docs/locale/de/LC_MESSAGES/about/support.po +++ b/docs/locale/de/LC_MESSAGES/about/support.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" "Language: de_DE\n" #: ../../about/support.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/about/tournament-history.po b/docs/locale/de/LC_MESSAGES/about/tournament-history.po index a26269d0393..446b3393c24 100644 --- a/docs/locale/de/LC_MESSAGES/about/tournament-history.po +++ b/docs/locale/de/LC_MESSAGES/about/tournament-history.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:20\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" "Language: de_DE\n" #: ../../about/tournament-history.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/de/LC_MESSAGES/features/adjudicator-allocation.po index bdd7dc00850..f87d9f1dc13 100644 --- a/docs/locale/de/LC_MESSAGES/features/adjudicator-allocation.po +++ b/docs/locale/de/LC_MESSAGES/features/adjudicator-allocation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" "Language: de_DE\n" #: ../../features/adjudicator-allocation.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/de/LC_MESSAGES/features/adjudicator-feedback.po index 15ea72ce6cb..688f199c4f8 100644 --- a/docs/locale/de/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/de/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:56\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2021-11-29 02:03\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,13 +12,15 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" "Language: de_DE\n" #: ../../features/adjudicator-feedback.rst:5 msgid "Adjudicator Feedback" -msgstr "JurorIn-Feedback" +msgstr "Jurorenfeedback" #: ../../features/adjudicator-feedback.rst:7 msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." diff --git a/docs/locale/de/LC_MESSAGES/features/backups.po b/docs/locale/de/LC_MESSAGES/features/backups.po index 591d269dba7..fd19367ae88 100644 --- a/docs/locale/de/LC_MESSAGES/features/backups.po +++ b/docs/locale/de/LC_MESSAGES/features/backups.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" "Language: de_DE\n" #: ../../features/backups.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/breaks.po b/docs/locale/de/LC_MESSAGES/features/breaks.po index f5492bec753..681d71df214 100644 --- a/docs/locale/de/LC_MESSAGES/features/breaks.po +++ b/docs/locale/de/LC_MESSAGES/features/breaks.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" "Language: de_DE\n" #: ../../features/breaks.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/check-ins.po b/docs/locale/de/LC_MESSAGES/features/check-ins.po index 3d1accac147..25ac5574ed6 100644 --- a/docs/locale/de/LC_MESSAGES/features/check-ins.po +++ b/docs/locale/de/LC_MESSAGES/features/check-ins.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" "Language: de_DE\n" #: ../../features/check-ins.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/data-entry.po b/docs/locale/de/LC_MESSAGES/features/data-entry.po index 5484a856d34..faf2a5d9ef4 100644 --- a/docs/locale/de/LC_MESSAGES/features/data-entry.po +++ b/docs/locale/de/LC_MESSAGES/features/data-entry.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" "Language: de_DE\n" #: ../../features/data-entry.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/data-importers.po b/docs/locale/de/LC_MESSAGES/features/data-importers.po index de73a179782..6ffc1be211f 100644 --- a/docs/locale/de/LC_MESSAGES/features/data-importers.po +++ b/docs/locale/de/LC_MESSAGES/features/data-importers.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" "Language: de_DE\n" #: ../../features/data-importers.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/de/LC_MESSAGES/features/draw-generation-bp.po index d05d04dcca5..246b2c2c7e6 100644 --- a/docs/locale/de/LC_MESSAGES/features/draw-generation-bp.po +++ b/docs/locale/de/LC_MESSAGES/features/draw-generation-bp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:27\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" "Language: de_DE\n" #: ../../features/draw-generation-bp.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/draw-generation.po b/docs/locale/de/LC_MESSAGES/features/draw-generation.po index 76e16b2a718..751143de46b 100644 --- a/docs/locale/de/LC_MESSAGES/features/draw-generation.po +++ b/docs/locale/de/LC_MESSAGES/features/draw-generation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" "Language: de_DE\n" #: ../../features/draw-generation.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/notifications.po b/docs/locale/de/LC_MESSAGES/features/notifications.po index 88ea4967716..f8e364f8bc4 100644 --- a/docs/locale/de/LC_MESSAGES/features/notifications.po +++ b/docs/locale/de/LC_MESSAGES/features/notifications.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" "Language: de_DE\n" #: ../../features/notifications.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/features/preformed-panels.po b/docs/locale/de/LC_MESSAGES/features/preformed-panels.po index f90169de109..eacf1d0c0e9 100644 --- a/docs/locale/de/LC_MESSAGES/features/preformed-panels.po +++ b/docs/locale/de/LC_MESSAGES/features/preformed-panels.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" "Language: de_DE\n" #: ../../features/preformed-panels.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/printing.po b/docs/locale/de/LC_MESSAGES/features/printing.po index 8bcc26bf711..23dae55e60a 100644 --- a/docs/locale/de/LC_MESSAGES/features/printing.po +++ b/docs/locale/de/LC_MESSAGES/features/printing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" "Language: de_DE\n" #: ../../features/printing.rst:3 diff --git a/docs/locale/de/LC_MESSAGES/features/standings-rules.po b/docs/locale/de/LC_MESSAGES/features/standings-rules.po index 6c5895c7518..47819732af9 100644 --- a/docs/locale/de/LC_MESSAGES/features/standings-rules.po +++ b/docs/locale/de/LC_MESSAGES/features/standings-rules.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:55\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" "Language: de_DE\n" #: ../../features/standings-rules.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/team-code-names.po b/docs/locale/de/LC_MESSAGES/features/team-code-names.po index 8f32fef7cdb..7089880cb52 100644 --- a/docs/locale/de/LC_MESSAGES/features/team-code-names.po +++ b/docs/locale/de/LC_MESSAGES/features/team-code-names.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" "Language: de_DE\n" #: ../../features/team-code-names.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/user-accounts.po b/docs/locale/de/LC_MESSAGES/features/user-accounts.po index 456c7144afc..e2153dd76a1 100644 --- a/docs/locale/de/LC_MESSAGES/features/user-accounts.po +++ b/docs/locale/de/LC_MESSAGES/features/user-accounts.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" "Language: de_DE\n" #: ../../features/user-accounts.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/features/venue-constraints.po b/docs/locale/de/LC_MESSAGES/features/venue-constraints.po index f64e59729f3..ac653fb9992 100644 --- a/docs/locale/de/LC_MESSAGES/features/venue-constraints.po +++ b/docs/locale/de/LC_MESSAGES/features/venue-constraints.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" "Language: de_DE\n" #: ../../features/venue-constraints.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/guide/comparisons.po b/docs/locale/de/LC_MESSAGES/guide/comparisons.po index 60041a31847..97a4335277e 100644 --- a/docs/locale/de/LC_MESSAGES/guide/comparisons.po +++ b/docs/locale/de/LC_MESSAGES/guide/comparisons.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" "Language: de_DE\n" #: ../../guide/comparisons.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/guide/scaling.po b/docs/locale/de/LC_MESSAGES/guide/scaling.po index d156d3645d4..fc0c86f5718 100644 --- a/docs/locale/de/LC_MESSAGES/guide/scaling.po +++ b/docs/locale/de/LC_MESSAGES/guide/scaling.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" "Language: de_DE\n" #: ../../guide/scaling.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/de/LC_MESSAGES/guide/tournament-logistics.po index 91dc10bb76f..35c319d238f 100644 --- a/docs/locale/de/LC_MESSAGES/guide/tournament-logistics.po +++ b/docs/locale/de/LC_MESSAGES/guide/tournament-logistics.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2021-08-25 14:24\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" "Language: de_DE\n" #: ../../guide/tournament-logistics.rst:5 @@ -406,7 +408,7 @@ msgstr "" #: ../../guide/tournament-logistics.rst:166 msgid "Round" -msgstr "" +msgstr "Runde" #: ../../guide/tournament-logistics.rst:166 msgid "1" diff --git a/docs/locale/de/LC_MESSAGES/guide/upgrading.po b/docs/locale/de/LC_MESSAGES/guide/upgrading.po index 0315621116c..fd05c8ae8ee 100644 --- a/docs/locale/de/LC_MESSAGES/guide/upgrading.po +++ b/docs/locale/de/LC_MESSAGES/guide/upgrading.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" "Language: de_DE\n" #: ../../guide/upgrading.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/index.po b/docs/locale/de/LC_MESSAGES/index.po index b1a94c78c19..63af9148f5b 100644 --- a/docs/locale/de/LC_MESSAGES/index.po +++ b/docs/locale/de/LC_MESSAGES/index.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" "Language: de_DE\n" #: ../../index.rst:18 diff --git a/docs/locale/de/LC_MESSAGES/install/docker.po b/docs/locale/de/LC_MESSAGES/install/docker.po index 6bed4185be8..47d7237f2cc 100644 --- a/docs/locale/de/LC_MESSAGES/install/docker.po +++ b/docs/locale/de/LC_MESSAGES/install/docker.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" "Language: de_DE\n" #: ../../install/docker.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/heroku.po b/docs/locale/de/LC_MESSAGES/install/heroku.po index 6ac26d4eeb9..f6a09f5fa41 100644 --- a/docs/locale/de/LC_MESSAGES/install/heroku.po +++ b/docs/locale/de/LC_MESSAGES/install/heroku.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" "Language: de_DE\n" #: ../../install/heroku.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/linux.po b/docs/locale/de/LC_MESSAGES/install/linux.po index 42510ca8bd3..8a387c95cb8 100644 --- a/docs/locale/de/LC_MESSAGES/install/linux.po +++ b/docs/locale/de/LC_MESSAGES/install/linux.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:28\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" "Language: de_DE\n" #: ../../install/linux.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/local.po b/docs/locale/de/LC_MESSAGES/install/local.po index 1410ccec18e..a6221479f9f 100644 --- a/docs/locale/de/LC_MESSAGES/install/local.po +++ b/docs/locale/de/LC_MESSAGES/install/local.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" "Language: de_DE\n" #: ../../install/local.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/osx.po b/docs/locale/de/LC_MESSAGES/install/osx.po index a4e6e21eb3f..886f2baa3af 100644 --- a/docs/locale/de/LC_MESSAGES/install/osx.po +++ b/docs/locale/de/LC_MESSAGES/install/osx.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" "Language: de_DE\n" #: ../../install/osx.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/windows.po b/docs/locale/de/LC_MESSAGES/install/windows.po index db4ef5214c7..1c9ba806db9 100644 --- a/docs/locale/de/LC_MESSAGES/install/windows.po +++ b/docs/locale/de/LC_MESSAGES/install/windows.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" "Language: de_DE\n" #: ../../install/windows.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/install/wsl.po b/docs/locale/de/LC_MESSAGES/install/wsl.po index 46e1e33f4a3..75961230ba0 100644 --- a/docs/locale/de/LC_MESSAGES/install/wsl.po +++ b/docs/locale/de/LC_MESSAGES/install/wsl.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" "Language: de_DE\n" #: ../../install/wsl.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/de/LC_MESSAGES/use/finishing-a-tournament.po index fab87d4d3a7..eaf8d231c86 100644 --- a/docs/locale/de/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/de/LC_MESSAGES/use/finishing-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:55\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" "Language: de_DE\n" #: ../../use/finishing-a-tournament.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/use/importing-data.po b/docs/locale/de/LC_MESSAGES/use/importing-data.po index ce90f75bf7c..dea01bdec3c 100644 --- a/docs/locale/de/LC_MESSAGES/use/importing-data.po +++ b/docs/locale/de/LC_MESSAGES/use/importing-data.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" "Language: de_DE\n" #: ../../use/importing-data.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/de/LC_MESSAGES/use/running-a-tournament.po index 628f0c930b5..8acbf5fb4fe 100644 --- a/docs/locale/de/LC_MESSAGES/use/running-a-tournament.po +++ b/docs/locale/de/LC_MESSAGES/use/running-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" "Language: de_DE\n" #: ../../use/running-a-tournament.rst:5 diff --git a/docs/locale/de/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/de/LC_MESSAGES/use/starting-a-tournament.po index 03a3c9eea8c..c7d2d7ae317 100644 --- a/docs/locale/de/LC_MESSAGES/use/starting-a-tournament.po +++ b/docs/locale/de/LC_MESSAGES/use/starting-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:29\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" "Language: de_DE\n" #: ../../use/starting-a-tournament.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/about/authors.po b/docs/locale/he/LC_MESSAGES/about/authors.po index 336d6424c86..69e20ccce17 100644 --- a/docs/locale/he/LC_MESSAGES/about/authors.po +++ b/docs/locale/he/LC_MESSAGES/about/authors.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:20\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" "Language: he_IL\n" #: ../../../AUTHORS.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/about/changelog.po b/docs/locale/he/LC_MESSAGES/about/changelog.po index 52e9a5d732d..a1dea49c77e 100644 --- a/docs/locale/he/LC_MESSAGES/about/changelog.po +++ b/docs/locale/he/LC_MESSAGES/about/changelog.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" "Language: he_IL\n" #: ../../../CHANGELOG.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/about/contributing.po b/docs/locale/he/LC_MESSAGES/about/contributing.po index 2974aba553f..0740ac9b164 100644 --- a/docs/locale/he/LC_MESSAGES/about/contributing.po +++ b/docs/locale/he/LC_MESSAGES/about/contributing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:21\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" "Language: he_IL\n" #: ../../../CONTRIBUTING.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/about/licence.po b/docs/locale/he/LC_MESSAGES/about/licence.po index 2c4310f5f43..18e34e67847 100644 --- a/docs/locale/he/LC_MESSAGES/about/licence.po +++ b/docs/locale/he/LC_MESSAGES/about/licence.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" "Language: he_IL\n" #: ../../../LICENSE.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/about/support.po b/docs/locale/he/LC_MESSAGES/about/support.po index e72bd528663..52846ebd3a5 100644 --- a/docs/locale/he/LC_MESSAGES/about/support.po +++ b/docs/locale/he/LC_MESSAGES/about/support.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" "Language: he_IL\n" #: ../../about/support.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/about/tournament-history.po b/docs/locale/he/LC_MESSAGES/about/tournament-history.po index 24c80c0de1d..c15fd230e4a 100644 --- a/docs/locale/he/LC_MESSAGES/about/tournament-history.po +++ b/docs/locale/he/LC_MESSAGES/about/tournament-history.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" "Language: he_IL\n" #: ../../about/tournament-history.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/he/LC_MESSAGES/features/adjudicator-allocation.po index 02f17ef0a1a..6928195c39f 100644 --- a/docs/locale/he/LC_MESSAGES/features/adjudicator-allocation.po +++ b/docs/locale/he/LC_MESSAGES/features/adjudicator-allocation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" "Language: he_IL\n" #: ../../features/adjudicator-allocation.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/he/LC_MESSAGES/features/adjudicator-feedback.po index c53424ed57b..5971f3e6dc9 100644 --- a/docs/locale/he/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/he/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" "Language: he_IL\n" #: ../../features/adjudicator-feedback.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/backups.po b/docs/locale/he/LC_MESSAGES/features/backups.po index a90d8f55ca1..d4067ac0669 100644 --- a/docs/locale/he/LC_MESSAGES/features/backups.po +++ b/docs/locale/he/LC_MESSAGES/features/backups.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" "Language: he_IL\n" #: ../../features/backups.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/breaks.po b/docs/locale/he/LC_MESSAGES/features/breaks.po index 0b911d2d439..7451c742d40 100644 --- a/docs/locale/he/LC_MESSAGES/features/breaks.po +++ b/docs/locale/he/LC_MESSAGES/features/breaks.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" "Language: he_IL\n" #: ../../features/breaks.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/check-ins.po b/docs/locale/he/LC_MESSAGES/features/check-ins.po index 5cc1719a853..25992cfb19d 100644 --- a/docs/locale/he/LC_MESSAGES/features/check-ins.po +++ b/docs/locale/he/LC_MESSAGES/features/check-ins.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" "Language: he_IL\n" #: ../../features/check-ins.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/data-entry.po b/docs/locale/he/LC_MESSAGES/features/data-entry.po index 37d2612a3e7..987ab1ae085 100644 --- a/docs/locale/he/LC_MESSAGES/features/data-entry.po +++ b/docs/locale/he/LC_MESSAGES/features/data-entry.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" "Language: he_IL\n" #: ../../features/data-entry.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/data-importers.po b/docs/locale/he/LC_MESSAGES/features/data-importers.po index 8a8359cdc75..7ab3becd187 100644 --- a/docs/locale/he/LC_MESSAGES/features/data-importers.po +++ b/docs/locale/he/LC_MESSAGES/features/data-importers.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" "Language: he_IL\n" #: ../../features/data-importers.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/he/LC_MESSAGES/features/draw-generation-bp.po index 813185f3448..f87f7e6d460 100644 --- a/docs/locale/he/LC_MESSAGES/features/draw-generation-bp.po +++ b/docs/locale/he/LC_MESSAGES/features/draw-generation-bp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-05-14 21:35\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" "Language: he_IL\n" #: ../../features/draw-generation-bp.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/draw-generation.po b/docs/locale/he/LC_MESSAGES/features/draw-generation.po index 73f648f765f..9565d91c2fd 100644 --- a/docs/locale/he/LC_MESSAGES/features/draw-generation.po +++ b/docs/locale/he/LC_MESSAGES/features/draw-generation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" "Language: he_IL\n" #: ../../features/draw-generation.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/notifications.po b/docs/locale/he/LC_MESSAGES/features/notifications.po index 800da8417cc..6f05011d17d 100644 --- a/docs/locale/he/LC_MESSAGES/features/notifications.po +++ b/docs/locale/he/LC_MESSAGES/features/notifications.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" "Language: he_IL\n" #: ../../features/notifications.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/features/preformed-panels.po b/docs/locale/he/LC_MESSAGES/features/preformed-panels.po index d07abac401c..20edb8c8e5c 100644 --- a/docs/locale/he/LC_MESSAGES/features/preformed-panels.po +++ b/docs/locale/he/LC_MESSAGES/features/preformed-panels.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" "Language: he_IL\n" #: ../../features/preformed-panels.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/printing.po b/docs/locale/he/LC_MESSAGES/features/printing.po index aae373f65dc..f6f11ff805d 100644 --- a/docs/locale/he/LC_MESSAGES/features/printing.po +++ b/docs/locale/he/LC_MESSAGES/features/printing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" "Language: he_IL\n" #: ../../features/printing.rst:3 diff --git a/docs/locale/he/LC_MESSAGES/features/standings-rules.po b/docs/locale/he/LC_MESSAGES/features/standings-rules.po index 7d499b0cb50..292388e5924 100644 --- a/docs/locale/he/LC_MESSAGES/features/standings-rules.po +++ b/docs/locale/he/LC_MESSAGES/features/standings-rules.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-05-14 21:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" "Language: he_IL\n" #: ../../features/standings-rules.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/team-code-names.po b/docs/locale/he/LC_MESSAGES/features/team-code-names.po index d948217146a..96be38ec687 100644 --- a/docs/locale/he/LC_MESSAGES/features/team-code-names.po +++ b/docs/locale/he/LC_MESSAGES/features/team-code-names.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" "Language: he_IL\n" #: ../../features/team-code-names.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/user-accounts.po b/docs/locale/he/LC_MESSAGES/features/user-accounts.po index d0d38286d3f..0c277d4d6ec 100644 --- a/docs/locale/he/LC_MESSAGES/features/user-accounts.po +++ b/docs/locale/he/LC_MESSAGES/features/user-accounts.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" "Language: he_IL\n" #: ../../features/user-accounts.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/features/venue-constraints.po b/docs/locale/he/LC_MESSAGES/features/venue-constraints.po index b9486f16c9e..2f0e8767659 100644 --- a/docs/locale/he/LC_MESSAGES/features/venue-constraints.po +++ b/docs/locale/he/LC_MESSAGES/features/venue-constraints.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" "Language: he_IL\n" #: ../../features/venue-constraints.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/guide/comparisons.po b/docs/locale/he/LC_MESSAGES/guide/comparisons.po index 1151ae443b3..2f3094b1a58 100644 --- a/docs/locale/he/LC_MESSAGES/guide/comparisons.po +++ b/docs/locale/he/LC_MESSAGES/guide/comparisons.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" "Language: he_IL\n" #: ../../guide/comparisons.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/guide/scaling.po b/docs/locale/he/LC_MESSAGES/guide/scaling.po index 43514a30bd5..474ac0f3021 100644 --- a/docs/locale/he/LC_MESSAGES/guide/scaling.po +++ b/docs/locale/he/LC_MESSAGES/guide/scaling.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" "Language: he_IL\n" #: ../../guide/scaling.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/he/LC_MESSAGES/guide/tournament-logistics.po index 9854a28c545..b4e854a94ae 100644 --- a/docs/locale/he/LC_MESSAGES/guide/tournament-logistics.po +++ b/docs/locale/he/LC_MESSAGES/guide/tournament-logistics.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-05-14 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" "Language: he_IL\n" #: ../../guide/tournament-logistics.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/guide/upgrading.po b/docs/locale/he/LC_MESSAGES/guide/upgrading.po index 85df543a1b5..df9fc7657b2 100644 --- a/docs/locale/he/LC_MESSAGES/guide/upgrading.po +++ b/docs/locale/he/LC_MESSAGES/guide/upgrading.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" "Language: he_IL\n" #: ../../guide/upgrading.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/index.po b/docs/locale/he/LC_MESSAGES/index.po index 61f37b5c2ea..18a49a6d275 100644 --- a/docs/locale/he/LC_MESSAGES/index.po +++ b/docs/locale/he/LC_MESSAGES/index.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:09\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" "Language: he_IL\n" #: ../../index.rst:18 diff --git a/docs/locale/he/LC_MESSAGES/install/docker.po b/docs/locale/he/LC_MESSAGES/install/docker.po index 35a3c2aa4fa..70938ba4ac0 100644 --- a/docs/locale/he/LC_MESSAGES/install/docker.po +++ b/docs/locale/he/LC_MESSAGES/install/docker.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" "Language: he_IL\n" #: ../../install/docker.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/heroku.po b/docs/locale/he/LC_MESSAGES/install/heroku.po index c36ce6c77b2..fd9a1596818 100644 --- a/docs/locale/he/LC_MESSAGES/install/heroku.po +++ b/docs/locale/he/LC_MESSAGES/install/heroku.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" "Language: he_IL\n" #: ../../install/heroku.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/linux.po b/docs/locale/he/LC_MESSAGES/install/linux.po index fb9ff7f6801..c4913a9a523 100644 --- a/docs/locale/he/LC_MESSAGES/install/linux.po +++ b/docs/locale/he/LC_MESSAGES/install/linux.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" "Language: he_IL\n" #: ../../install/linux.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/local.po b/docs/locale/he/LC_MESSAGES/install/local.po index bce64153ef3..6f445829109 100644 --- a/docs/locale/he/LC_MESSAGES/install/local.po +++ b/docs/locale/he/LC_MESSAGES/install/local.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" "Language: he_IL\n" #: ../../install/local.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/osx.po b/docs/locale/he/LC_MESSAGES/install/osx.po index 2baf39ba39b..515b567bf69 100644 --- a/docs/locale/he/LC_MESSAGES/install/osx.po +++ b/docs/locale/he/LC_MESSAGES/install/osx.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" "Language: he_IL\n" #: ../../install/osx.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/windows.po b/docs/locale/he/LC_MESSAGES/install/windows.po index b13f78ca828..ef53ddb2cd4 100644 --- a/docs/locale/he/LC_MESSAGES/install/windows.po +++ b/docs/locale/he/LC_MESSAGES/install/windows.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:07\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" "Language: he_IL\n" #: ../../install/windows.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/install/wsl.po b/docs/locale/he/LC_MESSAGES/install/wsl.po index 512ad87d59f..7dc3f4c6404 100644 --- a/docs/locale/he/LC_MESSAGES/install/wsl.po +++ b/docs/locale/he/LC_MESSAGES/install/wsl.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" "Language: he_IL\n" #: ../../install/wsl.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/he/LC_MESSAGES/use/finishing-a-tournament.po index 88a3381b3f9..e85b88f457d 100644 --- a/docs/locale/he/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/he/LC_MESSAGES/use/finishing-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" "Language: he_IL\n" #: ../../use/finishing-a-tournament.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/use/importing-data.po b/docs/locale/he/LC_MESSAGES/use/importing-data.po index d106fc4af7d..65f194a6e24 100644 --- a/docs/locale/he/LC_MESSAGES/use/importing-data.po +++ b/docs/locale/he/LC_MESSAGES/use/importing-data.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" "Language: he_IL\n" #: ../../use/importing-data.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/he/LC_MESSAGES/use/running-a-tournament.po index e4818c15389..768a4a6a55f 100644 --- a/docs/locale/he/LC_MESSAGES/use/running-a-tournament.po +++ b/docs/locale/he/LC_MESSAGES/use/running-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" "Language: he_IL\n" #: ../../use/running-a-tournament.rst:5 diff --git a/docs/locale/he/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/he/LC_MESSAGES/use/starting-a-tournament.po index 73d0a4a6643..8299ee644c2 100644 --- a/docs/locale/he/LC_MESSAGES/use/starting-a-tournament.po +++ b/docs/locale/he/LC_MESSAGES/use/starting-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-11 21:06\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" "Language: he_IL\n" #: ../../use/starting-a-tournament.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/about/authors.po b/docs/locale/hi/LC_MESSAGES/about/authors.po index 6d5d288458e..ff74069554b 100644 --- a/docs/locale/hi/LC_MESSAGES/about/authors.po +++ b/docs/locale/hi/LC_MESSAGES/about/authors.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" "Language: hi_IN\n" #: ../../../AUTHORS.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/about/changelog.po b/docs/locale/hi/LC_MESSAGES/about/changelog.po index 1e020b88eac..31e0e713dd0 100644 --- a/docs/locale/hi/LC_MESSAGES/about/changelog.po +++ b/docs/locale/hi/LC_MESSAGES/about/changelog.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:21\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" "Language: hi_IN\n" #: ../../../CHANGELOG.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/about/contributing.po b/docs/locale/hi/LC_MESSAGES/about/contributing.po index dc444c55ef8..5d6d5c0d666 100644 --- a/docs/locale/hi/LC_MESSAGES/about/contributing.po +++ b/docs/locale/hi/LC_MESSAGES/about/contributing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" "Language: hi_IN\n" #: ../../../CONTRIBUTING.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/about/licence.po b/docs/locale/hi/LC_MESSAGES/about/licence.po index a721b56c1b2..9030d36e359 100644 --- a/docs/locale/hi/LC_MESSAGES/about/licence.po +++ b/docs/locale/hi/LC_MESSAGES/about/licence.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" "Language: hi_IN\n" #: ../../../LICENSE.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/about/support.po b/docs/locale/hi/LC_MESSAGES/about/support.po index 796ea97947c..30eb42a1aa5 100644 --- a/docs/locale/hi/LC_MESSAGES/about/support.po +++ b/docs/locale/hi/LC_MESSAGES/about/support.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:20\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" "Language: hi_IN\n" #: ../../about/support.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/about/tournament-history.po b/docs/locale/hi/LC_MESSAGES/about/tournament-history.po index 0885c1d56b6..a2a9e1dea61 100644 --- a/docs/locale/hi/LC_MESSAGES/about/tournament-history.po +++ b/docs/locale/hi/LC_MESSAGES/about/tournament-history.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" "Language: hi_IN\n" #: ../../about/tournament-history.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/hi/LC_MESSAGES/features/adjudicator-allocation.po index ca639677343..a2e2a9947de 100644 --- a/docs/locale/hi/LC_MESSAGES/features/adjudicator-allocation.po +++ b/docs/locale/hi/LC_MESSAGES/features/adjudicator-allocation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" "Language: hi_IN\n" #: ../../features/adjudicator-allocation.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/hi/LC_MESSAGES/features/adjudicator-feedback.po index 11564553e95..367d0eaad64 100644 --- a/docs/locale/hi/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/hi/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" "Language: hi_IN\n" #: ../../features/adjudicator-feedback.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/backups.po b/docs/locale/hi/LC_MESSAGES/features/backups.po index 6aec2032ec8..dbabccf9326 100644 --- a/docs/locale/hi/LC_MESSAGES/features/backups.po +++ b/docs/locale/hi/LC_MESSAGES/features/backups.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:44\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" "Language: hi_IN\n" #: ../../features/backups.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/breaks.po b/docs/locale/hi/LC_MESSAGES/features/breaks.po index 1cd08d8170d..1af9731f576 100644 --- a/docs/locale/hi/LC_MESSAGES/features/breaks.po +++ b/docs/locale/hi/LC_MESSAGES/features/breaks.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" "Language: hi_IN\n" #: ../../features/breaks.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/check-ins.po b/docs/locale/hi/LC_MESSAGES/features/check-ins.po index 97b349c46f8..93ae17b5243 100644 --- a/docs/locale/hi/LC_MESSAGES/features/check-ins.po +++ b/docs/locale/hi/LC_MESSAGES/features/check-ins.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" "Language: hi_IN\n" #: ../../features/check-ins.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/data-entry.po b/docs/locale/hi/LC_MESSAGES/features/data-entry.po index 281b139727e..07ee0a30469 100644 --- a/docs/locale/hi/LC_MESSAGES/features/data-entry.po +++ b/docs/locale/hi/LC_MESSAGES/features/data-entry.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" "Language: hi_IN\n" #: ../../features/data-entry.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/data-importers.po b/docs/locale/hi/LC_MESSAGES/features/data-importers.po index 05255f615b0..d330bc3ce23 100644 --- a/docs/locale/hi/LC_MESSAGES/features/data-importers.po +++ b/docs/locale/hi/LC_MESSAGES/features/data-importers.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" "Language: hi_IN\n" #: ../../features/data-importers.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/hi/LC_MESSAGES/features/draw-generation-bp.po index f0d279188a7..6abc7410cab 100644 --- a/docs/locale/hi/LC_MESSAGES/features/draw-generation-bp.po +++ b/docs/locale/hi/LC_MESSAGES/features/draw-generation-bp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" "Language: hi_IN\n" #: ../../features/draw-generation-bp.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/draw-generation.po b/docs/locale/hi/LC_MESSAGES/features/draw-generation.po index 5509e1bb23a..ad0ab64f60b 100644 --- a/docs/locale/hi/LC_MESSAGES/features/draw-generation.po +++ b/docs/locale/hi/LC_MESSAGES/features/draw-generation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" "Language: hi_IN\n" #: ../../features/draw-generation.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/notifications.po b/docs/locale/hi/LC_MESSAGES/features/notifications.po index 6e1f61f352a..b8e3fe88da8 100644 --- a/docs/locale/hi/LC_MESSAGES/features/notifications.po +++ b/docs/locale/hi/LC_MESSAGES/features/notifications.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" "Language: hi_IN\n" #: ../../features/notifications.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/features/preformed-panels.po b/docs/locale/hi/LC_MESSAGES/features/preformed-panels.po index 9f19607a4ce..7af10717a93 100644 --- a/docs/locale/hi/LC_MESSAGES/features/preformed-panels.po +++ b/docs/locale/hi/LC_MESSAGES/features/preformed-panels.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" "Language: hi_IN\n" #: ../../features/preformed-panels.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/printing.po b/docs/locale/hi/LC_MESSAGES/features/printing.po index 3f7bb2f844f..d7b11d4971e 100644 --- a/docs/locale/hi/LC_MESSAGES/features/printing.po +++ b/docs/locale/hi/LC_MESSAGES/features/printing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" "Language: hi_IN\n" #: ../../features/printing.rst:3 diff --git a/docs/locale/hi/LC_MESSAGES/features/standings-rules.po b/docs/locale/hi/LC_MESSAGES/features/standings-rules.po index a8d76b4b50e..1dc45771241 100644 --- a/docs/locale/hi/LC_MESSAGES/features/standings-rules.po +++ b/docs/locale/hi/LC_MESSAGES/features/standings-rules.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" "Language: hi_IN\n" #: ../../features/standings-rules.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/team-code-names.po b/docs/locale/hi/LC_MESSAGES/features/team-code-names.po index b43afa80d0f..0ff4d77ebd8 100644 --- a/docs/locale/hi/LC_MESSAGES/features/team-code-names.po +++ b/docs/locale/hi/LC_MESSAGES/features/team-code-names.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" "Language: hi_IN\n" #: ../../features/team-code-names.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/user-accounts.po b/docs/locale/hi/LC_MESSAGES/features/user-accounts.po index 17030667a95..e6e12d5bc77 100644 --- a/docs/locale/hi/LC_MESSAGES/features/user-accounts.po +++ b/docs/locale/hi/LC_MESSAGES/features/user-accounts.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:10\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" "Language: hi_IN\n" #: ../../features/user-accounts.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/features/venue-constraints.po b/docs/locale/hi/LC_MESSAGES/features/venue-constraints.po index 1e923231d3a..83b528d6912 100644 --- a/docs/locale/hi/LC_MESSAGES/features/venue-constraints.po +++ b/docs/locale/hi/LC_MESSAGES/features/venue-constraints.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" "Language: hi_IN\n" #: ../../features/venue-constraints.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/guide/comparisons.po b/docs/locale/hi/LC_MESSAGES/guide/comparisons.po index 40b1f7fdd73..f9b1982f814 100644 --- a/docs/locale/hi/LC_MESSAGES/guide/comparisons.po +++ b/docs/locale/hi/LC_MESSAGES/guide/comparisons.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" "Language: hi_IN\n" #: ../../guide/comparisons.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/guide/scaling.po b/docs/locale/hi/LC_MESSAGES/guide/scaling.po index 338a2d71918..ecb7f92abbc 100644 --- a/docs/locale/hi/LC_MESSAGES/guide/scaling.po +++ b/docs/locale/hi/LC_MESSAGES/guide/scaling.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" "Language: hi_IN\n" #: ../../guide/scaling.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/hi/LC_MESSAGES/guide/tournament-logistics.po index 7952d37e474..b0115c86c0b 100644 --- a/docs/locale/hi/LC_MESSAGES/guide/tournament-logistics.po +++ b/docs/locale/hi/LC_MESSAGES/guide/tournament-logistics.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" "Language: hi_IN\n" #: ../../guide/tournament-logistics.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/guide/upgrading.po b/docs/locale/hi/LC_MESSAGES/guide/upgrading.po index eb1c0654817..0f2f8b5b40e 100644 --- a/docs/locale/hi/LC_MESSAGES/guide/upgrading.po +++ b/docs/locale/hi/LC_MESSAGES/guide/upgrading.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" "Language: hi_IN\n" #: ../../guide/upgrading.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/index.po b/docs/locale/hi/LC_MESSAGES/index.po index d16f53e9e3d..75942debb53 100644 --- a/docs/locale/hi/LC_MESSAGES/index.po +++ b/docs/locale/hi/LC_MESSAGES/index.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:47\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" "Language: hi_IN\n" #: ../../index.rst:18 diff --git a/docs/locale/hi/LC_MESSAGES/install/docker.po b/docs/locale/hi/LC_MESSAGES/install/docker.po index 406598b9b63..236eb575931 100644 --- a/docs/locale/hi/LC_MESSAGES/install/docker.po +++ b/docs/locale/hi/LC_MESSAGES/install/docker.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" "Language: hi_IN\n" #: ../../install/docker.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/heroku.po b/docs/locale/hi/LC_MESSAGES/install/heroku.po index 09e4d355f31..deef0d0cdf8 100644 --- a/docs/locale/hi/LC_MESSAGES/install/heroku.po +++ b/docs/locale/hi/LC_MESSAGES/install/heroku.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" "Language: hi_IN\n" #: ../../install/heroku.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/linux.po b/docs/locale/hi/LC_MESSAGES/install/linux.po index 05abc018619..bb6bf5271c7 100644 --- a/docs/locale/hi/LC_MESSAGES/install/linux.po +++ b/docs/locale/hi/LC_MESSAGES/install/linux.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" "Language: hi_IN\n" #: ../../install/linux.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/local.po b/docs/locale/hi/LC_MESSAGES/install/local.po index e4c3fd825fb..ac3e1e8f999 100644 --- a/docs/locale/hi/LC_MESSAGES/install/local.po +++ b/docs/locale/hi/LC_MESSAGES/install/local.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" "Language: hi_IN\n" #: ../../install/local.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/osx.po b/docs/locale/hi/LC_MESSAGES/install/osx.po index b5282b9febf..883b9c0495e 100644 --- a/docs/locale/hi/LC_MESSAGES/install/osx.po +++ b/docs/locale/hi/LC_MESSAGES/install/osx.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:46\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" "Language: hi_IN\n" #: ../../install/osx.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/windows.po b/docs/locale/hi/LC_MESSAGES/install/windows.po index 426c733ffe3..a4a3622d4c7 100644 --- a/docs/locale/hi/LC_MESSAGES/install/windows.po +++ b/docs/locale/hi/LC_MESSAGES/install/windows.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" "Language: hi_IN\n" #: ../../install/windows.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/install/wsl.po b/docs/locale/hi/LC_MESSAGES/install/wsl.po index a095bc6a139..1efdb396802 100644 --- a/docs/locale/hi/LC_MESSAGES/install/wsl.po +++ b/docs/locale/hi/LC_MESSAGES/install/wsl.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:44\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" "Language: hi_IN\n" #: ../../install/wsl.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/hi/LC_MESSAGES/use/finishing-a-tournament.po index c90013afb03..459b19fe46f 100644 --- a/docs/locale/hi/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/hi/LC_MESSAGES/use/finishing-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:44\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" "Language: hi_IN\n" #: ../../use/finishing-a-tournament.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/use/importing-data.po b/docs/locale/hi/LC_MESSAGES/use/importing-data.po index 53d58d6b1fb..67cf984272c 100644 --- a/docs/locale/hi/LC_MESSAGES/use/importing-data.po +++ b/docs/locale/hi/LC_MESSAGES/use/importing-data.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:44\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" "Language: hi_IN\n" #: ../../use/importing-data.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/hi/LC_MESSAGES/use/running-a-tournament.po index 347264d7c4f..8b36fe7a60e 100644 --- a/docs/locale/hi/LC_MESSAGES/use/running-a-tournament.po +++ b/docs/locale/hi/LC_MESSAGES/use/running-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" "Language: hi_IN\n" #: ../../use/running-a-tournament.rst:5 diff --git a/docs/locale/hi/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/hi/LC_MESSAGES/use/starting-a-tournament.po index b6f53f6a4b9..8e89fb0f4ff 100644 --- a/docs/locale/hi/LC_MESSAGES/use/starting-a-tournament.po +++ b/docs/locale/hi/LC_MESSAGES/use/starting-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-13 03:45\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" "Language: hi_IN\n" #: ../../use/starting-a-tournament.rst:5 diff --git a/docs/locale/ja/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/ja/LC_MESSAGES/features/adjudicator-feedback.po index 372ab688874..affbd17ade2 100644 --- a/docs/locale/ja/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/ja/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-07-05 17:25\n" +"PO-Revision-Date: 2023-03-23 07:48\n" "Last-Translator: \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -20,7 +20,7 @@ msgstr "" #: ../../features/adjudicator-feedback.rst:5 msgid "Adjudicator Feedback" -msgstr "" +msgstr "ジャッジのフィードバック" #: ../../features/adjudicator-feedback.rst:7 msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." diff --git a/docs/locale/kk/LC_MESSAGES/about/authors.po b/docs/locale/kk/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..f51f8581c87 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/authors.po @@ -0,0 +1,72 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: kk_KZ\n" + +#: ../../../AUTHORS.rst:3 +msgid "Authors & Acknowledgements" +msgstr "" + +#: ../../../AUTHORS.rst:6 +msgid "Authors" +msgstr "" + +#: ../../../AUTHORS.rst:8 +msgid "Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:" +msgstr "" + +#: ../../../AUTHORS.rst:10 +msgid "Philip Belesky (`pb-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:11 +msgid "Chuan-Zheng Lee (`cz-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:13 +msgid "Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:16 +msgid "Contributors" +msgstr "" + +#: ../../../AUTHORS.rst:18 +msgid "Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:19 +msgid "Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category." +msgstr "" + +#: ../../../AUTHORS.rst:20 +msgid "Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced." +msgstr "" + +#: ../../../AUTHORS.rst:21 +msgid "Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the \"Tournament Logistics\" section of our documentation." +msgstr "" + +#: ../../../AUTHORS.rst:24 +msgid "Sponsors" +msgstr "" + +#: ../../../AUTHORS.rst:26 +msgid "Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/about/changelog.po b/docs/locale/kk/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..e656b5f372f --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/changelog.po @@ -0,0 +1,1922 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: kk_KZ\n" + +#: ../../../CHANGELOG.rst:3 +msgid "Change Log" +msgstr "" + +#: ../../../CHANGELOG.rst:6 +msgid "2.4.0 (Maine)" +msgstr "" + +#: ../../../CHANGELOG.rst:7 +msgid "*Release date: ?*" +msgstr "" + +#: ../../../CHANGELOG.rst:9 +msgid "Added support for Russian, and shortened the language selector" +msgstr "" + +#: ../../../CHANGELOG.rst:10 +msgid "Renamed 'test score' to 'base score'" +msgstr "" + +#: ../../../CHANGELOG.rst:11 +msgid "Divisions-specific features have been deprecated and removed" +msgstr "" + +#: ../../../CHANGELOG.rst:12 +msgid "Moved the 'Edit Database' menu item to the dropdown with the logo in the admin navigation" +msgstr "" + +#: ../../../CHANGELOG.rst:13 +msgid "Pull-ups can now be restricted to teams with the lowest draw strength (by speaker or team points) of their bracket" +msgstr "" + +#: ../../../CHANGELOG.rst:14 +msgid "The number of pull-ups and draw strength by speaker score are now available as team standing metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:15 +msgid "Added the new emoji that come along with Unicode 11 — thanks to Viran Weerasekera for this addition!" +msgstr "" + +#: ../../../CHANGELOG.rst:16 +msgid "The 'Show adjudicator institutions' preference now covers a wider range of cases; meaning that if it is unchecked then all adjudicator's institutional affiliations should be hidden from the public" +msgstr "" + +#: ../../../CHANGELOG.rst:20 +msgid "2.3.2" +msgstr "" + +#: ../../../CHANGELOG.rst:21 +msgid "*Release date: 19 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:23 +msgid "Fixed issue where teams would appear to be unavailable in break rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:24 ../../../CHANGELOG.rst:294 +#: ../../../CHANGELOG.rst:302 ../../../CHANGELOG.rst:314 +msgid "Other minor fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:28 +msgid "2.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:29 +msgid "*Release date: 6 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:31 +msgid "Fixed issue where the institutions list would count teams/adjudicators outside of the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:32 +msgid "Fixed issue where a rejected ballot form would crash rather than providing an error message" +msgstr "" + +#: ../../../CHANGELOG.rst:33 +msgid "Fixed issue where the javascript bundle would not build on a local windows install" +msgstr "" + +#: ../../../CHANGELOG.rst:34 +msgid "Fixed issue where the adjudicator record pages would show an unreleased motion if that round's draw was released" +msgstr "" + +#: ../../../CHANGELOG.rst:38 +msgid "2.3.0 (LaPerm)" +msgstr "" + +#: ../../../CHANGELOG.rst:39 +msgid "*Release date: 27 September 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:42 +msgid "Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation" +msgstr "" + +#: ../../../CHANGELOG.rst:43 +msgid "Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates" +msgstr "" + +#: ../../../CHANGELOG.rst:45 +msgid "By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:47 +msgid "These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core" +msgstr "" + +#: ../../../CHANGELOG.rst:48 +msgid "A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information" +msgstr "" + +#: ../../../CHANGELOG.rst:49 +msgid "The unused panel is now able to sort adjudicators by name, score, or drag order" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Average scores for all adjudicators, and a voting majority, are now shown next to the panel" +msgstr "" + +#: ../../../CHANGELOG.rst:51 +msgid "Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values" +msgstr "" + +#: ../../../CHANGELOG.rst:52 +msgid "The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)" +msgstr "" + +#: ../../../CHANGELOG.rst:55 +msgid "Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "A range of improvements to the email notifications contributed by Étienne Beaulé:" +msgstr "" + +#: ../../../CHANGELOG.rst:57 +msgid "Ballot receipt emails now provide more information about team scores/points" +msgstr "" + +#: ../../../CHANGELOG.rst:58 +msgid "Emails are now in a rich-text format" +msgstr "" + +#: ../../../CHANGELOG.rst:59 +msgid "Custom emails may be sent out to select participants through the web-interface" +msgstr "" + +#: ../../../CHANGELOG.rst:60 +msgid "Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "Teams can be sent emails with their draw details" +msgstr "" + +#: ../../../CHANGELOG.rst:62 +msgid "Emails can be tracked to determine if sent or read (SendGrid-specific)" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Expanded the use of private URLs (Encore Étienne Beaulé):" +msgstr "" + +#: ../../../CHANGELOG.rst:64 +msgid "QR codes are now included in addition to the URL when printing private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:66 +msgid "Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Reworked how conflicts are determined to support double-past institutional conflicts:" +msgstr "" + +#: ../../../CHANGELOG.rst:68 +msgid "Added a \"team-institution conflict\" model" +msgstr "" + +#: ../../../CHANGELOG.rst:69 +msgid "Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter" +msgstr "" + +#: ../../../CHANGELOG.rst:71 +msgid "An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties" +msgstr "" + +#: ../../../CHANGELOG.rst:72 +msgid "When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions" +msgstr "" + +#: ../../../CHANGELOG.rst:73 +msgid "Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:74 +msgid "Info-slides can now be split into paragraphs" +msgstr "" + +#: ../../../CHANGELOG.rst:75 +msgid "Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:76 +msgid "Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:77 +msgid "Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``" +msgstr "" + +#: ../../../CHANGELOG.rst:78 +msgid "Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally." +msgstr "" + +#: ../../../CHANGELOG.rst:82 +msgid "2.2.10" +msgstr "" + +#: ../../../CHANGELOG.rst:83 +msgid "*Release date: 10 February 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:85 +msgid "Fixed the display of feedback quantities on the Feedback Overview Page" +msgstr "" + +#: ../../../CHANGELOG.rst:86 +msgid "Fixed issue where 'ignored' feedback would hide the result from the feedback graph but not affect an adjudicator's current score. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:90 +msgid "2.2.9" +msgstr "" + +#: ../../../CHANGELOG.rst:91 +msgid "*Release date: 24 January 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:93 +msgid "Fixed an issue that could cause errors for tournaments when using an atypical number of rounds and break sizes. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:94 +msgid "Fixed an issue where the display of adjudicator's record links would display their name twice" +msgstr "" + +#: ../../../CHANGELOG.rst:98 +msgid "2.2.8" +msgstr "" + +#: ../../../CHANGELOG.rst:99 +msgid "*Release date: 14 December 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:101 +msgid "Fix issue where the check-in buttons were always disabled on admin and assistant pages" +msgstr "" + +#: ../../../CHANGELOG.rst:102 +msgid "Other minor fixes. Thanks to Étienne for these and for the check-in button fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:106 +msgid "2.2.7" +msgstr "" + +#: ../../../CHANGELOG.rst:107 +msgid "*Release date: 16 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:109 +msgid "Lock redis-py version to 2.10.6, as workaround for `compatibility issue between django-redis and redis-py `_" +msgstr "" + +#: ../../../CHANGELOG.rst:110 +msgid "Fix login link on page shown after a user logs out" +msgstr "" + +#: ../../../CHANGELOG.rst:114 +msgid "2.2.6" +msgstr "" + +#: ../../../CHANGELOG.rst:115 +msgid "*Release date: 14 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:117 +msgid "Fix issue where check-ins could not be revoked" +msgstr "" + +#: ../../../CHANGELOG.rst:118 +msgid "Fix issue where the standings overview 'dashboard' included scores from elimination rounds. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:119 +msgid "Fix issue where the Average Individual Speaker Score metric would fail to calculate in some circumstances. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:120 +msgid "Fix issue where draw emails would crash if venues were unspecified. Thanks, again, to Étienne for this fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:124 +msgid "2.2.5" +msgstr "" + +#: ../../../CHANGELOG.rst:125 +msgid "*Release date: 21 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:127 +msgid "Remove the buttons from the public check-ins page (as these do nothing unless the user is logged in)" +msgstr "" + +#: ../../../CHANGELOG.rst:128 +msgid "Hopefully fixed error that could cause Team- and Adjudicator- Institutional conflicts to not show properly on Allocation pages" +msgstr "" + +#: ../../../CHANGELOG.rst:129 +msgid "Thanks to Étienne for pull requests fixing rare bugs in the user creation form and break generation when rounds are not present" +msgstr "" + +#: ../../../CHANGELOG.rst:133 +msgid "2.2.4" +msgstr "" + +#: ../../../CHANGELOG.rst:134 +msgid "*Release date: 9 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:136 +msgid "Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:140 +msgid "2.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:141 +msgid "*Release date: 28 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:143 +msgid "*Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:144 +msgid "Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:145 +msgid "Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:149 +msgid "2.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:150 +msgid "*Release date: 22 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:152 +msgid "*Actually* fix the issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:156 +msgid "2.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:157 +msgid "*Release date: 21 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:159 +msgid "Fix issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:163 +msgid "2.2.0 (Khao Manee)" +msgstr "" + +#: ../../../CHANGELOG.rst:164 +msgid "*Release date: 20 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Implemented a new server architecture on Heroku along with other optimisation that should significantly improve the performance of sites receiving lots of traffic. Note that if you are upgrading an existing Heroku instance this requires a few tweaks before you deploy the update:" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Add the `https://github.com/heroku/heroku-buildpack-nginx.git` build pack under the Settings area of the Heroku Dashboard and positioning it first" +msgstr "" + +#: ../../../CHANGELOG.rst:168 +msgid "If your Heroku Stack is not \"heroku-16\" (noted under that same Settings page) it will need to be set as such using the Heroku CLI and the ``heroku stack:set heroku-16 --app APP_NAME`` command" +msgstr "" + +#: ../../../CHANGELOG.rst:169 +msgid "Added a page to the documentation that details how to scale a Tabbycat site that is receiving large amounts of traffic; and another page that documents how to upgrade a Tabbycat site to a new version" +msgstr "" + +#: ../../../CHANGELOG.rst:170 +msgid "Added support for Japanese and Portuguese. Let us know if you'd like to help contribute translations for either language (or a new one)!" +msgstr "" + +#: ../../../CHANGELOG.rst:171 +msgid "The results-entry page now updates its data live, giving you a more up to date look at data entry progress and reducing the cases of old data leading people to enter new ballots when they meant to confirm them" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "A huge thanks to Étienne Beaulé for contributing a number of major new features and bug fixes. Notably:" +msgstr "" + +#: ../../../CHANGELOG.rst:173 +msgid "Added a means to mark feedback as 'ignored' so that it still is recorded as having been submitted, but does not affect the targeted-adjudicator's feedback score" +msgstr "" + +#: ../../../CHANGELOG.rst:174 +msgid "Added email notification to adjudicators on round release" +msgstr "" + +#: ../../../CHANGELOG.rst:175 +msgid "Implemented participant self-check-in through the use of their private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:176 +msgid "Gave all participants to a tournament a private URL key rather than being by team, and added a landing page for the participants using this key" +msgstr "" + +#: ../../../CHANGELOG.rst:177 +msgid "Implemented templated email notifications with ballot submission and round advance with the messages in a new settings panel. Private URL emails are now also customizable" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "Added the \"average individual speaker score\" metric which averages the scores of all substantive speeches by the team within preliminary rounds. The old \"average speaker score\" metric has been renamed to to \"average total speaker score\"" +msgstr "" + +#: ../../../CHANGELOG.rst:179 +msgid "Reworked the ballots status graph to be an area chart" +msgstr "" + +#: ../../../CHANGELOG.rst:180 +msgid "Added the ability to hide motions on printed ballots (even if they have been entered). Thanks to Github user 0zlw for the feature request!" +msgstr "" + +#: ../../../CHANGELOG.rst:181 +msgid "Added the ability to unconfirm feedback from any of the views that show it" +msgstr "" + +#: ../../../CHANGELOG.rst:182 +msgid "BP motion statistics now also show average points split by bench and half" +msgstr "" + +#: ../../../CHANGELOG.rst:183 +msgid "Added a warning when users are close to their free-tier database limit on Heroku that makes it clear not to create new tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:184 +msgid "Added ``exportconfig`` and ``importconfig`` management commands to export and import tournament configurations to a JSON file" +msgstr "" + +#: ../../../CHANGELOG.rst:185 +msgid "Upgraded `django-dynamic-preferences `_ to version 1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:187 +msgid "This won't affect most users, but advanced users previously having problems with a stray ``dynamic_preferences_users_userpreferencemodel`` table who are upgrading an existing instance may wish to run the SQL command ``DROP TABLE dynamic_preferences_users_userpreferencemodel;`` to remove this stray table. When this table was present, it caused an inconsistency between migration state and database schema that in turned caused the ``python manage.py flush`` command to fail. More information is available in the `django-dynamic-preferences changelog `_" +msgstr "" + +#: ../../../CHANGELOG.rst:191 +msgid "2.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:192 +msgid "*Release date: 21 August 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:194 +msgid "Added an alert for British Parliamentary format grand-final ballots that explains the workaround needed to nominate a sole winner" +msgstr "" + +#: ../../../CHANGELOG.rst:195 +msgid "Improved display of images shown when sharing Tabbycat links on social media" +msgstr "" + +#: ../../../CHANGELOG.rst:196 +msgid "Optimised the performance of several commonly-loaded pages. Thanks to Étienne Beaulé for the pull request!" +msgstr "" + +#: ../../../CHANGELOG.rst:197 +msgid "Prevented the entry of integer-scale feedback questions without the required min/max attributes" +msgstr "" + +#: ../../../CHANGELOG.rst:198 +msgid "Provided a shortcut link to editing a round's feedback weight" +msgstr "" + +#: ../../../CHANGELOG.rst:199 +msgid "Prevented standings from crashing when only a single standings metric is set" +msgstr "" + +#: ../../../CHANGELOG.rst:203 +msgid "2.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:204 +msgid "*Release date: 14 July 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:206 +msgid "Fixed an error caused when calculating breaks including teams without institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:207 +msgid "Improved display of long motions and info slides" +msgstr "" + +#: ../../../CHANGELOG.rst:208 +msgid "Fixed bug in feedback progress tracking with UADC-style adjudication" +msgstr "" + +#: ../../../CHANGELOG.rst:209 +msgid "Fixed bug where the public checks page would cause large amounts of failing requests" +msgstr "" + +#: ../../../CHANGELOG.rst:210 +msgid "Fixed visual issue with adjudicator lists wrapping poorly on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:211 +msgid "Limited the time it takes to serve requests to match Heroku's in-built limit; this may help improve the performance of sites under heavy load" +msgstr "" + +#: ../../../CHANGELOG.rst:215 +msgid "2.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:216 +msgid "*Release date: 19 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:218 +msgid "The Scan Identifiers page now orders check-ins from top to bottom" +msgstr "" + +#: ../../../CHANGELOG.rst:219 +msgid "The Scan Identifiers now plays different sounds for failed check-ins" +msgstr "" + +#: ../../../CHANGELOG.rst:220 +msgid "The Scan Identifiers now has a toggle for sounds; allowing it to work in browsers like Safari that block auto-playing audio" +msgstr "" + +#: ../../../CHANGELOG.rst:224 +msgid "2.1.0 (Japanese Bobtail)" +msgstr "" + +#: ../../../CHANGELOG.rst:225 +msgid "*Release date: 7 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:227 +msgid "Added an introductory modal for the adjudicator allocation page to help outline how the features and workflow operate" +msgstr "" + +#: ../../../CHANGELOG.rst:228 +msgid "Added an automated method for assigning importances to debates using their bracket or 'liveness'. This should allow smaller tournaments to more easily assign importances and save time for larger tournaments that do so" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "Added the ability to switch between using 'team codes' and standard team names" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "By default team codes are set to match that team's emoji, but team codes are editable and can be imported like standard data" +msgstr "" + +#: ../../../CHANGELOG.rst:231 +msgid "Team codes can be swapped in an out for standard team names at will, with precise control over the contexts in which either is used — i.e. in public-facing pages, in admin-facing pages, in tooltips, *etc.*" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Added a range of 'check-in' functionality" +msgstr "" + +#: ../../../CHANGELOG.rst:233 +msgid "This includes barcode assignment, printing, and scanning. Scanning methods are optimised both for manual entry, entry with barcodes scanners, and for a 'live' scanning view that uses your phone's camera!" +msgstr "" + +#: ../../../CHANGELOG.rst:234 +msgid "This includes new people and venue status pages that show an overview of check-in status and allow for easy manual check-ins; ideal for a roll-calls!. This page can also be made public" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Ballot check-ins have been converted to this new method, and now all printed ballots will contain the barcodes needed to scan them" +msgstr "" + +#: ../../../CHANGELOG.rst:236 +msgid "Venue check-ins have been added alongside the standard 'person' check-ins to allow you to track a room's status at the start of the day or round-by-round" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Added (partial) translations in French, Spanish and Arabic" +msgstr "" + +#: ../../../CHANGELOG.rst:238 +msgid "Users can now use a link in the footer to switch the site's language into French, Spanish, or Arabic. By default Tabbycat should also match your browser's language and so automatically apply those languages if it matches" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Our translations are generously provided by volunteers, but (so far) do not cover all of the interface text within Tabbycat. If you're interested in helping to translate new or existing languages please get in touch!" +msgstr "" + +#: ../../../CHANGELOG.rst:240 +msgid "Thanks to the excellent team at QatarDebate for contributing the Arabic translations, and to Alejandro, Hernando, Julian and Zoe for contributing the Spanish translations." +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Added a new (beta) feature: allocation 'sharding'" +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Sharding allows you to split up the Adjudicator Allocation screen into a defined subset of the draw. This has been designed so that you can have multiple computers doing allocations simultaneously; allowing the adjudication core to split itself and tackle allocations in parallel." +msgstr "" + +#: ../../../CHANGELOG.rst:243 +msgid "Shards can be assigned into defined fractions (i.e. halves or fifths) according to specific criteria (i.e. bracket or priority) and following either a top-to-bottom sorting or a mixed sorting that ensures each bracket has an even proportion of each criteria." +msgstr "" + +#: ../../../CHANGELOG.rst:244 +msgid "Added an option to show a \"Confirm Digits\" option to pre-printed ballots that asks adjudicators to confirm their scores in a manner that may help clarify instances or bad handwriting. This can be enabled in the \"Data Entry\" settings area." +msgstr "" + +#: ../../../CHANGELOG.rst:245 +msgid "Added a 'liveness' calculator for BP that will estimate whether each team has, can, or can't break in each of their categories (as previously existed for 2-team formats)" +msgstr "" + +#: ../../../CHANGELOG.rst:246 +msgid "Added draw pull-up option: pull up from middle" +msgstr "" + +#: ../../../CHANGELOG.rst:247 +msgid "Added new draw option: choose pull-up from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../../CHANGELOG.rst:248 +msgid "Added the ability to have different 'ballots-per-debates' for in/out rounds; accommodating tournaments like Australian Easters that use consensus for preliminary rounds but voting for elimination rounds." +msgstr "" + +#: ../../../CHANGELOG.rst:249 +msgid "Added time zone support to the locations where times are displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:250 +msgid "Administrators can now view pages as if they were Assistants; allowing them to (for example) use the data entry forms that enforce double-checking without needed to create a separate account" +msgstr "" + +#: ../../../CHANGELOG.rst:251 +msgid "Fixed χ² test in motion statistics, and refactored the motion statistics page" +msgstr "" + +#: ../../../CHANGELOG.rst:252 +msgid "Teams, like adjudicators, no longer need to have an institution" +msgstr "" + +#: ../../../CHANGELOG.rst:253 +msgid "Added a page allowing for bulk updates to adjudicator scores" +msgstr "" + +#: ../../../CHANGELOG.rst:254 +msgid "Added break categories to team standings, and new team standings pages for break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Made speaker standings more configurable" +msgstr "" + +#: ../../../CHANGELOG.rst:256 +msgid "Second-order metrics can now be specified" +msgstr "" + +#: ../../../CHANGELOG.rst:257 +msgid "Added trimmed mean (also known as high-low drop)" +msgstr "" + +#: ../../../CHANGELOG.rst:258 +msgid "Added ability to set no limit for number of missed debates" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Standard deviation is now the population standard deviation (was previously sample), and ranks in ascending order if used to rank speakers." +msgstr "" + +#: ../../../CHANGELOG.rst:273 ../../../CHANGELOG.rst:386 +msgid "Quality of life improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:262 +msgid "Added a \"☆\" indicator to more obviously liveness in the adjudicator allocation screen" +msgstr "" + +#: ../../../CHANGELOG.rst:263 +msgid "Added WYSIWYG editor for tournament welcome message, and moved it to tournament configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:264 +msgid "Added \"appellant\" and \"respondent\" to the side name options" +msgstr "" + +#: ../../../CHANGELOG.rst:265 +msgid "Added a two new columns to the feedback overview page: one that displays the current difference between an adjudicator's test score and their current weighted score; another the displays the standard deviation of an adjudicator's feedback scores" +msgstr "" + +#: ../../../CHANGELOG.rst:266 +msgid "Added an 'important feedback' page that highlights feedback significantly above or below an adjudicator's test score" +msgstr "" + +#: ../../../CHANGELOG.rst:267 +msgid "Added a means to bulk-import adjudicator scores (for example from a CSV) to make it easier to work with external feedback processing" +msgstr "" + +#: ../../../CHANGELOG.rst:268 +msgid "Speakers and speaker's emails in the simple importer can now be separated by commas or tabs in addition to new lines" +msgstr "" + +#: ../../../CHANGELOG.rst:269 +msgid "The \"shared\" checkbox in the simple importer is now hidden unless the relevant tournament option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:270 +msgid "Current team standings page now shows silent round results if \"Release all round results to public\" is set" +msgstr "" + +#: ../../../CHANGELOG.rst:271 +msgid "The Consensus vs Voting options for how ballots work has now been split into two settings: one option for preliminary rounds and one option for elimination rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:272 +msgid "Speaker scores now show as integers (without decimals) where the tournament format would not allow decimals" +msgstr "" + +#: ../../../CHANGELOG.rst:273 +msgid "Added a page showing a list of institutions in the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:274 +msgid "On the assistant \"enter results\" page, pressing \"/\" jumps to the \"Find in Table\" box, so data entry can be done entirely from your keyboard" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "Switched to using a Websockets/Channels based infrastructure to better allow for asynchronous updates. This should also ameliorate cases where the Memcachier plugin expired due to inactivity which would then crash a site. Notes for those upgrading:" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "On Heroku: You should remove the Memcachier plugin and instead add 'heroku-redis' to any instances being upgraded" +msgstr "" + +#: ../../../CHANGELOG.rst:277 +msgid "Locally: You should recreate your `local_settings.py` from the `local_settings.example` file" +msgstr "" + +#: ../../../CHANGELOG.rst:280 +msgid "Upgraded to Django 2.0" +msgstr "" + +#: ../../../CHANGELOG.rst:279 +msgid "Converted most raw SQL queries to use the new ``filter`` keyword in annotations" +msgstr "" + +#: ../../../CHANGELOG.rst:283 +msgid "2.0.7" +msgstr "" + +#: ../../../CHANGELOG.rst:284 +msgid "*Release date: 13 April 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:286 +msgid "Fixed an issue preventing draws with pre-allocate sides generating" +msgstr "" + +#: ../../../CHANGELOG.rst:290 +msgid "2.0.6" +msgstr "" + +#: ../../../CHANGELOG.rst:291 +msgid "*Release date: 20 March 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:293 +msgid "Added reminder to add own-institution conflicts in the Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:298 +msgid "2.0.5" +msgstr "" + +#: ../../../CHANGELOG.rst:299 +msgid "*Release date: 7 February 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:301 +msgid "Improved the printing of scoresheets and feedback forms on Chrome." +msgstr "" + +#: ../../../CHANGELOG.rst:306 +msgid "2.0.4" +msgstr "" + +#: ../../../CHANGELOG.rst:307 +msgid "*Release date: 22 January 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:309 +msgid "Add alert for users who try to do voting ballots on BP-configured tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:310 +msgid "Fixed issue where draws of the \"manual\" type would not generate correctly" +msgstr "" + +#: ../../../CHANGELOG.rst:311 +msgid "Fixed issue where a ballot's speaker names dropdown would contain both team's speakers when using formats with side selection" +msgstr "" + +#: ../../../CHANGELOG.rst:312 +msgid "Fixed issue where scoresheets would not show correctly under some configurations" +msgstr "" + +#: ../../../CHANGELOG.rst:313 +msgid "Improved display of really long motions when using the inbuilt motion-showing page" +msgstr "" + +#: ../../../CHANGELOG.rst:318 +msgid "2.0.3" +msgstr "" + +#: ../../../CHANGELOG.rst:319 +msgid "*Release date: 3 December 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:321 +msgid "Fixed issue where the 'prefix team name with institution name' checkbox would not be correctly saved when using the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:322 +msgid "Removed the scroll speed / text size buttons on mobile draw views that were making it difficult to view the table" +msgstr "" + +#: ../../../CHANGELOG.rst:323 +msgid "Improved the display of the motions tab page on mobile devices and fixed an issue where it appeared as if only half the vetoes were made" +msgstr "" + +#: ../../../CHANGELOG.rst:327 +msgid "2.0.2" +msgstr "" + +#: ../../../CHANGELOG.rst:328 +msgid "*Release date: 27 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Fixes and improvements to diversity overview" +msgstr "" + +#: ../../../CHANGELOG.rst:331 +msgid "Fixed average feedback rating from teams, it was previously (incorrectly) showing the average feedback rating from all adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:332 +msgid "Gender splits for average feedback rating now go by target adjudicator; this was previously source adjudicator" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Persons with unknown gender are now shown in counts (but not score/rating averages); a bug had previously caused them to be incorrectly counted as zero" +msgstr "" + +#: ../../../CHANGELOG.rst:334 +msgid "Improved query efficiency of the page" +msgstr "" + +#: ../../../CHANGELOG.rst:335 +msgid "Improved the BP motions tab for out-rounds by specifying advancing teams as \"top/bottom ½\" rather than as 1st/4th and removed the average-points-per-position graphs that were misleading" +msgstr "" + +#: ../../../CHANGELOG.rst:336 +msgid "Improved handling of long motions in the motion display interface" +msgstr "" + +#: ../../../CHANGELOG.rst:337 +msgid "Fixed issue where creating BP tournaments using the wizard would create an extra break round given the size of the break specified" +msgstr "" + +#: ../../../CHANGELOG.rst:338 +msgid "Fixed auto-allocation in consensus panels where there are fewer judges than debates in the round" +msgstr "" + +#: ../../../CHANGELOG.rst:339 +msgid "Fixed reply speaker validity check when speeches are marked as duplicate" +msgstr "" + +#: ../../../CHANGELOG.rst:340 +msgid "Prohibit assignment of teams to break categories of other tournaments in Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:344 +msgid "2.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:345 +msgid "*Release date: 21 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:347 +msgid "Fixed issue where results submission would crash if sides are unconfirmed" +msgstr "" + +#: ../../../CHANGELOG.rst:348 +msgid "Fixed issue where scoresheets would not display properly for adjudicators who lack institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:349 +msgid "Fixed issue where the round history indicators in the Edit Adjudicators page would sometimes omit the \"rounds ago\" indicator" +msgstr "" + +#: ../../../CHANGELOG.rst:353 +msgid "2.0.0 (Iberian Lynx)" +msgstr "" + +#: ../../../CHANGELOG.rst:354 +msgid "*Release date: 13 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "British Parliamentary support" +msgstr "" + +#: ../../../CHANGELOG.rst:357 +msgid "Full support for British Parliamentary format has been added and we're incredibly excited to see Tabbycat's unique features and design (finally) available as an option for those tabbing in the predominant global format" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "As part of the implementation of this format we've made significant improvements over existing tab software on how sides are allocated within BP draws. This means that teams are less likely to have 'imbalanced' proportions of side allocations (for example having many more debates as Opening Government than Closing Opposition)" +msgstr "" + +#: ../../../CHANGELOG.rst:359 +msgid "We've added a new \"Comparisons\" page added to the documentation to outline some of the key differences between Tabbycat and other software in the context of BP tabbing" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "Refreshed interface design" +msgstr "" + +#: ../../../CHANGELOG.rst:361 +msgid "The basic graphic elements of Tabbycat have had a their typography, icons, colours, forms, and more redesign for a more distinctive and clear look. We also now have an official logo!" +msgstr "" + +#: ../../../CHANGELOG.rst:362 +msgid "The \"Motions\" stage of the per-round workflow has now been rolled into the Display area to better accommodate BP formats and consolidate the Draw/Motion 'release' process" +msgstr "" + +#: ../../../CHANGELOG.rst:363 +msgid "Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks" +msgstr "" + +#: ../../../CHANGELOG.rst:364 +msgid "Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions" +msgstr "" + +#: ../../../CHANGELOG.rst:366 +msgid "Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "Improved handling of Break Rounds ballots and sides allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised" +msgstr "" + +#: ../../../CHANGELOG.rst:369 +msgid "Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores" +msgstr "" + +#: ../../../CHANGELOG.rst:370 +msgid "Now, like Break Categories, you can define arbitrary Categories such as 'Novice' or 'ESL' to create custom Speaker tabs for groups of Speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:371 +msgid "You can now release an Adjudicators Tab showing test scores, final scores, and/or per-round feedback averages" +msgstr "" + +#: ../../../CHANGELOG.rst:372 +msgid "Information Slides can now be added to the system; either for showing to an auditorium within Tabbycat or for displaying alongside the public list of motions and/or the motions tab" +msgstr "" + +#: ../../../CHANGELOG.rst:373 +msgid "Teams and adjudicators are no longer required to have institutions; something that should be very useful when setting up small IVs and the like" +msgstr "" + +#: ../../../CHANGELOG.rst:374 +msgid "Private URLs can now be incrementally generated. Records of sent mail are now also kept by Tabbycat, so that emails can be incrementally sent to participants as registration data changes" +msgstr "" + +#: ../../../CHANGELOG.rst:376 +msgid "After creating a new tournament you will now be prompted to apply a basic rules and public information preset" +msgstr "" + +#: ../../../CHANGELOG.rst:377 +msgid "Better handling of errors that arise when a debate team is missing or where two teams have been assigned the same side" +msgstr "" + +#: ../../../CHANGELOG.rst:378 +msgid "Fixed issue where the adjudicator feedback graphs would not sort along with their table" +msgstr "" + +#: ../../../CHANGELOG.rst:379 +msgid "The Feedback Overview page now makes it more clear how the score is determined, the current distribution of scores, and how scores affect the distribution of chairs, panellists, and trainees" +msgstr "" + +#: ../../../CHANGELOG.rst:380 +msgid "Speaker tabs now default to sorting by average, except for formats where we are certain that they must be sorted by total. The speaker tab page itself now prominently notes which setting is is currently using" +msgstr "" + +#: ../../../CHANGELOG.rst:381 +msgid "'Feedback paths' now default to a more permissive setting (rather than only allowing Chairs to submit feedback) and the Feedback Overview page will note that current configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:382 +msgid "Emails can be assigned to adjudicators and teams in the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:383 +msgid "More of the tables that allow you to set or edit data (such as the check-in tables for adjudicators, teams and venues) now automatically save changes" +msgstr "" + +#: ../../../CHANGELOG.rst:384 +msgid "When adding/editing users extraneous fields have been hidden and the \"Staff\" and \"Superuser\" roles have new sub-text clarifying what they mean for users with those permissions" +msgstr "" + +#: ../../../CHANGELOG.rst:385 +msgid "Team record pages now show cumulative team points, and if the speaker tab is fully released, speaker scores for that team in each debate" +msgstr "" + +#: ../../../CHANGELOG.rst:389 +msgid "1.4.6" +msgstr "" + +#: ../../../CHANGELOG.rst:390 +msgid "*Release date: 23 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:392 +msgid "Fixed issue where speaker standings with a large amount of non-ranking speakers would cause the page to load slowly or time-out." +msgstr "" + +#: ../../../CHANGELOG.rst:396 +msgid "1.4.5" +msgstr "" + +#: ../../../CHANGELOG.rst:397 +msgid "*Release date: 14 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:399 +msgid "Added warning message when adjudicator scores are outside the expected range" +msgstr "" + +#: ../../../CHANGELOG.rst:400 +msgid "Fixed handling of uniqueness failure in simple importer for teams" +msgstr "" + +#: ../../../CHANGELOG.rst:404 +msgid "1.4.4" +msgstr "" + +#: ../../../CHANGELOG.rst:405 +msgid "*Release date: 27 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:407 +msgid "Fixed Vue dependency issue preventing Heroku installs after a dependency release" +msgstr "" + +#: ../../../CHANGELOG.rst:408 +msgid "Fixed issue with formatting non-numeric standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:409 +msgid "Fixed behaviour of public tabs when all rounds are silent" +msgstr "" + +#: ../../../CHANGELOG.rst:413 +msgid "1.4.3" +msgstr "" + +#: ../../../CHANGELOG.rst:414 +msgid "*Release date: 9 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:416 +msgid "A number of improvements to error handling and logging" +msgstr "" + +#: ../../../CHANGELOG.rst:417 +msgid "Changed the \"previous round\" of an elimination round to point to the last one in the same break category" +msgstr "" + +#: ../../../CHANGELOG.rst:418 +msgid "Other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:422 +msgid "1.4.2" +msgstr "" + +#: ../../../CHANGELOG.rst:423 +msgid "*Release date: 23 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:425 +msgid "Minor bug fixes and error logging improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:429 +msgid "1.4.1" +msgstr "" + +#: ../../../CHANGELOG.rst:430 +msgid "*Release date: 2 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:432 +msgid "Fixed bug that prevented edited matchups from being saved" +msgstr "" + +#: ../../../CHANGELOG.rst:433 +msgid "Added flag to prevent retired sites from using the database for sessions" +msgstr "" + +#: ../../../CHANGELOG.rst:437 +msgid "1.4.0 (Havana Brown)" +msgstr "" + +#: ../../../CHANGELOG.rst:438 +msgid "*Release date: 26 July 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:" +msgstr "" + +#: ../../../CHANGELOG.rst:441 +msgid "Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping" +msgstr "" + +#: ../../../CHANGELOG.rst:442 +msgid "When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress" +msgstr "" + +#: ../../../CHANGELOG.rst:443 +msgid "Added conflicts and recent histories to the slideovers shown for teams/adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels" +msgstr "" + +#: ../../../CHANGELOG.rst:445 +msgid "Each interface's table is now sortable by a debate's importance, bracket, liveness, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:446 +msgid "Added a new \"Tournament Logistics\" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document" +msgstr "" + +#: ../../../CHANGELOG.rst:447 +msgid "Added (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)" +msgstr "" + +#: ../../../CHANGELOG.rst:448 +msgid "Added an ESL/EFL tab release option and status field" +msgstr "" + +#: ../../../CHANGELOG.rst:449 +msgid "Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this" +msgstr "" + +#: ../../../CHANGELOG.rst:450 +msgid "The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates" +msgstr "" + +#: ../../../CHANGELOG.rst:451 +msgid "Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished" +msgstr "" + +#: ../../../CHANGELOG.rst:452 +msgid "Added 'Average Speaks by Round' to the standings overview page" +msgstr "" + +#: ../../../CHANGELOG.rst:453 +msgid "Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important" +msgstr "" + +#: ../../../CHANGELOG.rst:454 +msgid "Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes" +msgstr "" + +#: ../../../CHANGELOG.rst:455 +msgid "Fixed issue where VenueCategories could not be edited if they did not have Venues set" +msgstr "" + +#: ../../../CHANGELOG.rst:456 +msgid "Various other small fixes and improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:460 +msgid "1.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:461 +msgid "*Release date: 26 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:463 +msgid "Fixed bug that allowed duplicate emoji to be occasionally generated" +msgstr "" + +#: ../../../CHANGELOG.rst:467 +msgid "1.3.0 (Genetta)" +msgstr "" + +#: ../../../CHANGELOG.rst:468 +msgid "*Release date: 9 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:470 +msgid "Added the ability to mark speeches as duplicates when entering ballots so that they will not show in speaker tabs, intended for use with 'iron-man' speeches and swing speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:471 +msgid "Reworked venue constraints and venue display options by streamlining \"venue groups\" and \"venue constraint categories\" into a single \"venue category\" type, with options for how they are used and displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:472 +msgid "Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:473 +msgid "Reworked the simple data importer (formerly the visual importer) to improve its robustness" +msgstr "" + +#: ../../../CHANGELOG.rst:474 +msgid "Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)" +msgstr "" + +#: ../../../CHANGELOG.rst:475 +msgid "Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release" +msgstr "" + +#: ../../../CHANGELOG.rst:476 +msgid "Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)" +msgstr "" + +#: ../../../CHANGELOG.rst:477 +msgid "Added the ability to redact individual person's identifying details from speaker tabs" +msgstr "" + +#: ../../../CHANGELOG.rst:478 +msgid "Added the ability for user passwords to be easily reset" +msgstr "" + +#: ../../../CHANGELOG.rst:479 +msgid "Added a minimal set of default feedback questions to newly created Tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:480 +msgid "When a tournament's current round is set, redirect to a page where it can be set, rather than crashing" +msgstr "" + +#: ../../../CHANGELOG.rst:481 +msgid "A number of other minor bug fixes and enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:485 +msgid "1.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:486 +msgid "*Release date: 17 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:488 +msgid "Improved the display of the admin ballot entry form on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:489 ../../../CHANGELOG.rst:497 +#: ../../../CHANGELOG.rst:505 +msgid "A number of other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:493 +msgid "1.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:494 +msgid "*Release date: 4 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:496 +msgid "Protected debate-team objects from cascaded deletion, and added warning messages with guidance when users would otherwise do this" +msgstr "" + +#: ../../../CHANGELOG.rst:501 +msgid "1.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:502 +msgid "*Release date: 25 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:504 +msgid "Printable feedback forms will now display the default rating scale, any configured introduction text, and better prompt you to add additional questions" +msgstr "" + +#: ../../../CHANGELOG.rst:509 +msgid "1.2.0 (Foldex)" +msgstr "" + +#: ../../../CHANGELOG.rst:510 +msgid "*Release date: 15 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:512 +msgid "Changed the core workflow by splitting display- and motion- related activities into separate pages to simplify each stage of running a round" +msgstr "" + +#: ../../../CHANGELOG.rst:513 +msgid "Added support for Docker-based installations to make local/offline installations much more simple" +msgstr "" + +#: ../../../CHANGELOG.rst:514 +msgid "Added a \"Tabbykitten\" version of Tabbycat that can be deployed to Heroku without a needing a credit/debit card" +msgstr "" + +#: ../../../CHANGELOG.rst:515 +msgid "Added button to load a demo tournament on the 'New Tournament' page so it is easier to test-run Tabbycat" +msgstr "" + +#: ../../../CHANGELOG.rst:516 +msgid "Changed venue groups to be separate to venue constraint categories" +msgstr "" + +#: ../../../CHANGELOG.rst:517 +msgid "Modified the licence to clarify that donations are required for some tournaments and added a more explicit donations link and explanation page" +msgstr "" + +#: ../../../CHANGELOG.rst:518 +msgid "Added information about autosave status to the adjudicator allocations page" +msgstr "" + +#: ../../../CHANGELOG.rst:519 +msgid "Added configurable side names so that tournaments can use labels like \"Proposition\"/\"Opposition\" instead of \"Affirmative\"/\"Negative\"" +msgstr "" + +#: ../../../CHANGELOG.rst:520 +msgid "Started work on basic infrastructure for translations" +msgstr "" + +#: ../../../CHANGELOG.rst:524 +msgid "1.1.7" +msgstr "" + +#: ../../../CHANGELOG.rst:525 +msgid "*Release date: 31 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:527 +msgid "Yet more minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:528 +msgid "The auto-allocation UI will now detail your minimum rating setting better" +msgstr "" + +#: ../../../CHANGELOG.rst:529 +msgid "Added guidance on database backups to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:533 +msgid "1.1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:534 +msgid "*Release date: 19 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:536 +msgid "A number of minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:537 +msgid "Added basic infrastructure for creating tabbycat translations" +msgstr "" + +#: ../../../CHANGELOG.rst:541 +msgid "1.1.5" +msgstr "" + +#: ../../../CHANGELOG.rst:542 +msgid "*Release date: 12 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:544 +msgid "A number of minor bug fixes and improvements to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:548 +msgid "1.1.4" +msgstr "" + +#: ../../../CHANGELOG.rst:549 +msgid "*Release date: 25 November 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:551 +msgid "Redesigned the footer area to better describe Tabbycat and to promote donations and related projects" +msgstr "" + +#: ../../../CHANGELOG.rst:552 +msgid "Slight tweaks to the site homepage and main menus to better accommodate the login/log out links" +msgstr "" + +#: ../../../CHANGELOG.rst:553 +msgid "A few minor bug fixes and improvements to error reporting" +msgstr "" + +#: ../../../CHANGELOG.rst:557 +msgid "1.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:558 +msgid "*Release date: 15 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:560 +msgid "Fixed bug affecting some migrations from earlier versions" +msgstr "" + +#: ../../../CHANGELOG.rst:561 +msgid "Made latest results show question mark rather than crash if a team is missing" +msgstr "" + +#: ../../../CHANGELOG.rst:562 +msgid "Fixed bug affecting the ability to save motions" +msgstr "" + +#: ../../../CHANGELOG.rst:563 +msgid "Fixed bug preventing draw flags from being displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:567 +msgid "1.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:568 +msgid "*Release date: 14 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:570 +msgid "Allow panels with even number of adjudicators (with warnings), by giving chair the casting vote" +msgstr "" + +#: ../../../CHANGELOG.rst:571 +msgid "Removed defunct person check-in, which hasn't been used since 2010" +msgstr "" + +#: ../../../CHANGELOG.rst:572 +msgid "Collapsed availability database models into a single model with Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:573 +msgid "Collapsed optional fields in action log entries into a single generic field using Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:574 +msgid "Added better warnings when attempting to create an elimination round draw with fewer than two teams" +msgstr "" + +#: ../../../CHANGELOG.rst:575 +msgid "Added warnings in Edit Database view when editing debate teams" +msgstr "" + +#: ../../../CHANGELOG.rst:576 +msgid "Renamed \"AIDA pre-2015\" break rule to \"AIDA 1996\"" +msgstr "" + +#: ../../../CHANGELOG.rst:580 +msgid "1.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:581 +msgid "*Release date: 8 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:583 +msgid "Fixed a bug where the team standings and team tab would crash when some emoji were not set" +msgstr "" + +#: ../../../CHANGELOG.rst:587 +msgid "1.1.0 (Egyptian Mau)" +msgstr "" + +#: ../../../CHANGELOG.rst:588 +msgid "*Release date: 3 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:590 +msgid "Added support for the United Asian Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:591 +msgid "Added support for the World Schools Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:592 +msgid "Made Windows 8+ Emoji more colourful" +msgstr "" + +#: ../../../CHANGELOG.rst:593 +msgid "Fixed an incompatability between Vue and IE 10-11 which caused tables to not render" +msgstr "" + +#: ../../../CHANGELOG.rst:594 +msgid "Minor bug fixes and dependency updates" +msgstr "" + +#: ../../../CHANGELOG.rst:598 +msgid "1.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:599 +msgid "*Release date: 19 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:601 +msgid "Fixed a minor bug with the visual importer affecting similarly named institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:602 +msgid "Fixed error message when user tries to auto-allocate adjudicators on unconfirmed or released draw" +msgstr "" + +#: ../../../CHANGELOG.rst:603 +msgid "Minor docs edits" +msgstr "" + +#: ../../../CHANGELOG.rst:607 +msgid "1.0.0 (Devon Rex)" +msgstr "" + +#: ../../../CHANGELOG.rst:608 +msgid "*Release date: 16 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Redesigned and redeveloped adjudicator allocation page" +msgstr "" + +#: ../../../CHANGELOG.rst:611 +msgid "Redesigned interface, featuring clearer displays of conflict and diversity information" +msgstr "" + +#: ../../../CHANGELOG.rst:612 +msgid "Changes to importances and panels are now automatically saved" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Added debate \"liveness\" to help identify critical rooms—many thanks to Thevesh Theva" +msgstr "" + +#: ../../../CHANGELOG.rst:614 +msgid "Panel score calculations performed live to show strength of voting majorities" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "New features" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "Added record pages for teams and adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:617 +msgid "Added a diversity tab to display demographic information about participants and scoring" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Significant general improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Shifted most table rendering to Vue.js to improve performance and design" +msgstr "" + +#: ../../../CHANGELOG.rst:620 +msgid "Drastically reduced number of SQL queries in large tables, *e.g.* draw, results, tab" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Break round management" +msgstr "" + +#: ../../../CHANGELOG.rst:622 +msgid "Completed support for break round draws" +msgstr "" + +#: ../../../CHANGELOG.rst:623 +msgid "Simplified procedure for adding remarks to teams and updating break" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Reworked break generation code to be class-based, to improve future extensibility" +msgstr "" + +#: ../../../CHANGELOG.rst:625 +msgid "Added support for break qualification rules: AIDA Australs, AIDA Easters, WADL" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:627 +msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Changed \"panellist feedback enabled\" option to \"feedback paths\", a choice of three options" +msgstr "" + +#: ../../../CHANGELOG.rst:630 +msgid "Dropped \"/t/\" from tournament URLs and moved \"/admin/\" to \"/database/\", with 301 redirects" +msgstr "" + +#: ../../../CHANGELOG.rst:631 +msgid "Added basic code linting to the continuous integration tests" +msgstr "" + +#: ../../../CHANGELOG.rst:632 +msgid "Many other small bug fixes, refactors, optimisations, and documentation updates" +msgstr "" + +#: ../../../CHANGELOG.rst:636 +msgid "0.9.0 (Chartreux)" +msgstr "" + +#: ../../../CHANGELOG.rst:637 +msgid "*Release date: 13 June 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:639 +msgid "Added a beta implementation of the break rounds workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:640 +msgid "Added venue constraints, to allow participants or divisions to preferentially be given venues from predefined groups" +msgstr "" + +#: ../../../CHANGELOG.rst:641 +msgid "Added a button to regenerate draws" +msgstr "" + +#: ../../../CHANGELOG.rst:642 +msgid "Refactored speaker standings implementation to match team standings implementation" +msgstr "" + +#: ../../../CHANGELOG.rst:643 +msgid "New standings metrics, draw methods, and interface settings for running small tournaments and division-based tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:644 +msgid "Improved support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:645 +msgid "Improved user-facing error messages in some scenarios" +msgstr "" + +#: ../../../CHANGELOG.rst:646 +msgid "Most frontend dependencies now handled by Bower" +msgstr "" + +#: ../../../CHANGELOG.rst:647 +msgid "Static file compilation now handled by Gulp" +msgstr "" + +#: ../../../CHANGELOG.rst:648 ../../../CHANGELOG.rst:660 +msgid "Various bug fixes, optimisations, and documentation edits" +msgstr "" + +#: ../../../CHANGELOG.rst:652 +msgid "0.8.3" +msgstr "" + +#: ../../../CHANGELOG.rst:653 +msgid "*Release date: 4 April 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:655 +msgid "Restored and reworking printing functionality for scoresheets/feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:656 +msgid "Restored Edit Venues and Edit Matchups on the draw pages" +msgstr "" + +#: ../../../CHANGELOG.rst:657 +msgid "Reworked tournament data importers to use csv.DictReader, so that column order in files doesn't matter" +msgstr "" + +#: ../../../CHANGELOG.rst:658 +msgid "Improved dashboard and feedback graphs" +msgstr "" + +#: ../../../CHANGELOG.rst:659 +msgid "Add separate pro speakers tab" +msgstr "" + +#: ../../../CHANGELOG.rst:664 +msgid "0.8.2" +msgstr "" + +#: ../../../CHANGELOG.rst:665 +msgid "*Release date: 20 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:667 +msgid "Fixed issue where scores from individual ballots would be deleted when any other panel in the round was edited" +msgstr "" + +#: ../../../CHANGELOG.rst:668 +msgid "Fixed issue where page crashes for URLs with \"tab\" in it but that aren't recognized tab pages" +msgstr "" + +#: ../../../CHANGELOG.rst:672 +msgid "0.8.1" +msgstr "" + +#: ../../../CHANGELOG.rst:673 +msgid "*Release date: 15 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:675 +msgid "Fixed a bug where editing a Team in the admin section could cause an error" +msgstr "" + +#: ../../../CHANGELOG.rst:676 +msgid "Added instructions on how to account for speakers speaking twice to docs" +msgstr "" + +#: ../../../CHANGELOG.rst:677 +msgid "Venues Importer wont show VenueGroup import info unless that option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:681 +msgid "0.8.0 (Bengal)" +msgstr "" + +#: ../../../CHANGELOG.rst:682 +msgid "*Release date: 29 February 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:684 +msgid "Upgraded to Python 3.4, dropped support for Python 2" +msgstr "" + +#: ../../../CHANGELOG.rst:685 +msgid "Restructured directories and, as a consequence, changed database schema" +msgstr "" + +#: ../../../CHANGELOG.rst:686 +msgid "Added Django migrations to the release (they were previously generated by the user)" +msgstr "" + +#: ../../../CHANGELOG.rst:687 +msgid "Migrated documentation to `Read The Docs `_" +msgstr "" + +#: ../../../CHANGELOG.rst:688 +msgid "New user interface design and workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:689 +msgid "Overhauled tournament preferences to use `django-dynamic-preferences `_" +msgstr "" + +#: ../../../CHANGELOG.rst:690 +msgid "Added new visual data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:691 +msgid "Improved flexibility of team standings rules" +msgstr "" + +#: ../../../CHANGELOG.rst:692 +msgid "Moved data utility scripts to Django management commands" +msgstr "" + +#: ../../../CHANGELOG.rst:693 +msgid "Changed emoji to Unicode characters" +msgstr "" + +#: ../../../CHANGELOG.rst:694 +msgid "Various other fixes and refinements" +msgstr "" + +#: ../../../CHANGELOG.rst:698 +msgid "0.7.0 (Abyssinian)" +msgstr "" + +#: ../../../CHANGELOG.rst:699 +msgid "*Release date: 31 July 2015*" +msgstr "" + +#: ../../../CHANGELOG.rst:701 +msgid "Support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:702 +msgid "Improved and extensible tournament data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:703 +msgid "Display gender, region, and break category in adjudicator allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:704 +msgid "New views for online adjudicator feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:705 +msgid "Customisable adjudicator feedback forms" +msgstr "" + +#: ../../../CHANGELOG.rst:706 +msgid "Randomised URLs for public submission" +msgstr "" + +#: ../../../CHANGELOG.rst:707 +msgid "Customisable break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:708 +msgid "Computerised break generation (break round draws not supported)" +msgstr "" + +#: ../../../CHANGELOG.rst:709 +msgid "Lots of fixes, interface touch-ups and performance enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:710 +msgid "Now requires Django 1.8 (and other package upgrades)" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/about/contributing.po b/docs/locale/kk/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..0f8292081d3 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/contributing.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: kk_KZ\n" + +#: ../../../CONTRIBUTING.rst:3 +msgid "Contributing" +msgstr "" + +#: ../../../CONTRIBUTING.rst:5 +msgid "Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation." +msgstr "" + +#: ../../../CONTRIBUTING.rst:7 +msgid "Feel free to `join our Facebook group `_ if you have any questions about how to get started." +msgstr "" + +#: ../../../CONTRIBUTING.rst:10 +msgid "Feedback and ideas" +msgstr "" + +#: ../../../CONTRIBUTING.rst:12 +msgid "These can be added as issues in the `GitHub repository `_; posts in our `Facebook group `_; or as an :ref:`email to the developers `." +msgstr "" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Bug reports" +msgstr "" + +#: ../../../CONTRIBUTING.rst:17 +msgid "Please report bugs by opening a new issue in our `GitHub repository `_. It is most helpful if you can include:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:19 +msgid "How Tabbycat was installed (on Heroku, locally on macOS, `etc.`)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Any details about your tournament and setup that might be helpful in troubleshooting" +msgstr "" + +#: ../../../CONTRIBUTING.rst:21 +msgid "Detailed steps for how to reproduce the bug" +msgstr "" + +#: ../../../CONTRIBUTING.rst:24 +msgid "Getting started with development" +msgstr "" + +#: ../../../CONTRIBUTING.rst:26 +msgid "To easily test your changes to Tabbycat you probably want a working :ref:`local install ` (without using Docker)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:27 +msgid "Please submit pull requests for features and bug fixes against `develop` (but not `master`)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:28 +msgid "We broadly use the `git-flow workflow `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:29 +msgid "We use Django's testing tools — adding unit tests to new features is greatly appreciated" +msgstr "" + +#: ../../../CONTRIBUTING.rst:31 +msgid "A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed." +msgstr "" + +#: ../../../CONTRIBUTING.rst:33 +msgid "A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:37 +msgid "Our ``package.json`` provides a convenience command that runs a standard set of development tools simultaneously, such as the Django server and the automatic recompilation with live injecting of javascript and CSS. Once you have set ``USE_WEBPACK_SERVER=True`` in your ``settings_local.py`` you can then run this with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:42 +msgid "Generating test data" +msgstr "" + +#: ../../../CONTRIBUTING.rst:44 +msgid "There are management commands to help developers quickly generate data for use in testing, including results and feedback. A list of all commands can be found from ``dj help``, but the most useful in this context are:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:46 +msgid "``dj importtournament ( minimal8team | australs24team | bp88team )``, which imports participant data for the 8-team (``minimal8team``), 24-team Australs (``australs24team``) and 88-team BP (``bp88team``) demonstration tournaments respectively." +msgstr "" + +#: ../../../CONTRIBUTING.rst:47 +msgid "``dj simulaterounds ROUND [ROUND ROUND ...]``, which simulates all of the rounds specified, generating a draw, an adjudicator allocation and a complete set of random results (but not feedback)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:48 +msgid "``dj generatefeedback ROUND [ROUND ROUND ...]``, which randomly generates feedback for all existing debates in the specified rounds." +msgstr "" + +#: ../../../CONTRIBUTING.rst:49 +msgid "``dj generateresults ROUND [ROUND ROUND ...]``, which randomly generates results for all existing debates in the specified rounds. (You don't need to run this if you ran ``simulaterounds``, because that already does it.)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:51 +msgid "Rounds can be specified by sequence number (``seq``) or abbreviation. You can find more information about each of them by adding ``--help`` after the command name." +msgstr "" + +#: ../../../CONTRIBUTING.rst:54 +msgid "Database schema changes" +msgstr "" + +#: ../../../CONTRIBUTING.rst:56 +msgid "When adding new features, it may be necessary to modify the database schema to support these new additions. After the changes are made, the migration files made by ``python manage.py makemigrations`` must also be committed. The migration files should also contain methods fill the new fields based on existing data if possible." +msgstr "" + +#: ../../../CONTRIBUTING.rst:58 +msgid "Fixture files (found under ``data/fixtures/``) may also need to be updated, which can be done by running the ``migrate_fixtures.py`` script under a unmigrated database, then committing the result. ::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:64 +msgid "Style guide" +msgstr "" + +#: ../../../CONTRIBUTING.rst:66 +msgid "For the front end interface design there is a style guide available at \"/style/\" once a tournament has been setup." +msgstr "" + +#: ../../../CONTRIBUTING.rst:68 +msgid "For python code, we use `flake8 `_ to check for a non-strict series of style rules. Warnings will trigger a Travis CI build to fail. The entire codebase can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:72 +msgid "For stylesheets, we use `stylelint `_. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:76 +msgid "For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:81 +msgid "Versioning convention" +msgstr "" + +#: ../../../CONTRIBUTING.rst:83 +msgid "Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:85 +msgid "the database can't be migrated forwards using ``python manage.py migrate --no-input``, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:86 +msgid "there is a major change to how the tournament workflow goes, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:87 +msgid "we make some other change that is, in our opinion, significant enough to warrant a milestone." +msgstr "" + +#: ../../../CONTRIBUTING.rst:89 +msgid "We write `data migrations `_ to allow existing systems to be upgraded easily. However, we don't always support backward database migrations. Our expectation is that long-lived installations keep up with our latest version." +msgstr "" + +#: ../../../CONTRIBUTING.rst:91 +msgid "One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:93 +msgid "Starting from version 0.7.0, we use cat breeds as the code names for major versions." +msgstr "" + +#: ../../../CONTRIBUTING.rst:96 +msgid "Documentation" +msgstr "" + +#: ../../../CONTRIBUTING.rst:98 +msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." +msgstr "" + +#: ../../../CONTRIBUTING.rst:100 +msgid "To preview the documentation locally, install the development dependencies and then start the server::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:104 +msgid "You should then be able to preview the docs at `127.0.0.1:7999 `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:107 +msgid "Project structure" +msgstr "" + +#: ../../../CONTRIBUTING.rst:109 +msgid "``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline." +msgstr "" + +#: ../../../CONTRIBUTING.rst:110 +msgid "``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively" +msgstr "" + +#: ../../../CONTRIBUTING.rst:111 +msgid "``docs`` contains our document source files and images (although some are linked from the root directory)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``tabbycat`` is the main directory containing the Django project" +msgstr "" + +#: ../../../CONTRIBUTING.rst:113 +msgid "``locale`` contains translation strings for shared templates (others are in respective app directories)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:114 +msgid "``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins." +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``utils`` contains shared utilities" +msgstr "" + +#: ../../../CONTRIBUTING.rst:116 +msgid "All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates." +msgstr "" + +#: ../../../CONTRIBUTING.rst:117 +msgid "In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:120 +msgid "Internationalization/Localization" +msgstr "" + +#: ../../../CONTRIBUTING.rst:122 +msgid "The `gettext `_ framework is used to enable the translation of strings in Python files and Django templates. Backend in this context signifies these types of files." +msgstr "" + +#: ../../../CONTRIBUTING.rst:124 +msgid "The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py)::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:128 +msgid "To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``." +msgstr "" + +#: ../../../CONTRIBUTING.rst:130 +msgid "These can then be compiled using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:134 +msgid "As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:136 +msgid "Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:141 +msgid "These are then also committed to git to save users needing to run `compilejsi18n` during setup. The resulting files are then bundled as part of the npm build task. Updating these translations in development (live-reload) requires the use of the ``cp-i18n`` npm task." +msgstr "" + +#: ../../../CONTRIBUTING.rst:144 +msgid "Release checklist" +msgstr "" + +#: ../../../CONTRIBUTING.rst:146 +msgid "Check that all migrations have been generated and committed into Git" +msgstr "" + +#: ../../../CONTRIBUTING.rst:147 +msgid "Merge translations from the Crowdin pull request and compile messages" +msgstr "" + +#: ../../../CONTRIBUTING.rst:148 +msgid "Bump version number in ``docs/conf.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:149 +msgid "Bump version number and (if applicable) codename in ``tabbycat/settings/core.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:150 +msgid "Update the main ``CHANGELOG.rst`` file (including release date)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Check the major current deployment options, including:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:152 +msgid "The ``deploy_heroku.py`` script" +msgstr "" + +#: ../../../CONTRIBUTING.rst:153 +msgid "The Tabbykitten version" +msgstr "" + +#: ../../../CONTRIBUTING.rst:154 +msgid "Docker (macOS, Windows 10*) and Docker Toolbox (Windows 10 Home) methods" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Using Bash and Powershell on Windows" +msgstr "" + +#: ../../../CONTRIBUTING.rst:156 +msgid "Using Terminal on macOS (at least test out a fresh install of the npm/pip dependencies)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:157 +msgid "Check that the last Travis CI build passed and run the full local test suite (this will include the Selenium tests that are not on Travis)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:158 +msgid "Shift remaining issues from the Github Milestone" +msgstr "" + +#: ../../../CONTRIBUTING.rst:159 +msgid "Create and finish the release branch as per git-flow" +msgstr "" + +#: ../../../CONTRIBUTING.rst:160 +msgid "Ensure the tag is correct (``vX.Y.Z``) and published to GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:161 +msgid "Back-merge ``master`` to the ``kitten`` branch" +msgstr "" + +#: ../../../CONTRIBUTING.rst:162 +msgid "Back-merge ``develop`` to the in-progress feature branches" +msgstr "" + +#: ../../../CONTRIBUTING.rst:163 +msgid "Issue a formal release with change notes on GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:164 +msgid "Post change notes on the Facebook page/group" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/about/licence.po b/docs/locale/kk/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..aa197978877 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/licence.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: kk_KZ\n" + +#: ../../../LICENSE.rst:3 +msgid "Licence Information" +msgstr "" + +#: ../../../LICENSE.rst:5 +msgid "We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of A$1 (Australian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.)" +msgstr "" + +#: ../../../LICENSE.rst:8 +msgid "Use at for-profit or fundraising tournaments" +msgstr "" + +#: ../../../LICENSE.rst:10 +msgid "If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a donation of A$1 (Australian dollar) per team to the Tabbycat maintenance team, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit." +msgstr "" + +#: ../../../LICENSE.rst:12 +msgid "While we suggest that non-profit, non-fundraising tournaments budget for a donation of A$1 per team, it is not required in order for such tournaments to use Tabbycat." +msgstr "" + +#: ../../../LICENSE.rst:15 +msgid "Modifications to and redistributions of Tabbycat" +msgstr "" + +#: ../../../LICENSE.rst:17 +msgid "We grant you permission to modify and/or redistribute Tabbycat, provided that" +msgstr "" + +#: ../../../LICENSE.rst:19 +msgid "you do not receive any payment for this modification and/or redistribution," +msgstr "" + +#: ../../../LICENSE.rst:20 +msgid "if you modify Tabbycat, you add prominent notices stating that you modified it," +msgstr "" + +#: ../../../LICENSE.rst:21 +msgid "all references and functionality relating to donations are kept intact, and" +msgstr "" + +#: ../../../LICENSE.rst:22 +msgid "this licence page and all attributions of authorship are included as-is." +msgstr "" + +#: ../../../LICENSE.rst:24 +msgid "Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission." +msgstr "" + +#: ../../../LICENSE.rst:26 +msgid "If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required." +msgstr "" + +#: ../../../LICENSE.rst:29 +msgid "Disclaimer of warranty and liability" +msgstr "" + +#: ../../../LICENSE.rst:31 +msgid "We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided \"as is\", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.**" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/about/support.po b/docs/locale/kk/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..78c41cccd58 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/support.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: kk_KZ\n" + +#: ../../about/support.rst:3 +msgid "Support" +msgstr "" + +#: ../../about/support.rst:5 +msgid "There are a number of ways to report bugs, ask for help, or submit feedback." +msgstr "" + +#: ../../about/support.rst:8 +msgid "Facebook" +msgstr "" + +#: ../../about/support.rst:10 +msgid "`Our Facebook group `_ is a good place to ask for help. It's also a good place to keep up with new releases and participate in more general discussions of features and ideas." +msgstr "" + +#: ../../about/support.rst:13 +msgid "GitHub" +msgstr "" + +#: ../../about/support.rst:15 +msgid "Adding an issue to our `GitHub repository `_ is a great way to let us know about bugs or writeup suggestions for how to improve Tabbycat. Pull requests are also encouraged!" +msgstr "" + +#: ../../about/support.rst:17 +msgid "When submitting bugs or reporting errors please let us know your site address (if installed online) or operating system (if local) along with a complete description of the problem along with any error messages." +msgstr "" + +#: ../../about/support.rst:20 +msgid "Email" +msgstr "" + +#: ../../about/support.rst:22 +msgid "Feel free to :ref:`contact the maintainers directly ` if you are not able to access Facebook or GitHub." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/about/tournament-history.po b/docs/locale/kk/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..9b8bfae40b7 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/about/tournament-history.po @@ -0,0 +1,248 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: kk_KZ\n" + +#: ../../about/tournament-history.rst:3 +msgid "Tournament History" +msgstr "" + +#: ../../about/tournament-history.rst:5 +msgid "A partial list of major national and international tournaments (that we know of) which have used Tabbycat." +msgstr "" + +#: ../../about/tournament-history.rst:8 +msgid "2017" +msgstr "" + +#: ../../about/tournament-history.rst:10 +msgid "`APU Philosophy CHallenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:11 +msgid "`ANU Spring IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:12 +msgid "`Australian British Parliamentary Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:13 +msgid "`Australasian Wom*ns Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:14 +msgid "Asia World Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:15 +msgid "`Asia British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:16 +msgid "`Borneo British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:17 +msgid "`Canadian British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:18 +msgid "`Cambridge Asian Schools BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:19 +msgid "Cambodia United Asian Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:20 +msgid "`China British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:21 +msgid "`Japan British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:22 +msgid "`Kings College London IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:23 +msgid "`Kuala Lumpur Open Challenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:24 +msgid "`KPU Pro Ams `_" +msgstr "" + +#: ../../about/tournament-history.rst:25 +msgid "`Malaysian National Intervarsity Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:26 +msgid "`Melbourne Mini `_" +msgstr "" + +#: ../../about/tournament-history.rst:27 +msgid "`New Zealand Easters 2017 `_" +msgstr "" + +#: ../../about/tournament-history.rst:28 +msgid "`New Zealand British Parliamentary Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:29 +msgid "`North East Asia Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:30 +msgid "`Swords Mini-Gong `_" +msgstr "" + +#: ../../about/tournament-history.rst:31 +msgid "`Shanghai Asian Schools British Parliamentary Debate Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:32 +msgid "`UCD Law Society IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:33 +msgid "`UCD Vice President's Cup `_" +msgstr "" + +#: ../../about/tournament-history.rst:34 +msgid "`UQ Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:35 +msgid "`UT MARA Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:36 +msgid "`Victoria Cup IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:37 +msgid "`Western Sydney BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:38 +msgid "`Wollongong Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:39 +msgid "`Yale IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:42 +msgid "2016" +msgstr "" + +#: ../../about/tournament-history.rst:44 +msgid "`Sydney Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:45 +msgid "`Joynt Scroll 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:46 +msgid "`Malaysia Debate Open 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:47 +msgid "`New Zealand Easters 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:48 +msgid "`Perth Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:49 +msgid "`Thailand United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:50 ../../about/tournament-history.rst:61 +msgid "The National Law School Debate" +msgstr "" + +#: ../../about/tournament-history.rst:51 +msgid "The Khazak National Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:54 +msgid "2015" +msgstr "" + +#: ../../about/tournament-history.rst:56 +msgid "`Bali United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:57 +msgid "`Daejeon Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:58 +msgid "`Joynt Scroll `_" +msgstr "" + +#: ../../about/tournament-history.rst:59 +msgid "`Malaysia Debate Open 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:60 +msgid "`New Zealand Easters 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:62 +msgid "`UNSW/UTS Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:65 +msgid "2014" +msgstr "" + +#: ../../about/tournament-history.rst:67 +msgid "`Joynt Scroll 2014 `_" +msgstr "" + +#: ../../about/tournament-history.rst:68 +msgid "NTU United Asian Debating Championships" +msgstr "" + +#: ../../about/tournament-history.rst:69 +msgid "`Otago Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:72 +msgid "2012" +msgstr "" + +#: ../../about/tournament-history.rst:74 +msgid "Wellington Australs" +msgstr "" + +#: ../../about/tournament-history.rst:77 +msgid "2010" +msgstr "" + +#: ../../about/tournament-history.rst:79 +msgid "Auckland Australs" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/kk/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..c053fe40364 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/adjudicator-allocation.po @@ -0,0 +1,160 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: kk_KZ\n" + +#: ../../features/adjudicator-allocation.rst:5 +msgid "Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:7 +msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:10 +msgid "Assigning Debate Priority" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:12 +msgid "For tournaments with more than a few debates you generally want to begin the allocation process by applying a priority value to your debates. A debate's priority value is used by the automatic adjudicator allocator (or the preformed panel indicator) to match the strongest panels to the debates that need them most." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:16 +msgid "The prioritise button in the top-left allows you to assign a priority value automatically based on a debate's bracket or its 'liveness'. Remember that in early rounds there are usually not enough results for the liveness of each debate to be distinct and that Tabbycat measures liveness based on the sum of all live break categories — a debate can have more liveness points than it has teams if there are teams that are live in multiple categories." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:18 +msgid "The automatic prioritiser never uses the 'highest' priority value so that you can easily use this to highlight the debates that need the strongest panels without needing to redistribute the priority of other debates." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:20 +msgid "Regardless of whether you automatically assign priority, there are sliders to the left of each team that can be used to manually specify priority. These are usually used to override the automatic priority of a debate if that matchup needs and especially strong/weak/mediocre panel for reasons that are not reflected in its bracket/liveness." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:24 +msgid "If each debate's priority is the same, the automatic adjudicator will fall-back on using the debate's bracket as a substitute for priority. Thus, you can skip the prioritisation process (or only prioritise the most/least important debates) if you want a relatively even spread of panellists (e.g. during Round 1)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:27 +msgid "Automatic Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:29 +msgid "Once you are happy with your priorities you can begin assigning adjudicators. This also has an (optional) automatic process that will create panels for you. In creating these panels automatically, the allocator will:" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:31 +msgid "Avoid creating 'hard' conflicts (i.e. personal or institutional clashes) between adjudicators and teams while also trying to avoid 'soft' conflicts (i.e. avoiding an adjudicator seeing the same team again)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:32 +msgid "Form panels whose relative average voting score matches the relative priority you assigned to each debate." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:33 +msgid "Allocate trainees (unless disabled or none are under the threshold) to panels (allocated first to the highest-strength panels)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:34 +msgid "Violate the above intents in cases where there are inescapable constraints — e.g. if there are too many soft or hard conflicts to avoid creating panels that do not trigger them." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:36 +msgid "Remember that Tabbycat will only automatically allocate adjudicators that have been marked as available for this round." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:38 +msgid "To begin this process, click the *Allocate* button in the top-left. If you have :ref:`formed preformed panels ` for this round, the modal will first ask whether you want to assign adjudicators using those panels; otherwise the modal will contain a number of options that can be used to control the allocation. In general, the *minimum feedback score* value is the most important setting to consider as it determines the threshold needed for adjudicators to not be allocated as trainees." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:42 +msgid "Once you click *Auto-Allocate* the modal should disappear and your panels should appear. At large tournaments, and in the later rounds, it is not unheard of for this process to take a minute or longer." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:44 +msgid "You can re-run the automatic allocation process on top of an existing allocation. Thus it is worth tweaking your priorities or allocation settings if the allocation does not seem optimal to you. Also note that the allocation process is not deterministic — if you rerun it the panels will be different." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:46 +msgid "Once your adjudicators have been allocated you can drag and drop them on to different panels. You can also drag and drop them to the 'unused area' (the gray bar at the bottom of the page) if you wish to store them temporarily or remove them from the draw. Dropping an adjudicator into the chair position will 'swap' that adjudicator into the previous position of the new chair." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:49 +msgid "Saving, Live Updates, and Sharing" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:51 +msgid "Changes to your panels save automatically and you can exit the allocation page whenever you wish." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:53 +msgid "In addition, the allocation pages maintain a 'live' connection to the server that shows updates made by other users who are viewing/using the same page. That is to say, if two people on two computers are both viewing the allocation page they should see each other's changes in real-time. This allows you to 'distribute' the task of allocation across individual people (rather than sharing a screen/projector) if desired." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:55 +msgid "It is possible to have users 'undo' or 'overwrite' each others changes despite this live system, e.g. if both users drag and adjudicator somewhere at the same time." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:57 +msgid "If you are dividing the task of allocation across multiple people, the *Sharding* system can help by allowing individuals to limit their view of the draw. The use case here is usually to divide the draw up into mutually-exclusive subsets so that individuals (or groups) of the adjudication core can focus on creating panels across the draw in parallel." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:61 +msgid "To activate sharding, click the small icon to the right of the \"Allocate\" button. This then presents a number of options for how the draw is divide up into distinct sets. If you want to ensure that each person opens a completely distinct set of the draw, you will need to coordinate the options that each user selects here. They will need to set the **same** options for *Shard Mix*, *Shard Split* and *Shard Sort* but select a **different** *Open* option (i.e. opt-in to viewing a different shard from the other users). The ability to exit a sharded view is available in the same dialogue." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:64 +msgid "In-Place Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:66 +msgid "Adjudicators and teams may have borders of varying colors. These borders indicate that there is a clash — soft or hard — within a debate and highlights the teams/adjudicators that have triggered this. There is a key for these colors available at the top of the page — e.g. orange means *institutional conflict* while blue means *this adjudicator has seen this adjudicator/team before*." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:70 +msgid "In general, you want to be on the lookout for red borders ('hard conflicts') and for teams with orange borders (institutional conflicts). Blue borders on teams/adjudicators and orange borders between adjudicators are usually of lesser concern." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:72 +msgid "There are two 'special' types of highlight — a gray background in the chair position (no chair) or in the panellist position (the panel is not an odd-size). Adjudicators may also have a black background if they have not been marked as available." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:75 +msgid "Hover Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:77 +msgid "When you hover over an adjudicator or team, they will take on a purple background and other adjudicators or teams may suddenly have different colored backgrounds. These indicate the conflicts that this team/adjudicator has with those other teams/adjudicators. By showing this information you can avoid swapping that adjudicator into a new debate which they have a conflict with." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:81 +msgid "When you hover over an adjudicator or team the top-most area of the screen will show additional information about them, such as all of their previous institutions, their conflicts, their break category, their team members, their region, and who they saw in the last few rounds." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:84 +msgid "Toggle Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:86 +msgid "In the top-right of the interface are a number of toggles that changes the color of adjudicators and teams to more easily check specific types of information. For example, selecting the gender toggle will color-code teams and adjudicators with the gender that has been recorded in Tabbycat. Note that when a toggle is active, the color key will update to show the meaning of these new colors." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:90 +msgid "When finalising an adjudication you may want to ensure you have turned off any toggle highlights — often they make it more difficult to see the border colors that indicate conflicts." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/kk/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..4aaf9b37bd5 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/adjudicator-feedback.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: kk_KZ\n" + +#: ../../features/adjudicator-feedback.rst:5 +msgid "Adjudicator Feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:7 +msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:9 +msgid "Currently, there are two methods of setting questions:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:11 +msgid "Through the :ref:`edit database area `. Go to **Setup** > **Edit Database**, then click **Change** next to *Adjudicator feedback questions*. You can add questions here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:14 +msgid "Using the :ref:`importtournament command `." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:16 +msgid "Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field descriptions in the edit database area helpful.) Some more details are here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:20 +msgid "Answer types and options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Type" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Relevant options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Appearance" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +msgid "**checkbox**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +#: ../../features/adjudicator-feedback.rst:27 +#: ../../features/adjudicator-feedback.rst:35 +#: ../../features/adjudicator-feedback.rst:37 +msgid "\\-" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:27 +msgid "**yes/no (dropdown)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +msgid "**integer (textbox)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +#: ../../features/adjudicator-feedback.rst:31 +#: ../../features/adjudicator-feedback.rst:33 +msgid "min_value, max_value" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:31 +msgid "**integer scale**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:33 +msgid "**float**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:35 +msgid "**text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:37 +msgid "**long text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +msgid "**select one**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +#: ../../features/adjudicator-feedback.rst:41 +msgid "choices" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:41 +msgid "**select multiple**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:44 +msgid "Options:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:46 +msgid "**min_value** and **max_value** specify the minimum and maximum allowable values in the field. Mandatory for \"integer scale\" types and optional for \"integer (textbox)\" and \"float\" types." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:47 +msgid "**choices** is used with \"select one\" and \"select multiple\" types, and is a ``//``-delimited list of possible answers, *e.g.* ``biased//clear//concise//rambly//attentive//inattentive``" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:48 +msgid "**required** specifies whether users must fill out the field before clicking \"submit\". This requirement is only enforced on public submission forms. It is not enforced on forms entered by tab room assistants." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:50 +msgid "The exception to this is the \"checkbox\" type. For checkboxes, \"required\" means that the user cannot submit the form unless the box is checked. Think of it like an \"I agree to the terms\" checkbox. This isn't a deliberate design decision—it's just a quirk of how checkboxes work on web forms." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:53 +msgid "Want another answer type?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:55 +msgid "We don't really intend to add any further complexity to the built-in feedback system. If the above answer types don't cover your needs, we suggest using a third-party feedback system. You might be able to adapt `SurveyMonkey `_, `Google Forms `_ or `Qualtrics `_ to your needs." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:60 +msgid "We may be persuaded to make an exception if the new question type you have in mind is easy to add: that is, if it is straightforward to implement using standard web page elements and fits into the existing questionnaire framework (see :ref:`feedback-questionnaires` below). If you think there is such a case, please contact us using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:69 +msgid "Different questionnaires" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:71 +msgid "Tabbycat allows you to specify two questionnaires: one for feedback submitted by teams, and one for feedback submitted by adjudicators. You must specify in each question whether to include the question in each questionnaire." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:75 +msgid "**from_team**, if checked, includes the question in feedback submitted by teams" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:77 +msgid "**from_adj**, if checked, includes the question in feedback submitted by adjudicators" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:81 +msgid "Who gives feedback on whom?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:82 +msgid "Tabbycat allows for three choices for which adjudicators give feedback on which other adjudicators:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:85 +msgid "Chairs give feedback on panellists and trainees" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:86 +msgid "Chairs give feedback on panellists and trainees, and panellists give feedback on chairs" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:88 +msgid "All adjudicators, including trainees, give feedback on all other adjudicators they have adjudicated with" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:91 +msgid "You can set this in the **feedback paths** option under *Setup* > *Configuration* > *Feedback*. Your choice affects each of the following:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:94 +msgid "The options presented to adjudicators in the online feedback form" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:95 +msgid "The printable feedback forms" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:96 +msgid "The submissions expected when calculating feedback progress and highlighting missing feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:99 +msgid "The feedback paths option only affects feedback from adjudicators. Teams are always assumed to give feedback on the orallist, and they are encouraged to do so through hints on the online and printable feedback forms, but there is nothing technically preventing them from submitting feedback from any adjudicator on their panel." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:105 +msgid "Advanced users" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:108 +msgid "If you need a different setting, you need to edit the source code. Specifically, you should edit the function ``expected_feedback_targets`` in tabbycat/adjfeedback/utils.py." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:112 +msgid "Unless we can be convinced that they are very common, we don't intend to add any further choices to the feedback paths option. If your needs are specific enough that you need to differ from the available settings, they are probably also beyond what is sensible for a built-in feedback system, and we recommend using a third-party feedback system instead." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:119 +msgid "How is an adjudicator's score determined?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:121 +msgid "For the purpose of the automated allocation, an adjudicator's overall score is a function of their base score, the current round's feedback weight, and their average feedback score. This number is calculated according to the following formula:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:126 +msgid "\\textrm{score} = (1-w)\\times\\textrm{base score} + w\\times\\textrm{average feedback score}" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:130 +msgid "where :math:`w` is the feedback weight for the round. Note that because the feedback score is averaged across all pieces of feedback (rather than on a per-round total) rounds in which a person receives feedback from many sources (say from all teams and all panellists) could impact their average score much more than a round in which they only receive feedback from one or two sources." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:132 +msgid "Under this formula, each round's feedback weight can be used to determine the relative influence of the base score vs feedback in determining the overall score. As an example, say that an adjudicator received 5.0 as their base score, but their average feedback rating has thus far been 2.0. If the current rounds' feedback weight is set to 0.75, then their overall score would be 2.75. If the current round's feedback weight is set to 0.5 their score would be 3.5. If the weight was 0, their score will always be their base score; if the weight was 1 it will always be their average feedback value." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:141 +msgid "To change the weight of a round you will need to go to the Edit Database area, open the round in question, and change its *Feedback weight* value. It is common to set rounds with a low feedback weight value early on in the tournament (when feedback is scant) and to increase the feedback weight as the tournament progresses." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:143 +msgid "A participant's base score can, in conjunction with feedback weight, also be used as a manual override for an adjudicator's overall ranking. At several tournaments, adjudication cores have set every round's feedback weight to 0, and manually adjusted an adjudicator's base score in response to feedback they have received and reviewed. In this way complete control over every adjudicator's overall score can be exerted." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:145 +msgid "If feedback from trainee adjudicators is enabled, any scores that they submit in their feedback are not counted towards that adjudicator's overall score." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:148 +msgid "Ignoring/Discarding feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:150 +msgid "There are some cases where feedback should be discarded or ignored, but there are some differences between the two. Discarded feedback is mostly due to having another piece of feedback that supersedes the discarded ones. Ignored feedback is different as it still counts the affected feedback as submitted, just inconsequential, ignored in the adjudicator's score calculation." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:152 +msgid "Feedback can be marked as discarded in the database view, under the ``confirmed`` field. It can also be marked as ignored in the same view. Controls to reverse these designations are also available there. To mark feedback as ignored, an option is available in the administrator's and assistant's feedback adding form, as well in the form of a toggle link at the bottom of each card." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/backups.po b/docs/locale/kk/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..071e8b3fb2b --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/backups.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: kk_KZ\n" + +#: ../../features/backups.rst:5 +msgid "Backups" +msgstr "" + +#: ../../features/backups.rst:7 +msgid "Tabbycat doesn't provide an in-built backup system; instead you should create copies of your database directly. Heroku provides a very good backup utility for all sites hosted on Heroku which makes this easy, and for Heroku-based Tabbycat sites, we strongly recommend it." +msgstr "" + +#: ../../features/backups.rst:12 +msgid "You should **always** back up the database before deleting *any* data while in the Edit Database area, because deleting data cannot be undone. It is also a good idea to back up the database before doing anything in the Edit Database area, unless you're very familiar and confident with editing the Tabbycat database directly." +msgstr "" + +#: ../../features/backups.rst:18 +msgid "You may, as a matter of standard practice at large tournaments, wish to back up the database twice per round: Once just after you've generated the draw and allocated adjudicators, and once just after you've finished entering results." +msgstr "" + +#: ../../features/backups.rst:22 +msgid "If you're using an online version of Tabbycat, it's a good idea to download the backups. While it's extremely rare to lose internet access or have an outage in a critical web service (*i.e.*, Heroku), having a local copy of your backups allows you to :ref:`restore your tab to a local installation ` if this ever happens." +msgstr "" + +#: ../../features/backups.rst:29 +msgid "Installations on Heroku" +msgstr "" + +#: ../../features/backups.rst:31 +msgid "Heroku provides a utility to easily back up and restore the entire site database." +msgstr "" + +#: ../../features/backups.rst:35 +msgid "If you don't have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:36 +msgid "You can capture backups from the Heroku Dashboard:" +msgstr "" + +#: ../../features/backups.rst:38 +msgid "Go to the `Heroku Dashboard `_ and click on your app." +msgstr "" + +#: ../../features/backups.rst:40 +msgid "Under *Installed add-ons*, go to **Heroku Postgres**." +msgstr "" + +#: ../../features/backups.rst:41 +msgid "Scroll down, and click on the **Capture Backup** button." +msgstr "" + +#: ../../features/backups.rst:42 +msgid "Once the capture has finished, a **Download** button will be available." +msgstr "" + +#: ../../features/backups.rst:44 +msgid "You can't restore a backup without the Heroku Command Line Interface (CLI), so if you end up needing your backup, you'll need to install the `Heroku CLI `_, and then follow the instructions below." +msgstr "" + +#: ../../features/backups.rst:50 +msgid "If you have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:52 +msgid "The best guide to backing up databases is the `Heroku Dev Center's PGBackups guide `_." +msgstr "" + +#: ../../features/backups.rst:55 +msgid "To capture a backup::" +msgstr "" + +#: ../../features/backups.rst:59 +msgid "To download the most recently captured backup::" +msgstr "" + +#: ../../features/backups.rst:63 +msgid "To restore a backup::" +msgstr "" + +#: ../../features/backups.rst:67 +msgid "If you have multiple Tabbycat sites, you'll need to specify which one by adding ``--app mytournamentname`` to the end of the command." +msgstr "" + +#: ../../features/backups.rst:71 +msgid "Local installations" +msgstr "" + +#: ../../features/backups.rst:73 +msgid "There are lots of ways to back up local PostgreSQL databases, but we'd suggest using the `pg_dump `_ and `pg_restore `_ commands." +msgstr "" + +#: ../../features/backups.rst:83 +msgid "Restoring a Heroku backup to a local installation" +msgstr "" + +#: ../../features/backups.rst:85 +msgid "As detailed in the `Heroku Dev Center `_, you can restore a downloaded Heroku backup to a local installation. This might be useful if, say, your internet connection breaks irrecoverably in the middle of a tournament and you need to run offline. Of course, for this to work, you need to have downloaded your backup before your internet connection broke---a good reason to download a copy of your backups as soon as you make them." +msgstr "" + +#: ../../features/backups.rst:92 +msgid "Assuming your download is called ``latest.dump`` (this is the default name), your PostgreSQL username is ``tabbycat``, and you wish to call your local database ``fromheroku`` (if not, replace arguments as appropriate)::" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/breaks.po b/docs/locale/kk/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..9412526d2ca --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/breaks.po @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: kk_KZ\n" + +#: ../../features/breaks.rst:5 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../features/breaks.rst:7 +msgid "In Tabbycat, elimination rounds (sometimes called *outrounds* or the *final series*) are called \"break rounds\", and the qualification of teams to compete in the elimination phase of a tournament is called the \"break\"." +msgstr "" + +#: ../../features/breaks.rst:12 +msgid "About break categories" +msgstr "" + +#: ../../features/breaks.rst:14 +msgid "Tabbycat supports multiple and arbitrarily-named break categories. Most tournaments will have just one category, typically called \"Open\", leading to the grand final. Some tournaments also have restricted-eligibility break categories, for example, for novice teams or teams for whom English is a second language." +msgstr "" + +#: ../../features/breaks.rst:19 +msgid "Having multiple break categories is intended for tournaments where multiple *parallel* elimination phases derive from the *same* preliminary rounds (inrounds). It's not for parallel but distinct competitions---for those, you should create distinct tournaments." +msgstr "" + +#: ../../features/breaks.rst:27 +msgid "Break qualification rules" +msgstr "" + +#: ../../features/breaks.rst:29 +msgid "Tabbycat supports several break qualification rules, and each break category must be configured to use one of them. Most tournaments will use \"Standard\", which is the default." +msgstr "" + +#: ../../features/breaks.rst:38 +msgid "Rule name (string to use in ``importtournament`` CSV files)" +msgstr "" + +#: ../../features/breaks.rst:39 +msgid "Descrption" +msgstr "" + +#: ../../features/breaks.rst:41 +msgid "Standard (``standard``)" +msgstr "" + +#: ../../features/breaks.rst:42 +msgid "The top *n* teams break. This is the default, and most tournaments use this rule." +msgstr "" + +#: ../../features/breaks.rst:45 +msgid "AIDA 1996 (``aida-1996``)" +msgstr "" + +#: ../../features/breaks.rst:46 +msgid "The top *n* teams that are also in the top three teams from their institution break." +msgstr "" + +#: ../../features/breaks.rst:49 +msgid "AIDA 2016 (Australs) (``aida-2016-australs``)" +msgstr "" + +#: ../../features/breaks.rst:50 +msgid "The top *n* teams that fulfil either of these criteria break:" +msgstr "" + +#: ../../features/breaks.rst:53 +msgid "They are in the top *n* teams overall, and in the top three teams from their institution." +msgstr "" + +#: ../../features/breaks.rst:55 +msgid "They have at least as many wins as the *n*\\ th-ranked team, and they are the top team from their institution." +msgstr "" + +#: ../../features/breaks.rst:58 +msgid "If fewer than *n* teams fulfil either criterion, then the best teams not fulfilling the criteria are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:62 +msgid "AIDA 2016 (Easters) (``aida-2016-easters``)" +msgstr "" + +#: ../../features/breaks.rst:63 +msgid "As for AIDA 2016 (Australs), except that if fewer than *n* teams fulfil either criterion, then only the best teams who are in the top three teams from their institution are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:68 +msgid "The break generators are somewhat more complex than described in the above table: among other things, they also handle cases where there is a tie for the last place in the break, and for those break categories marked \"general\", they will show where ineligible teams would have broken, had they been eligible." +msgstr "" + +#: ../../features/breaks.rst:75 +msgid "Setting up break categories and rounds" +msgstr "" + +#: ../../features/breaks.rst:77 +msgid "For each break category in your tournament, you need to do two things:" +msgstr "" + +#: ../../features/breaks.rst:79 +msgid "Create (and name) a break category" +msgstr "" + +#: ../../features/breaks.rst:80 +msgid "Create break rounds for the category" +msgstr "" + +#: ../../features/breaks.rst:81 +msgid "Set the eligibility of teams to compete in the category" +msgstr "" + +#: ../../features/breaks.rst:83 +msgid "If you only have one break category (open) and you create your tournament using the \"Create New Tournament\" page, simply enter the number of teams in the break (*e.g.*, 8 if you're breaking to quarterfinals). Tabbycat will create the break category and break rounds for you. For any further break categories, you'll need to go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Break Categories**. Fill out the forms for the number of new break categories and save. Rounds will be created automatically. You'll still need to set the eligibility of teams though, as in (3) below." +msgstr "" + +#: ../../features/breaks.rst:92 +msgid "If you create your tournament using the `importtournament` command or in **Edit Database**, you'll need to do all three steps above yourself. You may also want to edit the break rounds (2) to change their names." +msgstr "" + +#: ../../features/breaks.rst:97 +msgid "1. Creating break categories" +msgstr "" + +#: ../../features/breaks.rst:99 +msgid "If using the `importtournament` command, there is an example file, *break_categories.csv*, that you can copy and adjust. If using **Edit Database**, add categories under **Break Qualification > Break categories**." +msgstr "" + +#: ../../features/breaks.rst:103 +msgid "Most of the fields are self-explanatory or described on the Edit Database form, except for one: \"rule\", which sets the break qualification rule. Permissible values are described in :ref:`breakqual-rules` above. If using `importtournament`, be sure to use the correct string (in brackets in the table). The rule defaults to \"Standard\" (``standard``)." +msgstr "" + +#: ../../features/breaks.rst:109 +msgid "The \"institution cap\" field was removed in Tabbycat 1.0. All Australs break qualification rules are now hard-coded to a cap of three teams per institution." +msgstr "" + +#: ../../features/breaks.rst:114 +msgid "2. Creating break rounds" +msgstr "" + +#: ../../features/breaks.rst:116 +msgid "You should create a round for every break round you intend to hold, including it in *rounds.csv* if using `importtournament`, or adding them under **Tournaments > Rounds** if using **Edit Database**. Be careful to set the following fields correctly:" +msgstr "" + +#: ../../features/breaks.rst:121 +msgid "*Break category* must be set to the relevant break category." +msgstr "" + +#: ../../features/breaks.rst:122 +msgid "*Stage* and *draw type* must both be set to \"Elimination\"." +msgstr "" + +#: ../../features/breaks.rst:125 +msgid "3. Setting break eligibility" +msgstr "" + +#: ../../features/breaks.rst:127 +msgid "Once a break category has been created it will not have any teams eligible for it, even if it was marked as \"Is general\". To edit the eligibility of teams for any break round go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Team Eligiblity**." +msgstr "" + +#: ../../features/breaks.rst:132 +msgid "Here you can select \"all\" or \"none\" to toggle all team eligiblities or edit them using the tick boxes. Once you **save** it should return you to the main break page which will display the number of teams marked eligible." +msgstr "" + +#: ../../features/breaks.rst:136 +msgid "Adjudicators can be marked as \"breaking\" on the **Feedback** page; clicking **Adjudicators** on the breaks page will take you straight there." +msgstr "" + +#: ../../features/breaks.rst:140 +msgid "Generating the break" +msgstr "" + +#: ../../features/breaks.rst:142 +msgid "Unlike team or speaker standings, each category's break (and the break ranks of teams) are not determined automatically and updated continuously. Instead each can be generated (and regenerated) as desired." +msgstr "" + +#: ../../features/breaks.rst:146 +msgid "To do so go to the **Breaks** item in the left-hand menu and then click the white button that corresponds to the break category you'd like to determine the rankings for. When prompted, select **Generate the break for all categories** to display the list of breaking teams." +msgstr "" + +#: ../../features/breaks.rst:151 +msgid "From this page you can update the breaking teams list for this break category (or all categories) as well as view and edit 'remarks' that account for cases in which a team may not break (such as being capped or losing a coin toss)." +msgstr "" + +#: ../../features/breaks.rst:155 +msgid "Please double-check the generated break before announcing or releasing it. Although the break generation code is designed to handle edge cases, we don't test the code for such cases." +msgstr "" + +#: ../../features/breaks.rst:160 +msgid "Creating draws for break rounds" +msgstr "" + +#: ../../features/breaks.rst:162 +msgid "Creating a draw for a break round proceeds as normal, except that the team availability process is skipped. Instead, when you visit the availability page for that round it will have automatically determined which teams should be debating based upon the determined break for that category. Once a draw has been generated it will then use the relevant break ranks to create the matchups (ie 1st-breaking vs 16th-breaking, 2nd vs 15th, *etc.*). Subsequent break rounds will then also automatically determine matchups based on the previous round's results and room ranks." +msgstr "" + +#: ../../features/breaks.rst:171 +msgid "If the \"break size\" of a break category is not a power of 2, it will treat the first break round as a partial-elimination draw and only create a draw for the teams not skipping the partial-elimination round. Subsequent break rounds will then process as described above." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/check-ins.po b/docs/locale/kk/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..5c2bcf491d2 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/check-ins.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: kk_KZ\n" + +#: ../../features/check-ins.rst:5 +msgid "Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:7 +msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." +msgstr "" + +#: ../../features/check-ins.rst:9 +msgid "Check-ins serve a similar purpose to the :ref:`availability ` system. However availabilities are tied to a particular round rather than to a particular time — they are generally used to record instances where you know ahead of time whether a person should or should not be included in a draw. In contrast, check-ins are useful for when you *don't* know ahead of time whether a person will be able to be put into the draw and so want to be able to confirm their presence with a high degree of confidence. That said the two systems interact — the standard availability pages allow you to easily set all adjudicators or teams who have checked-in as available for a given round." +msgstr "" + +#: ../../features/check-ins.rst:12 +msgid "Check-In Identifiers" +msgstr "" + +#: ../../features/check-ins.rst:14 +msgid "Check-ins are associated with a 'identifier' — a number that is unique to each speaker and adjudicator. To generate these numbers go to the *Identifiers* section under the Check-Ins menu. From here you generate identifiers for Speakers, Adjudicators, and Venues as needed. Note also that Identifiers can be manually added or edited in the *Edit Database* area if necessary." +msgstr "" + +#: ../../features/check-ins.rst:18 +msgid "Once this number has been generated it can be transformed into a barcode so that it can be easily included on tournament badges or otherwise printed and disbursed. On the same *Identifiers* page you can use the *View barcodes* option to open up a page that lists all the barcodes for the speakers, adjudicators, or venues." +msgstr "" + +#: ../../features/check-ins.rst:22 +msgid "The identifiers for ballots are automatically generated when printing ballots." +msgstr "" + +#: ../../features/check-ins.rst:25 +msgid "Recording Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:27 +msgid "On the *Scanning* section of Check-ins you can record a particular check-in. This can be done in a few different ways:" +msgstr "" + +#: ../../features/check-ins.rst:29 +msgid "You can type in the Identifier number into the box. Once five numbers have been identified it will automatically issue the check-in and clear the input field for the next number." +msgstr "" + +#: ../../features/check-ins.rst:31 +msgid "If you have purchased barcode scanners and configured them as USB keyboards they should then be compatible with this page: upon page load the cursor should be positioned in the input field, and any scanned barcodes should populate it with the specified number, issue the check-in, and then clear the box for the next scan." +msgstr "" + +#: ../../features/check-ins.rst:33 +msgid "Barcode scanners are probably cheaper than you think. A perfectly serviceable model should be around $20 USD or less although a cursory Google search might at first turn up models that are many times that amount. If you are a curious tab director, or are involved in a tournament with a little spare money, having just one or two around for critical tasks can be highly valuable." +msgstr "" + +#: ../../features/check-ins.rst:35 +msgid "If your device has a (web)cam you can use the Scan Using Camera button. Any barcodes put in front of the camera's video stream will be scanned into the form. A sound will play when a barcode has been identified — so be aware that turning sound on or using headphones can help identify when a scan has been made." +msgstr "" + +#: ../../features/check-ins.rst:39 +msgid "Camera scanning works on most modern browsers although it will only work with Safari 11 or higher (iOS 11+ and macOS 10.13+). Camera scanning may also not work when using a local-installation of Tabbycat in all browsers, *except* Firefox where it seems to. Depending on the quality of your camera barcodes that are less than 4cm wide may not be recognised — ideally barcodes should be at least 5cm if using this method as your main way of checking-in things." +msgstr "" + +#: ../../features/check-ins.rst:41 +msgid "The Check-in status page (described below) allows assistants and administrators to manually check-in particular people or entire institutions without needing to know their identifiers." +msgstr "" + +#: ../../features/check-ins.rst:44 +msgid "The Check-In 'Window'" +msgstr "" + +#: ../../features/check-ins.rst:46 +msgid "Because Check-In events are not explicitly linked to rounds there is essentially a 'window' or time period in which a check-in is still considered valid. The time of this 'window' in hours can be set in *Setup* > *Configuration* > *Data Entry*." +msgstr "" + +#: ../../features/check-ins.rst:48 +msgid "At tournaments the run check-ins during the start of each day the check-in 'window' (i.e. the time before check-ins expire) you can leave this window setting at the default time (12 hours) which should give enough time to distinguish between the first check-ins of that day as compared to the last check-ins of the previous day. At tournaments where you want to run a check-in process at the start of every round you may want to set the time to around 2 hours or something much shorter." +msgstr "" + +#: ../../features/check-ins.rst:51 +msgid "Viewing Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:53 +msgid "On the *People Statuses* section of Check-ins you can view who has or has not been checked-in. This page will live-update with the latest check-ins so you should be able to leave it open to monitor income attendances." +msgstr "" + +#: ../../features/check-ins.rst:57 +msgid "The blue \"tick\" boxes allow you to manually check-in people and/or entire institutions (for *People*) or venues and/or venue groups (for *Venues*) , without the need to scan their identifiers. This style of check-in is designed for use an auditorium roll-call type situation where you might be running through a list of people to the room or identifying absences on a per-institution basis." +msgstr "" + +#: ../../features/check-ins.rst:59 +msgid "A public version of this check-in status page can be enabled under *Setup* > *Configuration* > *Public Features* which can be useful for allowing people to self-police check-ins and/or validate their check-in worked." +msgstr "" + +#: ../../features/check-ins.rst:62 +msgid "Check-Ins for Ballots" +msgstr "" + +#: ../../features/check-ins.rst:64 +msgid "Ballots can be checked-in to quickly validate which ballots are physically present in the tab room. This can help more quickly identify ballots that are missing. Which ballots have or have not been checked-in will show up on the Results page. Ballots can be scanned using the standard 'Scan Identifiers' page." +msgstr "" + +#: ../../features/check-ins.rst:66 +msgid "Barcodes are automatically assigned and included to ballots when they are printed. Barcodes have no check-in window — any relevant check-in event counts regardless of how long ago it was." +msgstr "" + +#: ../../features/check-ins.rst:69 +msgid "Check-Ins for Venues" +msgstr "" + +#: ../../features/check-ins.rst:71 +msgid "Venues can be checked-in, but what a 'venue check-in' means is a bit more flexible. It might be used to validate which rooms are debate-ready at the start of a day (i.e. unlocked; has a desk) or it could be used during the rounds to record which rooms have returned their ballots." +msgstr "" + +#: ../../features/check-ins.rst:73 +msgid "Venues have a separate check-in window setting to that of people." +msgstr "" + +#: ../../features/check-ins.rst:75 +msgid "Venues have their own Status page (like people) and can be checked-in there manually. Like speakers and adjudicators their barcodes can also be printed off." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/data-entry.po b/docs/locale/kk/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..30899143d7a --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/data-entry.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: kk_KZ\n" + +#: ../../features/data-entry.rst:5 +msgid "Entering Ballots and Feedback" +msgstr "" + +#: ../../features/data-entry.rst:8 +msgid "Ballot check-in" +msgstr "" + +#: ../../features/data-entry.rst:10 +msgid "For tournaments that require it, there is a \"ballot check-in\" page that can be used to record the arrival of ballots to the tab room. When there's a missing ballot, it can help establish whether the ballot never made it to the tab room, or whether it's probably floating around in the room forgotten. Also, it can help enforce early checks that panels return the correct number of ballots to the room." +msgstr "" + +#: ../../features/data-entry.rst:12 +msgid "To get to the ballot check-in, click the relevant round in the menu of the admin area, and then click \"Results\" and then \"Ballot Check-In\". This requires superuser privileges." +msgstr "" + +#: ../../features/data-entry.rst:14 +msgid "There's no adverse effect from not using the ballot check-in. Data enterers will still be able to enter and confirmed ballots, even if not checked in." +msgstr "" + +#: ../../features/data-entry.rst:18 +msgid "Since the ballot check-in tends to require a dedicated computer or two, it can be worth creating a separate superuser account for ballot check-in, so that it doesn't appear on the action logs as being by a particular person." +msgstr "" + +#: ../../features/data-entry.rst:19 +msgid "Don't forget to provision a computer or two for this if you're planning to use it." +msgstr "" + +#: ../../features/data-entry.rst:20 +msgid "Ballot check-ins can be a bottleneck, so you might decide they're not worth using. Alternatively, you might have multiple computers for this purpose, or you might dedicate a tab room helper to driving the process (since this is probably faster than runners doing the typing in turn)." +msgstr "" + +#: ../../features/data-entry.rst:23 +msgid "Ballot entry" +msgstr "" + +#: ../../features/data-entry.rst:27 +msgid "Most tab rooms run some sort of check system to ensure data is entered accurately. In Tabbycat, this is built into the system, which also helps speed it up." +msgstr "" + +#: ../../features/data-entry.rst:29 +msgid "As a general principle, Tabbycat requires all ballots to be looked at by two people. The first person enters the data from the ballot, and the second person checks it. The second person isn't allowed to modify the data—they either confirm it or reject it, and if they reject it, then the whole process starts again. This is by design: to be confirmed, the *same* data must have been seen by at least two people." +msgstr "" + +#: ../../features/data-entry.rst:31 +msgid "The administrator area does **not** work like this. It's designed to be flexible, so allows you to edit, confirm or unconfirm any ballot at any time. For this reason, you should use the **assistant** area to enter ballots, even if you have a superuser account." +msgstr "" + +#: ../../features/data-entry.rst:35 +msgid "Don't forget to check the totals against the ballot—they're a useful integrity check too." +msgstr "" + +#: ../../features/data-entry.rst:36 +msgid "Don't forget to check the winner against the ballot! If the adjudicator gets it wrong, it's worth asking to clarify." +msgstr "" + +#: ../../features/data-entry.rst:37 +msgid "It can be helpful to think about the room layout to maximize efficiency." +msgstr "" + +#: ../../features/data-entry.rst:38 +msgid "Some tab rooms like to assign some to data entry and some to verification. This isn't really necessary, since Tabbycat doesn't let the same person enter and verify the same ballot. (This is one of many reasons why every person should have their own account.)" +msgstr "" + +#: ../../features/data-entry.rst:39 +msgid "Emails can be configured to be sent to adjudicators as a receipt of their ballot once confirmed." +msgstr "" + +#: ../../features/data-entry.rst:42 +msgid "Duplicate/Swing Speeches" +msgstr "" + +#: ../../features/data-entry.rst:46 +msgid "When entering the ballots there is a toggle label *'Iron' speeches*. When set to \"yes\" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel)." +msgstr "" + +#: ../../features/data-entry.rst:48 +msgid "Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate." +msgstr "" + +#: ../../features/data-entry.rst:50 +msgid "There is also an option under **Standings** in the **Configuration** section that specifies the number of debates a speaker can miss before you will not show on the tab. By default there is no limit, but if need be this can be set to hide swing speakers from the final speaker tab." +msgstr "" + +#: ../../features/data-entry.rst:53 +msgid "Feedback entry" +msgstr "" + +#: ../../features/data-entry.rst:57 +msgid "Feedback doesn't have the same verification process as ballots. Feedback that is entered by the tab room is assumed to be confirmed. If feedback is entered multiple times, all copies are retained but only the last one \"counts\" (is considered confirmed)." +msgstr "" + +#: ../../features/data-entry.rst:60 +msgid "Online entry" +msgstr "" + +#: ../../features/data-entry.rst:62 +msgid "There are two methods of allowing ballots and feedback to be submitted online. Both are set in the **Data Entry** page of each tournament's **Configuration** section and can be set independently; both in whether each can be submitted online at all and in which method of online submission are available." +msgstr "" + +#: ../../features/data-entry.rst:68 +msgid "Private URLs" +msgstr "" + +#: ../../features/data-entry.rst:70 +msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." +msgstr "" + +#: ../../features/data-entry.rst:72 +msgid "Private URLs should provide more than adequate security for almost all tournaments' purposes, but they aren't foolproof. Anyone with access to the URL for a participant can submit feedback or ballots on their behalf, so it's important that participants not share their URLs. This also means participants need to be careful when submitting from devices they do not own, because the URL will be logged in that device's browser history." +msgstr "" + +#: ../../features/data-entry.rst:74 +msgid "These links must be generated within Tabbycat after the preference is enabled. To do so go to the **Feedback** section and then the **Private URLs** area. Once there you will be prompted to generate those URLs for all participants, which — once generated — will be presented in separate tables (one for teams; one for adjudicators)." +msgstr "" + +#: ../../features/data-entry.rst:78 +msgid "These URLs can then be distributed to each person in a number of ways. There are pages within Tabbycat for printing them out (one URL per page labelled by recipient) or emailing them out (providing participants have been assigned email addresses). In the past tournaments have also used data from this table to send out SMSs by bulk, or distributed them to institutional representatives to disburse." +msgstr "" + +#: ../../features/data-entry.rst:82 +msgid "You can assign email address to participants using the :ref:`importtournament command ` when importing your registration data, or by going to the *Edit Data* area and looking up each Speaker/Adjudicator." +msgstr "" + +#: ../../features/data-entry.rst:83 +msgid "If, after generating the private URLs, you add additional Teams or Adjudicators you can go to the *Edit Database* area , look up each Speaker/Adjudicator, and type in a bunch of random characters as their *Url key* to assign them a private URL." +msgstr "" + +#: ../../features/data-entry.rst:84 +msgid "You can delete the current set of URLs by running this command in a shell on your server (replacing TOURNAMENT_SLUG with the appropriate value): ``python manage.py privateurls delete --tournament TOURNAMENT_SLUG``" +msgstr "" + +#: ../../features/data-entry.rst:89 +msgid "Public URLs" +msgstr "" + +#: ../../features/data-entry.rst:91 +msgid "The second method of data entry is using 'normal URLs'. This essentially means that any users visiting the public version of the site is able to submit a ballot or feedback (as specified by their respective settings). They do so by self-selecting which Team or Adjudicator they are then entering in a form as normal." +msgstr "" + +#: ../../features/data-entry.rst:93 +msgid "This is, rather obviously, not a particularly secure method of data entry — nothing is stopping anyone on the site from entering data as someone else. The data can be checked, verified, and edited as normal by admins however. As such, this method is only recommended for small tournaments where you can trust those present to enter accurate information (or where accuracy is not crucial)." +msgstr "" + +#: ../../features/data-entry.rst:95 +msgid "There is an additional setting to set a 'tournament password' that needs to be submitted to enable the form. It is imagined, that if enabled, this password would only be distributed to tournament participants. However this only helps (at best) prevent non-participants from entering information; the fundamental problem of not verifying who is submitting what information is still present." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/data-importers.po b/docs/locale/kk/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..d039916e7d0 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/data-importers.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: kk_KZ\n" + +#: ../../features/data-importers.rst:5 +msgid "Tournament Data Importers" +msgstr "" + +#: ../../features/data-importers.rst:7 +msgid "This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary." +msgstr "" + +#: ../../features/data-importers.rst:9 +msgid "The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_." +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "Todo" +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/data-importers.rst:14 +msgid "Why write your own?" +msgstr "" + +#: ../../features/data-importers.rst:16 +msgid "While Tabbycat has standard import formats, you might find that none of them fit the data that you need to import." +msgstr "" + +#: ../../features/data-importers.rst:18 +msgid "It's not possible to devise a single, universally-convenient import file format. Tabbycat supports way too many permutations of configurations for this to be workable. Instead, we provide the ones that have been useful before and are therefore likely to be useful again—but if your tournament has different needs, you might decide that it's easier to write an importer to conform to you, rather than conform to the importer." +msgstr "" + +#: ../../features/data-importers.rst:20 +msgid "A base importer class abstracts away most of the nitty-gritty of parsing files, allowing new importers to focus on their interpretation with as little code as possible." +msgstr "" + +#: ../../features/data-importers.rst:22 +msgid "To allow new importers to be written with as little code as possible, most of the work is abstracted to the base class. The flipside of this abstraction is that it induces a learning curve." +msgstr "" + +#: ../../features/data-importers.rst:25 +msgid "Basic workflow" +msgstr "" + +#: ../../features/data-importers.rst:27 +msgid "Choose a name. We name importers after items of clothing in alphabetical order (starting at 'Anorak')." +msgstr "" + +#: ../../features/data-importers.rst:28 +msgid "Write a subclass of ``BaseTournamentDataImporter``." +msgstr "" + +#: ../../features/data-importers.rst:29 +msgid "Write the front-end interface. This will probably be a `Django management command `_." +msgstr "" + +#: ../../features/data-importers.rst:32 +msgid "A basic example" +msgstr "" + +#: ../../features/data-importers.rst:34 +msgid "It's easiest to start with an example. Here's a basic importer with just one import method, which imports adjudicators." +msgstr "" + +#: ../../features/data-importers.rst:60 +msgid "Let's break this down. The method ``import_adjudicators()`` takes a single argument, a file object representing the CSV file. Most of the work is passed off to ``self._import()``. This helper method is defined in ``BaseTournamentDataImporter`` and is where most of the intelligence lies." +msgstr "" + +#: ../../features/data-importers.rst:65 +msgid "When called, ``self._import(f, model, interpreter)`` does the following:" +msgstr "" + +#: ../../features/data-importers.rst:67 +msgid "It reads the CSV file using a `csv.DictReader `_. A ``DictReader`` iterates through the CSV file, yielding a dict for each line, whose keys are given by the column header names in the first row of the file." +msgstr "" + +#: ../../features/data-importers.rst:72 +msgid "On each line:" +msgstr "" + +#: ../../features/data-importers.rst:74 +msgid "It passes the dict given by the ``DictReader`` to ``interpreter``. The interpreter modifies the dict (or creates a new one) to prepare it for the model constructor, and returns it." +msgstr "" + +#: ../../features/data-importers.rst:78 +msgid "The dict returned by ``interpreter`` is then passed as keyword arguments to the ``model`` constructor." +msgstr "" + +#: ../../features/data-importers.rst:81 +msgid "So in very simplified form, ``self._import(f, model, interpreter)`` does this:" +msgstr "" + +#: ../../features/data-importers.rst:92 +msgid "(There's a lot more to it than that, but that's the basic idea.)" +msgstr "" + +#: ../../features/data-importers.rst:94 +msgid "A consequence of relying on column headers to identify fields is that the header names in CSV files must match model field names exactly, unless they are deleted by the interpreter using the ``DELETE`` keyword (see below)." +msgstr "" + +#: ../../features/data-importers.rst:100 +msgid "Interpreters" +msgstr "" + +#: ../../features/data-importers.rst:101 +msgid "The main task of an importer, then, is to provide interpreters so that ``self._import`` knows how to interpret the data in a CSV file. An interpreter takes a dict and returns a dict. For example:" +msgstr "" + +#: ../../features/data-importers.rst:113 +msgid "This interpreter does the following:" +msgstr "" + +#: ../../features/data-importers.rst:115 +msgid "Replaces ``line['institution']`` with an Institution object, by looking up the original value by name." +msgstr "" + +#: ../../features/data-importers.rst:117 +msgid "Replaces ``line['gender']`` with a ``Person.GENDER_*`` constant. We'll come back to how this works later." +msgstr "" + +#: ../../features/data-importers.rst:119 +msgid "Adds a new ``line['tournament']`` entry to the dict, being the Tournament object represented by ``self.tournament``, the tournament that was passed to the importer's constructor." +msgstr "" + +#: ../../features/data-importers.rst:122 +msgid "Leaves all other entries in the dict unchanged." +msgstr "" + +#: ../../features/data-importers.rst:124 +msgid "This looks simple enough, but it's very robust. What if a cell in the CSV file is blank, or what if the file omits a column? (For example, some tournaments might not collect information about participant gender, so Tabbycat doesn't require it.) We could deal with these scenarios on a case-by-case basis, but that's cumbersome." +msgstr "" + +#: ../../features/data-importers.rst:130 +msgid "Instead, we provide a ``make_interpreter`` method that returns an interpreter method which, in turn, takes care of all these details. This way, all you have to do is provide the functions that transform fields. So the following is equivalent to the above, but better:" +msgstr "" + +#: ../../features/data-importers.rst:143 +msgid "Notice that we provided a callable in two of these keyword arguments, and a (non-callable) Tournament object to the third. ``make_interpreter`` is smart enough to tell the difference, and treat them differently. What it does with each field depends on (a) whether a value exists in the CSV file and (b) what transformation function was provided, as summarised in the following table:" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Value in CSV file" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Transformation" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Action" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "provided and not callable" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "populate model field with interpreter value" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "does not exist or blank" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "callable or not provided" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "do not pass to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:158 ../../features/data-importers.rst:161 +msgid "exists and not blank" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "callable" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "call interpreter on column value, pass result to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "not provided" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "pass column value directly to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:169 +msgid "If a transformation isn't an existing method, you might find `lambda functions `_ useful. For example: ``lambda x: Speaker.objects.get(name=x)``." +msgstr "" + +#: ../../features/data-importers.rst:173 +msgid "You shouldn't check for mandatory fields. If a mandatory field is omitted, the model constructor will throw an error, and ``self._import()`` will catch the error and pass a useful message on to the caller. On the other hand, if it's an optional field in the model, it should optional in the importer, too. Similarly, interpreters generally shouldn't specify defaults; these should be left to model definitions." +msgstr "" + +#: ../../features/data-importers.rst:180 +msgid "You don't need to include interpreter transformations for things like converting strings to integers, floats or booleans. Django converts strings to appropriate values when it instantiates models. So, for example, adding ``test_score=float`` to the above interpreter would be redundant." +msgstr "" + +#: ../../features/data-importers.rst:186 +msgid "More complicated interpreters" +msgstr "" + +#: ../../features/data-importers.rst:188 +msgid "If you have a column in the CSV file that shouldn't be passed to the model constructor, you can tell the interpreter to remove it by using the special ``DELETE`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:199 +msgid "The ``make_interpreter`` can only deal with modifications where each field is modified separately of the others (or not at all). If you want to combine information from multiple fields, you need to write your interpreter the long way (perhaps calling a function returned by ``make_interpreter`` to do some of the work)." +msgstr "" + +#: ../../features/data-importers.rst:205 +msgid "On the other hand, if you don't need to do any transformations involving some sort of object or constant lookup, then you can just omit the ``interpreter`` argument of ``self._lookup()``, and it'll just leave the fields as-is." +msgstr "" + +#: ../../features/data-importers.rst:210 +msgid "Lookup functions" +msgstr "" + +#: ../../features/data-importers.rst:211 +msgid "In the above example, we used a function ``self.lookup_gender`` to convert from the text in the CSV file to a ``Person.GENDER_*`` constant. To make this easier, the importer provides a convenience function to define such lookup functions. Let's look at the relevant lines again:" +msgstr "" + +#: ../../features/data-importers.rst:224 +msgid "This should be a member of your subclass, in our case, ``ExampleTournamentDataImporter``. It generates a function that looks something like:" +msgstr "" + +#: ../../features/data-importers.rst:241 +msgid "The ``make_lookup`` function takes two arguments. The first is a text description of what it's looking up; this is used for the error message if the value in the CSV file isn't recognised. The second is a dict mapping tuples of valid strings to constants." +msgstr "" + +#: ../../features/data-importers.rst:247 +msgid "Debugging output" +msgstr "" + +#: ../../features/data-importers.rst:249 +msgid "The ``BaseTournamentDataImporter`` constructor accepts a ``loglevel`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:255 +msgid "If ``loglevel`` is set to ``logging.DEBUG``, the importer will print information about every instance it creates." +msgstr "" + +#: ../../features/data-importers.rst:258 +msgid "You can also pass in a logger for it to use (instead of the default one) with the ``logger`` argument." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/kk/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..a072074659b --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/draw-generation-bp.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: kk_KZ\n" + +#: ../../features/draw-generation-bp.rst:5 +msgid "Draw Generation (BP)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:7 +msgid "The draw generator for British Parliamentary tournaments tries to rotate teams through positions by assigning them positions they've been in less often before the current round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:12 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `. Options in `italics` with an asterisk are not WUDC-compliant. The recommended options are shown in **bold**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:19 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation-bp.rst:20 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation-bp.rst:21 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation-bp.rst:22 +msgid ":ref:`Pullup distribution `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:23 +msgid "Where pullup teams get placed" +msgstr "" + +#: ../../features/draw-generation-bp.rst:24 +msgid "**Anywhere in bracket**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:25 +msgid "*All in the same room*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:26 +msgid ":ref:`Position cost `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:27 +msgid "Which cost function to use to indicate which position profiles are preferred" +msgstr "" + +#: ../../features/draw-generation-bp.rst:28 +#: ../../features/draw-generation-bp.rst:179 +msgid "Simple" +msgstr "" + +#: ../../features/draw-generation-bp.rst:29 +msgid "**Rényi entropy**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:30 +#: ../../features/draw-generation-bp.rst:254 +msgid "Population variance" +msgstr "" + +#: ../../features/draw-generation-bp.rst:31 +msgid ":ref:`Rényi order `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:32 +msgid "Order of Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:33 +msgid "Any non-negative number (default: **1**, *i.e.* Shannon entropy)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:34 +msgid ":ref:`Position cost exponent `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:35 +msgid "Degree to which large position imbalances should be prioritised" +msgstr "" + +#: ../../features/draw-generation-bp.rst:36 +msgid "Any non-negative number (default: **4**)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:37 +msgid ":ref:`Assignment method `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:38 +msgid "Algorithm used to assign positions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:39 +msgid "*Hungarian*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:40 +msgid "**Hungarian with preshuffling**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:45 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation-bp.rst:47 +msgid "To try to achieve position balance, Tabbycat treats the allocation of teams to debates as an `assignment problem `_. That is, it computes the \"cost\" of assigning each team to each position in each debate, and finds an assignment of all teams to a position in a debate that minimises the total cost (the sum over all teams)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:50 +msgid "A simple example" +msgstr "" + +#: ../../features/draw-generation-bp.rst:52 +msgid "Here's a small example, to illustrate the idea. Say you have a tournament with 16 teams, and you're about to draw round 4. There are sixteen \"places\" in the draw: four positions in each of four rooms. Tabbycat calculates the \"cost\" of putting each team in each place, and puts them in a matrix, like this:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Room" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Top" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Second" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Third" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Bottom" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "Position" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +msgid "**A (8)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "16" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +msgid ":q:`0`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "∞" +msgstr "" + +#: ../../features/draw-generation-bp.rst:67 +msgid "**B (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:69 +msgid "**C (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +msgid "**D (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:95 +msgid "0" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:95 +msgid ":q:`16`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:73 +msgid "**E (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:75 +msgid "**F (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:77 +msgid "**G (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:79 +msgid "**H (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:81 +msgid "**I (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:83 +msgid "**J (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:85 +msgid "**K (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:87 +msgid "**L (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:89 +msgid "**M (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:91 +msgid "**N (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:93 +msgid "**O (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:95 +msgid "**P (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:98 +msgid "Each \"16\" is the cost of putting a team in a position it's seen once; each \"0\" is the cost of putting a team in the position it hasn't. (Details of how this is calculated are :ref:`below `.) For example, team A (on 8 points) has been in every position except CO. The ∞'s indicate places where the team isn't allowed to go, because the room isn't in their bracket. For example, the three teams on 6 points (D, E, F) can go in either the top or second room, because any of them can be the pullup team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:100 +msgid "The algorithm then chooses entries so that one is selected from each row and one is selected from each column, in a way that minimises the sum of the selected entries. In this case, the selected entries are highlighted in blue. For example, the top room comprises teams E (OG), B (OO), C (CG) and A (CO)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:102 +msgid "Sometimes, particularly in round 4, it simply isn't possible to \"satisfy\" everyone. For example, among the top eight teams, five haven't been in OO, but only two can be accommodated within those brackets. In this case, teams B and G got lucky; there are also many other draws that would have incurred the same total cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:104 +msgid "More generally, in most cases, there will be many optimal solutions. To randomise the selection among them, Tabbycat (under default settings) randomly permutes the rows and columns of the matrix before starting the assignment algorithm." +msgstr "" + +#: ../../features/draw-generation-bp.rst:107 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:112 +msgid "Pullup distribution" +msgstr "" + +#: ../../features/draw-generation-bp.rst:114 +msgid "If the number of teams in a bracket is not a multiple of four, it pulls up teams from the next bracket down. The pullup distribution then governs how those teams are paired into the upper bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:116 +msgid "The available options are as follows:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:120 +msgid "**Anywhere in bracket:** The pullup teams are treated as if they were any other team in their new bracket. For example, if there are 17 teams in a 10-point bracket, then the three 9-point teams that get pulled up may be paired anywhere in the 10-point bracket, independently of each other. Chance might put them in the same room, but more likely, they will not all be in the same room, so there will be multiple pullup rooms in the 10-point bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:122 +msgid "**All in the same room:** All of the pullup teams will be paired into the same room. This means that there will be at most one pullup room per bracket, effectively creating an \"intermediate bracket\"." +msgstr "" + +#: ../../features/draw-generation-bp.rst:124 +msgid "While it can be argued that the `All in the same room` setting is fairer, it is prohibited by the WUDC constitution. If your tournament follows WUDC rules, you cannot use this setting." +msgstr "" + +#: ../../features/draw-generation-bp.rst:126 +msgid "The teams that get pulled up aren't specifically chosen---they're just assigned as part of the algorithm described :ref:`above `, which optimises for position balance. Tabbycat doesn't support taking anything else into account when choosing pullup teams. (WUDC rules wouldn't allow it, either.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:131 +msgid "Position cost options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:133 +msgid "The `position cost function` is a function that indicates how \"bad\" it would be if a team were to be allocated a certain position (OG, OO, CG, CO) in a debate. When generating a draw, Tabbycat chooses from among the draws that minimise the sum of the position costs for each team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:135 +msgid "More formally:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:139 +msgid "A `position history` or just `history` :math:`\\mathbf{h}` is a 4-tuple where each element is the number of times a team has already been in the corresponding position. For example, :math:`\\mathbf{h} = (0, 2, 1, 1)` means that a team has been in OO twice, CG and CO once each, and hasn't been in OG." +msgstr "" + +#: ../../features/draw-generation-bp.rst:140 +msgid "A cost function :math:`C(\\mathbf{h},s)` is a function specifying how \"bad\" it would be if a team with position history :math:`\\mathbf{h}` were assigned the position :math:`s` in the next round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:142 +msgid "Tabbycat allows you to choose from a number of different **position cost functions**, as well as a **position cost exponent** :math:`\\beta`. Then, when allocating teams to debates, Tabbycat allocates teams to positions :math:`(s_t, t \\in\\mathcal{T})` to minimise" +msgstr "" + +#: ../../features/draw-generation-bp.rst:144 +msgid "\\sum_{t \\in \\mathcal{T}} [C(\\mathbf{h}_t,s_t)]^\\beta" +msgstr "" + +#: ../../features/draw-generation-bp.rst:148 +msgid "where :math:`\\mathcal{T}` is the set of all teams, :math:`\\mathbf{h}_t` is the position history of team :math:`t` and :math:`s_t` is the position to which team :math:`t` would be allocated." +msgstr "" + +#: ../../features/draw-generation-bp.rst:153 +msgid "Position cost exponent" +msgstr "" + +#: ../../features/draw-generation-bp.rst:155 +msgid "The **position cost exponent** :math:`\\beta` controls how different teams trade off with each other." +msgstr "" + +#: ../../features/draw-generation-bp.rst:159 +msgid "The **larger** :math:`\\beta` is, the more concerned it is with preventing *very* bad situations. That is, it will give more teams some slight unevenness in order to prevent one team from getting a `very` uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:161 +msgid "The **smaller** :math:`\\beta` is, the more concerned it is with preventing *any* unevenness. That is, it will try to keep more teams from being uneven *at all*, at the cost of possibly letting just one team get a very uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:163 +msgid "At the large extreme, as :math:`\\beta\\rightarrow\\infty`, it will do everything it can to minimise the plight of the *worst-off* team, and it won't care for *any* team other than the worst-off." +msgstr "" + +#: ../../features/draw-generation-bp.rst:165 +msgid "At the small extreme, as :math:`\\beta\\rightarrow 0`, it will do everything it can to minimise the number of teams with a non-optimal profile---but if it's impossible to protect a team from sub-optimality, it won't care *how* uneven the unlucky team gets." +msgstr "" + +#: ../../features/draw-generation-bp.rst:167 +msgid "The \"balanced\" approach would be :math:`\\beta = 1`, which just takes the cost function as-is. This doesn't mean that this is the best idea, however---you'd typically want to bias towards preventing very uneven histories a bit more. Most tournaments will probably want :math:`\\beta` to be somewhere between 2 and 5. (Note that :math:`\\beta` need not be an integer.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:172 +msgid "Position cost functions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:174 +msgid "Tabbycat allows you to choose between three position cost functions :math:`C(\\mathbf{h},s)`: **Simple**, **Rényi entropy** and **Population variance**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:176 +msgid "In the descriptions that follow, :math:`\\mathcal{S} = \\{\\texttt{OG}, \\texttt{OO}, \\texttt{CG}, \\texttt{CO}\\}`, the set of all BP positions." +msgstr "" + +#: ../../features/draw-generation-bp.rst:181 +msgid "The simple cost function :math:`C_\\textrm{simple}(\\mathbf{h},s)` returns the number of times the team has already been in position :math:`s`, less the number of times the team has been in its least frequent position. That is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:183 +msgid "C_\\mathrm{simple}(\\mathbf{h},s) = \\mathbf{h}[s] - \\min_{s' \\in\\mathcal{S}} \\mathbf{h}[s']" +msgstr "" + +#: ../../features/draw-generation-bp.rst:187 +msgid "where :math:`\\mathbf{h}[s]` is the element of :math:`\\mathbf{h}` corresponding to position :math:`s`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:190 +msgid "Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:192 +msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:194 +msgid "The Rényi entropy takes one parameter, known as its *order*, :math:`\\alpha`, which will be further discussed below." +msgstr "" + +#: ../../features/draw-generation-bp.rst:196 +msgid "More formally, the Rényi entropy cost function :math:`C_\\textrm{R\\'enyi}(\\mathbf{h},s)` is defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:198 +msgid "C_\\textrm{R\\'enyi}(\\mathbf{h},s) = n_\\mathbf{h} [2 - H_\\alpha(\\hat{p}_{\\mathbf{h},s})]" +msgstr "" + +#: ../../features/draw-generation-bp.rst:202 +msgid "where" +msgstr "" + +#: ../../features/draw-generation-bp.rst:206 +msgid ":math:`n_\\mathbf{h} = \\sum_{s'} \\mathbf{h}[s']` is the number of rounds the team has competed in so far." +msgstr "" + +#: ../../features/draw-generation-bp.rst:207 +msgid ":math:`\\hat{p}_{\\mathbf{h},s}` is the *normalised hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:209 +msgid "\\hat{p}_{\\mathbf{h},s}[s'] = \\begin{cases} \\frac{1}{n_\\mathbf{h} + 1} (\\mathbf{h}[s'] + 1), &\\text{ if } s = s', \\\\ \\frac{1}{n_\\mathbf{h} + 1} \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:216 +msgid "Note that :math:`\\hat{p}_{\\mathbf{h},s}` is a probability distribution (that is, its elements sum to 1)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:218 +msgid ":math:`H_\\alpha(\\cdot)` is the `Rényi entropy `_ of order :math:`\\alpha` of a probability distribution, defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:220 +msgid "H_\\alpha(p) = \\frac{1}{1-\\alpha} \\log_2 \\left( \\sum_{s\\in\\mathcal{S}} (p[s])^\\alpha \\right), \\qquad \\alpha \\ne 1." +msgstr "" + +#: ../../features/draw-generation-bp.rst:224 +msgid "In the special (limiting) case where :math:`\\alpha=1`, it reduces to the `Shannon entropy `_," +msgstr "" + +#: ../../features/draw-generation-bp.rst:226 +msgid "H_1(p) =-\\sum_{s\\in\\mathcal{S}} p[s] \\log_2 p[s]." +msgstr "" + +#: ../../features/draw-generation-bp.rst:230 +msgid "Note that for all :math:`\\alpha`, :math:`0 \\le H_\\alpha(p) \\le \\log_2(4) = 2` (since there are four positions in BP)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:234 +msgid "The **Rényi order** is the parameter :math:`\\alpha` above, and it controls *what it means to be \"even among positions\"* for a team. Note that \"evenness\" is not easily defined. After round 8, which position history is more even: (0, 2, 3, 3) or (1, 1, 1, 5)? The Rényi order allows us to tune this definition." +msgstr "" + +#: ../../features/draw-generation-bp.rst:238 +msgid "The **smaller** :math:`\\alpha` is, the more it cares that teams compete in every position *at least* once, favouring (1, 1, 1, 5) over (0, 2, 3, 3): it's worse to have never OGed, than it is to have COed five times." +msgstr "" + +#: ../../features/draw-generation-bp.rst:240 +msgid "The **larger** :math:`\\alpha` is, the more it cares that teams do not compete in *any* (one) position too many times, favouring (0, 2, 3, 3) over (1, 1, 1, 5): it's worse to have COed five times, than it is to have never OGed." +msgstr "" + +#: ../../features/draw-generation-bp.rst:242 +msgid "At the small extreme, as :math:`\\alpha\\rightarrow0`, it *only* counts how many positions a team has seen at least once, and doesn't care about the distribution among them so long as a team has been in each position once." +msgstr "" + +#: ../../features/draw-generation-bp.rst:244 +msgid "At the large extreme, as :math:`\\alpha\\rightarrow\\infty`, it *only* looks at how many times each team has seen its *most frequent* position, and tries to keep this number even among all teams." +msgstr "" + +#: ../../features/draw-generation-bp.rst:246 +msgid "The \"balanced\" approach would be :math:`\\alpha=1` (the `Shannon entropy `_), though of course it's arguable what \"balanced\" means. Tabbycat defaults to this value." +msgstr "" + +#: ../../features/draw-generation-bp.rst:248 +msgid "To give some intuition for the useful range: In round 9, a strict ordering by number of positions seen at least once occurs for approximately :math:`\\alpha < 0.742`. A strict ordering by number of times in the most frequent position occurs for :math:`\\alpha>3`. Changing :math:`\\alpha` outside the range :math:`[0.742, 3]` will still affect the relative (cardinal) weighting *between teams*, but will not affect the *ordinal* ranking of possible histories." +msgstr "" + +#: ../../features/draw-generation-bp.rst:250 +msgid "The purpose of weighting costs by :math:`n_\\mathbf{h}` is to prioritise those teams who have competed in every round over those who have competed in fewer rounds." +msgstr "" + +#: ../../features/draw-generation-bp.rst:256 +msgid "The **population variance** cost function is just the population variance of the history 4-tuple," +msgstr "" + +#: ../../features/draw-generation-bp.rst:258 +msgid "C_\\textrm{popvar}(\\mathbf{h},s) = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\left(\\mathbf{\\hat{h}}_s[s'] - \\mu_{\\mathbf{\\hat{h}}_s} \\right)^2," +msgstr "" + +#: ../../features/draw-generation-bp.rst:262 +msgid "where :math:`\\mathbf{\\hat{h}}_s` is the *hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:264 +msgid "\\mathbf{\\hat{h}}_s[s'] = \\begin{cases} \\mathbf{h}[s'] + 1, &\\text{ if } s = s', \\\\ \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:271 +msgid "and where :math:`\\mu_{\\mathbf{\\hat{h}}_s}` is the mean of :math:`\\mathbf{\\hat{h}}_s`," +msgstr "" + +#: ../../features/draw-generation-bp.rst:273 +msgid "\\mu_{\\mathbf{\\hat{h}}_s} = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\mathbf{\\hat{h}}_s[s']." +msgstr "" + +#: ../../features/draw-generation-bp.rst:277 +msgid "At the extremes, a team that has seen all positions evenly will have a population variance of zero, while a team that has seen just one position :math:`n` times will have a population variance of :math:`\\frac{3n^2}{16}`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:282 +msgid "Assignment method" +msgstr "" + +#: ../../features/draw-generation-bp.rst:284 +msgid "Tabbycat uses the `Hungarian algorithm `_ to solve the `assignment problem `_ of assigning teams to positions in debates. This can be run with or without preshuffling:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:288 +msgid "**Hungarian algorithm** just runs the Hungarian algorithm as-is, with no randomness. This probably isn't what you want." +msgstr "" + +#: ../../features/draw-generation-bp.rst:290 +msgid "**Hungarian algorithm with preshuffling** also runs the Hungarian algorithm on the position cost matrix, but shuffles the input so that the draw is randomised, subject to having optimal position allocations." +msgstr "" + +#: ../../features/draw-generation-bp.rst:292 +msgid "Preshuffling doesn't compromise the optimality of position allocations: It simply shuffles the order in which teams and debates appear in the input to the algorithm, by randomly permuting the rows and columns of the position cost matrix. The Hungarian algorithm still guarantees an optimal position assignment, according to the chosen position cost function." +msgstr "" + +#: ../../features/draw-generation-bp.rst:294 +msgid "Running the Hungarian algorithm *without* preshuffling has the side effect of grouping teams with similar speaker scores in to the same room, and is therefore prohibited by WUDC rules. Its inclusion as an option is mainly academic; most tournaments will not want to use it in practice." +msgstr "" + +#: ../../features/draw-generation-bp.rst:296 +msgid "No other assignment methods are currently supported. For example, Tabbycat can't run fold (high-low) or adjacent (high-high) pairing *within* brackets." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/draw-generation.po b/docs/locale/kk/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..e3b2c199f91 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/draw-generation.po @@ -0,0 +1,436 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: kk_KZ\n" + +#: ../../features/draw-generation.rst:5 +msgid "Draw Generation" +msgstr "" + +#: ../../features/draw-generation.rst:7 +msgid "The draw generator is quite flexible. You can specify a number of settings to suit different tournaments' rules." +msgstr "" + +#: ../../features/draw-generation.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation.rst:11 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `." +msgstr "" + +#: ../../features/draw-generation.rst:18 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation.rst:19 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation.rst:20 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation.rst:22 +msgid ":ref:`Odd bracket resolution method `" +msgstr "" + +#: ../../features/draw-generation.rst:23 +msgid "How to resolve odd brackets" +msgstr "" + +#: ../../features/draw-generation.rst:24 +msgid "Pull up from top" +msgstr "" + +#: ../../features/draw-generation.rst:25 +msgid "Pull up from bottom" +msgstr "" + +#: ../../features/draw-generation.rst:26 +msgid "Pull up from middle" +msgstr "" + +#: ../../features/draw-generation.rst:27 +msgid "Pull up at random" +msgstr "" + +#: ../../features/draw-generation.rst:29 +msgid "If sides are `Random` or `Balance`:" +msgstr "" + +#: ../../features/draw-generation.rst:31 +msgid "Intermediate" +msgstr "" + +#: ../../features/draw-generation.rst:32 +msgid "Intermediate with bubble-up-bubble-down" +msgstr "" + +#: ../../features/draw-generation.rst:34 +msgid "If sides are `Pre-allocated`:" +msgstr "" + +#: ../../features/draw-generation.rst:36 +msgid "Intermediate 1" +msgstr "" + +#: ../../features/draw-generation.rst:37 +msgid "Intermediate 2" +msgstr "" + +#: ../../features/draw-generation.rst:39 +msgid ":ref:`Side allocations method `" +msgstr "" + +#: ../../features/draw-generation.rst:40 +msgid "How to allocate aff/neg" +msgstr "" + +#: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 +msgid "Random" +msgstr "" + +#: ../../features/draw-generation.rst:42 +msgid "Balance" +msgstr "" + +#: ../../features/draw-generation.rst:43 +msgid "Pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:44 +msgid "Manual ballot" +msgstr "" + +#: ../../features/draw-generation.rst:46 +msgid ":ref:`Pairing method `" +msgstr "" + +#: ../../features/draw-generation.rst:47 +msgid "How to pair teams within brackets" +msgstr "" + +#: ../../features/draw-generation.rst:48 +msgid "Slide" +msgstr "" + +#: ../../features/draw-generation.rst:49 +msgid "Fold" +msgstr "" + +#: ../../features/draw-generation.rst:50 +msgid "Adjacent" +msgstr "" + +#: ../../features/draw-generation.rst:53 +msgid ":ref:`Conflict avoidance method `" +msgstr "" + +#: ../../features/draw-generation.rst:54 +msgid "How to avoid history/institution conflicts" +msgstr "" + +#: ../../features/draw-generation.rst:55 +msgid "Off" +msgstr "" + +#: ../../features/draw-generation.rst:56 +msgid "One-up-one-down" +msgstr "" + +#: ../../features/draw-generation.rst:58 +msgid ":ref:`Pullup restriction `" +msgstr "" + +#: ../../features/draw-generation.rst:59 +msgid "Whether and how to restrict pullups" +msgstr "" + +#: ../../features/draw-generation.rst:60 +msgid "No restriction" +msgstr "" + +#: ../../features/draw-generation.rst:61 +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../features/draw-generation.rst:62 +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: ../../features/draw-generation.rst:64 +msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." +msgstr "" + +#: ../../features/draw-generation.rst:67 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation.rst:68 +msgid "When generating a power-paired draw, Tabbycat goes through five steps:" +msgstr "" + +#: ../../features/draw-generation.rst:70 +msgid "First, it divides teams into \"raw brackets\", grouping them by the number of wins." +msgstr "" + +#: ../../features/draw-generation.rst:71 +msgid "Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called \"pulling up\" teams." +msgstr "" + +#: ../../features/draw-generation.rst:72 +msgid "Third, within each bracket, it pairs teams into debates using the pairing method." +msgstr "" + +#: ../../features/draw-generation.rst:73 +msgid "Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts." +msgstr "" + +#: ../../features/draw-generation.rst:74 +msgid "Finally, it assigns sides to teams in each debate." +msgstr "" + +#: ../../features/draw-generation.rst:76 +msgid "For each of these steps except the first, Tabbycat allows you to choose between a number of different methods." +msgstr "" + +#: ../../features/draw-generation.rst:80 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation.rst:85 +msgid "Odd bracket resolution" +msgstr "" + +#: ../../features/draw-generation.rst:86 +msgid "The **draw odd brackets** option specifies what you do when a bracket has an odd number of teams. (Obviously you have to do something, otherwise you can't pair off teams within the bracket.) There are two groups of methods: pull-up and intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:90 +msgid "**Pull-up methods** take one or more teams from the next bracket down, and move them into the odd bracket to fill the bracket." +msgstr "" + +#: ../../features/draw-generation.rst:92 +msgid "**Intermediate brackets** take the excess teams from the odd bracket and move them down into a new bracket, which sits between the odd bracket and the next one down (the \"intermediate bracket\"). It then takes teams from the next bracket down and moves them up to fill the new intermediate bracket." +msgstr "" + +#: ../../features/draw-generation.rst:94 +msgid "The exact mechanics depend on whether or not sides are pre-allocated." +msgstr "" + +#: ../../features/draw-generation.rst:97 +msgid "When sides are not pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:101 +msgid "**Pull-up methods:** Take a team from the next bracket down, and add them to the odd bracket to form an even bracket. You can choose to pull up the top team from the next bracket, or the bottom team, or the middle team, or a randomly chosen team. (If you pull up the middle team, and the bracket has an even number of teams, then it will choose randomly from the two middle teams.)" +msgstr "" + +#: ../../features/draw-generation.rst:103 +msgid "**Intermediate brackets:** Take the bottom team from the odd bracket and match them against the top team from the next bracket. An intermediate bracket always has two teams." +msgstr "" + +#: ../../features/draw-generation.rst:105 +msgid "If you're using conflict avoidance and intermediate brackets, you will probably want to use **Intermediate with bubble-up-bubble-down** instead. This uses the \"bubble-up-bubble-down\" rule to swap teams out of an intermediate bracket if there is a history or institution conflict. This is defined in the Australs constitution and is analogous to the \"one-up-one-down\" rule." +msgstr "" + +#: ../../features/draw-generation.rst:107 +msgid "Using `Intermediate` with `One-up-one-down` does **not** imply `Intermediate with bubble-up-bubble-down`. You must enable `Intermediate with bubble-up-bubble-down` specifically." +msgstr "" + +#: ../../features/draw-generation.rst:110 +msgid "When sides are pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:111 +msgid "When sides are pre-allocated, an \"odd bracket\" is one that has an uneven number of affirmative and negative teams. (So odd brackets can have an even number of teams, *e.g.* 4 affs and 2 negs.)" +msgstr "" + +#: ../../features/draw-generation.rst:115 +msgid "**Pull-up methods:** Take as many teams from the next bracket down as necessary to fill the bracket. If there aren't enough teams in the next bracket down, take teams from the bracket after that, and so on, until the (original) odd bracket is filled. Higher brackets are always filled first. You can choose to pull up the top teams from the next bracket, the bottom teams, or a random selection of teams." +msgstr "" + +#: ../../features/draw-generation.rst:117 +msgid "**Intermediate brackets:** Take the unpaired teams in a bracket, and move them down to a new intermediate bracket. Then, take the number of teams necessary from the opposite side, from the next bracket down, to fill the next bracket." +msgstr "" + +#: ../../features/draw-generation.rst:119 +msgid "**Intermediate 1** and **Intermediate 2** differ only in what happens if there aren't enough teams in the next bracket to fill the intermediate bracket. In **Intermediate 1**, it will just take teams from the bracket after that, and so on, until the intermediate bracket is filled. In **Intermediate 2**, it will split the intermediate bracket: the teams that can be paired with the next bracket form the first intermediate bracket, and then the teams that aren't form a new (unfilled) intermediate bracket, to be filled from teams from the bracket after that. This keeps going, splitting into as many intermediate brackets as necessary, until all excess teams from the original odd bracket are paired." +msgstr "" + +#: ../../features/draw-generation.rst:124 +msgid "Side allocations" +msgstr "" + +#: ../../features/draw-generation.rst:125 +msgid "There are four methods:" +msgstr "" + +#: ../../features/draw-generation.rst:129 +msgid "**Random** allocates randomly. Some tournaments might like this, but most will probably want to use Balance, because Random doesn't guarantee that a team won't be (say) affirming the entire tournament." +msgstr "" + +#: ../../features/draw-generation.rst:130 +msgid "**Balance** assigns the team that has affirmed less so far the affirmative side (and, therefore, the team that has negated less the negative side). If both teams have affirmed the same number of times, it assigns sides randomly." +msgstr "" + +#: ../../features/draw-generation.rst:131 +msgid "**Preallocated** is used for pre-allocated sides. If used, you must enter data for pre-allocated sides into the database, as specified below." +msgstr "" + +#: ../../features/draw-generation.rst:132 +msgid "**Manually enter from ballot** is used for tournaments where the sides of the teams involved are not assigned in advance, but are instead determined by the teams themselves" +msgstr "" + +#: ../../features/draw-generation.rst:135 +msgid "Pre-allocated sides" +msgstr "" + +#: ../../features/draw-generation.rst:136 +msgid "There isn't currently any way to edit side allocations from the front end. To do so from the back end, you need to create one ``TeamPositionAllocation`` entry for each team in each round. All teams must have an allocation for every round. There are a few ways to do this, take your pick:" +msgstr "" + +#: ../../features/draw-generation.rst:140 +msgid "If you're using the :ref:`importtournament command `, it reads sides from the file sides.csv." +msgstr "" + +#: ../../features/draw-generation.rst:141 +msgid "You can do this from the Django admin interface (under Setup > Edit Database) by going to the relevant team and adding a **team position allocation** entry. That is:" +msgstr "" + +#: ../../features/draw-generation.rst:143 +msgid "Click **Admin** on the bottom right of any page after logging into an account with :ref:`superuser access `." +msgstr "" + +#: ../../features/draw-generation.rst:144 +msgid "Next to **Teams**, click **Change**." +msgstr "" + +#: ../../features/draw-generation.rst:145 +msgid "Click on the name of the team you want to edit side allocations for." +msgstr "" + +#: ../../features/draw-generation.rst:146 +msgid "Add or edit the entry or entries in the **Team position allocations** table at the bottom." +msgstr "" + +#: ../../features/draw-generation.rst:148 +msgid "You can also do this by writing a script that creates ``TeamPositionAllocation`` objects and saves them. Have a look at `draw/management/commands/generatesideallocations.py `_ for an example." +msgstr "" + +#: ../../features/draw-generation.rst:153 +msgid "Pairing method" +msgstr "" + +#: ../../features/draw-generation.rst:154 +msgid "It's easiest to describe these by example, using a ten-team bracket:" +msgstr "" + +#: ../../features/draw-generation.rst:156 +msgid "**Fold**: 1 vs 10, 2 vs 9, 3 vs 8, 4 vs 7, 5 vs 6. (Also known as high-low pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:157 +msgid "**Slide**: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10." +msgstr "" + +#: ../../features/draw-generation.rst:158 +msgid "**Adjacent**: 1 vs 2, 3 vs 4, 5 vs 6, 7 vs 8, 9 vs 10. (Also known as high-high pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:159 +msgid "**Random**: paired at random within bracket." +msgstr "" + +#: ../../features/draw-generation.rst:161 +msgid "Teams are always paired within their brackets, after resolving odd brackets." +msgstr "" + +#: ../../features/draw-generation.rst:166 +msgid "Conflict avoidance method" +msgstr "" + +#: ../../features/draw-generation.rst:167 +msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." +msgstr "" + +#: ../../features/draw-generation.rst:169 +msgid "You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented." +msgstr "" + +#: ../../features/draw-generation.rst:171 +msgid "**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict:" +msgstr "" + +#: ../../features/draw-generation.rst:173 +msgid "It tries to swap teams with the debate \"one up\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:174 +msgid "If that doesn't work, it tries to swap teams with the debate \"one down\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:175 +msgid "If neither of those works, it accepts the original conflicted debate." +msgstr "" + +#: ../../features/draw-generation.rst:177 +msgid "It's a bit more complicated than that, for two reasons:" +msgstr "" + +#: ../../features/draw-generation.rst:181 +msgid "History conflicts are prioritised over (*i.e.*, \"worse than\") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa." +msgstr "" + +#: ../../features/draw-generation.rst:182 +msgid "Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could \"one down\" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps." +msgstr "" + +#: ../../features/draw-generation.rst:187 +msgid "Pullup restriction" +msgstr "" + +#: ../../features/draw-generation.rst:188 +msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" +msgstr "" + +#: ../../features/draw-generation.rst:192 +msgid "You can **choose from teams who have been pulled up the fewest times so far**, that is, in rounds before the current round. Most of the time, this is equivalent to saying that a team cannot be pulled up more than once. But if *all* teams in a bracket have been pulled up at least once, it then chooses from among teams who have been pulled up *only* once (if any), and so on." +msgstr "" + +#: ../../features/draw-generation.rst:194 +msgid "You can **choose from teams with the lowest draw strength so far**, by **wins** or **speaks**." +msgstr "" + +#: ../../features/draw-generation.rst:196 +msgid "If you choose speaks, it's unlikely that two teams will have the same draw strength by speaks, so most of the time this will just choose the team in the lower bracket that's had the easiest draw so far (as measured by their opponents' speaker scores)." +msgstr "" + +#: ../../features/draw-generation.rst:198 +msgid "Pullup restrictions only apply when the :ref:`odd bracket resolution method ` is a pullup method. They have no effect on intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:201 +msgid "What do I do if the draw looks wrong?" +msgstr "" + +#: ../../features/draw-generation.rst:203 +msgid "You can edit match-ups directly from the draw page. Functionally, you can do anything you want. Of course, operationally, you should only edit the draw when you *know* that the draw algorithm got something wrong. If you need to do this, even just once, please file a bug report by creating a new issue on `our issues page on GitHub `_." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/notifications.po b/docs/locale/kk/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..0229c02e40f --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/notifications.po @@ -0,0 +1,257 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: kk_KZ\n" + +#: ../../features/notifications.rst:3 +msgid "Sending Notifications" +msgstr "" + +#: ../../features/notifications.rst:5 +msgid "Tabbycat offers integrations with email delivery services to send notifications to participants on certain enumerated events. For sending these emails, `SendGrid `_ is readily available as an add-on in Heroku. It may be necessary to install the `SendGrid add-on `_ manually. Other integrations may also be used in its place by changing the relevant environment variables." +msgstr "" + +#: ../../features/notifications.rst:8 +msgid "Events" +msgstr "" + +#: ../../features/notifications.rst:10 +msgid "Tabbycat includes a number of templated notifications that can be sent in various times. Variables which are included between curly brackets which are substituted for personalized information passed by email. Links to email will redirect to a page where the message can be changed and the participants selected." +msgstr "" + +#: ../../features/notifications.rst:12 +msgid "All emails have the ``{{ USER }}`` and ``{{ TOURN }}`` variables to indicate who the email is sent to, and the tournament it relates to. The \"From\" in the emails will also be the tournament's name." +msgstr "" + +#: ../../features/notifications.rst:17 +msgid "Email content and description" +msgstr "" + +#: ../../features/notifications.rst:18 +msgid "Variables" +msgstr "" + +#: ../../features/notifications.rst:20 +msgid "**Adjudicator draw notification**" +msgstr "" + +#: ../../features/notifications.rst:22 +msgid "Email to adjudicators indicating their room assignment." +msgstr "" + +#: ../../features/notifications.rst:24 ../../features/notifications.rst:36 +#: ../../features/notifications.rst:74 +msgid "Available through the admin draw page." +msgstr "" + +#: ../../features/notifications.rst:25 ../../features/notifications.rst:37 +msgid "``{{ ROUND }}``: The round name" +msgstr "" + +#: ../../features/notifications.rst:26 ../../features/notifications.rst:38 +msgid "``{{ VENUE }}``: The venue of the assigned debate" +msgstr "" + +#: ../../features/notifications.rst:27 ../../features/notifications.rst:39 +msgid "``{{ PANEL }}``: A list of all the adjudicators assigned to the venue (with positions)" +msgstr "" + +#: ../../features/notifications.rst:28 ../../features/notifications.rst:40 +msgid "``{{ DRAW }}``: A list of the team matchup with their roles" +msgstr "" + +#: ../../features/notifications.rst:29 +msgid "``{{ POSITION }}``: The target adjudicator's position in the panel" +msgstr "" + +#: ../../features/notifications.rst:30 +msgid "``{{ URL }}``: A link to the adjudicator's private URL page" +msgstr "" + +#: ../../features/notifications.rst:32 +msgid "**Team draw notification**" +msgstr "" + +#: ../../features/notifications.rst:34 +msgid "Email to teams indicating their pairing." +msgstr "" + +#: ../../features/notifications.rst:41 +msgid "``{{ TEAM }}``: The team's code or short name" +msgstr "" + +#: ../../features/notifications.rst:42 +msgid "``{{ SIDE }}``: The team's side" +msgstr "" + +#: ../../features/notifications.rst:44 +msgid "**Private URL distribution**" +msgstr "" + +#: ../../features/notifications.rst:46 +msgid "Email to participants giving them their private URL for electronic forms." +msgstr "" + +#: ../../features/notifications.rst:48 +msgid "Available through the private URLs page." +msgstr "" + +#: ../../features/notifications.rst:49 +msgid "``{{ URL }}``: The personalized URL" +msgstr "" + +#: ../../features/notifications.rst:50 +msgid "``{{ KEY }}``: The private code in the URL" +msgstr "" + +#: ../../features/notifications.rst:52 +msgid "**Ballot submission receipt**" +msgstr "" + +#: ../../features/notifications.rst:54 +msgid "Email to adjudicators of their ballot after tabroom confirmation." +msgstr "" + +#: ../../features/notifications.rst:56 +msgid "Sent automatically when their ballot's result status becomes confirmed, if enabled in the \"Notifications\" section of the tournament options." +msgstr "" + +#: ../../features/notifications.rst:58 +msgid "``{{ DEBATE }}``: The name (with round & venue) of the relevent debate" +msgstr "" + +#: ../../features/notifications.rst:59 +msgid "``{{ SCORES }}``: The submitted ballot with speaker scores ands team names" +msgstr "" + +#: ../../features/notifications.rst:61 +msgid "**Current team standings**" +msgstr "" + +#: ../../features/notifications.rst:63 +msgid "Email to speakers with their point total." +msgstr "" + +#: ../../features/notifications.rst:65 +msgid "Available through the \"Confirm Round Completion\" page." +msgstr "" + +#: ../../features/notifications.rst:66 +msgid "``{{ URL }}``: The URL of the team standings page (if public)" +msgstr "" + +#: ../../features/notifications.rst:67 +msgid "``{{ TEAM }}``: The team's name" +msgstr "" + +#: ../../features/notifications.rst:68 +msgid "``{{ POINTS }}``: The team's number of points" +msgstr "" + +#: ../../features/notifications.rst:70 +msgid "**Motion release**" +msgstr "" + +#: ../../features/notifications.rst:72 +msgid "Email to speakers with the motion(s) of the current round." +msgstr "" + +#: ../../features/notifications.rst:75 +msgid "``{{ ROUND }}``: The name of the round" +msgstr "" + +#: ../../features/notifications.rst:76 +msgid "``{{ MOTIONS }}``: A list of the motions released" +msgstr "" + +#: ../../features/notifications.rst:78 +msgid "**Team information**" +msgstr "" + +#: ../../features/notifications.rst:80 +msgid "Email to speakers with information pertaining to their team, such as eligibility and codes." +msgstr "" + +#: ../../features/notifications.rst:82 +msgid "Available through the Participants page." +msgstr "" + +#: ../../features/notifications.rst:83 +msgid "``{{ SHORT }}``: The team's short name" +msgstr "" + +#: ../../features/notifications.rst:84 +msgid "``{{ LONG }}``: The team's long name" +msgstr "" + +#: ../../features/notifications.rst:85 +msgid "``{{ CODE }}``: The team's code name" +msgstr "" + +#: ../../features/notifications.rst:86 +msgid "``{{ EMOJI }}``: The team's assigned emoji" +msgstr "" + +#: ../../features/notifications.rst:87 +msgid "``{{ DIVISION }}``: The team's division if applicable" +msgstr "" + +#: ../../features/notifications.rst:88 +msgid "``{{ BREAK }}``: Break categories which the team is a member" +msgstr "" + +#: ../../features/notifications.rst:89 +msgid "``{{ SPEAKERS }}``: A list of the speakers in the team" +msgstr "" + +#: ../../features/notifications.rst:90 +msgid "``{{ INSTITUTION }}``: The team's affiliation" +msgstr "" + +#: ../../features/notifications.rst:93 +msgid "Event Webhook" +msgstr "" + +#: ../../features/notifications.rst:95 +msgid "With SendGrid, the status of sent emails can be sent to Tabbycat to be displayed, giving an indication of failures and whether participants have opened the messages. To activate this feature, setup must be done both in your SendGrid account and in Tabbycat." +msgstr "" + +#: ../../features/notifications.rst:97 +msgid "Set a secret key in the Email section of the tournament's preferences. This key must be alphanumeric without any spaces." +msgstr "" + +#: ../../features/notifications.rst:98 +msgid "Copy the \"web-hook\" link presented in a box at the top of the \"email participants\" page." +msgstr "" + +#: ../../features/notifications.rst:99 +msgid "Go to https://app.sendgrid.com/settings/mail_settings and select \"Event Notifications\"" +msgstr "" + +#: ../../features/notifications.rst:100 +msgid "Enable the feature and paste the Tabbycat URL under \"HTTP POST URL\"." +msgstr "" + +#: ../../features/notifications.rst:101 +msgid "Select the notifications to keep track (or all of them)." +msgstr "" + +#: ../../features/notifications.rst:103 +msgid "Each email and change in status sent to Tabbycat will add a row to the database. If the number of rows is limited, as is for free Heroku apps, enabling the webhook may use up a significant number of rows. Be selective in the events to keep track." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/preformed-panels.po b/docs/locale/kk/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..79b63167b6e --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/preformed-panels.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-27 08:04\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: kk_KZ\n" + +#: ../../features/preformed-panels.rst:5 +msgid "Preformed Panels" +msgstr "Алдын-ала бекітілген құрам" + +#: ../../features/preformed-panels.rst:7 +msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." +msgstr "" + +#: ../../features/preformed-panels.rst:9 +msgid "Tabbycat's implementation of preformed panels is more powerful, but less simple, than many others. The chief difference is that our workflow does not simply transpose a linear set of preformed panels atop a draw. Instead we employ Tabbycat's existing allocation tools, primarily the notion of a debate's *priority*, to allow for a non-linear matching of preformed panels that avoids adjudicator conflicts and better adapts to a given draw — particularly when the most important debates do not strictly follow the highest debate brackets." +msgstr "" + +#: ../../features/preformed-panels.rst:11 +msgid "The central concept is that each preformed panel has a priority value. When applying preformed panels to a draw, the allocator ties to best match the priority value of each preformed panel to the priority of each actual debate. This is similar to how Tabbycat's normal auto-allocator matches the strength of each panel (as measured by adjudicators' ratings) to the priority of each debate." +msgstr "" + +#: ../../features/preformed-panels.rst:14 +msgid "Step 1: Create preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:16 +msgid "You can find the preformed panels section either" +msgstr "" + +#: ../../features/preformed-panels.rst:18 +msgid "under the **Setup** menu (for all rounds), or" +msgstr "" + +#: ../../features/preformed-panels.rst:19 +msgid "on the **Draw** page (for the current and next round)." +msgstr "" + +#: ../../features/preformed-panels.rst:21 +msgid "Initially, the preformed panels page will have no panels. Click the **Create Panels** button in the top left to make some. The panels it creates are based upon a projection of that round's general results using the results of the previous round. As a result, each preformed panel will have a *bracket range*, the lowest and highest brackets that debate might be in, and a *liveness range*, the maximum number of teams that could be live in that room." +msgstr "" + +#: ../../features/preformed-panels.rst:25 +msgid "Like the normal adjudicator allocation interface, the preformed panel interfaces will indicate when an adjudicator has not been marked as available. If using preformed panels, you may want to set adjudicator availability earlier than you would otherwise." +msgstr "" + +#: ../../features/preformed-panels.rst:27 +msgid "Liveness in the anticipated draw only pertains to the open category (the first break category that is marked as a \"general\" category). It's not possible to meaningfully predict where teams open-dead but live in other categories will end up." +msgstr "" + +#: ../../features/preformed-panels.rst:30 +msgid "Step 2: Assign priorities to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:32 +msgid "By default the priority slider for all preformed panels is in the neutral position. You can use the \"Prioritise\" button in the top left to assign priority values automatically, based upon their brackets or liveness. Before or after this step you can alter the priorities as usual — even after you have allocated adjudicators." +msgstr "" + +#: ../../features/preformed-panels.rst:34 +msgid "It's important to remember to assign a range of priorities to the panels. Without distinct priority values, the application of your preformed panels to the actual draw will be essentially random. If allocating priorities manually, it is a good idea to keep a relatively even distribution of priorities — use the range!" +msgstr "" + +#: ../../features/preformed-panels.rst:36 +msgid "In Round 1, each debate has a liveness and bracket of 0. If you are using preformed panels in this instance you may need to manually-differentiate their priorities." +msgstr "" + +#: ../../features/preformed-panels.rst:39 +msgid "Step 3: Allocate adjudicators to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:43 +msgid "Now that your panels have a priority, you can begin allocating adjudicators. You can do this manually, but do note that the normal auto-allocator for adjudicators also works in this context (the \"Allocate\" button). Even if you want to tweak your panels extensively, the auto-allocator can provide a good first-pass collection of panels, because it will give stronger adjudicators to the panels that you have marked as important." +msgstr "" + +#: ../../features/preformed-panels.rst:45 +msgid "The created panels all auto-save, so you can leave the page and return to pick up where you left. Like the main allocation interface, changes should appear 'live' across different computers and the sharding system is available to divide up each person's view of the draw." +msgstr "" + +#: ../../features/preformed-panels.rst:48 +msgid "Step 4: Generate the draw" +msgstr "" + +#: ../../features/preformed-panels.rst:50 +msgid "Proceed with the creation of the draw as usual. Open up the normal adjudicator allocation page for that round." +msgstr "" + +#: ../../features/preformed-panels.rst:53 +msgid "Step 5: Assign priorities to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:55 +msgid "When allocating preformed panels, the priority levels are what connects the preformed panels to the actual debates. It is thus crucial that you assign priorities to the debates in the actual draw using automatic prioritisation or the manual sliders. Because the automatic prioritiser does not employ the highest priority value, it is worth having a look at the draw and seeing if any debates justify this before proceeding." +msgstr "" + +#: ../../features/preformed-panels.rst:58 +msgid "Step 6: Allocate preformed panels to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:60 +msgid "To allocate preformed panels to your debates, click the normal \"Allocate\" button and then select the *Preformed Panels* option." +msgstr "" + +#: ../../features/preformed-panels.rst:64 +msgid "This will then allocate the preformed panels to debates." +msgstr "" + +#: ../../features/preformed-panels.rst:68 +msgid "You can the edit the allocation as normal. If needed, you can redo the allocation of the preformed panels at any point." +msgstr "" + +#: ../../features/preformed-panels.rst:71 +msgid "How does the allocator work?" +msgstr "" + +#: ../../features/preformed-panels.rst:73 +msgid "Roughly speaking, the allocator tries to match panel priorities to debate priorities, while avoiding conflicts. It'll mostly try to swap panels within priority levels in order to avoid conflicts. If there aren't exactly as many panels at each priority level as there are debates, it'll do its best to match what it can." +msgstr "" + +#: ../../features/preformed-panels.rst:75 +msgid "More formally, it treats the allocation of preformed panels to debates as an `assignment problem `_, with a cost of assigning each panel :math:`p` to each debate :math:`d` given by" +msgstr "" + +#: ../../features/preformed-panels.rst:77 +msgid "C(p,d) = w_\\mathrm{mism} [\\mathrm{importance}(p) - \\mathrm{importance(d)}]^2 + w_\\mathrm{conf} \\, \\mathrm{conflicts}(p,d) + w_\\mathrm{hist} \\, \\mathrm{history}(p,d)" +msgstr "" + +#: ../../features/preformed-panels.rst:81 +msgid "where" +msgstr "" + +#: ../../features/preformed-panels.rst:83 +msgid ":math:`w_\\mathrm{mism}` is the \"Importance mismatch penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:84 +msgid ":math:`w_\\mathrm{hist}` is the \"Adjudicator conflict penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:85 +msgid ":math:`w_\\mathrm{conf}` is the \"Adjudicator history penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:86 +msgid ":math:`\\mathrm{importance}(p)` is the importance of panel :math:`p`," +msgstr "" + +#: ../../features/preformed-panels.rst:87 +msgid ":math:`\\mathrm{importance}(d)` is the importance of debate :math:`d`," +msgstr "" + +#: ../../features/preformed-panels.rst:88 +msgid ":math:`\\mathrm{conflicts}(p,d)` is the number of adjudicator-team conflicts between panel :math:`p` and debate :math:`d`, and" +msgstr "" + +#: ../../features/preformed-panels.rst:89 +msgid ":math:`\\mathrm{history}(p,d)` is the number of adjudicators and teams who have seen each other between panel :math:`p` and debate :math:`d`." +msgstr "" + +#: ../../features/preformed-panels.rst:91 +msgid "It then uses the `Hungarian algorithm `_ to find the assignment of panels to debates that minimizes the total cost of the pairings." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/printing.po b/docs/locale/kk/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..00718398f96 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/printing.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: kk_KZ\n" + +#: ../../features/printing.rst:3 +msgid "Printing Ballots and Feedback" +msgstr "" + +#: ../../features/printing.rst:5 +msgid "Tabbycat offers the ability to print scoresheets and feedback sheets on a per-round basis. This means that each scoresheet is customised to match the draw, and so will display:" +msgstr "" + +#: ../../features/printing.rst:7 +msgid "The motion or possible motions that could have been chosen from" +msgstr "" + +#: ../../features/printing.rst:8 +msgid "The teams, and a list of speakers for each team" +msgstr "" + +#: ../../features/printing.rst:9 +msgid "The room number, and name of the adjudicators present" +msgstr "" + +#: ../../features/printing.rst:11 +msgid "Feedback sheets will also be customised in this manner; displaying:" +msgstr "" + +#: ../../features/printing.rst:13 +msgid "A 'from' source. Sheet will be printed for each possible piece of feedback in that room: ie adjudicators will each get a sheet for their panellists and trainees while teams and panellists will get sheets for the chair." +msgstr "" + +#: ../../features/printing.rst:14 +msgid "The specific questions you established when configuring the :ref:`adjudicator feedback questions `" +msgstr "" + +#: ../../features/printing.rst:15 +msgid "The room number" +msgstr "" + +#: ../../features/printing.rst:17 +msgid "To print the ballots for each round, you would go to the **Display** page for that round, the click one of the two relevant print links. This opens a new window. In each window, you then use your browser's print function (CTRL-P). In the resulting print interface (from your browser) you'll want to turn background graphics on, header/footers off, and set the layout to portrait (feedback sheets) or landscape (score sheets)." +msgstr "" + +#: ../../features/printing.rst:19 +msgid "Typically you'd save these to PDF for printing, although you should be able to print straight from this dialogue box." +msgstr "" + +#: ../../features/printing.rst:21 +msgid "Printing works best in Safari and Firefox; use those if possible." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/standings-rules.po b/docs/locale/kk/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..7c255ae6548 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/standings-rules.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: kk_KZ\n" + +#: ../../features/standings-rules.rst:5 +msgid "Standings Rules" +msgstr "" + +#: ../../features/standings-rules.rst:8 +msgid "Team standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:10 +msgid "In Tabbycat, you can choose how teams are ranked in the team standings. For example, at Australs, teams are ranked first on the number of wins, and second on their total speaker score. The setting that specifies how teams are ranked is called the **team standings precedence**. The team standings precedence is used:" +msgstr "" + +#: ../../features/standings-rules.rst:15 +msgid "When displaying the team tab," +msgstr "" + +#: ../../features/standings-rules.rst:16 +msgid "Whenever a power-paired draw is generated, and" +msgstr "" + +#: ../../features/standings-rules.rst:17 +msgid "When computing which teams are in the break." +msgstr "" + +#: ../../features/standings-rules.rst:19 +msgid "When you choose the team standings precedence, you choose from a list of *metrics*. Then, in the standings, teams will be sorted first by the first metric, then by the second metric, and so on. You must choose at least one metric, and you can choose up to eight. Teams tied on all metrics will have the same rank." +msgstr "" + +#: ../../features/standings-rules.rst:25 +msgid "If you like, you can also choose **team standings extra metrics**, which are metrics that will be shown in the team standings, but not used to rank teams." +msgstr "" + +#: ../../features/standings-rules.rst:33 ../../features/standings-rules.rst:132 +msgid "Metric" +msgstr "" + +#: ../../features/standings-rules.rst:34 ../../features/standings-rules.rst:133 +msgid "Description" +msgstr "" + +#: ../../features/standings-rules.rst:36 +msgid "Wins" +msgstr "" + +#: ../../features/standings-rules.rst:37 +msgid "How many debates the team has won." +msgstr "" + +#: ../../features/standings-rules.rst:39 +msgid "Points" +msgstr "" + +#: ../../features/standings-rules.rst:40 +msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." +msgstr "" + +#: ../../features/standings-rules.rst:44 +msgid "Total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:45 +msgid "The sum of all speaker scores attained in all debates." +msgstr "" + +#: ../../features/standings-rules.rst:47 +msgid "Average total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:48 ../../features/standings-rules.rst:157 +msgid "The average total speaker score over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:51 +msgid "Average individual speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:52 +msgid "The total substantive speaker score, over all debates the team has had and the number of speakers. Provides an equivalent metric to average total speaker score in no-reply formats, but within the substantive speech scoring range." +msgstr "" + +#: ../../features/standings-rules.rst:57 +msgid "Speaker score standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:58 +msgid "The standard deviation of total speaker scores over all debates the team has had, not counting debates where they or their opponents forfeited. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:63 +msgid "Sum of margins" +msgstr "" + +#: ../../features/standings-rules.rst:64 +msgid "The sum of all margins. Wins are positive, losses are negative." +msgstr "" + +#: ../../features/standings-rules.rst:66 +msgid "Average margin" +msgstr "" + +#: ../../features/standings-rules.rst:67 +msgid "The average margin over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:70 +msgid "Draw strength by wins" +msgstr "" + +#: ../../features/standings-rules.rst:71 +msgid "The sum of the number of wins of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:73 +msgid "This is also known in some circuits as *win points*, *opponent wins* or *opponent strength*." +msgstr "" + +#: ../../features/standings-rules.rst:76 +msgid "Draw strength by speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:77 +msgid "The sum of speaker scores of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:79 +msgid "Votes/ballots carried" +msgstr "" + +#: ../../features/standings-rules.rst:80 +msgid "The number of adjudicators that gave this team a win across all of their debates. Also known as the number of *ballots* or *judges* a team has." +msgstr "" + +#: ../../features/standings-rules.rst:83 +msgid "In cases where the panel is smaller or larger than 3, this number is normalised to be out of 3. For example, if a panel of five splits 3--2, then the winning team is recorded as gaining 1.8 votes, and the losing team is recorded as gaining 1.2. This also means that solo adjudicators are always worth three votes." +msgstr "" + +#: ../../features/standings-rules.rst:89 +msgid "Number of firsts" +msgstr "" + +#: ../../features/standings-rules.rst:90 +msgid "The number of debates in which the team came first. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:93 +msgid "Number of seconds" +msgstr "" + +#: ../../features/standings-rules.rst:94 +msgid "The number of debates in which the team came second. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:97 +msgid "Number of pullups before this round" +msgstr "" + +#: ../../features/standings-rules.rst:98 +msgid "The number of times the team has been pulled up as part of :ref:`draw generation `. You probably wouldn't use this as a metric to rank teams, but you may wish to display it as an \"extra metric\" in the team standings for transparency." +msgstr "" + +#: ../../features/standings-rules.rst:103 +msgid "Who-beat-whom" +msgstr "" + +#: ../../features/standings-rules.rst:104 +msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." +msgstr "" + +#: ../../features/standings-rules.rst:110 +msgid "If there are more than two teams tied, this metric is not applied." +msgstr "" + +#: ../../features/standings-rules.rst:112 +msgid "This metric can be specified multiple times. Each time who-beat-whom occurs, it applies to all the metrics earlier in the precedence than the occurrence in question." +msgstr "" + +#: ../../features/standings-rules.rst:118 +msgid "Speaker standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:120 +msgid "The speaker standings precedence is only used in speaker standings (*i.e.*, it doesn't affect the operation of the tournament). As for team standings, the **speaker standings precedence** specifies which metrics are used to rank speakers, with the second metric tie-breaking the first, the third tie-breaking the second, and so on. The **speaker standings extra metrics** are metrics that will be shown in the speaker standings, but won't be used to rank speakers." +msgstr "" + +#: ../../features/standings-rules.rst:135 +msgid "Total" +msgstr "" + +#: ../../features/standings-rules.rst:136 +msgid "The sum of all speaker scores attained by the speaker. Note that if a speaker misses a round, they'll typically be relegated to the bottom of the speaker standings by this metric." +msgstr "" + +#: ../../features/standings-rules.rst:140 +msgid "Average" +msgstr "" + +#: ../../features/standings-rules.rst:141 +msgid "The average of all speaker scores attained by the speaker." +msgstr "" + +#: ../../features/standings-rules.rst:143 +msgid "Trimmed mean" +msgstr "" + +#: ../../features/standings-rules.rst:144 +msgid "The average speaker score after excluding their highest and lowest speaker scores. Also known as the *high-low drop*, *truncated mean* or *Olympic average*." +msgstr "" + +#: ../../features/standings-rules.rst:148 +msgid "If the speaker has only one or two scores, this metric just returns the average of those scores, without excluding any." +msgstr "" + +#: ../../features/standings-rules.rst:151 +msgid "Standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:152 +msgid "The standard deviation of all speaker scores attained by the speaker. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:156 +msgid "Average speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:160 +msgid "Number of speeches given" +msgstr "" + +#: ../../features/standings-rules.rst:161 +msgid "The number of speaker scores associated with the speaker. (In tournaments where teams can rotate speakers, this may not be all rounds.) This metric is normally used as an \"extra\" (unranked) metric, because it'd be weird to rank by number of speeches given, but you can if you want to." +msgstr "" + +#: ../../features/standings-rules.rst:168 +msgid "Motion balance" +msgstr "" + +#: ../../features/standings-rules.rst:170 +msgid "The motion balance page applies a statistical test to estimate the degree to which a motion is imbalanced. This is calculated by first making an underlying assumption that a motion is generally fair. This will be our null hypothesis: that, for a given motion, affirmative teams won the same number of times as negative teams." +msgstr "" + +#: ../../features/standings-rules.rst:172 +msgid "Our chi-squared test will then be centred around disproving this hypothesis. If we disprove the hypothesis, we say that, in the context of this tournament and this draw, the motion ended up being unbalanced. However (technically speaking) if we fail to reject the null hypothesis, we would conclude that there is insufficient evidence to suggest that the motion was unbalanced in the context of this tournament." +msgstr "" + +#: ../../features/standings-rules.rst:174 +msgid "The test proceeds by `calculating the chi-squared stat, then running a series of tests `_. The tests are where we go a little off-book with respect to statistical methodology. Normally we would test at a single \"level of significance\" (ie. with a certain degree of certainty), but that's insufficient in telling us how bad a motion ended up being. So, instead, we conduct a range of tests with a range of levels of significance, and calculate the minimum level of significance that causes our null hypothesis to be rejected. Using the minimum level of significance that rejects our null hypothesis, we can then grade the fairness of the motion on a scale. Motions whose tests fall below a certain threshold will be considered fair, while others will be graded based on the minimum." +msgstr "" + +#: ../../features/standings-rules.rst:176 +msgid "For formats with topic selection, the same test is applied using the number of affirmative and negative vetoes in place of wins. The assumption here is that, during the time allotted for motion selection, teams estimate how appealing a motion is from their position, and then veto the topic that they feel is least favourable. Thus, the null hypothesis is that a motion that is perceived of as fair would be vetoed by affirmative and negative teams to an equal degree." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/team-code-names.po b/docs/locale/kk/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..c0fdbe4dca1 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/team-code-names.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: kk_KZ\n" + +#: ../../features/team-code-names.rst:5 +msgid "Team Code Names" +msgstr "" + +#: ../../features/team-code-names.rst:7 +msgid "Some tournaments use \"code names\" to obscure the institutional affiliations of teams. For example, rather than calling a team \"Harvard DK\", they would be presented in the draw as \"Butterfly\". A natural way to do this would be just to change the name of every team, but then the team's \"real name\" would be hidden from tournament staff, too." +msgstr "" + +#: ../../features/team-code-names.rst:13 +msgid "Instead, Tabbycat allows you to assign code names to teams, alongside their real names. This way, you can have code names show to participants, while real team names show in administrative views (*e.g.* allocating adjudicators). It also allows you to \"decode\" team names for elimination rounds or final tab release easily, without having to actually change every team's name." +msgstr "" + +#: ../../features/team-code-names.rst:19 +msgid "While the most frequently-used public views have been checked to ensure that they show only code names, not all views have been checked thoroughly. Please check views using demonstration data on a test site, configured in the same way that you would use it at your tournament, before using code names at a real tournament." +msgstr "" + +#: ../../features/team-code-names.rst:26 +msgid "Assigning code names" +msgstr "" + +#: ../../features/team-code-names.rst:28 +msgid "Most methods of importing teams, including the simple importer and the ``importtournament`` command, automatically assign code names to teams. The code name is the name of the emoji that is automatically assigned at the same time. For example, the team assigned 🦋 will be code-named \"Butterfly\"." +msgstr "" + +#: ../../features/team-code-names.rst:33 +msgid "If you wish to use your own code names, you need to set the \"code name\" field of each team. Here are two ways to do this:" +msgstr "" + +#: ../../features/team-code-names.rst:36 +msgid "**Edit Database area:** Enter the Edit Database area, and under **Participants > Teams**, click **Change**. Modify each team one by one, entering a new code name then saving." +msgstr "" + +#: ../../features/team-code-names.rst:39 +msgid "``importtournament`` **command:** If you imported a tournament from CSV files, you can just add a ``code_name`` column to your teams CSV file." +msgstr "" + +#: ../../features/team-code-names.rst:43 +msgid "Displaying code names" +msgstr "" + +#: ../../features/team-code-names.rst:45 +msgid "Code names are disabled by default; to enable then, go to **Setup > Configuration > Public Options**, and change the **Team code names** option. You can choose between the following options:" +msgstr "" + +#: ../../features/team-code-names.rst:49 +msgid "Do not use code names" +msgstr "" + +#: ../../features/team-code-names.rst:50 +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: ../../features/team-code-names.rst:51 +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:52 +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:53 +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: ../../features/team-code-names.rst:55 +msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." +msgstr "" + +#: ../../features/team-code-names.rst:58 +msgid "One typical use is as follows:" +msgstr "" + +#: ../../features/team-code-names.rst:60 +msgid "Before the tournament, set the team code names setting to *Use code names for public; real names with code names in tooltips for admins*. This hides real names from anything participants would see, but continues to refer to teams in administrative views by real names." +msgstr "" + +#: ../../features/team-code-names.rst:64 +msgid "After the break is announced, set it to *Use real names everywhere, and show code names in tooltips*. This basically decodes all team names, while still allowing people to look up the (now former) code name of a team." +msgstr "" + +#: ../../features/team-code-names.rst:68 +msgid "If you're enabling team codes, you probably want to disable the **Show team institutions** option too." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/user-accounts.po b/docs/locale/kk/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..4cc08479e9b --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/user-accounts.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: kk_KZ\n" + +#: ../../features/user-accounts.rst:5 +msgid "User Accounts" +msgstr "" + +#: ../../features/user-accounts.rst:7 +msgid "For obvious reasons, user logins are required to data entry and administrative functions. Conceptually, there are four levels of access:" +msgstr "" + +#: ../../features/user-accounts.rst:14 +msgid "Access" +msgstr "" + +#: ../../features/user-accounts.rst:15 +msgid "Should be used by" +msgstr "" + +#: ../../features/user-accounts.rst:16 +msgid "Grants access to" +msgstr "" + +#: ../../features/user-accounts.rst:17 +msgid "Is capable of" +msgstr "" + +#: ../../features/user-accounts.rst:19 +msgid "Public" +msgstr "" + +#: ../../features/user-accounts.rst:20 +msgid "The public" +msgstr "" + +#: ../../features/user-accounts.rst:21 +msgid "Publicly available information." +msgstr "" + +#: ../../features/user-accounts.rst:22 +msgid "Viewing things, and submitting new ballots/feedback if electronic submission is permitted by the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:24 +msgid "Assistant" +msgstr "" + +#: ../../features/user-accounts.rst:25 +msgid "Data entry helpers" +msgstr "" + +#: ../../features/user-accounts.rst:26 +msgid "The assistant area" +msgstr "" + +#: ../../features/user-accounts.rst:27 +msgid "Entering, confirming and printing ballots and feedback, checking in ballots and people, and displaying the draw." +msgstr "" + +#: ../../features/user-accounts.rst:29 +msgid "Superuser" +msgstr "" + +#: ../../features/user-accounts.rst:30 +msgid "Chief adjudicators" +msgstr "" + +#: ../../features/user-accounts.rst:31 +msgid "The administrator and assistant areas" +msgstr "" + +#: ../../features/user-accounts.rst:32 +msgid "Generating draws, allocating adjudicators and venues, and editing ballots, feedback and adjudicator scores." +msgstr "" + +#: ../../features/user-accounts.rst:34 +msgid "Staff and superuser" +msgstr "" + +#: ../../features/user-accounts.rst:35 +msgid "Tab director" +msgstr "" + +#: ../../features/user-accounts.rst:36 +msgid "The administrator, assistant and Edit Database areas" +msgstr "" + +#: ../../features/user-accounts.rst:37 +msgid "Editing the database directly." +msgstr "" + +#: ../../features/user-accounts.rst:39 +msgid "If a user account on the tab system belongs to someone who is also a participant in the tournament (*e.g.*, a chief adjudicator), these two capacities are completely separate. User accounts are only used to regulate access to administrative functions. Tabbycat doesn't know about any relationship between user accounts, and who is participating in the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:42 +msgid "Account roles" +msgstr "" + +#: ../../features/user-accounts.rst:44 +msgid "You should create an account for each person who needs to access the tab system. When you create an account in the Edit Database area, there are checkboxes for **Superuser status** and **Staff access**. Superusers have access to the administrator area, and staff have access to the Edit Database area. You should grant permissions as follows:" +msgstr "" + +#: ../../features/user-accounts.rst:46 +msgid "Tab directors should get both superuser and staff status." +msgstr "" + +#: ../../features/user-accounts.rst:47 +msgid "Chief adjudicators and their deputies should get superuser status, but not staff status." +msgstr "" + +#: ../../features/user-accounts.rst:48 +msgid "Tab assistants (helping only with data entry) should get neither superuser nor staff status." +msgstr "" + +#: ../../features/user-accounts.rst:50 +msgid "Tournament participants (other than tab staff) do not need an account. Everything they need to know can be accessed without an account. If you're using electronic ballots or electronic feedback, they access these using a URL that only they know (see :ref:`private-urls`)." +msgstr "" + +#: ../../features/user-accounts.rst:52 +msgid "When doing data entry, users with superuser status should use the **assistant area**. The administrator area is intended for managing the tournament, and doesn't include someand should **not** in general be used for data entry. Specifically, the administrator area lacks checks that are important for data integrity assurance. It should be used only to override the normal :ref:`data entry ` procedure, for example, to unconfirm or modify a ballot." +msgstr "" + +#: ../../features/user-accounts.rst:54 +msgid "The **Edit Database** interface should not be used except where it is actually necessary. There are a few functions which require this, but as a principle, it shouldn't be used as a matter of course." +msgstr "" + +#: ../../features/user-accounts.rst:56 +msgid "In theory, you could grant an account staff status but not superuser status. But then they'd be allowed to edit the database, but not run the tournament, which would be weird." +msgstr "" + +#: ../../features/user-accounts.rst:59 +msgid "Adding accounts" +msgstr "" + +#: ../../features/user-accounts.rst:61 +msgid "To add an account:" +msgstr "" + +#: ../../features/user-accounts.rst:63 +msgid "Go to the Edit Database area of the site." +msgstr "" + +#: ../../features/user-accounts.rst:65 +msgid "Under **Authentication and Authorization**, click the **Add** link next to **Users**." +msgstr "" + +#: ../../features/user-accounts.rst:67 +msgid "Ask the user to enter a username, password and possibly email address." +msgstr "" + +#: ../../features/user-accounts.rst:69 +msgid "Only they should know what the password is." +msgstr "" + +#: ../../features/user-accounts.rst:70 +msgid "If you're hosting on the internet, all passwords should be at least moderately strong!" +msgstr "" + +#: ../../features/user-accounts.rst:71 +msgid "Passwords are not stored as raw passwords, so you can't figure out what their password is." +msgstr "" + +#: ../../features/user-accounts.rst:72 +msgid "The email address is optional." +msgstr "" + +#: ../../features/user-accounts.rst:73 +msgid "This email address is only used to reset their password if they forget it, and has nothing to do with the email address that Tabbycat uses to send emails to tournament participants (*e.g.* private URL links)." +msgstr "" + +#: ../../features/user-accounts.rst:75 +msgid "If they are being assigned superuser and/or staff status, check the relevant boxes." +msgstr "" + +#: ../../features/user-accounts.rst:77 +msgid "Click \"Save\" or \"Save and add another\"." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/features/venue-constraints.po b/docs/locale/kk/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..197e584ad1d --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/features/venue-constraints.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: kk_KZ\n" + +#: ../../features/venue-constraints.rst:5 +msgid "Venue Constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:7 +msgid "Tabbycat supports a basic form of venue constraints. A **venue constraint** is a requirement that a particular **team, adjudicator, institution** or **division** be assigned to a venue in a particular **venue category**. Typical uses would include:" +msgstr "" + +#: ../../features/venue-constraints.rst:12 +msgid "Meeting venue accessibility requirements of particular teams (*e.g.* step-free access)" +msgstr "" + +#: ../../features/venue-constraints.rst:14 +msgid "Placing adjudication core and tab team members close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:15 +msgid "Keeping all debates in a division in one location" +msgstr "" + +#: ../../features/venue-constraints.rst:17 +msgid "Constraints apply to **venue categories**, not individual venues. That is, you specify that (say) a team should be given a venue from a particular *list* of venues. Of course, it's permissible for a venue category to have only one venue in it." +msgstr "" + +#: ../../features/venue-constraints.rst:22 +msgid "The algorithm used to satisfy venue constraints is not guaranteed to be optimal. In some rare cases, it may propose an allocation that fails some constraints, even though some other allocation would have satisfied all (or more) constraints. In almost all practical circumstances, however, it should work, and save human effort (and time) in specially allocating rooms." +msgstr "" + +#: ../../features/venue-constraints.rst:29 +msgid "Adding venue categories" +msgstr "" + +#: ../../features/venue-constraints.rst:31 +msgid "Before you add venue constraints, you first need to add venue categories. Each venue category is a list of venues, typically satisfying a particular need. For example, you might have a category for each of the following:" +msgstr "" + +#: ../../features/venue-constraints.rst:35 +msgid "Venues with step-free access" +msgstr "" + +#: ../../features/venue-constraints.rst:36 +msgid "Venues that are close to general assembly (the briefing room)" +msgstr "" + +#: ../../features/venue-constraints.rst:37 +msgid "Venues that are close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:38 +msgid "Venues that are, or venues that are not, being live-streamed" +msgstr "" + +#: ../../features/venue-constraints.rst:40 +msgid "Each venue can be in as many categories as you like (or none at all)." +msgstr "" + +#: ../../features/venue-constraints.rst:44 +msgid "To add or edit venue categories, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Categories**. Note that this page will show all existing Venue Categories first before showing the blank forms that allow you to create new categories. Give your category a name (like \"Step-free access\"), assign it some venues, then click the \"Save Venue Categories\" button at the bottom of the page." +msgstr "" + +#: ../../features/venue-constraints.rst:47 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue categories\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:50 +msgid "Adding venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:52 +msgid "To add or edit venue constraints, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Constraints**. Note that this page will show all existing Venue Constraints first before showing the blank forms that allow you to create new categories. Note that the \"Constrainee ID\" field should let you select from a dropdown or type in the name of an adjudicator, institution, or team (rather than having to lookup the exact ID)." +msgstr "" + +#: ../../features/venue-constraints.rst:57 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue constraints\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:59 +msgid "For each constraint, you need to specify four things:" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "**Category**" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "The venue category to which the subject of this constraint should be locked." +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "**Priority**" +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "This is a number used to resolve conflicts between constraints. Constraints with higher priority (greater number) take precedence over those with lower priority. If none of your constraints will ever conflict, then the priority is arbitrary (but it must still be specified)." +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "**Subject content** **type**" +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "The type of subject to which this constraint relates: adjudicator, team, institution or division." +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "**Subject ID**" +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "Which adjudicator, team, institution or division the constraint relates to. The textbox takes a number (the ID of the object in the database), but you can search for the subject by clicking on the search icon next to it. This will bring up a table of objects of the type specified in \"subject content type\" for you to choose from. (You need to select the subject content type first.)" +msgstr "" + +#: ../../features/venue-constraints.rst:86 +msgid "Applying venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:88 +msgid "If you don't have any venue constraints for adjudicators, venue constraints are applied automatically when the draw is generated." +msgstr "" + +#: ../../features/venue-constraints.rst:91 +msgid "However, if you have one or more venue constraints for adjudicators, it's not possible to take adjudicator venue constraints into account during draw generation, because the adjudicator allocation isn't known then. You'll need to run the venue allocation yourself after you've allocated adjudicators." +msgstr "" + +#: ../../features/venue-constraints.rst:96 +msgid "To run venue allocation, go to **Edit Venues** (while looking at the draw), then in the screen where you can edit venues, click the **Auto Allocate** button. You can also do this at any other point (say, after adding a new venue constraint) if, for whatever reason, you would like to re-run the venue allocation algorithm." +msgstr "" + +#: ../../features/venue-constraints.rst:102 +msgid "If a venue constraint couldn't be met, a message will show in the \"conflicts/flags\" column of the draw. A constraint might not be met for a number of reasons:" +msgstr "" + +#: ../../features/venue-constraints.rst:106 +msgid "It could be that constraints of different parties (say, one team and one adjudicator) conflicted, so only one could be fulfilled." +msgstr "" + +#: ../../features/venue-constraints.rst:108 +msgid "It could be that all available rooms in the relevant category were already taken by other, higher-priority constraints." +msgstr "" + +#: ../../features/venue-constraints.rst:110 +msgid "It could just be one of those edge cases that's too hard for the naïve algorithm to handle." +msgstr "" + +#: ../../features/venue-constraints.rst:113 +msgid "Currently, Tabbycat doesn't tell you which of these happened, so if the venue allocation fails to meet all your constraints, it's on you to figure out why. In most scenarios, we imagine you'll have few enough constraints that this will be obvious; for example, if the chief adjudicator is judging a team with accessibility requirements, it might be obvious that the latter's constraint took priority. We might in future add support for more useful guidance on conflicting constraints, but we currently consider this to be of low priority." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/guide/comparisons.po b/docs/locale/kk/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..57af9b0faae --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/guide/comparisons.po @@ -0,0 +1,338 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: kk_KZ\n" + +#: ../../guide/comparisons.rst:5 +msgid "Tab Software Comparisons" +msgstr "" + +#: ../../guide/comparisons.rst:7 +msgid "If you're reading this, you're probably interested in using Tabbycat, and wondering how it compares to other options. Perhaps you're a long-time user of another tab system, and wondering what Tabbycat can do better. This page is our effort to help answer this. Tabbycat's been around since 2010, but since BP support is a recent addition (2017), we thought it would be useful to outline the differences between Tabbycat and other BP software." +msgstr "" + +#: ../../guide/comparisons.rst:9 +msgid "Obviously, this page is written by the developers of Tabbycat, and naturally, we have our biases. But rarely is there a single best option for everyone and every situation: different tab programs imagine the tabbing process in a different ways and have made unique trade-offs in their development process and design decisions. So we've tried to be as fair and accurate as we can, and we've consulted experienced tab directors (other than us!) and chief adjudicators to help provide a balanced overview." +msgstr "" + +#: ../../guide/comparisons.rst:11 +msgid "At present, this guide just focuses on the major options available for the British Parliamentary format, although we'd like to expand this to incorporate the other formats that Tabbycat supports at some point in the future. As with all of our documentation, the source for this page `is on GitHub `_, and we welcome feedback and contributions." +msgstr "" + +#: ../../guide/comparisons.rst:14 +msgid "On feature lists" +msgstr "" + +#: ../../guide/comparisons.rst:16 +msgid "In the first draft of this document, we had a table that listed every feature we could think of, along with which software does and doesn't support it. This ended up not being a great idea, for a couple of reasons." +msgstr "" + +#: ../../guide/comparisons.rst:18 +msgid "Firstly, the largest feature disparities are for relatively niche features. All of the software discussed can do the basics necessary to run a tournament: generate draws, allocate adjudicators, enter results, etc. As a result, we will — like a good whip speech — be comparative and note key feature disparities when discussing each alternative software directly." +msgstr "" + +#: ../../guide/comparisons.rst:20 +msgid "Secondly, we felt that the 'checklist' approach to comparing tab software would do a disservice to the reasons you would actually choose one software over another. Except where a niche capability is essential, raw technical specifications rarely define the experience of using a product such as a phone, a car, or indeed, tabbing software. With Tabbycat, we've spent eight years continuously refining the tabbing workflow and smoothing out rough edges, and we believe you'll find the result extremely user-friendly and robust. As always, the best way to check this out is by :ref:`setting up a demo site and taking it for a spin `!" +msgstr "" + +#: ../../guide/comparisons.rst:23 +msgid "Comparison with Tabbie2" +msgstr "" + +#: ../../guide/comparisons.rst:26 +msgid "Centralised site vs individual sites" +msgstr "" + +#: ../../guide/comparisons.rst:28 +msgid "Tabbie2 and Tabbycat are both internet-based systems. Tabbie2 hosts all tournaments on a single site. However, when using Tabbycat, each tournament or organisation sets up its own site. Each model has its advantages and disadvantages in different areas:" +msgstr "" + +#: ../../guide/comparisons.rst:30 +msgid "**User identification**. Tabbie2's centralised model allows for site-wide user accounts for all tournament participants. This means that they can use the same login information for all tournaments, and perform tasks such as submitting ballots and feedback through that unified account. If you're in an established circuit, most of your participants probably already have user accounts which are identified and collected (via e-mail addresses) during registration. If you're in a newer circuit, or one where Tabbie2 is rarely used, most of your participants will probably need to create an account — a process which Tabbie2 handles by e-mailing them a request to do so when that person is added to your tournament." +msgstr "" + +#: ../../guide/comparisons.rst:32 +msgid "In Tabbycat's decentralised model, there is no persistent 'account' for tournament participants on each tab site or across different tab sites. Indeed, the only people who can log in to the site are those who have been given accounts by the tab director, such as tab staff and members of the adjudication core." +msgstr "" + +#: ../../guide/comparisons.rst:34 +msgid "For secure e-ballot and e-feedback submissions, Tabbycat assigns a \"private URL\" to each adjudicator or team. This is essentially a password that allows a participant to only submit data that they should have access to in that specific tournament. This means participants don't need user accounts and you don't need to collect user account information; however if your tournament uses e-ballots or e-feedback you will need to distribute those private URLs to participants. Tabbycat can e-mail these to participants for you, or print them to give them to participants, or you could distribute the URLs using your own means." +msgstr "" + +#: ../../guide/comparisons.rst:36 +msgid "**Control over data**. Some participant information in Tabbie2 is shared between tournaments, like their names and conflicts (discussed below). This means participants can manage it directly through their user accounts, without needing to go through you. On the other hand, this requires your participants to co-operate in keeping their accounts up to date, and to provide the correct e-mail address during registration (you'd be surprised how many don't). Furthermore, participants may look to you for assistance, and your ability to help is limited to directing them through Tabbie2 channels—easy enough if they forget their password, but not so much if they forget their account's e-mail address." +msgstr "" + +#: ../../guide/comparisons.rst:38 +msgid "Because each Tabbycat site is its own, you'll need to collect and import all participant details yourself. This might seem like more to do, but it also means there's no need to match your data to existing accounts, which can be time-consuming and prone to participant error. It also means you can freely change data, for example, to correct a participant's name or institution, or to add data like conflicts on an ad-hoc basis." +msgstr "" + +#: ../../guide/comparisons.rst:40 +msgid "**Data privacy**. Conflicts are typically entered into the tab, and are sensitive information. Tabbie2's centralisation allows for conflicts to be self-nominated by users and stored in their user accounts. This, in theory, saves the need for users to report conflicts to tab directors and other tournament staff. In practice, however, only special \"super\" users on Tabbie2 have access to the stored conflicts of users (otherwise anyone could access a user's conflicts by creating a new tournament and adding that user as a participant), so many tournaments need to collect this information from participants anyway." +msgstr "" + +#: ../../guide/comparisons.rst:42 +msgid "Tabbycat's decentralised model means that no-one will have access to conflict information except for the tab staff of each individual instance of Tabbycat. Unlike Tabbie2, Tabbycat's developers do not have any access to your tournament's data — conflicts or otherwise. However, to help us continually improve the software, Tabbycat does send error reports to its developers if there is a serious bug or crash in the code, which could potentially contain confidential information depending on which page triggered the report. As a result of Tabbycat's decentralised data storage, each tournament does need to collect and enter conflicts as part of their registration process." +msgstr "" + +#: ../../guide/comparisons.rst:44 +msgid "**When things go wrong**. In our view, this is probably the most important factor. Obviously, we all hope you never have to fix things. But no software is perfect, and software developed by volunteers in their spare time (as both Tabbie2 and Tabbycat are) is especially imperfect. On occasion, glitches or edge cases occur, and fixing them requires you to directly edit the offending data in the database. Being able to do this without assistance can be the difference between a delay of minutes and a delay of hours." +msgstr "" + +#: ../../guide/comparisons.rst:46 +msgid "In Tabbycat, because it's your site, you have full control of the database, and can edit it through Tabbycat's \"Edit Database\" area. This allows you to fix things (or break things, if you're not careful!). Tabbie2's centralisation prevents this—for obvious reasons, only Tabbie2's developers have direct database access, which makes their intervention necessary if direct database access is required to resolve a problem." +msgstr "" + +#: ../../guide/comparisons.rst:49 ../../guide/comparisons.rst:138 +msgid "Running your tournament" +msgstr "" + +#: ../../guide/comparisons.rst:51 +msgid "Tabbie2 and Tabbycat have broadly similar workflows for running rounds; at least on paper. Key differences are discussed below:" +msgstr "" + +#: ../../guide/comparisons.rst:53 +msgid "**Data import**. Tabbie2 takes CSV files for import. Tabbycat has a CSV file importer, but it's (for now) only accessible through a command-line interface and is only expected to be used for large tournaments by experienced tab directors. As a more user-friendly alternative, Tabbycat also has an import wizard that's designed to make it easy to copy and paste CSV data. This works well for small and medium scale tournaments, but is cumbersome for large ones." +msgstr "" + +#: ../../guide/comparisons.rst:55 +msgid "**Public interface**. Tabbycat can optionally publish the entire draw, as well as current team point standings and results of previous rounds, online. Tabbie2 shows to a logged-in user information about the debate that user is in for that round, but doesn't allow people to check up on people who are not themselves." +msgstr "" + +#: ../../guide/comparisons.rst:57 +msgid "**Position rotation**. Tabbie2 uses an algorithm known as the \"Silver Line algorithm\", which keeps swapping pairs of teams until no further improvement is found. Because it stops at any 'local optimum', this method isn't guaranteed to be the best possible distribution of positions, and for large tournaments it often isn't. Tabbycat instead uses the `Hungarian algorithm `_, an well-known algorithm that finds the (globally) optimal allocation of positions. (One might describe this algorithm, in technical terms, as 'powerful'.) Tabbycat also produces a position balance report, so that in every round you can see which teams have unbalanced position histories." +msgstr "" + +#: ../../guide/comparisons.rst:59 +msgid "**Venue allocations**. Both Tabbie2 and Tabbycat allow for debate venues to be automatically assigned and manually edited. Tabbycat also allows you to specify 'venue constraints' that can automatically match particular participants with their accessibility requirements, or alternatively allow for tournament staff, such as a convenor or chief adjudicator, to be allocated rooms close to the briefing hall or tab room." +msgstr "" + +#: ../../guide/comparisons.rst:61 +msgid "**Ballot entry**. Both Tabbie2 and Tabbycat support entering ballots online ('e-ballots') and entering ballots from paper from the tab room. Tabbie2 was built with e-ballots in mind, while Tabbycat was originally built for tab room staff, and the ballot entry paradigms reflect that. Both are flexible, just a little different—the best way to understand the difference is to try a demo of each. Also, Tabbycat takes note of the order in which speakers in a team spoke (i.e. who was PM and who was DPM), whereas Tabbie2 just records scores." +msgstr "" + +#: ../../guide/comparisons.rst:63 +msgid "As discussed earlier in *User identification*; Tabbie2's e-ballots are tied to unified user accounts, whereas Tabbycat's e-ballots are tied to per-tournament and per-adjudicator 'private URLs'." +msgstr "" + +#: ../../guide/comparisons.rst:65 +msgid "**Break and speaker categories**. Tabbie2 has ESL, EFL and novice markers, which you can enable in a tournament's settings. Tabbycat supports user-defined break and speaker categories, so if your tournament has ESL, EFL, novice or any other form of category, you can define and customise those categories as needed." +msgstr "" + +#: ../../guide/comparisons.rst:67 +msgid "**Adjudicator allocation algorithm**. Both Tabbie2 and Tabbycat use an algorithm to recommend an initial allocation of adjudicators to debates. In principle, they both work by assigning \"costs\" to allocations, and trying to find the minimum-cost assignment. Some notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:69 +msgid "Tabbie2 uses simulated annealing, which is not guaranteed to be optimal and technically needs to be tuned to be effective (which you're probably not doing). Tabbycat uses the Hungarian algorithm, which guarantees an optimal solution." +msgstr "" + +#: ../../guide/comparisons.rst:70 +msgid "On the other hand, the Hungarian algorithm can't account for relationships between adjudicators on a panel, so adjudicator-adjudicator conflicts aren't considered by Tabbycat's algorithm (though they are highlighted in the interface)." +msgstr "" + +#: ../../guide/comparisons.rst:71 +msgid "Tabbycat's cost function is simpler and more naive. On the other hand, Tabbie2's is more complicated and can be rather opaque (even if you read its source code)." +msgstr "" + +#: ../../guide/comparisons.rst:72 +msgid "Tabbie2 allows for single-gender panels to be charged an additional cost. Tabbycat's algorithm doesn't, but the interface does provide a way to easily check for this visually." +msgstr "" + +#: ../../guide/comparisons.rst:73 +msgid "Tabbie2 automatically calculates the importance of a room based on its bracket (team points). In Tabbycat, debate importance can be assigned for all debates automatically based on on a room's bracket or the quantity of live break categories inside it. Instead of — or subsequent to — automatic classification any importance value can be manually tweaked as desired. These options mean there is a greater flexibility in determining which debates the allocation algorithm should prioritise." +msgstr "" + +#: ../../guide/comparisons.rst:75 +msgid "**Adjudicator allocation interface**. While both interfaces use drag and drop interactions, and allow for color highlights to help identify adjudicators by gender, region, and feedback rating, Tabbycat's allocation interface was designed to be usable on both small screens and projectors, and has a number of extra features that can help inform allocations. These features include:" +msgstr "" + +#: ../../guide/comparisons.rst:77 +msgid "Clashes are shown directly in the interface when they apply, but dragging an adjudicator will also show you the potential conflicts that would occur if they were relocated in a new panel. This can make it much easier to avoid creating new clashes when shifting adjudicators around the draw." +msgstr "" + +#: ../../guide/comparisons.rst:78 +msgid "An inline display of an estimate of whether a team is 'live' for each of their break categories — i.e. whether they are 'safe' (have enough points to break); 'dead' (cannot gain enough points to break); or 'live' (still in contention)." +msgstr "" + +#: ../../guide/comparisons.rst:79 +msgid "'History' conflicts (where an adjudicator has seen a team before, or previously was on a panel with another judge) are displayed so they can be avoided." +msgstr "" + +#: ../../guide/comparisons.rst:80 +msgid "Each adjudicator is present as occupying a particular position (chair, panellist, trainee) rather than having those positions calculated automatically." +msgstr "" + +#: ../../guide/comparisons.rst:81 +msgid "Chairs can be 'swapped' by dragging adjudicators on top of each other, and an 'unallocated' area can be used to view and store adjudicators that have not been allocated." +msgstr "" + +#: ../../guide/comparisons.rst:83 +msgid "**Adjudicator feedback customisation**. Both Tabbie2 and Tabbycat have built-in adjudicator feedback forms, and allow you to specify the questions on the feedback form. Notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:85 +msgid "Setting up questions is painless on neither system. Tabbycat requires you to use the Edit Database area; Tabbie2 makes you click through a slightly more opaque maze of pages and forms." +msgstr "" + +#: ../../guide/comparisons.rst:86 +msgid "Tabbycat allows for a richer range of types of questions than Tabbie2 does." +msgstr "" + +#: ../../guide/comparisons.rst:87 +msgid "Tabbie2 allows you to specify different questionnaires for team-on-chair, chair-on-panellist and panellist-on-chair. Tabbycat only differentiates between team-on-adjudicator and adjudicator-on-adjudicator." +msgstr "" + +#: ../../guide/comparisons.rst:88 +msgid "Tabbycat gives you more control over who is expected to submit feedback on whom; e.g. whether teams submit on panellists, and whether panellists submit on each other. In Tabbie2, you can effect this with blank questionnaires, but only for the three options listed above." +msgstr "" + +#: ../../guide/comparisons.rst:89 +msgid "Tabbycat can, optionally, automatically incorporate feedback into adjudicator scores using a naive weighted average with the adjudicator base score. This can be disabled by simply setting feedback weight to zero, as some adjudication cores prefer. Tabbie2 has no ability to automatically incorporate feedback." +msgstr "" + +#: ../../guide/comparisons.rst:90 +msgid "Tabbycat produces a \"shame list\" of unsubmitted feedback, which you can optionally publish on the public-facing site to try to incentivise submission." +msgstr "" + +#: ../../guide/comparisons.rst:92 +msgid "(How participants access adjudicator feedback submission is discussed in *User identification* above.)" +msgstr "" + +#: ../../guide/comparisons.rst:95 ../../guide/comparisons.rst:149 +msgid "Other considerations" +msgstr "" + +#: ../../guide/comparisons.rst:97 +msgid "**Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface." +msgstr "" + +#: ../../guide/comparisons.rst:99 +msgid "**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:101 +msgid "**Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level." +msgstr "" + +#: ../../guide/comparisons.rst:103 +#, python-format +msgid "**Hosting location**. Tabbycat recommends using Heroku, an established cloud platform service for deploying web applications. Heroku is in turn hosted on Amazon Web Services (AWS). Both Heroku and AWS are highly reliable and widely used; downtime for both has historically been (at worst) less than 0.05% over an annual period. Tabbie2 is hosted on `Uberspace `_; a pay-what-you-want web hosting service. To the best of our knowledge, uptime statistics are not available." +msgstr "" + +#: ../../guide/comparisons.rst:105 +msgid "**Multi-format support**. If you are interested in tabbing both four- and two- team formats there may be some value in using and learning Tabbycat as it will let you use the same software in both settings." +msgstr "" + +#: ../../guide/comparisons.rst:108 +msgid "Comparison with Tournaman" +msgstr "" + +#: ../../guide/comparisons.rst:111 +msgid "Native app vs web app" +msgstr "" + +#: ../../guide/comparisons.rst:113 +msgid "The crucial strength — and limitation — of Tournaman is that it is a Windows desktop application. Naturally, being a desktop app limits the features it can offer, relative to web apps like Tabbycat or Tabbie2, since it can't offer any online access. On the other hand, working with a desktop app can often be simpler than a web app." +msgstr "" + +#: ../../guide/comparisons.rst:115 +msgid "**Installation**. You'll need to run (or emulate) a Windows machine to run Tournaman. Assuming you're using Windows, Tournaman's installation process is easy and familiar." +msgstr "" + +#: ../../guide/comparisons.rst:117 +#, python-format +msgid "Tabbycat has a simple one-click installation process if you're deploying online (:ref:`to Heroku `). However, if you want to run Tabbycat on your own computer rather than a website, this is substantially more complicated. Local installations of Tabbycat work by having your computer emulate a web server, and while we've tried to make this as accessible as possible, a technical background is definitely helpful for this. Using our :ref:`Docker-based method ` should be simple, but it's not 100% reliable, and if it fails it can be difficult to figure out why. If internet access is available, we recommend running Tabbycat on Heroku." +msgstr "" + +#: ../../guide/comparisons.rst:119 +msgid "**Online features**. Because Tournaman runs fully offline, it naturally can't support many internet-based features: electronic ballots, online publication of draws and live team standings, and integrated tab release. Typically, if you wanted to publish anything online from Tournaman, you'd do so by publishing the files that Tournaman generates locally. In Tabbycat, all of these are built in, so there's a single website for all tab information." +msgstr "" + +#: ../../guide/comparisons.rst:121 +msgid "**Multi-user access**. Tournaman can be configured to allow networked ballot entry, but in order to set it up, you need to be comfortable with basic computer networking. This works best on small isolated networks that you control directly, e.g. a dedicated router set up in the tab room. It's not a great idea to set this up on computers connected to a university-wide network: many IT departments won't permit it, and even if they do, it's insecure, since anyone on the network can access it." +msgstr "" + +#: ../../guide/comparisons.rst:123 +msgid "Tournaman's multi-user access is designed primarily to allow tab assistants to enter data. Key administrative tasks, such as draw generation and adjudicator allocation, must still be done on the computer on which Tournaman is installed. In contrast, web-based systems like Tabbycat and Tabbie2 allow users to login from any internet-connected device to access the functionality permitted by their account. This is often extremely useful if, say, you want to log in to a lectern computer, or have tab assistants work on mobile devices that they have with them." +msgstr "" + +#: ../../guide/comparisons.rst:125 +msgid "If you choose to install Tabbycat offline (rather than on Heroku), it's also possible to have the computer on which the local installation resides serve the website to other computers on the same network. This then permits anyone on the same network to access the \"local\" installation as if it were hosted on the internet. However, like Tournaman, such a configuration requires at least basic networking experience, and for security reasons is only advisable on small isolated networks that you control." +msgstr "" + +#: ../../guide/comparisons.rst:127 +msgid "**Backups and portability**. Both Tournaman and Tabbycat (unlike Tabbie2) store data in a way that is completely accessible to you. Tournaman does this by saving files on your computer's hard drive, while Tabbycat stores data in a SQL database that belongs to you." +msgstr "" + +#: ../../guide/comparisons.rst:129 +msgid "It should be emphasized that in both Tournaman and Tabbycat, actually needing to revert to a backup is extremely rare. Almost always, any glitch or error that breaks the tab can be resolved by editing data directly, without needing to \"roll back\" to a previous state. In Tournaman, this is done by editing the files that it writes to your hard drive (they're just XML files). In Tabbycat, this is done through the \"Edit Database\" area." +msgstr "" + +#: ../../guide/comparisons.rst:131 +msgid "Tournaman's storage of data as XML files makes backups easy, although effort should be made to have backups stored on other computers or the cloud (e.g. on Dropbox) in case the tab computer breaks or is lost. Restoring data from those backups (or transferring the tab to a different computer) is typically a simple process of copying the files back to the original location." +msgstr "" + +#: ../../guide/comparisons.rst:133 +msgid "As for Tabbycat, in online installations, backups can be taken easily using Heroku's `database backup capability `_. However, restoring backups requires you to have the Heroku command line interface installed. In offline installations, PostgreSQL's \"dump\" and \"restore\" commands are recommended, and may require some perseverance to get going reliability, particularly if you don't have prior SQL experience." +msgstr "" + +#: ../../guide/comparisons.rst:135 +msgid "Generally there is no need for data portability when working with an online copy of Tabbycat — the website can be accessed anywhere. However if working with an offline/local copy, a tab can be transferred between machines by creating a backup of the database and restoring it to the other machine's database (doing so requires technical knowledge)." +msgstr "" + +#: ../../guide/comparisons.rst:140 +msgid "**Adjudicator feedback**. Tournaman lets you assign judges rankings, however it does not directly manage or assist the process of collecting judge feedback. As such tab directors generally need to run a parallel feedback system, and then manually copy over changes to an adjudicator's ranking into Tournaman itself. In contrast, Tabbycat has integrated methods for collecting judge feedback that allow it to be more easily issued, collected, viewed, and automatically translated into modifications to an adjudicator's rank." +msgstr "" + +#: ../../guide/comparisons.rst:142 +msgid "**Adjudicator allocation**. Tournaman has a fixed judge ranking scale and (from what we understand) has a relatively fixed procedure for allocating panels according to their absolute ranks. We are unsure about the exact mechanics of how this works, but broad details are `available here `_." +msgstr "" + +#: ../../guide/comparisons.rst:144 +msgid "As with the discussion of allocation interfaces vis-à-vis Tabbie2, there are a number of features in the Tabbycat allocation interface that mean it is more easily used in a collaborative setting and can display additional information to inform draws." +msgstr "" + +#: ../../guide/comparisons.rst:146 +msgid "**Flexibility in draw rules**. As we've said, all major tab systems are WUDC-compliant. But if you want to deviate from WUDC rules, Tournaman has a few more options. Whereas Tabbycat allows you to use intermediate brackets (rather than pull-ups), Tournaman allows you to sacrifice power-pairing integrity for position balance (though this generally isn't necessary to achieve position balance), fold within brackets and avoid teams hitting their own institution. On the other hand, Tabbycat allows you to tune how position balance trades off between teams (which the WUDC constitution doesn't precisely specify)." +msgstr "" + +#: ../../guide/comparisons.rst:151 +msgid "**Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2." +msgstr "" + +#: ../../guide/comparisons.rst:153 +msgid "**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:155 +msgid "**Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed." +msgstr "" + +#: ../../guide/comparisons.rst:158 +msgid "Comparison with hand tabbing" +msgstr "" + +#: ../../guide/comparisons.rst:160 +msgid "Hand tabbing is easy, until it isn't. Traditionally, using a spreadsheet has been the go-to option for smallish tournaments because, hey, you're pretty handy with Excel, right? Making draws in spreadsheets (or on paper) seems like a pretty approachable task; ultimately it's all cells and formulae and numbers unlike the more arcane underpinnings of actual tab software." +msgstr "" + +#: ../../guide/comparisons.rst:162 +msgid "However, hand tabbing does require you to have a good working knowledge of how your format's rules work and how your spreadsheet software of choice can be made to work them. That process might be easy for you, or it might not be. But, either way, we'd like to think that Tabbycat offers a better alternative to hand-tabbing; regardless of how well you can actually hand-tab. The setup costs of creating a copy of Tabbycat are pretty low and you can speed through the process of draw creation, adjudicator allocation, and result entry at a pace. It's still not going to be as fast a spreadsheet for a small tournament, but we think it's getting pretty close. And in exchange for a little speed you get a much stronger guarantee of your draws being correct, options for online data entry, a more comprehensive and shareable final tab, and much more. Give it a shot!" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/guide/scaling.po b/docs/locale/kk/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..34e335ec0ce --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/guide/scaling.po @@ -0,0 +1,252 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: kk_KZ\n" + +#: ../../guide/scaling.rst:5 +msgid "Scaling & Performance on Heroku" +msgstr "" + +#: ../../guide/scaling.rst:7 +msgid "If you expect your Tabbycat site to gain lots of traffic — either because it has lots of participants or will be followed by lots of people online — there are a number of strategies to ensure that it will remain fast despite this attention. This is typically only necessary for very large tournaments that will display information on the public-facing version of your Tabbycat site; and even then only minor amounts of 'scaling' are needed at particular moments. However, if your site does become slow you want to know what to do and how to do it ahead of time in order to prevent disruptions." +msgstr "" + +#: ../../guide/scaling.rst:9 +msgid "By default, a Tabbycat installation runs on Heroku's free tier. This is a resource-constrained environment and improving performance will typically require paying for higher levels of Heroku services. These services are billed on a per-minute (not monthly) basis, meaning that if you make use of any upgrades mentioned below, you will only be billed for the actual duration used — i.e. if an upgrade is listed at $100/month, but you only use it for 4 hours, the final bill will be around $0.50. As such you can make use of high-performing resources just when they are needed, without needing to pay the full monthly price to maintain the resource indefinitely." +msgstr "" + +#: ../../guide/scaling.rst:13 +msgid "This page was largely written before a number of improvements in the ``2.2`` release of Tabbycat that have significantly increased traffic capacity. Its recommendations may be overly cautious given these improvements." +msgstr "" + +#: ../../guide/scaling.rst:17 +msgid "Scaling for performance reasons is a separate issue to that of `upgrading the database capacity `_ of your tab which just provides the ability to store data. That said, typically only tournaments that are large enough to need an upgraded database will be the ones that ever need to consider scaling for performance anyway." +msgstr "" + +#: ../../guide/scaling.rst:20 +msgid "Introduction to Scaling" +msgstr "" + +#: ../../guide/scaling.rst:22 +msgid "Heroku's primary resource is that of a 'dyno'. Each dyno can be thought of as running a copy of Tabbycat. Following the 'many hands make light work' principle, running a greater number of dynos will generally improve the ability of your site to serve lots of pages simultaneously because traffic is divided up amongst all of the available dynos. In normal circumstances most Tabbycat pages on the public site are served by Heroku in under a second; however they can take noticeably longer than that when the quantity of incoming traffic exceeds the capacity of the existing dyno(s) to serve it. In such cases the delay accrues because the excess page loads need to first wait for an available dyno in addition to the standard wait for a page to be processed and transferred to the user." +msgstr "" + +#: ../../guide/scaling.rst:24 +msgid "Thus scaling is almost always a process of increasing *throughput* in order to decrease the chance that any page load needs to wait in order to be served by a dyno. On the flip side, having extra dynos or upgraded dynos won't make Tabbycat itself run any faster in general — they are essentially wasted unless there is sufficient large amounts of traffic that a single dyno cannot serve all of it without creating a queue." +msgstr "" + +#: ../../guide/scaling.rst:26 +msgid "Dynos can be scaled by adding more dynos ('horizontally') or by adding upgraded dynos ('vertically'). In general, horizontal scaling should be the first and most effective strategy — the problem traffic causes is due to *concurrency* or lots of people loading lots of pages all at once. The traffic on Tabbycat sites typically fluctuates a lot, with moments of high intensity clustering around draw releases, round advances, and the final tab release. As such you generally only need to scale your dynos for very short periods of time." +msgstr "" + +#: ../../guide/scaling.rst:28 +msgid "In order to increase the number of dynos you first need to be using at least the **Standard 1X** level of dyno. Once set the Heroku Dashboard will show you a slider that can be used to increase the dyno count. While dynos higher than the **Standard 1X** level may help serve pages a tiny bit faster, having *more* dynos is far more effective than having *upgraded* dynos. Upgrading beyond **Standard 1X** is generally only required if you need additional memory (as described below) or want to use auto-scaling (also described below)." +msgstr "" + +#: ../../guide/scaling.rst:32 +msgid "There should be no need to increase the number of 'worker' dynos. While 'web' dynos are responsible for serving traffic, the worker only handles a few rare tasks such as serving email and creating allocations." +msgstr "" + +#: ../../guide/scaling.rst:34 +msgid "At large tournaments you should always upgrade your existing '**Free**' dyno to a '**Hobby**'-level dyno. This upgrade is crucial as it will enable a \"Metrics\" tab on your Heroku dashboard that provides statistics which are crucial to understanding how your site is performing and how to improve said performance. If you are at all unsure about how your site will perform it is a good idea to do this pre-emptively and keep an eye on these metrics over the course of the tournament." +msgstr "" + +#: ../../guide/scaling.rst:38 +msgid "If pages are not loading it could be due to two things: your site being overloaded with traffic, or a bug in Tabbycat itself. Generally, if you see a generic or Heroku-branded 'application error' page that means it is the former problem, whereas a Tabbycat-branded page indicates the latter." +msgstr "" + +#: ../../guide/scaling.rst:41 +msgid "Scaling Dynos" +msgstr "" + +#: ../../guide/scaling.rst:43 +msgid "Once you have upgraded your dyno to the **Hobby** level, the metrics tab provides a number of graphs that can be used to help identify how your site is performing. The first graph, **Events** provides an overview of any problems that are occurring:" +msgstr "" + +#: ../../guide/scaling.rst:47 +msgid "Red marks, or those labelled *Critical* typically indicate some sort of problem. H13 errors are a good measure of the amount of pages failing to load during heavy traffic, however they can be triggered under normal conditions — you want to check how many are occurring within a given time period and ensure its more than a handful." +msgstr "" + +#: ../../guide/scaling.rst:50 +msgid "Response Time & Throughput" +msgstr "" + +#: ../../guide/scaling.rst:54 +msgid "The response time is the amount of time it takes a dyno to load a page and serve it to your users. Smaller response times are thus good, and long response times (over fifteen seconds) indicate that a site is struggling to serve its content due to a large amount of queueing." +msgstr "" + +#: ../../guide/scaling.rst:56 +msgid "Heroku dynos have a maximum response time of 30 seconds, at which point they will stop serving the request. To users this appears as an error page or as a page that never loads. Thus if you see the graph is at or approaching 30 seconds at any point you need to try and diagnose what is causing this and add more resources to reduce the response time." +msgstr "" + +#: ../../guide/scaling.rst:60 +msgid "You can toggle the percentiles in this graph. Problems are much more severe if it affects the 50th percentile which represents a site that is probably not loading for the majority of its users. There are also a couple of Tabbycat functions (like automatic adjudicator allocation) that naturally take 10-20 seconds which means that the maximum or 99th percentile metrics are not very reflective of general traffic." +msgstr "" + +#: ../../guide/scaling.rst:62 +msgid "Closely related to this is the **Throughput** graph (further down) which shows how many pages your site is serving per second. Normally this is not particularly interesting, however note that the red part of the bar graph shows the amount of failed page requests. Like the **Response Time** graph, this can indicate issues with the site — normally this red portion should be well below 1rps (and ideally 0rps). If it is above 0.5 it represents a site that is producing a significant number of failed page loads." +msgstr "" + +#: ../../guide/scaling.rst:64 +msgid "You can verify if pages are not being served to users by checking the **Events** graph and looking for H12 errors, although occasionally they are not reported properly. A large amount of H13 errors can also be a cause for concern." +msgstr "" + +#: ../../guide/scaling.rst:67 +msgid "Dyno Load" +msgstr "" + +#: ../../guide/scaling.rst:71 +msgid "This graph shows how well your dynos are being utilised. It is scaled relative to the total number of dynos you are running (or have run previously). So if you have 10 dynos and the bar graph is near the '10' this shows that each dyno is being utilised 100% (either on average over a 1-minute period or as the maximum use over a 1-minute period)." +msgstr "" + +#: ../../guide/scaling.rst:73 +msgid "If this bar graph is hitting the top it will usually mean that a site that is slow or failing to load pages — if each dyno is busy it can't serve a new page until it is finished. This issue can often compound, with more traffic coming in than it is possible to serve and clear." +msgstr "" + +#: ../../guide/scaling.rst:75 +msgid "If your average, rather than maximum, dyno load is approaching the upper limit of however many dynos you are running now (remember the y-axis will often exceed however many dynos you are currently running) that is a very good sign that you should increase the quantity of dynos being run. Continue adding dynos and evaluate how this effects load so that the bar is not hitting its limit." +msgstr "" + +#: ../../guide/scaling.rst:77 +msgid "If you are consistently needing to scale things (or having previously had issues and are expecting a very heavy burst of traffic) it may be worth upgrading to the **Performance-M** dyno type, which will then allow you to enable the *Auto-scaling* feature. This will automatically add dynos as needed to cope with traffic, and remove them when they become unnecessary. This is very effective; however, note that this dyno-type is $250/month per dyno and will self-add dynos (within an upper limit you can specify). While this is not a huge price on a per hour/minute basis (even running 10 for an hour is only $4) you definitely want to ensure you keep a close eye on it and turn it off when it is not necessary. Note that it also tends to be quite aggressive in how many dynos it 'thinks' you need — you may want to increase the default response time threshold to prevent it scaling so quickly." +msgstr "" + +#: ../../guide/scaling.rst:80 +msgid "Memory Usage" +msgstr "" + +#: ../../guide/scaling.rst:84 +msgid "It is very rare that Tabbycat sites will hit the memory limits of the Free or Hobby level dynos — its almost always hovering around 256MB of the (standard dyno) limit of 512MB. However, if the graph is approaching the dashed line you may want to first restart the dynos (in the *More* dropdown in the upper-right) and see if that resolves it." +msgstr "" + +#: ../../guide/scaling.rst:86 +msgid "You can also confirm that memory limits are causing the app to fail by checking for the presence of R14 errors in the Events chart. If your site continues to come very close to that memory limit you will want to upgrade your dynos to the higher level dynos which have increased memory." +msgstr "" + +#: ../../guide/scaling.rst:89 +msgid "Alerts" +msgstr "" + +#: ../../guide/scaling.rst:91 +msgid "If the site is really struggling to perform its usually relatively obvious. However, if you want to be pre-warned of this, or just ensure things are as fast as possible, you can use the \"Configure Alerts\" feature on the Metrics page to receive emails when things are getting slow. We would recommend creating a Response Time Threshold warning of ``15000ms`` and a Response Requests Percentage Threshold of ``5%``." +msgstr "" + +#: ../../guide/scaling.rst:94 +msgid "Understanding Caching" +msgstr "" + +#: ../../guide/scaling.rst:96 +msgid "When a page is 'cached' it means that Tabbycat has stored a copy of the final output of the page. It can then send that copy directly to a user who is loading that page without needing to go through the normal process of fetching the data from the database, running any calculations, and formatting the results. Pages that are cached will serve quickly — if a page is taking more than a few seconds to load it usually means that page has not been cached (or your site is having too much traffic to serve pages quickly in general). The downside is that changes to the underlying data won't update until the cache has 'expired' and is regenerated. So, for example, a cached copy of the draw will not immediately reflect change to panels and a newly-release motion or tab page will not show up in the menu immediately." +msgstr "" + +#: ../../guide/scaling.rst:98 +msgid "By default Tabbycat caches public pages according to three levels: a 1-minute timeout, a 3.5-minute timeout, and a 2-hour timeout. The only pages on the 2-hour timeout are those that come with a full tab release — such as speaker standings, the motions tab, etc. Public pages that need to update quickly, such as the draw and homepage, are on the 1-minute timeout to ensure data is up to date. Public pages that update less frequently such as Standings, Results, Participants, and Breaks are on the 3.5-minute timeout." +msgstr "" + +#: ../../guide/scaling.rst:100 +msgid "Caching means that a Tabbycat site should actually perform *faster* when it is being viewed by many people at once, as the caches are constantly up-to-date and can be used to serve the majority of requests. When there is less traffic the caches are more likely to be regenerated each time someone goes to a page resulting in slower page loads. Most often performance problems come when a popular page, such as a newly-released draw gains a large amount of traffic suddenly (such as by people constantly refreshing the draw). If the page hasn't finished caching it has to do a full page calculation for each of those new loads, which will spike the amount of resource use until the page load queue is cleared." +msgstr "" + +#: ../../guide/scaling.rst:102 +msgid "One way to help mitigate this is to try and load those pages first yourself to ensuring the cache is populated before other people access it. To do so you would generally open a new private browsing tab, and navigate to the specific page(s) immediately after you have enabled them. This may require going to the URL directly rather than relying on the homepage or menu (which may not have been updated to show the new information). In the case of draw releases, this can also be mitigated by not release online draws until they have been first shown on a projector (so that people aren't trying to get draw information ahead of time)." +msgstr "" + +#: ../../guide/scaling.rst:104 +msgid "You can also increase the 1-minute timeout for the pages that are popular during the in-rounds, by going to the **Settings** section of your Heroku dashboard, clicking *Reveal Config Vars*, and creating a new key/value of ``PUBLIC_FAST_CACHE_TIMEOUT`` and ``180`` (to set the timeout to be 3 minutes i.e. 180 seconds). This should only be necessary as a last resort. Turning off public pages is also an option." +msgstr "" + +#: ../../guide/scaling.rst:106 +msgid "If you ever need to clear the cache (say to force the site to quickly show an update to the speaker tab) you can install `Heroku's Command Line Interface `_ and run the following command, replacing ``YOUR_APP`` with your site's name in the Heroku dashboard::" +msgstr "" + +#: ../../guide/scaling.rst:111 +msgid "Postgres Limits" +msgstr "" + +#: ../../guide/scaling.rst:113 +msgid "The free tier of the Postgres database services has a limit of 20 'connections'. As with Redis, it is rare that a Tabbycat site will exceed this limit; most Australs-sized tournaments will see a maximum of 12 connections at any point in time." +msgstr "" + +#: ../../guide/scaling.rst:117 +msgid "You can monitor this in your Heroku Dashboard by going to the **Resources** tab and clicking on the purple Postgres link. The **Connections** graph here will show you how close you are to the limit. The first tier up from the 'free' Hobby tiers (i.e. ``Standard-0``) has a connection limit of 120 which can be used to overcome these limits if you do encounter them." +msgstr "" + +#: ../../guide/scaling.rst:120 +msgid "Mirror Admin Sites" +msgstr "" + +#: ../../guide/scaling.rst:122 +msgid "If you *really* want to be safe, or are unable to resolve traffic issues and unable to quickly complete tasks on the admin site, it is possible to create a 'mirror' of the tab site just for admin use. This site can be configured to share the same database as the primary site — meaning it is in effect always identical — but because it is at a separate URL it won't have to respond to public traffic and so can't be swamped with a large page load queue." +msgstr "" + +#: ../../guide/scaling.rst:124 +msgid "This requires some technical knowledge to setup and hasn't been rigorously tested. It works fine in our experience but we haven't tested it extensively. If using this make sure you backup (and now how to restore backups) before setting one up." +msgstr "" + +#: ../../guide/scaling.rst:126 +msgid "To do so you would deploy a new copy of Tabbycat on Heroku as you normally would. Once the site has been setup, go to it in the Heroku Dashboard, click through to the **Resources** tab and remove the Postgres and Redis Add-ons. Using the `Heroku Command Line Interface `_ run this command, substituting ``YOUR_APP`` with your *primary* tab site's name (i.e. the app that you had initially setup before this)::" +msgstr "" + +#: ../../guide/scaling.rst:130 +msgid "Here, make a copy of the ``DATABASE_URL`` and ``REDIS_URL`` values. They should look like ``postgres://`` or ``redis://`` followed by a long set of numbers and characters. Once you have those, go to the *Settings* tab of the Heroku dashboard for your *mirror* tab site. Click **Reveal Config Vars**. There should be no set ``DATABASE_URL`` or ``REDIS_URL`` values here — if there are check you are on the right app and that the add-ons were removed as instructed earlier. If they are not set, then add in those values, with ``DATABASE_URL`` on the left, and that Postgres URL from earlier on the right. Do the same for ``REDIS_URL`` and the Redis URL. Then restart the app using the link under **More** in the top right." +msgstr "" + +#: ../../guide/scaling.rst:132 +msgid "Once you visit the mirror site it should be setup just like the original one, with changes made to one site also affecting the other as if they were just a single site." +msgstr "" + +#: ../../guide/scaling.rst:135 +msgid "Estimated Costs" +msgstr "" + +#: ../../guide/scaling.rst:137 +msgid "As a quick and rough benchmark, here is a list of typical prices you would encounter if scaling to meet the performance needs of a high-team-count high-traffic tournament at the approximate scale of an Australs (~100 teams) or above. This is a probably an overly-conservative estimate in that it is based on tournaments run on the ``2.1`` version of Tabbycat. Versions ``2.2`` and above should perform dramatically better and thus have less need to scale using Standard and Performance dynos." +msgstr "" + +#: ../../guide/scaling.rst:139 +msgid "1x ``Hobby Basic Postgres Plan`` ($9/month) run all day for 14 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:140 +msgid "A tournament of this size will require an upgraded database tier for the time when you are adding new data; i.e. during registration and rounds. Once the tab is released (and no further data changes needed) however you can downgrade it back to the ``Hobby Dev`` tier." +msgstr "" + +#: ../../guide/scaling.rst:141 +msgid "1x ``Hobby Dyno`` ($7/month each) run all day for 7 days = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:142 +msgid "As recommended, 1 hobby dyno should be run as a baseline in order to see the metrics dashboard; but this can be downgraded a day or so after the tab has been released and traffic is sparse." +msgstr "" + +#: ../../guide/scaling.rst:143 +msgid "3x ``Standard 1X Dyno`` ($25/month each) run 10 hours a day for 4 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:144 +msgid "This higher quantity of dynos should only be necessary during traffic spikes (i.e. draw releases, immediately after round advances, and tab release) but unless you want to be constantly turning things on/off its usually easier just to upgrade them at the start of each day of in-rounds (or when the tab is published) and downgrade them at the end of each day. As mentioned earlier, you should occasionally check the *Dyno Load* in the Metrics area and adjust the number of dynos as needed." +msgstr "" + +#: ../../:1 +msgid "``Autoscaled Performance M Dynos`` ($250/month each) average of 5 run for 1 hour = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:146 +msgid "For just round 1 it is a good idea to upgrade to the ``Performance M`` tier so you can enable auto-scaling and thus have the site automatically adjust the number of dynos to the amount of traffic it's getting (rather than having to guess the number of dynos needed ahead of time). Doing so ensures that the first round runs smoothly and means that you can then review the Metrics graphs to see what your 'peak' load looks like and resume using whatever quantity of ``Standard 1X Dyno`` will accommodate this peak load in future rounds." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/kk/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..6cc1f0285c8 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/guide/tournament-logistics.po @@ -0,0 +1,1394 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: kk_KZ\n" + +#: ../../guide/tournament-logistics.rst:5 +msgid "Tournament Logistics" +msgstr "" + +#: ../../guide/tournament-logistics.rst:7 +msgid "Unlike the rest of our documentation, this section does not deal with particular features or technical concerns with Tabbycat itself. Instead it is an attempt to outline the logistics of tab direction and aims to be of general relevance for people running major tournaments. At present, it is organised by the various ‘stages' of tabbing a tournament, and most of the content takes the form of check-lists or comments designed to highlight and provide guidance on common issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:9 +msgid "Whilst it aims for general relevance, we should note that this guide is relatively opinionated and mostly written from the perspective of people whose primary experience is tabbing at Australasian tournaments using Tabbycat. That said, we welcome feedback and additions that can account for different format and regional considerations. In the future, if the guide becomes more general and more extensive, it could be spun off into a separate project." +msgstr "" + +#: ../../guide/tournament-logistics.rst:11 +msgid "As with the rest of our documentation, this page is source-available and we welcome :ref:`feedback and contributions `. Note also that we've formatted this guide a single page to reduce clutter, but the sub-sections in the sidebar can be used to help navigate across sections." +msgstr "" + +#: ../../guide/tournament-logistics.rst:14 +msgid "Planning and Preparation" +msgstr "" + +#: ../../guide/tournament-logistics.rst:16 +msgid "This section aims to outline concerns that occur in the months before the tournament: after you have agreed to help with tabbing and while the organising committee and adjudication core are deciding how they want to run key processes such as registration and feedback. It is organised in terms of who you should coordinate with in order to plan for a well-tabbed tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:19 +msgid "General Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:21 +msgid "You should avoid being the sole person responsible for that tab unless it is a small tournament. There are many cases where you want to be in several places at once and the easiest way to accommodate that is by having co-directors or trusted assistants. Few tab decisions require a single source of authority; it is far better to have multiple people available to share responsibilities around." +msgstr "" + +#: ../../guide/tournament-logistics.rst:23 +msgid "In a similar manner, it is worth considering how you can use the tournament to help train other people. Typically, knowledge of tabbing is concentrated in relatively few people and gained mostly through on-the-ground experience; meaning that every tournament should be approached as rare opportunity to help spread knowledge about tabbing more widely in a circuit. Consider reaching out to institutions or the tournament as a whole to see if they have anyone who would be interested in helping out." +msgstr "" + +#: ../../guide/tournament-logistics.rst:26 +msgid "Convenors" +msgstr "" + +#: ../../guide/tournament-logistics.rst:28 +msgid "It might sound obvious but it will pay to have a very thorough conversation about the tab process (more or less the contents of this document) with the convenors a few months out from the tournament. Do this even if you know the convenors to be knowledgeable or experienced debaters. Key concerns are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:32 +msgid "Whether internet access will be available and whether participants can be presumed to have smart phones. This has an obvious impact on how online feedback, ballots, and draw release is done. Note that Eduroam is not necessarily a reliable guarantee of access; many participants will come from universities who don't have access to it or will need to follow a setup process that is onerous or requires them to be at their home institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:33 +msgid "What kind of room is the tab room going to be? Is it possible to optimize its placement when the bookings for rooms are made? Key details include: How large is it? Does it have a sufficient amount of desk space (for data entry)? Does it have a good projector (for allocations)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:34 +msgid "If they have the resources, having an adjacent room available for just the adjudication core to use can also be useful. While you want to work closely with the adjudication core, they may want to discuss sensitive information (motions, equity) in a space without volunteers present; or they might at times get in the way of things, such as by eating lunch in the middle of a frenetic ballot entry process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:35 +msgid "Ensure that plans are made for food to be brought to tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams." +msgstr "" + +#: ../../guide/tournament-logistics.rst:36 +msgid "What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible." +msgstr "" + +#: ../../guide/tournament-logistics.rst:37 +msgid "What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors." +msgstr "" + +#: ../../guide/tournament-logistics.rst:38 +msgid "Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:39 +msgid "You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense." +msgstr "" + +#: ../../guide/tournament-logistics.rst:40 +msgid "Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:41 +msgid "How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:42 +msgid "How will critical information be shared between the tab team, adjudication core, and logistics/convening teams? For smaller/medium sized tournaments a group chat augmented by phone calls (assuming everyone knows everyone else's number) can be sufficient, but even then, you need to ensure that any critical information conveyed privately (i.e. in a call or in person) is conveyed back to the group channel. At very large tournaments (or if you have the resources) walkie-talkies are an excellent way to manage communication — just make sure you have (ahead of time) reserve the different channels to a distinct and known purpose (i.e. general discussion; just the tab team & adjudication core; just convenors)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:43 +msgid "As part of this it is ideal if the organising committees can procure local SIM cards for members of the tab team and adjudication core who are not local. These should be relatively generous in their plans — you don't want to worry about running out of minutes or data if on a critical call or using a hotspot to make critical allocation adjustments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:44 +msgid "At major tournaments you want to arrive at least a day before check-in; and ideally whenever it is that the adjudication core is arriving for their own preparation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:47 +msgid "Registration" +msgstr "" + +#: ../../guide/tournament-logistics.rst:49 +msgid "Having effective registration systems and processes is one of the most important aspects of preparing to tab a large tournament. Bad registration data *will* make setting up a tab extremely painful and introduces the chance for mistakes or inconsistencies in tab data that will only come to light in the first round. As such:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:53 +msgid "You should check in with the registration team and see what they plan to do as soon as possible after being brought on-board. As part of this you should make it clear that you should be consulted on any decisions they make about what data to collect, when to collect it, and how to collect it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:54 +msgid "Registration data should be collected into a shared and live-updating source, such as a Google Sheet. There should be as few canonical sources (ideally one) of data as possible; i.e. there should be a single sheet for individual details, a single sheet for team details, etc; and these should be maintained all the way through to check-in. For both you, and the registration team, having multiple conflicting or outdated copies of data will lead to errors. However, for the registration team these errors can usually be easily sorted out in person (at check-in) but for you that information always needs to be reliable and up to date otherwise what is imported into the tab cannot be trusted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:56 +msgid "At this point our recommendation is to, in most cases, not use specialised registration systems as they are somewhat less intuitive and less flexible than setting up good Google Forms/Sheets." +msgstr "" + +#: ../../guide/tournament-logistics.rst:58 +msgid "If, for whatever reason, the registration team are not able to give you 'live' access to the data they have on hand, make sure they send you copies of it (even if it is incomplete) well before you need it to setup the tab itself. You want to be able to verify what data is actually being collected and how it is formatted well in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:60 +msgid "You should have access to *all* of the data collected; often registration teams will make (false) assumptions about what you do or do not need. It is better to have everything and then selectively filter out what is not relevant to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:61 +msgid "It is critical that the registration team should check in with you before setting up forms asking for information. Every additional time that registration asks for data there will be less and less participation in the process, so you should aim to gather all that you need at the first opportunity; typically during the canonical individual registration phase. Particular information that should not be overlooked for tab purposes:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:63 +msgid "Individual registration should ask whether a participant is a speaker or an adjudicator." +msgstr "" + +#: ../../guide/tournament-logistics.rst:64 +msgid "If that person is a speaker it should ask for their team name/number (reconciling these later is painful)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:65 +msgid "Individual registration should ask for any accessibility requirements of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:66 +msgid "Individual registration should ask for the previous institutions of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:67 +msgid "Individual registration should ask for the email addresses of all participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:68 +msgid "Individual registration should ask for the phone numbers of adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:69 +msgid "Individual registration should ask for the gender identity of both adjudicators and speakers. Even if you are not *planning* on using this to inform processes, such as adjudicator allocations, you want it on hand in case plans change." +msgstr "" + +#: ../../guide/tournament-logistics.rst:71 +msgid "Independent adjudicators and the adjudication core should follow normal registration procedures. Having them not go through the normal process makes it easy to overlook their data or not get a complete picture of it. For example, adjudication core members might forget to nominate conflicts, or neglect to provide their previous institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:72 +msgid "You should confirm how the registration team plans to manage how people check-in to the accommodation in particular. Check-in is when issues with registration data come to light and it is vital that these changes are noted and recorded. Some form of validation of registration data *must* occur at check-in — in particular all adjudicators should be (individually) verified as present and all members of a team should confirm their presence along with their team's name/number and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:73 +msgid "After check-in you need to have a definitive list of who is physically present at the tournament so you can run a first-round draw with confidence. Registration must know this and have processes in place for recording people individually as they arrive, and for that data to filter back to you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:75 +msgid "If you are using Tabbycat's secret links for feedback or ballots these are best distributed at check-in. The registration team should know about this, prepare for it, and be provided with the pdfs to print and distribute." +msgstr "" + +#: ../../guide/tournament-logistics.rst:78 +msgid "Adjudication cores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:80 +msgid "If there is a group chat for the adjudication core you probably want to be part of it; even if you don't contribute much. There are lots of small things that end up being discussed without consideration of how they will affect tab issues and it is also a chance to get to know — ahead of time — the people you will be working with closely over the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:82 +msgid "Members of the adjudication core will often leave tab-relevant decisions until the days prior to the first round or whenever it is that they can first meet with the tab team in person. This often wastes critical time and forces rushed decisions. Many considerations can instead be raised and discussed prior to the tournament. These could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:86 +msgid "How to manage the feedback process. This typically benefits from foresight and pre-planning, rather than being decided on the ground. Key considerations are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:90 +msgid "Who submits feedback on whom? Do trainees do so on their chairs? Do panellists do so on each other? (Presuming your tab software supports these options)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:91 +msgid "Is feedback mandatory? If so, how will this be enforced exactly?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:92 +msgid "How much weight does each adjudicator's test or CV score have over the course of the tournament? By Round 3, or by Round 8, what proportion of an adjudicator's score is derived from their test and what proportion is derived from their feedback?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:93 +msgid "Will the adjudication core tweak an adjudicator's score to 'artificially' increase or decrease it to where they think it should be. For example, this could be done by adjusting a test/CV score upwards in order to compensate for bad feedback that (for whatever reason) they did not think was reliable or fair? Depending on your adjudication core's preferences and your tab software's allowances it is not unheard of for them to maintain full manual control over scores by reading/processing feedback results but only ever manually adjusting scores as a result (rather than having it automatically adjust due to the ratings in the feedback)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:94 +msgid "What is the score scale going to be? What do each of those numbers represent? How will this be communicated to participants so they can score accurately and consistently?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:95 +msgid "What kind of questions will feedback forms ask? If using :ref:`customisable printed or online forms ` consider how these questions be used tactically to identify key issues (say discriminatory scoring) or more easily identify people who should be promoted/demoted. While managing feedback is often a messy and subjective task, it can often be improved by being more targeted in what data it collects." +msgstr "" + +#: ../../guide/tournament-logistics.rst:96 +msgid "How will feedback be monitored, and how will this information feed back into the scores and allocations? At large tournaments it is not unusual for an adjudication core member to sit off each round to review and process feedback — there isn't really a good stretch of available time to do so otherwise. However even if doing this note that there are communication issues to manage here, as each adjudication core member will each end up with a relatively incomplete overview of the total volume of feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:98 +msgid "If possible it's nice to plan in advance for when the tab will be released (i.e. on the last night; the day after; etc.) as this often gets left to the last minute to be decided. Also the possibility of whether people can redact themselves from tabs should be raised, as that might be useful to inform participants of during online registration or tournament briefings. In a similar fashion, some adjudication cores might also want to limit speaker tabs to only a certain number of places, particularly at novice-centric tournaments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:99 +msgid "How to handle conflict collection; see the following section." +msgstr "" + +#: ../../guide/tournament-logistics.rst:100 +msgid "How to handle the submission of scoresheets and feedback, primarily in terms of which parts of the process should be done online and offline. Some adjudication cores will have strong thoughts here; others will happily follow whatever you recommend. Key considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:104 +msgid "Paper-based feedback is much more taxing to enter than paper-based scoresheets — typically there is much more of it; it asks for a greater variety of data; and it is submitted at inconsistent times. The one advantage is that it is easier to make feedback mandatory with paper, as you can ensure all teams and adjudicators have done so prior to leaving the room. Thus, in most cases, a good online feedback system is much more preferable than paper. If using paper be aware that you will need a lot of volunteers to ensure the feedback is collected promptly. If internet or smartphone access is limited at your tournament it is probably best to accommodate both paper-based and online methods." +msgstr "" + +#: ../../guide/tournament-logistics.rst:105 +msgid "The consequences of having incorrect or missing ballots are much more severe than for feedback. As such major tournaments use paper ballots in some form as the final stage in a checking process to ensure that the results of a debate are definitely correct — adjudicators will always make mistakes and while digital ballots can catch/prevent some types of error (i.e. a low point win) they can't catch others (assigning the wrong scores to the wrong speaker, nominating the wrong winning team, etc.). Assuming your software supports both options, the choice is thus whether to use a hybrid approach (online submission followed by paper verification) or to rely entirely on paper. A fully-paper based approach will be simpler for both yourself and adjudicators, and can be almost as efficient if you have a sufficient number of volunteers. In contrast, a hybrid approach will be potentially much faster if you are short of volunteers and if you expect that almost all adjudicators will have access to the internet, a smartphone, and are capable of following instructions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:107 +msgid "In some circuits, and when using some particular tab software, tournaments might run a 'dual tab' where there is a second, independent, version of the tab software and database into which all data is *also* entered. From what we understand this performs a dual role, as both a backup system that can take over from the main one (say if internet access drops) and as a way of verifying ballot data (by comparing draws or databases between software rather than having a two-step entry process operating for a single tab). This practice seems obsolete when working with modern web-based tab software that is capable of backing up and restoring to an offline system, but we would like to hear your feedback if you think that is not the case." +msgstr "" + +#: ../../guide/tournament-logistics.rst:110 +msgid "Conflicts/Clashes (registration/equity/adjudication core)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:114 +msgid "There should always be a *single* means of collecting conflicts (i.e. a single Google Sheet/Form) and all conflicts should go through it. Because the nature of this data is sensitive and evolving, there must be a single location where it can be easily captured and verified as having been entered into the tab. Conflicts data should never be spread across a loose collection of emails/personal messages/spreadsheets; otherwise keeping track and knowing which ones have been entered into the system will be painful and error prone. Get in touch in with equity and registration in advance and make it clear that they should not make their own conflicts form; or if they've already made one, make sure you adopt it and have access/control of it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:115 +msgid "Conflicts should, ideally, *only be collected after a participants list has been published* and requests for people to nominate conflicts should also be sent out as few times as possible. Most people will only fill this form in once, so it is vital that when asked to nominate conflicts they have as much information as they need to do so comprehensively. Without a public and reasonably-complete participants list people will either nominate conflicts that are not present (wasting your time in cross-referencing data) or not realise someone is present and raise the conflict at a latter, less opportune time." +msgstr "" + +#: ../../guide/tournament-logistics.rst:116 +msgid "In some circuits only adjudicators are allowed to nominate conflicts because of the risk of teams using conflicts 'tactically' to block adjudicators that they think are terrible judges. However, having teams nominate conflicts can be useful: adjudicators may overlook a conflict or there may be equity-based reasons that a conflict is non-symmetrical. This trade-off can be handled in two ways:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:120 +msgid "Not allow teams to nominate conflicts during registration; but allow them to approach equity teams before, or during, the tournament to identify the conflict. Equity can then raise the issue with the tab team and adjudication core and it can be added to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:121 +msgid "Allow teams to nominate conflicts during registration; but have the adjudication core review the data for 'tactical' conflicts. These are usually relatively easily identified, although can be overlooked if the adjudication core does not know the participants or their region/circuit well. The adjudication core can then override the conflict, discuss it with the teams, or raise it with equity. However, if going down this route, the tab team should discuss with the adjudication core how to manage this process well-ahead of the tournament, and ensure they actually do review the conflicts prior to the first round — otherwise it will likely surface during an allocation and become a major distraction during a critical time period." +msgstr "" + +#: ../../guide/tournament-logistics.rst:123 +msgid "As mentioned in the previous section, the adjudication core (possibly with equity) should provide some degree of guidance about what kinds of debating-related conflicts should be provided. People should be able to self-define what constitutes a conflict, but there are circumstances where they are overly cautious and can be reassured that it is not necessary. The opposite problem may occur also, where many people may have a very high bar for what defines a conflict which could lead to perceptions of bias from other participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:124 +msgid "Generally, it is preferable that each form nominates a single conflict, and people are asked to re-submit for each conflict they are adding." +msgstr "" + +#: ../../guide/tournament-logistics.rst:126 +msgid "To save you some hassle the conflict form should make this very clear (i.e. that one conflict = one submission; ensure the field labels reinforce this)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:127 +msgid "The conflict form should also make clear that you shouldn't use the form if you don't have any conflicts (i.e. people will submit 'None', 'None' etc)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:128 +msgid "The conflicts form should also make clear that adjudicator's don't need to submit a conflict for their current institution and that team's don't need to submit conflicts for adjudicators from their current institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:130 +msgid "In poorly-structured conflict forms, identifying exactly who is doing the conflicting and who is being conflicted is a nightmare. You want to structure the questions to minimise this ambiguity. A form should definitely ask:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:132 +msgid "Who are you (the conflict-specifier)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:133 +msgid "Are you a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:134 +msgid "Which institution are you from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:135 +msgid "If part of a team, which team are you in?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:136 +msgid "Who are you conflicting?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:137 +msgid "Are they a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:138 +msgid "Which institution are they from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:139 +msgid "If they are in a team, which team is it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:140 +msgid "Have previously attended any other institutions; or have other reasons to conflict entire institutions? If so, specify those institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:142 +msgid "Note that this last question can be tricky to deal with; good tab software will let you conflict an adjudicator from an institution other than their own, but it is harder to mark an individual team as having members previously attending another institution. These circumstances are rare and typically very 'soft' conflicts but are probably best handled by creating individual conflicts between that team and adjudicators from the previous institution in question." +msgstr "" + +#: ../../guide/tournament-logistics.rst:143 +msgid "Adjudication core members will often not nominate their own conflicts; presuming that they will notice and correct them during allocations. They often forget or overlook this. Their conflicts should be entered as per normal." +msgstr "" + +#: ../../guide/tournament-logistics.rst:146 +msgid "Scheduling (convenors / venue organisers)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:148 +msgid "One of the easiest ways to have things run late is to set an unrealistic schedule. As much as possible the timing allocated to rounds (inclusive of events such as lunch or committee forums) should conform to an even distribution of how long it takes to process results and create a draw/allocation — you don't want to be in a position where particular rounds have too much time and others too little time to spend on allocations and other crucial tasks. This is something that should definitely be working on in conjunction with convenors and other critical parties before they lock down timing details with food suppliers or the operators of the debating venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:150 +msgid "Note also that in most circumstances it is preferable to create a draw and allocation for the first day of the next round at the night before. This time should be built in to the schedule of the previous day, and raised with the adjudication core so they don't expect to be able to immediately depart after the day's rounds are done." +msgstr "" + +#: ../../guide/tournament-logistics.rst:152 +msgid "Below is the time taken within each round at Australs 2017. For context, this was neither a particular efficiently or inefficiently tabbed tournament. Notable details:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:156 +msgid "The tournament was ~40 rooms each round and had access to 3-6 runners and data enterers. Paper ballots were pre-printed and distributed by runners to rooms prior to the debates starting, then collected sometime after the 15 minute deliberation period. Feedback was submitted online. At Australs all adjudicators (excluding trainees) submit their own ballots." +msgstr "" + +#: ../../guide/tournament-logistics.rst:157 +msgid "The adjudication core were neither particular slow nor fast in allocating adjudicators compared to other adjudication cores. At Australs most adjudication cores will create allocations by using first running an automatic allocation then extensively tweak the results." +msgstr "" + +#: ../../guide/tournament-logistics.rst:158 +msgid "There were no serious issues that delayed the tabbing of any particular round beyond the routine and expected issues of last-minute draw changes, adjudicators producing incomprehensible ballots, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:159 +msgid "Whilst the tab ran relatively quickly, there were minor delays because of mismatches between the planned schedule and the optimal schedule from a tab perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:160 +msgid "A round at Australs takes around 2 hours from a debater's perspective: 30m of prep, ~60m for a debate, ~15m for deliberation, and ~15m for the oral adjudication and feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:161 +msgid "We didn't note the timing of data-entry in Round 8 as there was no time pressure. After data entry was finished, finalising and double-checking the breaks took through to ~7-8pm." +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Day" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "One" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Two" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Three" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "Round" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "1" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "2" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "3" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "4" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "5" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "6" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "7" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "8" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "Draw generated" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +#: ../../guide/tournament-logistics.rst:169 +msgid "*Night prior**" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:43" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "16:12" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:17*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:05" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "15:46" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:10*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:07" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "Allocation finished" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:17 ``+34m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:36 ``+24m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "20:28* ``+71m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "12:58 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:24 ``+38m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "21:30* ``+140m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:25 ``+78m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "Motions released" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:28" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:50 ``+33m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:47 ``+11m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:22" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:14 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:40 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "9:30" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "14:18 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "First ballot received" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:51 ``+143m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:46 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:52 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:18 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:13 ``+119m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:40 ``+120m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:35 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +#: ../../guide/tournament-logistics.rst:172 +msgid "?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "Last ballot confirmed" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:38 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "16:07 ``+21m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:15 ``+23m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:05 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "15:44 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:09 ``+29m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:06 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:176 +msgid "Tab Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:178 +msgid "Setting up a tab site is the most technically challenging (or at least annoying) part of tabbing. It is where you need to reconcile large amounts of data and configure a variety of settings to ensure everything will run without issues during rounds. While this is often done a day or two before the tournament, ideally you should look to do as much as possible in the week or two beforehand where there is much less time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:181 +msgid "Importing data: workflow" +msgstr "" + +#: ../../guide/tournament-logistics.rst:185 +msgid "First check with registration people if their data is complete, and if not who is missing. If it's only a few people it's viable (for tab purposes) to use place-holders for them, as long as you remember to follow up and edit their data manually later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:186 +msgid "Familiarise yourself with the different methods for importing data into your tabbing program. Typically, these include options for bulk-importing spreadsheets, for adding information piece-by-piece through a graphical interface, or a hybrid systems. Depending on your tabbing software it may be easiest to first setup your tournament on a local copy of the tab (where it will be faster to rectify mistakes) and transfer the data to the live site when everything is mostly complete." +msgstr "" + +#: ../../guide/tournament-logistics.rst:188 +msgid "If you are using Tabbycat our spreadsheet importer is definitely easiest to use on a local copy; however using the visual importer is perfectly viable for larger tournaments if you are not comfortable with the command line. When using the spreadsheet importer note that it will likely take several iterations to get the data to import cleanly as there will typically be small mismatches in speaker/institution names and the like." +msgstr "" + +#: ../../guide/tournament-logistics.rst:190 +msgid "If the tournament (or the host society) has their own domain name and your tab software is self-hosted consider whether you want to setup the tab site on their domain so that the URL is nicer and/or easier to type." +msgstr "" + +#: ../../guide/tournament-logistics.rst:192 +msgid "If you are using Tabbycat, and deploying to Heroku, be sure to read our documentation about the size of Postgres database your tournament will require. Setting up the correct size of database from the start is the best way to go, as transferring information at a later stage is a hassle and could delay the tab at inopportune times." +msgstr "" + +#: ../../guide/tournament-logistics.rst:195 +msgid "Importing data: regions/societies" +msgstr "" + +#: ../../guide/tournament-logistics.rst:199 +msgid "Societies will often have special names that they like to use in draws (that are not the same as their institution's name or acronym). These can be gathered from institutional reps or from prior tabs. When in doubt err on the colloquial / most recognisable name; particularly for formats where teams need to find each other prior to the debate." +msgstr "" + +#: ../../guide/tournament-logistics.rst:200 +msgid "If your tabbing software has methods for assigning region information to teams and adjudicators (for diversity purposes) determine with the adjudication core the types of regions that will be used." +msgstr "" + +#: ../../guide/tournament-logistics.rst:203 +msgid "Importing data: participants" +msgstr "" + +#: ../../guide/tournament-logistics.rst:207 +msgid "Check you have emails/phone numbers included in your data that will be imported (presuming your tabbing software supports this) there are useful to have on hand later for either emailing out information or quickly following up errant adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:208 +msgid "Often, the easiest way to prepare registration data for tab imports is to create new tabs in the registration spreadsheet, and use referencing to automatically order and arrange their data into the format your tab software wants. If the registration data changes significantly this will also make it easier to re-import things." +msgstr "" + +#: ../../guide/tournament-logistics.rst:209 +msgid "Often some adjudicators, typically local independents, may not be available for all rounds. Try and find out who this affects and when; once data has been imported you can :ref:`pre-check these adjudicators in and out of rounds ` (if your tab software supports this; otherwise note it for later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:210 +msgid "Remember that the swing team(s) probably also need to be imported into the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:213 +msgid "Data import: rooms" +msgstr "" + +#: ../../guide/tournament-logistics.rst:217 +msgid "Ideally you want not just a list of rooms, but also of their types and categories — i.e. what building a room is in and/or it will be coded so that participants can find it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:218 +msgid "You want to know if access to some rooms is conditional; i.e. if some rooms are only available for some rounds. Again, if your tab software supports it you can :ref:`record this availability information into the system ` (once data is imported) otherwise you can note it for later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:219 +msgid "Registration should have collected information about accessibility requirements; they should be imported into your tab software (if it :ref:`supports automatically matching accessibility requirements `) or note for later. In general you will also want to use a similar process to ensure that members of the adjudication core are assigned rooms that are close to the tab room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:220 +msgid "You also want some idea of priority; that is to say if some rooms are inconvenient (and you have more rooms than you need) they should be marked as a low priority so they will be allocated only if needed. Again, this might be automatically done by your tab software or something you will need to note and manually change after each draw is made." +msgstr "" + +#: ../../guide/tournament-logistics.rst:223 +msgid "Data import: adjudicator test/CV scores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:225 +msgid "Ideally the adjudication core should do this themselves as they are marking the test or scoring CVs. If they won't, or you don't trust them with full tab access, be prepared to do so yourself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:228 +msgid "Data import: tab access" +msgstr "" + +#: ../../guide/tournament-logistics.rst:230 +msgid "Set up user accounts for the adjudication core with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:231 +msgid "Set up user accounts for runners/assistants with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:233 +msgid "If using Tabbycat and using online ballots or feedback with the private URLs method, participants should be emailed out their private URLs before they start travelling to arrive at the tournament (i.e. when they have a reasonable chance of checking their email). This can be done using the inbuilt pages on Tabbycat, or by importing participants data into a service such as Mailchimp." +msgstr "" + +#: ../../guide/tournament-logistics.rst:236 +msgid "Pre-Rounds Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:239 +msgid "Setting up the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:241 +msgid "This is typically the first order of business, as all future pre-round setup tasks (i.e. training the adjudication core, testing printing, etc.) are better for being done in the same space that will be used throughout the rounds. Once you're in the space there are a couple of small checks to run through before the larger question of how to arrange and use the space should be tackled:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:245 +msgid "Check with convenors whether things can be left in the tab room overnight. If they can't you'll need to make plans for how to move any big items (printers; ballot stacks) to and from the tab room each day." +msgstr "" + +#: ../../guide/tournament-logistics.rst:246 +msgid "Check that the internet access in the tab room is reliable." +msgstr "" + +#: ../../guide/tournament-logistics.rst:247 +msgid "Check that the projector system works, both with whatever wired-in computer is in the room and when connected to your laptop." +msgstr "" + +#: ../../guide/tournament-logistics.rst:248 +msgid "Check what items either yourself, or the organisers, have at hand and check if anything needs to be acquired before the next day. Critical items for tab rooms are typically:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:252 +msgid "An extension cord with multi box; ideally a pair of each." +msgstr "" + +#: ../../guide/tournament-logistics.rst:253 +msgid "Whiteboard markers (assuming there is a whiteboard) otherwise permanent markers and large sheets of paper (i.e. A2) can suffice." +msgstr "" + +#: ../../guide/tournament-logistics.rst:254 +msgid "Boxes. Lots of boxes. Loose ballots are a source of confusion and error, so you want some way of temporarily storing ballots as they proceed through the entering and checking process. You probably want at least three large boxes (for ballots to-enter, ballots to-check, and finished ballots) but more will be useful." +msgstr "" + +#: ../../guide/tournament-logistics.rst:255 +msgid "Spare printing ink/toner, and paper for the printer. Ideally your paper would be multi-coloured, with each colour being used for a different round. Pastel colours are ideal, and you ideally want at least three different colours so that you don't have to repeat a colour within the same day. Be sure to calculate how many sheets you will need per round and ensure you have a generous number of spares." +msgstr "" + +#: ../../guide/tournament-logistics.rst:256 +msgid "If tabbing a format that can produce multiple ballots per-debate, staplers are essential to keep those ballots organised. Buy at least two sturdy ones." +msgstr "" + +#: ../../guide/tournament-logistics.rst:258 +msgid "Non-essential, but often useful to have items:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:262 +msgid "Whatever dongles/adapters you need to connect your laptop to the projectors, both in the tab room and in the briefing room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:263 +msgid "An Ethernet cable (or two) as a backup option if WiFi drops or is overloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:264 +msgid "Post-it notes are a great way to temporarily mark ballots with information; typically used to indicate ballots that need correcting." +msgstr "" + +#: ../../guide/tournament-logistics.rst:265 +msgid "You'll often need to make impromptu signs; sticky tape and/or blu-tack are good here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:266 +msgid "Spare pens for the people doing data entry to use" +msgstr "" + +#: ../../guide/tournament-logistics.rst:267 +msgid "Trash bags for collecting rubbish as it accumulates" +msgstr "" + +#: ../../guide/tournament-logistics.rst:268 +msgid "A Chrome Cast can occasionally be very useful if a projector or screen doesn't have accessible input cables or so that you can use a projector without having your laptop tethered to a particular podium and desk." +msgstr "" + +#: ../../guide/tournament-logistics.rst:270 +msgid "If you haven't already it's a good idea to check your printing setup by printing off a bunch of generic ballots and feedback forms to have on hand if the need arises (i.e. a ballot is missing and needs to go out ASAP; or if someone can't do feedback online and needs to do so on paper). At worst, the blank ballots you print can be used for the out-rounds. While printing these off, time how long it takes the printer to print say 25 ballots and extrapolate from that to figure out how long it will take to print the entire round's worth of ballots. Note that if printing off a round's ballots is relatively quick it can be useful to delay it in order to better accommodate any last-minute changes to the draw that happen post-announcement. It's also worth thinking about how you (or at least who will) group up the printed ballots in order to distribute them to runners." +msgstr "" + +#: ../../guide/tournament-logistics.rst:272 +msgid "At this point you should also setup whatever process you need for managing runners and the ballot collection process. At a minimum, this should probably be a spreadsheet or a list on a whiteboard outlining the different groups of rooms with spaces to mark in which runners are delivering/collecting ballots for each location. Who is running where might change from day to day and should be kept updated. It should also have some method for contacting each runner (i.e. a cell phone number)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:274 +msgid "The question of how to arrange the actual room is one with many answers, and is obviously shaped by the peculiarities of the space itself. However there needs to be some system behind it so that people know exactly where to go and what to do when there is time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:276 +msgid "The key consideration behind this system is typically the 'flow' of ballots: what happens after they are brought back from runners, but before they are completely entered into the system. Think through how you want this process to operate and how the space can be arranged to make each step as smooth as possible. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:280 +msgid "When runners initially return a big stack of ballots, what happens? They could be transferred directly to the data-enterers to start on, but it is often useful to have preliminary checks here in order to keep the job of the data-enterers as simple as possible. These checks could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:284 +msgid "For formats with multiple ballots per-debate, you typically want to identify and staple together all the ballots from a given panel." +msgstr "" + +#: ../../guide/tournament-logistics.rst:285 +msgid "For tournaments where ballots are liable to go missing (or for when you have plenty of data-enterers and want peace of mind) it is worth using the :ref:`ballot 'check-in' system of your tab software ` (if it has one) to mark off ballots as physically present in the tab room. This allows you to quickly identify which ballots are missing and begin tracking them down earlier than you would do otherwise if just waiting for the 'to enter' pile to be exhausted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:286 +msgid "Depending on your preferences and resources, ballots could at this stage be checked for errors. This could include a basic sweep for missing information (i.e. totals) or a comprehensive sweep that includes checking math errors, ambiguous handwriting, low-point wins, etc.). While this will delay the time between ballots arriving and being entered, it will mean that you can start correcting ballots sooner, and lessens the burden on (potentially inexperienced) data-enterers to check and catch these. If you have many runners, and they are familiar with how debating scoring works, this is recommended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:288 +msgid "Once this preliminary step has occurred the next task is actually entering the ballots. The number of steps here is dependent on your tab software and tab settings; you might have had the 'draft' ballot be submitted online by chairs or you might have the whole two-step process of a 'draft' ballot entry and the 'confirmed' ballot entry taking place within the tab room. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:292 +msgid "Regardless of whether you are working with a one-step or a two-step process, you want to arrange the tables where data-enterers are sitting such that their need to move is minimised. That might mean either have a central inbox of ballots to enter in the centre of the tables (such that everyone can reach it) or having multiple 'clusters' of enterers around boxes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:293 +msgid "If work with a two-step process you want those two steps to be an active part of the spatial arrangement. That is to say, typically there will be a grouping of enterers who are working on the initial ballot entry (clustered around a box or boxes) and then a separate 'downstream' grouping of enterers that work on confirming/validating those entries. Depending on the size of tournament and quantity of runners, you either want it so that individuals from the first group can easily pass their ballots to the box of the second group; i.e. by reaching across the table or walking a short distance. At huge tournaments, you might want a dedicated person to transfer ballots between boxes to prevent enterers having to get up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:294 +msgid "In a two-step process people may need to transfer roles, as generally you want to prioritise entry and then validation. Often this isn't necessarily much more efficient, but if 'rebalancing' the roles make sure that the spaces assigned to each role can accommodate extra people, and that people physically move to occupy each role." +msgstr "" + +#: ../../guide/tournament-logistics.rst:295 +msgid "In general, you want to minimise the number of ballots that each enterer feels the need to 'hoard' to work through to keep the work evenly distributed. If people are taking a large number of ballots to process, at the final stages of entering some people will have a bunch to work through while others will be finished. Making it easy to collect and pass on ballots in the space itself helps cut down on this while keeping entry efficient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:296 +msgid "While the exact spatial arrangement depends on your numbers and what furniture is available, a long rectangle is a good starting point as the ballot process is in general linear (check, enter, validate, finish). Typically, this might look like a series of tables in a row with enterers sitting on either side and with the various ballot boxes in the middle." +msgstr "" + +#: ../../guide/tournament-logistics.rst:297 +msgid "When ballots have finished being enter/validated there definitely should be some sort of final 'done' box. Take care how ballots are put here, a common source of error is people putting ballots there before they are fully finished." +msgstr "" + +#: ../../guide/tournament-logistics.rst:298 +msgid "When ballots need to be corrected you generally want to 'extract' them from this process and hand them off to a tab-director or assistant to chase up and collect. There should be a forethought process for managing this; and ideally a dedicated space for it to prevent ballots being lost and to make it easy to identify ongoing issues. This might look like a process of sticking a post-it note (outlining the error) to the ballot, and then pulling it from entry/validation and placing it on a desk. Ideally you also want one of the tab directors always *not* doing data entry so that they are immediately available to manage this process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:301 +msgid "Training volunteers" +msgstr "" + +#: ../../guide/tournament-logistics.rst:303 +msgid "If at all feasible you want to train that volunteers acting as runners and/or data enterers the day *before* the tournament starts otherwise the first round will be rough. It's generally a good idea for this training session to generally mirror the process of running a round. It's also generally a good idea that — even if you have enough people for dedicated runner and data-enterer roles — to train all volunteers so that they are familiar with each role and can fill in if needed. This has a couple of stages:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:307 +msgid "Introductions and details" +msgstr "" + +#: ../../guide/tournament-logistics.rst:311 +msgid "Volunteering is typically thankless and often stressful. It's also quite a dull and mechanical process: deliver paper; collect paper; enter numbers; check numbers. Given the rather unglamorous nature of their role you want your volunteers to feel welcome and a crucial part of a wider team. When meeting everyone for the first time try and run the introductions in a non-perfunctory manner and get to know people's background/interests and outline how valuable they are to the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:312 +msgid "As part of this process you should, note their cell phone numbers or whatever means you will use to coordinate communication between the team." +msgstr "" + +#: ../../guide/tournament-logistics.rst:313 +msgid "Figure out what will be happening during downtime and how you can make it more enjoyable. Would volunteers like to watch debates, work in the tab room, etc. Is there anything they would like during those down times (music, snacks, coffee, etc.)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:315 +msgid "Rooms and Running" +msgstr "" + +#: ../../guide/tournament-logistics.rst:319 +msgid "If runners are unfamiliar with debating in general, outline the basics of what draws are, what ballots are actually for, and what this process looks like from a debater's perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:320 +msgid "Outline how/when the printing process occurs and who will sort/assign the ballots. Now is a good time to assign different runners to the different groups/rooms that they will be working with." +msgstr "" + +#: ../../guide/tournament-logistics.rst:321 +msgid "It is critical that, as a group, you actually go to everyone one of the venue groups and identify all of the venue rooms that are listed so that everyone knows exactly where to go. This may take some time. But it is a good chance to both check those rooms actually exist and pre-identify any problems that might occur with runners and debaters finding them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:322 +msgid "Outline in general what happens during ballot collecting: when to do it, how to approach chairs, what do to if they are slow or delaying. You should raise the chance of chairs being belligerent and outline how they (and you) should deal with this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:323 +msgid "If you are having runners pre-check ballots it's a good idea to fill out a few 'bad' ballots to demonstrate the kinds of checking required. If you are using any communication systems (i.e. having runners mark of buildings as 'done' in an online system) go through that now also." +msgstr "" + +#: ../../guide/tournament-logistics.rst:325 +msgid "Data entry and checking" +msgstr "" + +#: ../../guide/tournament-logistics.rst:329 +msgid "Before starting, setup logins for everyone and show them how to login. Also get an idea of what devices they will be using, or can bring, for data entry purposes. Check/ensure that they will have internet access on those devices." +msgstr "" + +#: ../../guide/tournament-logistics.rst:330 +msgid "Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots which they will occur." +msgstr "" + +#: ../../guide/tournament-logistics.rst:331 +msgid "Run through how the seating/table/box arrangement works and the types of roles at different positions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:332 +msgid "Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else." +msgstr "" + +#: ../../guide/tournament-logistics.rst:333 +msgid "Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:336 +msgid "Training the adjudication core" +msgstr "" + +#: ../../guide/tournament-logistics.rst:338 +msgid "Typically making the first-round's draw and allocation is the best time to really run through how your tab software and processes work in a 'real' environment as well as the expectations surrounding their and your role. Generous amounts of time should be budgeted for this; it's not uncommon for it to take up most of an evening. It's also worth having an older tab, or a tab full of fake data handy in order to show them how, say, the feedback or allocation interfaces look like when full of data." +msgstr "" + +#: ../../guide/tournament-logistics.rst:340 +msgid "To kick off you should probably setup tab logins for the adjudication core as necessary, outline what kinds of access they have, and (particularly if they haven't used your tab software before) outline broadly what pages they should and shouldn't access. In particular, show them how to find and parse feedback as that is often the interface where they will be spending most of their time individually. As part of this tour outline (if you haven't already) how feedback will work, as well as the means by which the adjudication core can use the tab software to keep track of feedback as it comes in. Ideally some sort of general strategy should be formed for this, so that particular people sit out rounds, or are delegated the task of catching up on feedback at other points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:342 +msgid "Depending on how many runners you have it may be necessary, or beneficial, if the adjudication core helps out with data entry. However, if you go down this route the adjudication core need to be highly trained; they are often much more likely than volunteers (who are less self-confident and have more experience) to make errors. Whether you do or don't do this, ensure that adjudication core members know to come to the tab room ASAP after they have finished adjudications rather than swanning around socialising or going to lunch. Draws will often be held up just by the fact that not enough adjudication core members are present to start or finish an allocation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:344 +msgid "The first-round allocation is the last thing you want to cover. It is typically your only change to slowly and comprehensively walk the adjudication core through the allocation interface and the allocation system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:346 +msgid "Allocation interfaces, while often complex, should be stepped through so that the adjudication core knows precisely how to operate it themselves (if needed). They should know what it can (and can't do) and how the different features can be used and activated. For example, diversity highlights might be an optional toggle (in which case you explain how to active it, when to do so, and what it represents) or there might be parts of the interface that detail information such as a room's liveness, energy, or bracket which should be highlighted and explained (i.e. how 'liveness' is determined)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:348 +msgid "Secondly, and most importantly, is outlining how the automated process of adjudicator allocation operates, and how this can be made to match the adjudication core's preferences. Typically, you want to rely on automatic adjudicator allocations as much as possible in order to decrease the time taken to do an allocation; however every adjudication core has a different philosophy on what their perfect allocation looks like, and it is your job to try and align that ideal with what the automated system produces as much as is possible. The precursor to this is yourself knowing how your tab system allocation works: what is the relationship between a debate's bracket (or assigned priority/energy) and the numeric ranking of the automatically generated panel? Does the software optimise panel strength for a voting majority, or across all panellists? When does the software allocate solo chairs over panels? How does it avoid conflicts? Does it have (and enforce) particular expectations for a given adjudicator's score; or does it rely on a more relative comparison? The answers to the questions will often be dramatically different between different programs and you should know them in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:350 +msgid "Most tab software will have at least some options for you to configure those automated processes — either by changing the automatic allocation's parameters directly or by controlling the ranking and feedback systems that feed into it. The first round is the prime opportunity to configure these options so that they align as close as possible with what the priorities of the adjudication core. If your feedback ranking system is mismatched with how you expect the automatic allocation to place adjudicators, or if the distribution of adjudicators across the draw is not what you expect, the adjudication core will end up wasting significant amounts of time adjusting allocations. Even if things work well using the default settings, ensure you experiment and demonstrate the consequences of changing the settings just to show that it can be done, what the general effects are, and to see if there are even-better configurations." +msgstr "" + +#: ../../guide/tournament-logistics.rst:352 +msgid "This process of tweaking the automatic allocation settings is one you should also revisit as the rounds progress." +msgstr "" + +#: ../../guide/tournament-logistics.rst:354 +msgid "How to approach diversity (typically in terms of region and gender) across an allocation in particular is something that some members of an adjudication core will not have had to consider in the context of a large tournament with time pressure or in terms of having to make explicit trade-offs. Again, you should make it clear how the software can accommodate this, and get the adjudication core to plan for how (in general) they want to approach this. Often it will form the final phase of the allocation process, and so can easily be forgotten or skipped over; or people will have different philosophies of how to approach this which are only raised at critical points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:356 +msgid "Outline that there will usually be a trade-off between the quality of each allocations and the speed at which the tournament runs. When time is not a factor, many adjudication cores will often take an hour or more in order to create a perfect allocation; but they should know though that aiming for perfect during many rounds will break the schedule. You should try and get them to set some sort of time goal for allocations, and (during the rounds) ensure that they are aware of when they are going too fast or too slow. Depending on your personal preferences and the norms surrounding tab direction in your circuit you may want to actual enforce these time limits." +msgstr "" + +#: ../../guide/tournament-logistics.rst:358 +msgid "Finally, outline how you will all communicate. Again, there should be a single medium for this so that everyone knows what is going on; and this is ideally something that has been planned out beforehand with them and the organising committee. But at this point the tab team may have expanded, or there may be better options than what was being used previously. It's also worth outlining which parts of the tab team will generally be doing what roles and where — i.e. who will be rolling the draw, who will be chasing up people, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:361 +msgid "Preparing a briefing" +msgstr "" + +#: ../../guide/tournament-logistics.rst:365 +msgid "At large tournaments there should be some form of briefing covering ballots and feedback process, even if it is just quick one. Usually you will want to be the person to design and deliver this; other people less-familiar with the system may miss details." +msgstr "" + +#: ../../guide/tournament-logistics.rst:366 +msgid "Liaise with convenors and the other people doing briefings to ensure (a) they know you're doing one; and (b) you are not overlapping in terms of content." +msgstr "" + +#: ../../guide/tournament-logistics.rst:367 +msgid "See the last section of this document for notes on what can be useful to include here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:370 +msgid "Final checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:374 +msgid "Check if the convenors have made a map that clearly outlines where the rooms are. Ensure it's clear and post it to either the tab site (ideally) or somewhere like Facebook." +msgstr "" + +#: ../../guide/tournament-logistics.rst:375 +msgid "Check that convenors have some sort of way-finding system in place, i.e. chalked directions or colour-coded signs. Check these colour codes match the names of your venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:376 +msgid "Check that the draw types are correct for each round in the tab system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:377 +msgid "Check with adjudication core if/when there are secret rounds and that these are correct in the edit data base area." +msgstr "" + +#: ../../guide/tournament-logistics.rst:378 +msgid "Check how the draw will be displayed and managed. Is the projector good; how big does the text size need to be? How fast is the scroll?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:379 +msgid "If you will pre-print ballots check that you've set the \"return ballots to\" configuration setting; even if it just says \"to runners\"." +msgstr "" + +#: ../../guide/tournament-logistics.rst:382 +msgid "Managing Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:384 +msgid "Once everything has been setup and everyone knows what they should do, the actual process of running each round should go smoothly. It probably won't though. The earlier sections should have laid out what the ideal process for managing data entry and allocations, so this section will instead focus on what can go wrong and what to keep an eye out for." +msgstr "" + +#: ../../guide/tournament-logistics.rst:387 +msgid "Disaster scenarios" +msgstr "" + +#: ../../guide/tournament-logistics.rst:389 +msgid "There are two broad classes of disaster scenario here. The first, and more rare case is when either internet access at the venue goes out or if a web service that your tab software depends on has an outage (for example, both Tabbie 2 and Heroku-deployed Tabbycat instances depend on Amazon Web Services). The first can at least be solved temporarily if tethering is available, but if that is not possible (or the latter case occurs) you may need to switch to using an offline copy of that tab by restoring from a backup if the outage is non-transient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:391 +msgid "Obviously, for this to work, you should be taking regular backups using whatever mechanism your tab software allows. Key times to do so are critical events such as finishing entering a round's data or finalising an adjudication allocation as these are especially difficult to recreate. Importantly, these backups are only useful to you if you have a downloaded copy of them; ideally download to a Dropbox or some other cloud service that will spread them across multiple computers and an online service." +msgstr "" + +#: ../../guide/tournament-logistics.rst:393 +msgid "Having an outage of internet access or a key web service go down to the point of having to switch to an offline tab is an exceedingly rare event, but one worth planning for at large tournaments. That is to say you should have ideally have an offline copy of your tabbing software setup on your local machine, and know how to restore a backup to it if necessary." +msgstr "" + +#: ../../guide/tournament-logistics.rst:395 +msgid "Backups are also useful as guards against a much more common source of error: data loss caused by user error. It is not unheard of for even experienced tab directors (or inexperienced adjudication core members) to accidentally delete an entire allocation, delete a round, or some other form of destructive action that would require a lot of work to redo. Taking backups at key points, and knowing how to restore them (to the online copy of the tab) is a useful — and occasionally essential — skill." +msgstr "" + +#: ../../guide/tournament-logistics.rst:397 +msgid "The much more common source of a major tab disruption is a major user-error or a bug within your tab software itself. Fixing these will be highly-context dependent and the best way you can prepare for them is to know your tab software well enough to understand what might have caused it or be able to contact someone else who does. That said, having backups on hand can also allow you to restore your database to before the bug or user-error occurred and try to proceed without re-triggering it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:400 +msgid "Expected problems" +msgstr "" + +#: ../../guide/tournament-logistics.rst:402 +msgid "Incorrect ballots are an inevitable tragedy. Many more optimistic tab directors will imagine that these can be prevented through sufficiently detailed briefings, recurring public shamings, or fool-proof ballot designs. While these might help in cutting down the number of errors, eliminating them entirely seems to be an unachievable goal. Note that this is particularly true at international tournaments and/or at tournaments that draw participants from circuits which have more than one predominant format." +msgstr "" + +#: ../../guide/tournament-logistics.rst:404 +msgid "While debaters as a whole display astonishing levels of innovation in discovering new ways to incorrectly fill in a ballot, there are a couple of broad cases that you should look out for an prepare people to deal with:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:408 +msgid "Not adding up score correctly. Pretty much everyone who does this will note that this is the first time that it has ever happened to them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:409 +msgid "Omitting some information. Most common are not filling in total scores, the nominating winner, or the margin. Having omitted an entire team's scores or speaker names is not uncommon." +msgstr "" + +#: ../../guide/tournament-logistics.rst:410 +msgid "Scores that are outside the range." +msgstr "" + +#: ../../guide/tournament-logistics.rst:411 +msgid "Low-point wins, or tied-point wins. Typically occurs in conjunction with (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:412 +msgid "Poor handwriting rendering numbers illegible. While one could 'guess' whether a number is in fact a 6 or a 5 based on a team's total score, doing so is dangerous as it assumes that the person hasn't also done (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:413 +msgid "'Correcting' information in an ambiguous way. For example, using arrows to swap a speaker's order (which is typically circular/ambiguous) or drawing numbers over other numbers in a way that makes it unclear which is the original and which is the replacement." +msgstr "" + +#: ../../guide/tournament-logistics.rst:414 +msgid "Ballots just going entirely missing because either a runner missed the room, the chair forgot to return it, or the chair just left it in the room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:416 +msgid "Ballots aside, there are a number of other common occurrences that will necessitate changes to the drawn and allocations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:420 +msgid "Teams will not turn up to debates, or turn up to debates extremely late. In both cases they will often not notifying anyone. Aside from needing to swap in a swing team in their place in the draw, it's worth keeping in mind that the necessity of a swing team might not be known until right when debates are about to start (which can lead to issues if you assume trainees or runners will be filling up the 'spare' swing team)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:421 +msgid "Adjudicators will also go missing. As with teams this can usually be caught during roll call; but might also not be known up until debates start. If the adjudication core is available they can make adjustments, but often you will need to make a call as to whether to form an even-sized panel or to redistribute adjudicators from elsewhere." +msgstr "" + +#: ../../guide/tournament-logistics.rst:422 +msgid "When a draw is released there will often be conflicts that were unknown to the tab system, and will necessitate making changes to the draw post-release. It's important that when making these changes you keep a clear record of what needs to change (if there are multiple swaps needed it can get tricky to keep track of) and ensure that all parties involved know about where they are being swapped to." +msgstr "" + +#: ../../guide/tournament-logistics.rst:425 +msgid "Ongoing checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:427 +msgid "You will have a decent amount of downtime during rounds when debates are happening. A couple of things its worth keeping an eye on during that time:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:431 +msgid "Ensuring your backups have been taken and downloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:432 +msgid "Ensuring the tab room isn't devolving into mess." +msgstr "" + +#: ../../guide/tournament-logistics.rst:433 +msgid "If you can be bothered (and if no adjudication core member is doing so) reviewing feedback for critical issues (i.e. comments highlighting severe issues, or chairs getting very low scores) is a good way to be useful. If using paper-based feedback this can look like physically separating out these feedback forms for the attention of the adjudication core; while if using online feedback systems you may want to keep a collection of browser tabs to show." +msgstr "" + +#: ../../guide/tournament-logistics.rst:434 +msgid "Chasing up the language committee (if one exists for this tournament) to confirm which teams are in which category and what their break preferences are (if multiple breaks are not allowed). You want to have this information confirmed as soon as possible as it becomes of critical value to allocations once the draw starts segmenting into live/dead rooms." +msgstr "" + +#: ../../guide/tournament-logistics.rst:435 +msgid "Reviewing how efficiently things are running and whether there are any bottlenecks that can be better addressed in the next round. It's generally a good idea to (on a whiteboard or a spreadsheet) keep track of how long each stage of a round is taking (running, data-entry, allocation) and what (if anything) is causing delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:437 +msgid "If hosting Tabbycat on Heroku keep an eye on the metrics section of the dashboard area, noting if there are 'timeout errors' and what the average response times are. Adding more dynos should help with both." +msgstr "" + +#: ../../guide/tournament-logistics.rst:440 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:443 +msgid "Generating the adjudicator's break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:445 +msgid "Determining the adjudicator break generally involves a complex set of considerations rather than strictly ranking based on feedback. As such most adjudication cores will use whiteboards or Google docs to draft and discuss the possible options. One thing to note here is that breaking adjudicators will need to be marked as such in the tab at some point (both so they can be on future draws, and for publication) so you want to be careful that the tab is the final source of authority here — it is easy for information to get out of sync between what the adjudication core is using to draft the break and the system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:447 +msgid "When the adjudication core is determining the break ensure that they have an idea of the *quantity* of adjudicators needed (breaking too few or too many will cause issues) and whether there are any special considerations (such as having conflicts with large portions of the draw, or leaving at a given point) that involve a specific adjudicator being considered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:450 +msgid "Generating the team break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:452 +msgid "Before doing so in an automated fashion, first check in your tab software whether all teams are assigned to the right break categories. Depending on whether your software supports multiple formats you probably also want to check that each break category is using the right 'rule' specified by the tournament (i.e. a WUDC- or Australs- compliant break ranking). Also double check the break size itself is correct in the software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:454 +msgid "Hopefully the automated system will generate a correct break, but this should always be checked against what you'd expect the results to be from standings. Note also that there are cases, such as when a team has to leave, or when teams are or are not double-breaking, that mean the automated break results need to be overridden (typically in Tabbycat you would add a marker or note to include their ranking, but exclude them from having a break rank)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:457 +msgid "Announcing the break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:459 +msgid "Mistakes are made surprisingly often during results announcements. Again, this is often a problem with incomplete or out of sync data, where print-outs, slides, or the tab site itself might not reflect (for example) last minute changes about breaks or have potentially mixed up teams or adjudicators with similar names. Things that can help:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:463 +msgid "Have a single source for what is being read out — i.e. a printed list (recommended) or the tab site itself — but don't mix and match. If making slides (often a good idea for large/crowded venues) copy the data from the canonical source being announced." +msgstr "" + +#: ../../guide/tournament-logistics.rst:464 +msgid "Double check what is being read out against the tab site, and/or whatever draft lists were used to determine the adjudicator's break. Verify with the adjudication core that everyone who should be there is, and that nobody is missing." +msgstr "" + +#: ../../guide/tournament-logistics.rst:465 +msgid "Clarify what information should be on the print-outs and the general order in which things are read. For example, it might be easy to omit breaking adjudicator's institutions, to use ambiguous abbreviations over full institution names, or to have an inconsistent approach to how the information is read (i.e. whether it is read as *wins* then *team points* then *team name*)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:466 +msgid "Without revealing any details try and get at least some guidance on how to pronounce names that people are not familiar with pronounce." +msgstr "" + +#: ../../guide/tournament-logistics.rst:467 +msgid "Have backup copies of whatever is being read from and clarify who is reading off what portions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:468 +msgid "Try to publish the break list on the tab website (or via some other online method) shortly after it is announced in order to minimise the chance of misinformation spreading." +msgstr "" + +#: ../../guide/tournament-logistics.rst:471 +msgid "Managing the out-rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:473 +msgid "Out-rounds are generally under less time pressure and can be managed by just one or two members of the tab team. However, they tend to be run in a more haphazard fashion, so there are a couple of things to keep on top of:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:477 +msgid "You should keep track of which adjudicators have or have not been used throughout the finals allocations. It is easy for adjudication cores to forget to allocate someone and have to either drop them or promote them beyond what they had originally intended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:478 +msgid "It is very easy for ballots to get lost in break rounds as chairs have less defined roles and processes in what they do with their ballots. While having correct speaker scores correctly entered for break rounds isn't a strict necessity, it is nice to have and the alternative (using fake speaks just to record the winner) can cause confusion. Closely manage distributing ballots to the chairs and collecting them as soon as possible afterwards; especially if there is any time pressure. Generally it is not worth printing off per-debate ballots; just print a stack of generic ballots at the start of the out-rounds and distribute as needed." +msgstr "" + +#: ../../guide/tournament-logistics.rst:479 +msgid "You should know, in addition to when the break rounds are, when the results announcements are. Often these announcements are saved (for suspense or logistics reasons) until particular points of time (i.e. until the evening social; or until other out-rounds are finished). Obviously it's important not to accidentally release results; but often convenors and the adjudication core will often have different ideas about when results are meant to be released." +msgstr "" + +#: ../../guide/tournament-logistics.rst:481 +msgid "If using Tabbycat to manage out-rounds with multiple break categories, note that the round progression is no longer strictly linear. So be careful with when/if results are released online and note that often you can't rely on online interface to release draws publicly." +msgstr "" + +#: ../../guide/tournament-logistics.rst:484 +msgid "Preparing for tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:486 +msgid "At some point, if you haven't already, have a discussion with the adjudication core about when the tab itself will be released and what data will be released. Well before the tab is due to be released you want to check that anonymisations and any speaker flags (i.e. Novice, ESL) are up to date in your tab software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:489 +msgid "Managing the tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:491 +msgid "Almost there!" +msgstr "" + +#: ../../guide/tournament-logistics.rst:493 +msgid "If hosting Tabbycat on Heroku it's worth increasing the resources available to the server for the ~12 hour period following tab release; it's by far the most concentrated burst of traffic the site will receive. Because Heroku bills by the hour, even going to a relatively expensive option, such as performance dynos with auto-scaling, will be very cheap if run just for this period. That said the site should be relatively resilient even in the face of large amounts of traffic; even running with the most basic resources allocated, at worst pages will be temporarily slow or not load." +msgstr "" + +#: ../../guide/tournament-logistics.rst:495 +msgid "To get an idea of how the site is performing in the Heroku dashboard keep an eye on the average request time number and adjust the number of dynos to try and keep it under say two seconds; ideally just one. When you first turn on the tab release settings, make sure you go through and load every page before announcing it to the public, doing so will trigger the caching mechanism that means potentially complex pages (say the speaker tab) don't need to be calculated from scratch each time someone loads the page." +msgstr "" + +#: ../../guide/tournament-logistics.rst:498 +msgid "Post-tournament" +msgstr "" + +#: ../../guide/tournament-logistics.rst:500 +msgid "Once you have sufficiently recovered, consider writing up and sharing a post-script about how things went; noting things that did or didn't go well. Next year's tab directors would certainly appreciate it, and it would be great to see this kind of knowledge spread more widely. The developers of your tab software would also appreciate hearing your feedback; particularly if there were issues that could have been prevented or ameliorated by the software itself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:503 +msgid "Appendix: Briefing Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:505 +msgid "This is a very loose, but not exhaustive, collection of things that are useful to communicate to speakers and adjudicators in a tab briefing. While briefing fatigue is real, having clear expectations about how things like ballots and feedback work are highly valuable uses of the tournament's time if they can at all help cut down the kinds of problems that delay the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:508 +msgid "How feedback works" +msgstr "" + +#: ../../guide/tournament-logistics.rst:510 +msgid "Is it online, or offline? If online did people receive links? What do they do if they have lost it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:511 +msgid "Is feedback mandatory? What accountability mechanisms are there? Will you publish the shame list online or raise it in between rounds?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:512 +msgid "Who will be submitting feedback on who? Do trainees do so?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:513 +msgid "Remind teams that only one of their feedbacks count; they should coordinate who is doing it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:514 +msgid "What is the feedback scale? What does it correspond to? Common sources of confusion:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:516 +msgid "Feedback scales are not like Uber. You do not get five stars for being adequate and generic." +msgstr "" + +#: ../../guide/tournament-logistics.rst:517 +msgid "Feedback scales are not relative to position; it is an absolute scale. That is to say, if your trainee was good, they probably do not deserve the highest rating; they get whatever rating indicates they should be a panellist or low-chair." +msgstr "" + +#: ../../guide/tournament-logistics.rst:518 +msgid "Consider accompanying the score/scale with a statement characterising how these numbers correspond to positions - e.g. a 4.0 means 'should continue on good panels, should chair low rooms'" +msgstr "" + +#: ../../guide/tournament-logistics.rst:520 +msgid "If using online submission options, what should people without phones or internet access do?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:523 +msgid "How ballots work" +msgstr "" + +#: ../../guide/tournament-logistics.rst:525 +msgid "This part of the presentation will be condescending. It is also necessary. The two causes of delays in the draw running late, and thus the tournament running late are (1) people not filling out ballots correctly or (2) people's ballots going missing. Emphasise that this should be taken seriously; minutes spent chasing bad ballots are often minutes that delay every single person at the tournament from doing what they are actually here to do. You should highlight, ideally with illustrated examples:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:529 +msgid "Which parts of the ballot *must* be filled in; people will often overlook margins, or special fields such as motion vetoes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:530 +msgid "That people must specify the full names of speakers; not nicknames or just-first names. Often names will be written poorly or have ambiguities (i.e. two speakers on a team called James) and having the full name is the only way to resolve it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:531 +msgid "That people should **not draw arrows to swap the order of speakers** as these are impossible to decipher. Here, and in other areas, always *cross-out* information clearly and write it again rather than using arrows or drawing over what is there." +msgstr "" + +#: ../../guide/tournament-logistics.rst:532 +msgid "That people should try and write numbers in a manner that makes them crystal clear. Put cross-bars in 7s; bases on 1's. Make 8's actually look like two circles. If people know they have poor handwriting maybe consider writing the literal words — *seventy-one* below the numbers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:533 +msgid "That for styles that do not have a single ballot for a panel, reiterate that everyone fills in their own ballots. At Australs, if this isn't made absolutely clear someone will average their panels ballots in order to try and 'help' you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:534 +msgid "That runners do not fill out ballots. In BP, remind them that only chairs should fill out ballots (i.e. it cannot be deputised to a wing). In formats with individual ballots, remind chairs to make sure their wings have actually filled out a ballot, and get them to check for errors or ambiguities." +msgstr "" + +#: ../../guide/tournament-logistics.rst:535 +msgid "That everyone is bad at math. People who think they are good at math just haven't messed up their ballot *yet*. Emphasize that people should always use their phone's calculators to check totals. At typical tournaments using exclusively paper ballots math errors happen multiple times a round, almost every round." +msgstr "" + +#: ../../guide/tournament-logistics.rst:536 +msgid "How long people have to fill out their ballots. Suggest that chairs actually keep track of this time during a stopwatch, and start moving towards critical steps (i.e. scoring) well *before* the time is up, not *once* it is up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:537 +msgid "Outline what chairs should do to return ballots. If ballots are being run by runners, outline what they should do if a runner doesn't appear. If they are not being run by runners remind people that returning ballots should be there number one priority, over say giving a lengthy adjudication or team feedback. Or getting lunch." +msgstr "" + +#: ../../guide/tournament-logistics.rst:538 +msgid "Remind people to *be nice to runners* and that being mean to runners will have serious consequences." +msgstr "" + +#: ../../guide/tournament-logistics.rst:539 +msgid "Remind people that the tab team and adjudication core will not, except for absolutely exceptional circumstances, accept photos or messaged descriptions of ballots; that all results must be on paper and handled in the same manner. The adjudication core should also be reminded of this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:542 +msgid "How to locate the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:544 +msgid "People should know how to get to the tab room, either to raise issues with the adjudication core or to correct ballot errors. Make it crystal clear where it is and how to get there. Also ensure people know not to barge in; that they should knock and wait." +msgstr "" + +#: ../../guide/tournament-logistics.rst:546 +msgid "Clearly communicate the contact details of the tab directors and get people to take them down. In most cases you do not want people going through convenors or the adjudication core for any tab-related issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:549 +msgid "Misc" +msgstr "" + +#: ../../guide/tournament-logistics.rst:551 +msgid "Now is a good time to encourage people to consider getting involved with tabbing and tab-development. Emphasize that both do not necessarily require technical skills and that tabbers are (or should be) open to feedback and ideas from the wider community. Tell people to come find you and chat if they are interested and put up a link to the `Facebook tabbing group `_." +msgstr "" + +#: ../../guide/tournament-logistics.rst:553 +msgid "If you appreciated this guide we'd appreciate a slide promoting `Timekept `_ and `Debatekeeper `_. This would also be a good point to remind people that their timekeeping apps shouldn't be making noise *unless* they have been explicitly assigned to keep time by the chair." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/guide/upgrading.po b/docs/locale/kk/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..09dfc212a92 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/guide/upgrading.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: kk_KZ\n" + +#: ../../guide/upgrading.rst:5 +msgid "Upgrading Tabbycat" +msgstr "" + +#: ../../guide/upgrading.rst:7 +msgid "Generally only want to upgrade copies of tab sites that are used on an ongoing basis for multiple tournaments, or if there is a bugfix release between when you setup your site and when the tournament is running." +msgstr "" + +#: ../../guide/upgrading.rst:11 +msgid "Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade." +msgstr "" + +#: ../../guide/upgrading.rst:14 +msgid "Upgrading a Local Copy" +msgstr "" + +#: ../../guide/upgrading.rst:16 +msgid "Assuming you haven't made any changes to the Tabbycat code, upgrading a locally installed copy should just be a matter of `downloading the latest source code `_ and replacing the existing files with the new ones. If you used git to download these files initially you can just pull down the latest copy of the master branch to do this." +msgstr "" + +#: ../../guide/upgrading.rst:18 +msgid "You would then repeat the \"Install Tabbycat\" instructions for your original installation method." +msgstr "" + +#: ../../guide/upgrading.rst:21 +msgid "Upgrading on Heroku" +msgstr "" + +#: ../../guide/upgrading.rst:23 +msgid "The easiest way to upgrade a Heroku site is to create an account on Github and then to `'fork' `_ the `Tabbycat repository `_." +msgstr "" + +#: ../../guide/upgrading.rst:25 +msgid "Once you have done this you can login to your Heroku Dashboard, go to your app, and then navigate to the Deploy tab. In this tab, adjacent to *Deployment method* select the GitHub option. This will bring up a new 'Connect to GitHub' section where you can search for 'Tabbycat' to find the copy of the repository you made earlier and connect it." +msgstr "" + +#: ../../guide/upgrading.rst:29 +msgid "Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/index.po b/docs/locale/kk/LC_MESSAGES/index.po new file mode 100644 index 00000000000..8b146e9eba0 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/index.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: kk_KZ\n" + +#: ../../index.rst:18 +msgid "Installation" +msgstr "" + +#: ../../index.rst:32 +msgid "Using Tabbycat" +msgstr "" + +#: ../../index.rst:41 +msgid "Tabbing Guide" +msgstr "" + +#: ../../index.rst:52 +msgid "Feature notes" +msgstr "" + +#: ../../index.rst:75 +msgid "About" +msgstr "" + +#: ../../index.rst:8 +msgid "Tabbycat User Guide" +msgstr "" + +#: ../../index.rst:10 +msgid "Tabbycat is a draw tabulation system for parliamentary debate tournaments. It supports two-team formats such as Australs, World Schools, Asians, Australian Easters and all New Zealand formats, as well as British Parliamentary (WUDC). It is also highly configurable, supporting many custom variations of the above formats too. If you're looking for a general overview of the software, check out our `README on Github `_." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/docker.po b/docs/locale/kk/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..dbe390648a4 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/docker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: kk_KZ\n" + +#: ../../install/docker.rst:5 +msgid "Installing Locally using Docker" +msgstr "" + +#: ../../install/docker.rst:7 +msgid "Is this the best install method for you?" +msgstr "" + +#: ../../install/docker.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/docker.rst:12 +#, python-format +msgid "If you need an offline copy of Tabbycat, installing using Docker should be simpler and quicker than using the \"Install Locally on…\" instructions for your operating system. However if a Docker installation doesn't work as outlined below, it's harder to address what isn't working. If you encounter any problems with Docker, we recommend using the \"Install Locally on…\" option as a fallback, but if you need to do so, `please also report the issue you're having on GitHub `_ or :ref:`contact the developers `." +msgstr "" + +#: ../../install/docker.rst:14 +msgid "Docker is an application that makes it very easy to load and run a specific collection of software. It allows us to bundle everything necessary to run Tabbycat into a single package rather than have users install everything needed step-by-step. Once set up, Docker will allow you to start and stop a webserver (that in turn runs Tabbycat) on your computer whenever you want and without the need for internet access." +msgstr "" + +#: ../../install/docker.rst:18 +msgid "1. Download Tabbycat" +msgstr "" + +#: ../../install/docker.rst:20 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/docker.rst:22 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/docker.rst:24 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/docker.rst:28 +msgid "2. Install Docker" +msgstr "" + +#: ../../install/docker.rst:31 +msgid "If using macOS or Linux" +msgstr "" + +#: ../../install/docker.rst:33 +msgid "Install the **Docker Community Edition (stable)** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:36 +msgid "If using Windows 10 Pro, Enterprise, or Education Edition" +msgstr "" + +#: ../../install/docker.rst:40 +msgid "Install the ****Docker Community Edition (stable)*** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:41 +msgid "Before or shortly after installing it, Docker may ask you to enable hypervisor and restart your PC. If it asks you this follow the prompts and restart as asked." +msgstr "" + +#: ../../install/docker.rst:42 +msgid "Once Docker has finished installing, open up the newly-installed Docker application, then right-click the app's icon (the whale) in the Taskbar." +msgstr "" + +#: ../../install/docker.rst:43 +msgid "From there, hit *Settings* in the menu and *Shared Drives* in the sidebar. Tick the checkbox next to your hardrive and then click *Apply*. After that has applied exit and reopen the docker app (ie right-click the taskbar icon and hit exit) and verify that the checkbox is still there." +msgstr "" + +#: ../../install/docker.rst:49 +msgid "If using Windows 7, Windows 8, or Windows 10 Home Edition" +msgstr "" + +#: ../../install/docker.rst:51 +msgid "Install the **Docker Toolbox** from the `Docker Toolbox downloads page `_." +msgstr "" + +#: ../../install/docker.rst:53 +msgid "Not sure which edition of Windows you have? Click Start, search for \"System\", and open the Control Panel item \"System\"." +msgstr "" + +#: ../../install/docker.rst:57 +msgid "3. Run Tabbycat in Docker" +msgstr "" + +#: ../../install/docker.rst:60 +msgid "If using the Docker App" +msgstr "" + +#: ../../install/docker.rst:62 +msgid "*These instructions apply if you installed the Docker App, i.e., if you are using macOS, Linux or Windows Pro/Enterprise/Education.*" +msgstr "" + +#: ../../install/docker.rst:66 +msgid "Ensure that Docker application is open (there should be a whale icon in your menu/task bar) and that it says that Docker is running." +msgstr "" + +#: ../../install/docker.rst:68 +msgid "Browse to the location where you extracted Tabbycat to. Open up the **bin** folder there. Within that folder:" +msgstr "" + +#: ../../install/docker.rst:70 +msgid "If you're on macOS, press the Control key, click the icon for **osx_docker_start.command**, then choose Open from the shortcut menu." +msgstr "" + +#: ../../install/docker.rst:71 +msgid "If you're on Windows, open **windows_docker_start.bat**." +msgstr "" + +#: ../../install/docker.rst:72 +msgid "If you're on Linux, open up a terminal in the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:74 +msgid "A terminal window should popup and bunch of text scroll by. If this is your first time running Docker it may take a while (30 minutes or more) to download the virtual machine. When the text has stopped scrolling by you should see a `Finished building Tabbycat!` message." +msgstr "" + +#: ../../install/docker.rst:76 +msgid "Open up http://localhost:8000/ (Windows) or http://0.0.0.0:8000 (OSX/Linux) in a browser of your choice!" +msgstr "" + +#: ../../install/docker.rst:78 ../../install/docker.rst:100 +msgid "If you want to reopen Tabbycat at a later time (say after restarting) repeat steps 1 through 4 here." +msgstr "" + +#: ../../install/docker.rst:81 +msgid "If using the Docker Toolbox" +msgstr "" + +#: ../../install/docker.rst:83 +msgid "*These instructions apply if you installed the Docker Toolbox, i.e., if you are using Windows 7, Windows 8 or Windows 10 Home.*" +msgstr "" + +#: ../../install/docker.rst:87 +msgid "Start the **Docker Quickstart Terminal**." +msgstr "" + +#: ../../install/docker.rst:89 +msgid "Run the command ``docker-machine ip``. Take note of the IP address it shows, for example::" +msgstr "" + +#: ../../install/docker.rst:94 +msgid "Navigate to the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:96 +msgid "Open a browser and go to http://192.168.99.100:8000/, replacing \"192.168.99.100\" with whatever IP address was shown in step 2." +msgstr "" + +#: ../../install/docker.rst:98 +msgid "Once you're done and want to stop the Tabbycat server, press Ctrl+C, wait until the next prompt appears, and then run ``docker-machine stop``." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/heroku.po b/docs/locale/kk/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..2d7c329dcbe --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/heroku.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: kk_KZ\n" + +#: ../../install/heroku.rst:5 +msgid "Installing on Heroku" +msgstr "" + +#: ../../install/heroku.rst:7 +msgid "When running Tabbycat on the internet, we set it up on `Heroku `_. The project is set up to be good to go on Heroku, and it works well for us, so if you'd like to run it online, we recommend that you do the same. Naturally, this requires you to have a Heroku account." +msgstr "" + +#: ../../install/heroku.rst:9 +msgid "There are two ways to do this: a **short way** and a **long way**. Most people should use the short way. The long way requires some familiarity with command-line interfaces and Git, and requires a :ref:`local installation ` as a prerequisite, but makes it easier to :ref:`upgrade versions ` later on and (unlike the short way) allows you to import data from CSV files." +msgstr "" + +#: ../../install/heroku.rst:12 +msgid "The short way" +msgstr "" + +#: ../../install/heroku.rst:13 +msgid "Click this button:" +msgstr "" + +#: ../../install/heroku.rst:18 +msgid "This is the easiest way to deploy an instance of Tabbycat online. It requires no technical background." +msgstr "" + +#: ../../install/heroku.rst:20 +msgid "If you don't already have a Heroku account, it'll prompt you to create one. Once you're logged in to Heroku, choose a name for your installation, then scroll down and click **Deploy**. Once it's finished, click **View** and follow the prompts. Once finished, open the site and from there you can easily set up a demo data set (if you just want to learn Tabbycat) or use the data importer to set up a real tournament." +msgstr "" + +#: ../../install/heroku.rst:22 +msgid "During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard." +msgstr "" + +#: ../../install/heroku.rst:24 +msgid "If you can't access a credit card, you can instead install a limited version, which we call \"Tabbykitten\". However, Tabbykitten cannot send any e-mails or handle as much public traffic. We therefore strongly recommend it only as a last resort, and even then only for small tournaments. `Use this link to set up a Tabbykitten site `_." +msgstr "" + +#: ../../install/heroku.rst:27 +msgid "The long way" +msgstr "" + +#: ../../install/heroku.rst:28 +msgid "The long way sets you up with more control over your environment. Because you'll clone `our GitHub repository`_, it'll be easier for you to :ref:`upgrade your app ` when a new version is released. You'll also have the flexibility to make and contribute updates to the source code. We recommend it if you have experience with Git. It's also easier with this method to import CSV files using the command-line importer, so if you have a very large tournament, this might make importing initial data easier." +msgstr "" + +#: ../../install/heroku.rst:30 +msgid "We've tested these instructions successfully on Windows, Linux and macOS." +msgstr "" + +#: ../../install/heroku.rst:33 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/heroku.rst:35 +msgid "You need to have at least a passing familiarity with command-line interfaces to get through the longer traditional method. We'll talk you through the rest." +msgstr "" + +#: ../../install/heroku.rst:37 +msgid "When we say \"command shell\", on Windows we mean **Command Prompt**, and on Linux and macOS we mean **Terminal** (or your favourite command shell)." +msgstr "" + +#: ../../install/heroku.rst:39 ../../install/heroku.rst:100 +msgid "Advanced users" +msgstr "" + +#: ../../install/heroku.rst:42 +msgid "Tabbycat is a `Django `_ project. As such, it can be installed on any web platform that supports Django, using any SQL system that Django supports. Just be aware that we haven't tried any other platform." +msgstr "" + +#: ../../install/heroku.rst:45 +msgid "Short version of the long way" +msgstr "" + +#: ../../install/heroku.rst:47 +msgid "We provide a \"short version\" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below." +msgstr "" + +#: ../../install/heroku.rst:56 +msgid "If you want to :ref:`import tournament data ` from CSV files, :ref:`install Tabbycat locally `, put your CSV files in ``data/yourtournamentname``, then::" +msgstr "" + +#: ../../install/heroku.rst:68 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/heroku.rst:70 +msgid "Install the `Heroku Command Line Interface (CLI) `_, then log in with the command ``heroku login``." +msgstr "" + +#: ../../install/heroku.rst:72 +msgid "If you don't already have **Git**, follow the `instructions on the GitHub website `_ to set up Git." +msgstr "" + +#: ../../install/heroku.rst:75 +msgid "2. Set up a local installation" +msgstr "" + +#: ../../install/heroku.rst:77 +msgid "If you don't already have a local installation, follow the instructions on the page for your operating system, listed below, to set up a local installation." +msgstr "" + +#: ../../install/heroku.rst:79 +msgid "When downloading the source code, you **must** take the option involving cloning the GitHub repository using Git. In the macOS and Windows instructions, this means the option described in the \"Advanced users\" box. To do so, use these commands:" +msgstr "" + +#: ../../install/heroku.rst:86 +msgid "Do not download the .tar.gz or .zip file and extract it." +msgstr "" + +#: ../../install/heroku.rst:88 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/heroku.rst:89 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/heroku.rst:90 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/heroku.rst:91 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/heroku.rst:93 +msgid "If you do already have a local installation, update to the latest version using:" +msgstr "" + +#: ../../install/heroku.rst:103 +msgid "It's not *strictly* necessary to have a fully functional local installation if you don't want to import data from CSV files. But it certainly helps." +msgstr "" + +#: ../../install/heroku.rst:106 +msgid "3. Deploy to Heroku" +msgstr "" + +#: ../../install/heroku.rst:110 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/heroku.rst:114 +msgid "Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``." +msgstr "" + +#: ../../install/heroku.rst:120 +msgid "This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details." +msgstr "" + +#: ../../install/heroku.rst:122 +msgid "When this script finishes, it will open the app in your browser. It should look something like this:" +msgstr "" + +#: ../../install/heroku.rst:127 +msgid "4. Import tournament data locally" +msgstr "" + +#: ../../install/heroku.rst:129 +msgid "Steps 4 and 5 are optional; there are other methods of :ref:`importing data `. However the following method is most useful for large tournaments where manual entry would be tedious." +msgstr "" + +#: ../../install/heroku.rst:131 +msgid "Step 4 is the same as the process described in :ref:`importtournament-command`." +msgstr "" + +#: ../../install/heroku.rst:135 +msgid "Place your CSV files in ``data/yourtournamentname``, as described in :ref:`importing-initial-data`." +msgstr "" + +#: ../../install/heroku.rst:137 +msgid "Create a new, blank local database::" +msgstr "" + +#: ../../install/heroku.rst:141 +msgid "It's normally easiest to name your local database after your app name, so that if you have multiple sites, you know which one relates to which." +msgstr "" + +#: ../../install/heroku.rst:143 +msgid "Reconfigure ``DATABASES`` in your settings_local.py file to point to this new database." +msgstr "" + +#: ../../install/heroku.rst:145 +msgid "Activate your virtual environment::" +msgstr "" + +#: ../../install/heroku.rst:149 +msgid "Run initial migrations on your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:154 +msgid "Import your tournament data into your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:158 +msgid "If your data's not clean, it might take a few attempts to get this right. We recommend either destroying and recreating the database (``dropdb``, ``createdb``), or wiping it using ``dj flush``, before retrying." +msgstr "" + +#: ../../install/heroku.rst:160 +msgid "Check it looks like how you expect it to look, by starting your local installation::" +msgstr "" + +#: ../../install/heroku.rst:165 +msgid "5. Push the local database to Heroku" +msgstr "" + +#: ../../install/heroku.rst:167 +msgid "Once you're happy with how your local import went, you can push the local database to Heroku." +msgstr "" + +#: ../../install/heroku.rst:169 +msgid "This step wipes the Heroku database clean, and replaces it with the contents of your local database. If you have any data on the Heroku site that isn't also in your local database, **that data will be lost** and will not be recoverable." +msgstr "" + +#: ../../install/heroku.rst:171 +msgid "If you have multiple Heroku sites, you may find that the ``heroku`` commands refuse to run, prompting you to specify an app. If so, add ``--app yourappname`` to each ``heroku`` command." +msgstr "" + +#: ../../install/heroku.rst:173 +msgid "Enable maintenance mode. This takes the site offline, to ensure that no-one can possibly create or change any data on the site while you're pushing a new database up::" +msgstr "" + +#: ../../install/heroku.rst:177 +msgid "Reset the database. (Caution: This permanently deletes all information on your Heroku database!)" +msgstr "" + +#: ../../install/heroku.rst:183 +msgid "Push your local database to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:187 +msgid "You might need to specify your local PostgreSQL credentials by adding ``PGUSER=yourusername PGPASSWORD=******** PGHOST=localhost`` to the *beginning* of that command. (This sets environment variables to those values for the duration of that one command.)" +msgstr "" + +#: ../../install/heroku.rst:189 +msgid "Disable maintenance mode::" +msgstr "" + +#: ../../install/heroku.rst:195 +msgid "Heroku options you may want to change" +msgstr "" + +#: ../../install/heroku.rst:197 +msgid "If you have a large tournament, you may want to customize your Heroku app. This section provides some guidance on upgrades and settings you may wish to consider. Some of these configurations require you to have the `Heroku Command Line Interface (CLI) `_ installed." +msgstr "" + +#: ../../install/heroku.rst:202 +msgid "Upgrading your database size" +msgstr "" + +#: ../../install/heroku.rst:204 +msgid "The free plan of `Heroku Postgres `_, \"Hobby Dev\", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea:" +msgstr "" + +#: ../../install/heroku.rst:206 +msgid "Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows." +msgstr "" + +#: ../../install/heroku.rst:207 +#, python-format +msgid "The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows." +msgstr "" + +#: ../../install/heroku.rst:208 +msgid "A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows" +msgstr "" + +#: ../../install/heroku.rst:210 +msgid "If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, \"Hobby Basic\", should certainly be more than sufficient." +msgstr "" + +#: ../../install/heroku.rst:212 +msgid "If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity." +msgstr "" + +#: ../../install/heroku.rst:215 +msgid "Custom domain names" +msgstr "" + +#: ../../install/heroku.rst:217 +msgid "Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center:" +msgstr "" + +#: ../../install/heroku.rst:219 +msgid "`Custom Domain Names for Apps `_" +msgstr "" + +#: ../../install/heroku.rst:220 +msgid "`Heroku SSL `_" +msgstr "" + +#: ../../install/heroku.rst:222 +msgid "The custom domain name basically requires two things: a DNS ``CNAME`` entry on your website targeting ``yourappname.herokuapp.com``, and the custom domain configured on Heroku using ``heroku domains:add tab.yourwebsite.com``. You'll also need to provide an SSL certificate for your custom domain and add it using the ``heroku certs:add`` command." +msgstr "" + +#: ../../install/heroku.rst:225 +msgid "HTTPS" +msgstr "" + +#: ../../install/heroku.rst:227 +msgid "All Tabbycat sites deployed to Heroku redirect all traffic to HTTPS by default." +msgstr "" + +#: ../../install/heroku.rst:229 +msgid "For a myriad of reasons, we strongly advise against disabling this. But if for some reason you need to run on plain HTTP, you can do this by setting the ``DISABLE_HTTPS_REDIRECTS`` config variable in Heroku to ``disable`` (see `Heroku documentation on config vars `_). The value of the config var must be ``disable``; if it's anything else, HTTPS redirects will remain in place." +msgstr "" + +#: ../../install/heroku.rst:231 +msgid "Most modern browsers, after having been redirected by a site to HTTPS once, remember that that site requires HTTPS and go there for all subsequent visits even if the user typed in a plain http\\:// address. It may do this because it cached the HTTP 301 permanent redirect, stored an HSTS entry and/or tagged its session cookie to require HTTPS. If, after disabling HTTPS on your Tabbycat site, you find that you're still being redirected to HTTPS, first try a browser or computer that *hasn't* visited the site before. If that works, then remove the relevant entry from your (original) browser's cache, HSTS set and cookies, and try again." +msgstr "" + +#: ../../install/heroku.rst:234 +msgid "Time zone" +msgstr "" + +#: ../../install/heroku.rst:236 +msgid "If you want to change the time zone you nominated during deployment, you can do so by going to the `Heroku Dashboard `_, clicking on your app, going to the **Settings** tab, clicking **Reveal Config Vars** and changing the value of the ``TIME_ZONE`` variable. This value must be one of the names in the IANA tz database, *e.g.* ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``. You can find a `list of these on Wikipedia `_ in the 'TZ\\*' column." +msgstr "" + +#: ../../install/heroku.rst:239 +msgid "SendGrid account details" +msgstr "" + +#: ../../install/heroku.rst:241 +msgid "By default, Heroku will automatically create a SendGrid account for you. For small tournaments, this should work fine. For larger ones, though, SendGrid typically doesn't allow new accounts to send so many emails without additional vetting. This vetting is separate to the verification you did for your Heroku account, and as far as we're aware, it can't be done until you send your first email, by which time it's probably too late." +msgstr "" + +#: ../../install/heroku.rst:243 +msgid "If you're running a large tournament, you may wish to use your own SendGrid account instead. The free tier probably won't suffice after the trial period, but the Essentials tier should be more than adequate. If you're a student and have the `GitHub Education Pack `_, you might find the SendGrid plan here useful." +msgstr "" + +#: ../../install/heroku.rst:245 +msgid "If you set up and use your own SendGrid account, you can remove the SendGrid add-on from your Heroku app. The SendGrid add-on is only necessary if you wish to use Heroku's auto-created SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:247 +msgid "To set up your app to use your own SendGrid account:" +msgstr "" + +#: ../../install/heroku.rst:251 +msgid "`Sign up for a SendGrid account `_, if you don't already have one." +msgstr "" + +#: ../../install/heroku.rst:253 +msgid "`Create an API key `_ in your SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:255 +msgid "There are `instructions for how to do this in the SendGrid documentation `_. The only permission that is needed is the \"Mail Send\" permission, so you can turn off all others if you want to be safe." +msgstr "" + +#: ../../install/heroku.rst:257 +msgid "Set the following config vars in Heroku Dashboard (or using the Heroku CLI, if you have it):" +msgstr "" + +#: ../../install/heroku.rst:259 +msgid "``SENDGRID_USERNAME`` should be set to ``apikey`` (not your username)." +msgstr "" + +#: ../../install/heroku.rst:260 +msgid "``SENDGRID_PASSWORD`` should be set to your API key, which will start with ``SG*******``." +msgstr "" + +#: ../../install/heroku.rst:262 +msgid "The `Heroku SendGrid instructions `_ to do something with ``SENDGRID_API_KEY`` are **incorrect**. We figured this out by contacting SendGrid support staff. Use the above config vars instead." +msgstr "" + +#: ../../install/heroku.rst:268 +msgid "Upgrading an existing Heroku app" +msgstr "" + +#: ../../install/heroku.rst:270 +msgid "For most users, we recommend starting a new site for every tournament, when you set up the tab for that tournament. There's generally not a pressing need to upgrade Tabbycat after a tournament is concluded, and every time you deploy a new site, you'll be using the latest version at the time of deployment." +msgstr "" + +#: ../../install/heroku.rst:272 +msgid "To upgrade an existing Heroku-based Tabbycat app to the latest version, you need to *deploy* the current version of Tabbycat to your Heroku app. There are several ways to do this. We list one below, primarily targeted at users with some background in Git." +msgstr "" + +#: ../../install/heroku.rst:274 +msgid "The essence of it is that you need to `create a Git remote `_ for your Heroku app (if you don't already have one), then `push to it `_." +msgstr "" + +#: ../../install/heroku.rst:276 +msgid "You should **always** :ref:`back up your database ` before upgrading Tabbycat." +msgstr "" + +#: ../../install/heroku.rst:278 +msgid "You'll need both Git and the Heroku CLI, and you'll need to be logged in to the Heroku CLI already." +msgstr "" + +#: ../../install/heroku.rst:280 +msgid "Take a backup of your database::" +msgstr "" + +#: ../../install/heroku.rst:284 +msgid "If you haven't already, clone our Git repository and check out the master branch::" +msgstr "" + +#: ../../install/heroku.rst:289 +msgid "If you've already cloned our Git repository, don't forget to pull so you're up to date::" +msgstr "" + +#: ../../install/heroku.rst:294 +msgid "Check to see if you have a Git remote already in place::" +msgstr "" + +#: ../../install/heroku.rst:300 +msgid "If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``." +msgstr "" + +#: ../../install/heroku.rst:302 +msgid "If a Git remote URL for your Tabbycat site *doesn't* appear, then create one::" +msgstr "" + +#: ../../install/heroku.rst:307 +msgid "If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments." +msgstr "" + +#: ../../install/heroku.rst:309 +msgid "Push to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:313 +msgid "This will take a while to complete." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/linux.po b/docs/locale/kk/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..82d7b1583c1 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/linux.po @@ -0,0 +1,249 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: kk_KZ\n" + +#: ../../install/linux.rst:5 +msgid "Installing Locally on Linux" +msgstr "" + +#: ../../install/linux.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/linux.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/linux.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Linux, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/linux.rst:14 +msgid "The instructions apply to both Linux, and :ref:`Linux on Windows `." +msgstr "" + +#: ../../install/linux.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/linux.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/linux.rst:21 ../../install/linux.rst:56 +#: ../../install/linux.rst:130 +msgid "Advanced users" +msgstr "" + +#: ../../install/linux.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/linux.rst:27 +msgid "Short version" +msgstr "" + +#: ../../install/linux.rst:38 +msgid "Then create **settings/local.py** as described :ref:`below `, then::" +msgstr "" + +#: ../../install/linux.rst:53 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/linux.rst:54 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/linux.rst:59 +msgid "These instructions are for Ubuntu, and are targeted at Ubuntu 18.04. If you have another distribution of Linux, we trust you'll know how to navigate the package manager for your distribution to install the dependencies." +msgstr "" + +#: ../../install/linux.rst:64 +msgid "1(a). Python" +msgstr "" + +#: ../../install/linux.rst:65 +msgid "Tabbycat requires Python 3.6 or later. You probably already have Python 3.6, but you'll also need the development package in order to install Psycopg2 later. The ``venv`` module will come in handy too. Install::" +msgstr "" + +#: ../../install/linux.rst:69 +msgid "Check the version::" +msgstr "" + +#: ../../install/linux.rst:74 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/linux.rst:77 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/linux.rst:78 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/linux.rst:80 +msgid "Install PostgreSQL using the `PostgreSQL installation instructions here `_." +msgstr "" + +#: ../../install/linux.rst:82 +msgid "Normally, installing the latest stable version should be best, but if you're having issues, install the same version as the current `default version on Heroku `_, as that will be what is currently most commonly used with Tabbycat. If you're planning on pushing data between your local installation and a Heroku site, it's best to match the Heroku's current default version." +msgstr "" + +#: ../../install/linux.rst:84 +msgid "You'll also need the ``libpq-dev`` package in order to install Psycopg2 later::" +msgstr "" + +#: ../../install/linux.rst:91 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/linux.rst:92 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/linux.rst:94 +msgid "Tabbycat requires Node and its package manager to compile front-end dependencies. Install using:" +msgstr "" + +#: ../../install/linux.rst:104 +msgid "1(d). Other development tools" +msgstr "" + +#: ../../install/linux.rst:105 +msgid "Some of the Python packages require GCC, G++ and Make in order to install::" +msgstr "" + +#: ../../install/linux.rst:112 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/linux.rst:114 +msgid "Choose either of the following two methods." +msgstr "" + +#: ../../install/linux.rst:117 +msgid "Method 1 (Git clone)" +msgstr "" + +#: ../../install/linux.rst:119 +msgid "If you have Git, life will be easier if you clone `our GitHub repository`_:" +msgstr "" + +#: ../../install/linux.rst:126 +msgid "(You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.)" +msgstr "" + +#: ../../install/linux.rst:128 +msgid "The default branch is ``develop``, so you need to explicitly change the branch to ``master``, which is what the ``git checkout master`` line does." +msgstr "" + +#: ../../install/linux.rst:133 +msgid "You might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/linux.rst:136 +msgid "Method 2 (tarball)" +msgstr "" + +#: ../../install/linux.rst:138 +msgid "If you don't want to use Git, simply download and extract:" +msgstr "" + +#: ../../install/linux.rst:147 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/linux.rst:149 +msgid "You can skip step 1 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/linux.rst:151 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``. Grant this user the ability to create databases, since this'll make it easier to spin up new instances of Tabbycat in the future." +msgstr "" + +#: ../../install/linux.rst:157 +msgid "If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*." +msgstr "" + +#: ../../install/linux.rst:159 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/linux.rst:167 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/linux.rst:168 +msgid "Almost there!" +msgstr "" + +#: ../../install/linux.rst:170 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/linux.rst:176 +msgid "Start a new virtual environment. We suggest the name ``venv``, though it can be any name you like:" +msgstr "" + +#: ../../install/linux.rst:182 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/linux.rst:186 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/linux.rst:192 +msgid "Navigate to the **tabbycat/settings** sub folder and copy **local.example** to **local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/linux.rst:207 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/linux.rst:211 +msgid "Navigate to the **tabbycat** sub-directory, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/linux.rst:219 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/linux.rst:225 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/linux.rst:229 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/linux.rst:234 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/linux.rst:237 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/linux.rst:238 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/local.po b/docs/locale/kk/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..061b0c0e341 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/local.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: kk_KZ\n" + +#: ../../install/local.rst:5 +msgid "Local Installations" +msgstr "" + +#: ../../install/local.rst:8 +msgid "What is a local installation?" +msgstr "" + +#: ../../install/local.rst:10 +msgid "Tabbycat is a web-based system: it's designed to run as a web site. However, instead of installing it on a web server, you can install it on your computer, serving web pages to yourself. This is called a local installation." +msgstr "" + +#: ../../install/local.rst:12 +msgid "Then, when you open your browser, you can use Tabbycat like any other web site. The only difference is that this one is on **your** computer, not some computer in a data centre in a far-away land. In effect, you are getting your computer to behave like a web server." +msgstr "" + +#: ../../install/local.rst:17 +msgid "Should I use a local installation?" +msgstr "" + +#: ../../install/local.rst:19 +msgid "In most cases, you should make an online Tabbycat installation by :ref:`setting up an instance on Heroku `. This has a number of major advantages:" +msgstr "" + +#: ../../install/local.rst:21 +msgid "The installation process is easier." +msgstr "" + +#: ../../install/local.rst:22 +msgid "You can enter ballots and manage your tournament from multiple computers." +msgstr "" + +#: ../../install/local.rst:23 +msgid "Participants can access the draw, motions, results and more online." +msgstr "" + +#: ../../install/local.rst:24 +msgid "Heroku's data centers are less likely to fail than your computer is." +msgstr "" + +#: ../../install/local.rst:25 +msgid "Heroku e-mails Tabbycat's developers error reports to help us fix bugs." +msgstr "" + +#: ../../install/local.rst:27 +msgid "In some cases, you might have a good reason to use a local installation. We can think of just one such reason: If you won't have access to the internet at your tournament, or if internet access will be flaky, then you should use a local installation." +msgstr "" + +#: ../../install/local.rst:32 +msgid "You'll need internet access to download dependencies during the local installation process. So if you're not expecting to have reliable internet access at your tournament, be sure to have Tabbycat installed *before* you get there!" +msgstr "" + +#: ../../install/local.rst:37 +msgid "Advanced users" +msgstr "" + +#: ../../install/local.rst:40 +msgid "Tabbycat is a `Django `_ project, so if you have your own preferred method of running Django projects, you can also do that. Just be aware that we haven't tried it." +msgstr "" + +#: ../../install/local.rst:45 +msgid "Okay, so how do I do it?" +msgstr "" + +#: ../../install/local.rst:47 +msgid "The easiest option is to :ref:`install Tabbycat using Docker `. This method should work across all operating systems and is by far the easiest way to get a local copy running." +msgstr "" + +#: ../../install/local.rst:49 +msgid "If installing using Docker does not work, or if you want to be able to modify Tabbycat's code we also have a number of instructions for manually setting up a copy of Tabbycat. There instructions are here:" +msgstr "" + +#: ../../install/local.rst:51 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/local.rst:52 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/local.rst:53 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/local.rst:54 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/local.rst:57 +msgid "Advanced uses" +msgstr "" + +#: ../../install/local.rst:60 +msgid "Can others access my local install?" +msgstr "" + +#: ../../install/local.rst:62 +msgid "Local installations can also take advantage of multiple-computer site access, including data entry---it's just takes more work than a Heroku installation to set up." +msgstr "" + +#: ../../install/local.rst:64 +msgid "Since a local installation is just having your computer run a web server, it can serve other computers too. You can make this work even if you don't have internet access: all you need is a router that you can use to connect a few computers together. Then other computers on your local network can access the Tabbycat site hosted on your computer. We did this at Victoria Australs 2012." +msgstr "" + +#: ../../install/local.rst:66 +msgid "We don't provide detailed instructions for this; we leave it for advanced users to set up themselves. As a rough guide:" +msgstr "" + +#: ../../install/local.rst:68 +msgid "You need to pass in your computer's IP address and port to the `runserver` command, for example, if your computer (the one acting as a server) is 196.168.0.2 and you want to run it on port 8000: ``dj runserver 192.168.0.2:8000``" +msgstr "" + +#: ../../install/local.rst:69 +msgid "You need to configure your firewall settings to allow incoming connections on the IP address and port you specified in that command." +msgstr "" + +#: ../../install/local.rst:70 +msgid "Be aware that local installs use the Django development server, whose **security is not tested**. Therefore, it's a good idea to make sure your firewall **only lets in computers on your local network** (or, if you're really paranoid, isolate the network from the internet completely)." +msgstr "" + +#: ../../install/local.rst:73 +msgid "Can I run an internet-accessible website from a local installation?" +msgstr "" + +#: ../../install/local.rst:75 +msgid "Probably not. Even if you disable your firewall, chances are your home router (or university router) will block any connections from the outside world to you. Even if you can though, **you really shouldn't**. The local installation uses the *Django development server*, which is a lightweight server designed for developers. Specifically, Django **does not test the security of its development server** in the way that proper web servers do. That is: It's a security risk to run a local installation as an internet-accessible site. Don't do it. `Install Tabbycat on Heroku `_ instead." +msgstr "" + +#: ../../install/local.rst:77 +msgid "Alternatively, if you have a background in web development, you might choose to install Tabbycat on your own production server. It's a Django project, so any means of supporting Django projects should work fine." +msgstr "" + +#: ../../install/local.rst:79 +msgid "It's safe to run on a small, isolated network (see above) with your firewall correctly configured because you presumably trust everyone you let on the network!" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/osx.po b/docs/locale/kk/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..00613e0034c --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/osx.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: kk_KZ\n" + +#: ../../install/osx.rst:5 +msgid "Installing Locally on macOS" +msgstr "" + +#: ../../install/osx.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/osx.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/osx.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on macOS, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/osx.rst:15 +msgid "Requisite technical knowledge" +msgstr "" + +#: ../../install/osx.rst:17 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/osx.rst:19 +msgid "Every line in the instructions that begins with ``$`` is a command that you need to run in a **Terminal**, but without the ``$``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/osx.rst:21 ../../install/osx.rst:42 ../../install/osx.rst:68 +msgid "Advanced users" +msgstr "" + +#: ../../install/osx.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/osx.rst:27 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/osx.rst:29 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/osx.rst:32 +msgid "1(a). Python" +msgstr "" + +#: ../../install/osx.rst:33 +msgid "Tabbycat requires Python 3.6 or later. macOS only comes with Python 2.7, so you'll need to install this. You can download the latest version from the `Python website `_." +msgstr "" + +#: ../../install/osx.rst:35 +msgid "The executable will probably be called ``python3``, rather than ``python``. Check::" +msgstr "" + +#: ../../install/osx.rst:40 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/osx.rst:45 +msgid "These instructions will use the ``venv`` module. If you prefer, you can use `Virtualenv `_ instead." +msgstr "" + +#: ../../install/osx.rst:48 +msgid "1(b). Postgres.app" +msgstr "" + +#: ../../install/osx.rst:50 +msgid "Download `Postgres.app `_, move it to your Applications folder, and open it. This should place an icon in your menu bar, showing that the postgres database is running. Whenever you are running Tabbycat you'll need to have this app running." +msgstr "" + +#: ../../install/osx.rst:52 +msgid "You'll need to use the PostgreSQL command-line tools, so run the command that the Postgres.app suggests in its `installation instructions `_ for adding them to your ``$PATH``. As of February 2018, it was::" +msgstr "" + +#: ../../install/osx.rst:57 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/osx.rst:59 +msgid "Download and run the `node.js 8 macOS Installer (.pkg) `_" +msgstr "" + +#: ../../install/osx.rst:62 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/osx.rst:64 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/osx.rst:65 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/osx.rst:66 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/osx.rst:71 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/osx.rst:73 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/osx.rst:76 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/osx.rst:78 +msgid "You can skip steps 1--3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/osx.rst:80 +msgid "Open up a copy of the Terminal app, then copy/paste or type in::" +msgstr "" + +#: ../../install/osx.rst:84 +msgid "Hit enter then quit and reopen the Terminal app." +msgstr "" + +#: ../../install/osx.rst:86 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``." +msgstr "" + +#: ../../install/osx.rst:92 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/osx.rst:96 +msgid "In terminal type in::" +msgstr "" + +#: ../../install/osx.rst:101 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/osx.rst:102 +msgid "Almost there!" +msgstr "" + +#: ../../install/osx.rst:104 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/osx.rst:108 +msgid "Copy **settings/local.example** to **settings/local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/osx.rst:123 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/osx.rst:127 +msgid "Ensure you are in the main Tabbycat directory (not the config folder where **settings_local.py** is and start a new virtual environment. We suggest the name ``venv``, though it can be any name you like::" +msgstr "" + +#: ../../install/osx.rst:131 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/osx.rst:135 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/osx.rst:141 +msgid "Navigate to the **tabbycat** sub folder, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/osx.rst:149 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/osx.rst:155 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/osx.rst:159 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/osx.rst:164 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/osx.rst:167 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/osx.rst:168 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/windows.po b/docs/locale/kk/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..bd7b6d5305e --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/windows.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: kk_KZ\n" + +#: ../../install/windows.rst:5 +msgid "Installing Locally on Windows" +msgstr "" + +#: ../../install/windows.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/windows.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/windows.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/windows.rst:14 +msgid "If you have Windows 10 and any experience with Linux, we recommend installing it on :ref:`Linux on Windows (WSL) ` instead, which is much easier than the process below." +msgstr "" + +#: ../../install/windows.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/windows.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/windows.rst:21 +msgid "In these instructions, we'll use **Windows PowerShell**, a command-line interface that comes with every installation of Windows (since XP). The easiest way to find it (on Windows 7 and later) is to search for it in your Start Menu. Every line in the instructions that begins with ``>`` is a command that you need to run in PowerShell, but without the ``>``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/windows.rst:23 ../../install/windows.rst:81 +#: ../../install/windows.rst:104 +msgid "Advanced users" +msgstr "" + +#: ../../install/windows.rst:26 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/windows.rst:29 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/windows.rst:31 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/windows.rst:36 +msgid "1(a). Python" +msgstr "" + +#: ../../install/windows.rst:37 +msgid "*Python is a popular programming language, and the language in which the core of Tabbycat is coded.*" +msgstr "" + +#: ../../install/windows.rst:39 +msgid "Download and install the latest version of Python 3.6 from the `Python website `_. In the installer, check the box to add Python to your PATH (see box below)." +msgstr "" + +#: ../../install/windows.rst:42 +msgid "Which file should I download?" +msgstr "" + +#: ../../install/windows.rst:44 +msgid "Regardless of if you have 64-bit or 32-bit Windows, choose the \"Windows x86 executable installer\"." +msgstr "" + +#: ../../install/windows.rst:46 +msgid "**Please take note:** Just after you open the installer, **check the \"Add Python 3.6 to PATH\" box**:" +msgstr "" + +#: ../../install/windows.rst:51 +msgid "To check that Python is installed correctly, open Windows PowerShell, type ``python`` and press Enter. It should look something like this. If you installed the 32-bit version, it will say ``32 bit`` instead of ``64 bit``." +msgstr "" + +#: ../../install/windows.rst:55 +msgid "(To exit Python, type ``exit()`` then press Enter.)" +msgstr "" + +#: ../../install/windows.rst:57 +msgid "**If you already have Python**, great! Some things to double-check:" +msgstr "" + +#: ../../install/windows.rst:59 +msgid "You must have at least Python 3.6 (Python 2 is not supported.)" +msgstr "" + +#: ../../install/windows.rst:60 +msgid "Your installation path must not have any spaces in it." +msgstr "" + +#: ../../install/windows.rst:61 +msgid "If that doesn't work, note that the following must be part of your ``PATH`` environment variable: ``C:\\Python36;C:\\Python36\\Scripts`` (or as appropriate for your installation directory). Follow `the instructions here `_ to add this to your path." +msgstr "" + +#: ../../install/windows.rst:66 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/windows.rst:67 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/windows.rst:69 +msgid "Go to the `PostgreSQL downloads page `_, then follow the link through to EnterpriseDB to download and install the latest version of PostgreSQL." +msgstr "" + +#: ../../install/windows.rst:71 +msgid "Once PostgreSQL is installed, the PostgreSQL service will run on your computer whenever you are using it. You might prefer to configure it so that it only runs when you want to run Tabbycat. To do this, open \"Services\" in your Control Panel on Windows, find the PostgreSQL service, and change its startup type to \"Manual\". This will tell it not to start whenever you log in. Then, if you want to run the server (so you can use Tabbycat), you can do so from \"Services\" by selecting the PostgreSQL service and clicking \"Start the service\"." +msgstr "" + +#: ../../install/windows.rst:74 +msgid "1(c). Git" +msgstr "" + +#: ../../install/windows.rst:75 +msgid "*Git is a version control system.*" +msgstr "" + +#: ../../install/windows.rst:77 +msgid "We won't use Git directly, but Node.js (which we install in the next step) requires Git to work. So, install the latest version for Windows from the `Git website `_." +msgstr "" + +#: ../../install/windows.rst:84 +msgid "If you already have `GitHub Desktop `_ installed, you might think that this would be good enough. Unfortunately, it's not---GitHub Desktop installs a portable version of Git. Node.js, on the other hand, requires the ``git`` to be in the ``PATH``, so it can call it directly. The easiest (but not only) way to do this is just to install Git from the link above." +msgstr "" + +#: ../../install/windows.rst:92 +msgid "1(d). Node.js/NPM" +msgstr "" + +#: ../../install/windows.rst:93 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/windows.rst:95 +msgid "Download and run the node.js 8 Installer (.msi) for either `x64 versions `_ of Windows or `x86 versions `_." +msgstr "" + +#: ../../install/windows.rst:98 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/windows.rst:100 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/windows.rst:101 +msgid "Download the zip file." +msgstr "" + +#: ../../install/windows.rst:102 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/windows.rst:107 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/windows.rst:109 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/windows.rst:114 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/windows.rst:116 +msgid "You can skip steps 2 and 3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/windows.rst:118 +msgid "Open the **pgAdmin** tool, which you installed as part of installing PostgreSQL. In the object browser on the left, double-click the server marked \"(localhost:5432)\". Log in using the password you set during installation." +msgstr "" + +#: ../../install/windows.rst:120 +msgid "Right-click Login Roles, and click \"New Login Role…\"" +msgstr "" + +#: ../../install/windows.rst:124 +msgid "Fill in the New Login Role box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:126 +msgid "In the **Properties** tab, in **Role Name**, choose a user account name. (If you don't know what to pick, we suggest \"tabbycat\".)" +msgstr "" + +#: ../../install/windows.rst:127 +msgid "In the **Definition** tab, choose a **Password** and type it in **Password (again)**." +msgstr "" + +#: ../../install/windows.rst:129 +msgid "Then click OK. (Remember this user name and password, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:131 +msgid "Right-click Databases, and click \"New Database…\"" +msgstr "" + +#: ../../install/windows.rst:135 +msgid "Fill in the New Database box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:137 +msgid "In the **Properties** tab, in **Name**, choose a database name (with no spaces in it)." +msgstr "" + +#: ../../install/windows.rst:138 +msgid "In the **Properties** tab, in **Owner**, type the name of the login role you just created." +msgstr "" + +#: ../../install/windows.rst:140 +msgid "Then click OK. (Remember the database name, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:143 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/windows.rst:145 +msgid "Almost there!" +msgstr "" + +#: ../../install/windows.rst:147 +msgid "Open a Windows PowerShell. Navigate to the folder where you cloned/extracted Tabbycat. For example, if you installed it in ``C:\\Users\\myusername\\Documents\\GitHub\\tabbycat``, then run::" +msgstr "" + +#: ../../install/windows.rst:151 +msgid "Make a copy of **settings\\\\local.example** and rename it to **settings\\\\local.py**. Open your new **local.py** file. Find this part, and fill in the blanks (the empty quotation marks) as indicated:" +msgstr "" + +#: ../../install/windows.rst:166 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/windows.rst:170 +msgid "Start a new virtual environment. We suggest the name `venv`, though it can be any name you like::" +msgstr "" + +#: ../../install/windows.rst:174 +msgid "Run the `Activate.ps1` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/windows.rst:178 +msgid "If you get an error message saying that the script isn't digitally signed, open a PowerShell with administrator privileges by right-clicking PowerShell in the Start meny and clicking \"Run as administrator\". Then run this command::" +msgstr "" + +#: ../../install/windows.rst:182 +msgid "Read the warning message, then type ``y`` to confirm. By default, the execution policy on Windows is ``Restricted``, which does not permit scripts like ``activate`` to be run. Changing it to ``RemoteSigned`` relaxes it to allow local scripts to be run without checking the signature." +msgstr "" + +#: ../../install/windows.rst:184 +msgid "Install Tabbycat's requirements." +msgstr "" + +#: ../../install/windows.rst:186 +msgid "If you installed **32-bit Python**::" +msgstr "" + +#: ../../install/windows.rst:192 +msgid "You might be wondering: I thought I already installed the requirements. Why am I installing more? And the answer is: Before, you were installing the requirements to create a Python virtual environment for Tabbycat to live in. Now, you're *in* the virtual environment, and you're installing everything required for *Tabbycat* to operate." +msgstr "" + +#: ../../install/windows.rst:194 +msgid "Initialize the database and create a user account for yourself::" +msgstr "" + +#: ../../install/windows.rst:202 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/windows.rst:208 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/windows.rst:212 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000/). It should look something like this:" +msgstr "" + +#: ../../install/windows.rst:216 +msgid "If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/windows.rst:218 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/windows.rst:221 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/windows.rst:223 +msgid "To start your Tabbycat instance up again next time you use your computer, open a PowerShell and::" +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/install/wsl.po b/docs/locale/kk/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..94a5036e358 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/install/wsl.po @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: kk_KZ\n" + +#: ../../install/wsl.rst:5 +msgid "Installing Locally on Linux on Windows (WSL)" +msgstr "" + +#: ../../install/wsl.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/wsl.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/wsl.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/wsl.rst:14 +msgid "Windows Subsystem for Linux is only available on Windows 10. If you have an older version of Windows, :ref:`install Tabbycat locally on Windows ` instead." +msgstr "" + +#: ../../install/wsl.rst:18 +msgid "Windows Subsystem for Linux (WSL) was taken out of beta in the `Windows 10 Fall Creators Update `_, which was released in October 2017. On Windows 10 computers, we now recommend this local installation method over :ref:`installing it directly on Windows `." +msgstr "" + +#: ../../install/wsl.rst:21 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/wsl.rst:23 +msgid "It will help a lot if you have some experience with Linux, but mainly you need to be familiar with command-line interfaces, and you should be willing to install and work with the `Windows Subsystem for Linux `_. You might need to be prepared to familiarise yourself with aspects of WSL not covered in these instructions. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/wsl.rst:27 +msgid "A. Install Ubuntu on Windows" +msgstr "" + +#: ../../install/wsl.rst:29 +msgid "*If you already have a Linux distribution installed on your PC, skip to* :ref:`part B `." +msgstr "" + +#: ../../install/wsl.rst:31 +msgid "First, `check that you have the Fall Creators Update (build 1709) `_. If you don't, update Windows." +msgstr "" + +#: ../../install/wsl.rst:33 +msgid "Then, install the Windows Subsystem for Linux. For most people, this involves the following:" +msgstr "" + +#: ../../install/wsl.rst:35 +msgid "Enable the Windows Subsystem for Linux feature, by finding **Turn Windows features on or off** on the Start Menu, then checking the box for **Windows Subsystem for Linux** and clicking **OK**. You'll be prompted to restart your computer to make the changes take effect." +msgstr "" + +#: ../../install/wsl.rst:39 +msgid "Install Ubuntu by finding it on the Microsoft Store. For your convenience, `here's a direct link to Ubuntu on the Microsoft Store `_." +msgstr "" + +#: ../../install/wsl.rst:41 +msgid "Launch Ubuntu and follow the instructions. You'll be prompted to create a user account for your Ubuntu system." +msgstr "" + +#: ../../install/wsl.rst:43 +msgid "Some more detailed instructions, including some troubleshooting, are `available on Microsoft's website `_." +msgstr "" + +#: ../../install/wsl.rst:45 +msgid "Advanced users" +msgstr "" + +#: ../../install/wsl.rst:48 +msgid "You can, of course, use any Linux distribution that Windows supports. We just suggest Ubuntu because it's the most well-known (and the one that we use)." +msgstr "" + +#: ../../install/wsl.rst:53 +msgid "B. Install Tabbycat" +msgstr "" + +#: ../../install/wsl.rst:55 +msgid "You now have a Linux subsystem running on your computer, so head over to the :ref:`instructions to install Tabbycat locally on Linux ` and follow those (in full)." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/kk/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..fa81148bc15 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/use/finishing-a-tournament.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: kk_KZ\n" + +#: ../../use/finishing-a-tournament.rst:5 +msgid "Finishing a Tournament" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:7 +msgid "This page outlines some final steps to take after the conclusion of outrounds." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:10 +msgid "Tab Release" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:12 +msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:14 +msgid "Team Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:15 +msgid "Speakers Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:16 +msgid "Replies Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:17 +msgid "Motions Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:19 +msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:21 +msgid "If you defined any speaker categories (for example, Novice, ESL or EFL), a tab for each category marked \"public\" can also be released using the **Release speaker category tabs to public**. You can similarly limit each of these tabs to display just the top few speakers, in the definition of the speaker categories. The speaker categories not marked public are *not* released by this option." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:23 +msgid "You can also redact individual speaker's identifying details (name, team, and institution) from the public individual tabs. You can do so by going into the **Edit Database** area, going to *Participants > Speakers*, finding the speaker and clicking the **Anonymous** box (and saving)." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:25 +msgid "Public tab pages are cached for performance reasons. This means that any changes that affect a tab page (say redacting a speaker or changing a speaker score) may not show up on the public site for up to an hour." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:28 +msgid "Wrapping Up" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:30 +msgid "You probably want to turn off the *Public ballots*, *Public feedback*, *Feedback progress*, and *Public draw* features under **Configuration** at this stage as they no longer have any use." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:32 +msgid "You also want to go into the **Edit Database** area, find the tournament and hit \"release all\" so that the results for the final round can be released." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/use/importing-data.po b/docs/locale/kk/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..5feab5a1074 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/use/importing-data.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: kk_KZ\n" + +#: ../../use/importing-data.rst:5 +msgid "Importing Initial Data" +msgstr "" + +#: ../../use/importing-data.rst:7 +msgid "Once you've got Tabbycat installed, the next step is to import data for the tournament: that is, import details of teams, speakers, adjudicators and rounds. There are a few ways to do this, each with their advantages and disadvantages." +msgstr "" + +#: ../../use/importing-data.rst:9 +msgid "To help you decide which to choose, here's a summary:" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Method" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Best for" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawcard" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawback" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "**Demonstration data**" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Trying out Tabbycat" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Loads sample data in one click" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Not for use with real tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "**Simple importer**" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Small and medium-sized tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Easy to use" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Only deals with basic data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "**Edit database**" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding data not handled by the simple importer or editing existing data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Can handle all types of information" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding large amounts of data is time consuming" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "``importtournament`` **command**" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Large tournaments" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Easier to repeat, can handle most formats of information" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Requires basic knowledge of how to use a command line interface" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "**Developing your own importer**" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Large tournaments with custom needs" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Easier to repeat, will take information in whatever format it is already in" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Requires background in Python and and learning about the importer classes" +msgstr "" + +#: ../../use/importing-data.rst:41 +msgid "Demonstration data" +msgstr "" + +#: ../../use/importing-data.rst:42 +msgid "If you're just learning or experimenting with Tabbycat, there are two demonstration datasets available, each with a sample set of teams, adjudicators, *etc.*, so that you can immediately start running rounds. Just be aware that these probably won't relate to anyone at your real-life tournament." +msgstr "" + +#: ../../use/importing-data.rst:44 +msgid "To load a demonstration dataset, click **New Tournament** link on the home page (once logged in as admin). You'll see a page titled \"Create New Tournament\". Scroll to the bottom of this page and click on one of the links at the bottom." +msgstr "" + +#: ../../use/importing-data.rst:47 +msgid "Simple importer" +msgstr "" + +#: ../../use/importing-data.rst:48 +msgid "The simple importer is the easiest way to get a tournament going, and we recommend it for small- and medium-sized tournaments. It allows you to add institutions, teams, adjudicators, venues, venue categories and venue constraints. (If you need to add anything else, use the :ref:`Edit Database area ` instead.)" +msgstr "" + +#: ../../use/importing-data.rst:50 +msgid "To get started, create a new tournament using the **New Tournament** link on the home page (once logged in as admin). It'll ask you for a few basic pieces of information." +msgstr "" + +#: ../../use/importing-data.rst:54 +msgid "Then, once you're in your tournament, click **Setup** in the left-hand menu, then **Import Data**, to open the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:58 +msgid "You first need to add institutions. Once institutions are added, you can then add teams and adjudicators in the relevant sections. Each of these is a two-step process:" +msgstr "" + +#: ../../use/importing-data.rst:60 +msgid "For **institutions** and **venues**, it will first ask you to copy-paste a list of names and properties in a comma-separated table format. The second step is to confirm individual fiels." +msgstr "" + +#: ../../use/importing-data.rst:61 +msgid "For **teams** and **adjudicators**, it will first ask you how many teams/adjudicators to add for each institution (or who lack an institutional affiliation). The second step is to fill in their details, for example, names." +msgstr "" + +#: ../../use/importing-data.rst:69 +msgid "Finally, if you would like to use venue categories and/or :ref:`venue constraints `, you can do so using the two last sections of the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:71 +msgid "If copying and pasting from a spreadsheet, an easy way to make a comma-separated table is to save a spreadsheet with the relevant information as a \\*.csv file, then open this file in a plain text editor (such as Notepad or TextEdit), and copying it from there." +msgstr "" + +#: ../../use/importing-data.rst:76 +msgid "Editing the database" +msgstr "" + +#: ../../use/importing-data.rst:77 +msgid "Sometimes, the simple importer just isn't enough---whether because you need more customization than the simple importer handles (*e.g.* adjudicator feedback questions), or because some participants changed their details after you imported the inital data. In this case, the easiest thing to do is to edit the database via the Django administrative interface (under Setup > Edit Database)." +msgstr "" + +#: ../../use/importing-data.rst:79 +msgid "The general pattern goes like this: Go to **Setup > Edit Database**, find the type of object you wish to add/change, and click \"Add\" or \"Change\". Then, fill in what you need to and save the object." +msgstr "" + +#: ../../use/importing-data.rst:81 +msgid "The Edit Database area is very powerful, and naturally if you mess things up, you can insert potentially catastrophic inconsistencies into the database. For participant information this is hard to do, but it's worth keeping in mind." +msgstr "" + +#: ../../use/importing-data.rst:86 +msgid "The ``importtournament`` command on local installations" +msgstr "" + +#: ../../use/importing-data.rst:88 +msgid "We've written a management command called ``importtournament`` to help automate the tournament set-up. The script, however, is neither foolproof nor comprehensive, so you might find you need to modify things slightly if your tournament structure is different from ours. Be prepared to try this a few times to get it to work. Nonetheless, this is probably the fastest way to set up a tournament." +msgstr "" + +#: ../../use/importing-data.rst:90 +msgid "Copy and rename the ``data/demo`` folder" +msgstr "" + +#: ../../use/importing-data.rst:91 +msgid "See the CSV files in the new folder, and add/replace the data as per your tournament. Note that the institutions (*i.e.* first column) in the ``speakers.csv`` and ``adjudicators.csv`` files must match the institutions in the second column of the ``institutions.csv`` file. And that all CSV files must end with a blank line." +msgstr "" + +#: ../../use/importing-data.rst:92 +msgid "Use this command, replacing ``YOUR_DATA_DIR`` with your new folder's name. (Square brackets indicate optional arguments; if you use them, omit the square brackets. All of them relate to the name of your tournament.)" +msgstr "" + +#: ../../use/importing-data.rst:98 +msgid "This script has a number of options. They're worth taking a look at before you run the script. For details, see::" +msgstr "" + +#: ../../use/importing-data.rst:102 +msgid "Assuming the command completes successfully without errors, you should double check the data in the Django interface, as described above in :ref:`import-edit-database`. In particular you should check that the *Rounds* have the correct draw types and that silent rounds have been marked correctly." +msgstr "" + +#: ../../use/importing-data.rst:105 +msgid "``importtournament`` on Heroku installs" +msgstr "" + +#: ../../use/importing-data.rst:107 +msgid "Instructions for using the ``importtournament`` command on Heroku installations are in steps 4 and 5 of :ref:`install-heroku`. The recommended procedure is first to import the tournament into a local installation, :ref:`as described above `, and then to push the local database to Heroku using the ``heroku pg:push`` command." +msgstr "" + +#: ../../use/importing-data.rst:110 +msgid "Developing your own importer" +msgstr "" + +#: ../../use/importing-data.rst:112 +msgid "If our suggested file formats cause you headaches, it might be easier to write your own importer. We have a generic importer framework that should make this easier, so for some tournaments it might (very conceivably) be faster to write your own importer to conform to your data, than it is to make your data conform to our importer. You need a background in Python in order to do this. For more details, see :ref:`tournament-data-importers`." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/kk/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..e3351b43512 --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/use/running-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: kk_KZ\n" + +#: ../../use/running-a-tournament.rst:5 +msgid "Running a Tournament" +msgstr "" + +#: ../../use/running-a-tournament.rst:7 +msgid "Once you've finished the steps in :ref:`starting-a-tournament`, you're ready to go! This page outlines what you would do for each round during the tournament. After the tournament, proceed to :ref:`finishing-a-tournament`." +msgstr "" + +#: ../../use/running-a-tournament.rst:9 +msgid "This is all done from the admin area (*i.e.*, by the tab director or adjudication core member). In the admin area, tournament-wide pages (feedback, standings, and break) are at the top of the left-hand menu, while round-specific pages (availability, draw, display, motions, and results) are in dropdown's organised by each round's abbreviation." +msgstr "" + +#: ../../use/running-a-tournament.rst:11 +msgid "The basic workflow for each round is:" +msgstr "" + +#: ../../use/running-a-tournament.rst:13 +msgid ":ref:`Mark the teams, adjudicators, and venues present as available `" +msgstr "" + +#: ../../use/running-a-tournament.rst:14 +msgid ":ref:`Generate the draw ` and allocate the adjudicators" +msgstr "" + +#: ../../use/running-a-tournament.rst:15 +msgid ":ref:`Show/release the draw `" +msgstr "" + +#: ../../use/running-a-tournament.rst:16 +msgid ":ref:`Release/enter ` the motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:17 +msgid "Have the debates" +msgstr "" + +#: ../../use/running-a-tournament.rst:18 +msgid ":ref:`Enter results `" +msgstr "" + +#: ../../use/running-a-tournament.rst:19 +msgid ":ref:`Advance to the next round `" +msgstr "" + +#: ../../use/running-a-tournament.rst:24 +msgid "Availability" +msgstr "" + +#: ../../use/running-a-tournament.rst:26 +msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." +msgstr "" + +#: ../../use/running-a-tournament.rst:28 +msgid "To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance." +msgstr "" + +#: ../../use/running-a-tournament.rst:34 +msgid "You can set availabilities in advance of the current round — ie if you know the venue/adjudicator schedules their availabilities can be set ahead of time." +msgstr "" + +#: ../../use/running-a-tournament.rst:37 +msgid "Generating the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:39 +msgid "**Confirm the draft draw**. After advancing from availability section you will first be shown a draft draw that details how the draw was formulated, pointing out pull-ups and conflict swaps and the like." +msgstr "" + +#: ../../use/running-a-tournament.rst:43 +msgid "The draft draw is for you to double-check. While there are some basic tests on the draw algorithm, it never hurts to sanity-check it again." +msgstr "" + +#: ../../use/running-a-tournament.rst:45 +msgid "If you *do* find something wrong with a draft draw, you can edit the match-ups, but please also let us know what the problem was! You can find our contact details in the :ref:`authors` section." +msgstr "" + +#: ../../use/running-a-tournament.rst:47 +msgid "Once on the confirmed draw page you can click **Edit Adjudicators**." +msgstr "" + +#: ../../use/running-a-tournament.rst:51 +msgid "**Allocate the adjudicators**. Changes here will auto-save; feel free to return to the **Draw** when needed. See :ref:`adjudicator allocation ` for more details about the allocation process." +msgstr "" + +#: ../../use/running-a-tournament.rst:55 +msgid "If you are using venue constraints the **Draw** page may prompt you to Auto Allocate the venues used to satisfy those constraints; see :ref:`venue-constraints ` for more details. Regardless of whether you are using venue constraints or not you can change the Venues per-debate in the **Edit Venues** area." +msgstr "" + +#: ../../use/running-a-tournament.rst:60 +msgid "Releasing the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:62 +msgid "Once you're happy with your adjudicator allocation, you're ready to start the round." +msgstr "" + +#: ../../use/running-a-tournament.rst:64 +msgid "**Release to general assembly.** From the *Display* page for that round, go to **Show by Venue** or **Show by Team** (whichever you prefer). Then put it up on the projector. There are automatic scroll buttons and buttons for changing text sizing." +msgstr "" + +#: ../../use/running-a-tournament.rst:68 +msgid "**Release to public.** If you're using the public draw function (where the draw is posted publicly to your Tabbycat website) use the **Release to Public** button to allow the page to display." +msgstr "" + +#: ../../use/running-a-tournament.rst:72 +msgid "To avoid the site from being overloaded by anxious refreshers, we recommend that large tournaments not release the draw to the public until after it's been seen by general assembly. That said, note that due to caching there can be a delay of up to 1 minute between when a draw is released and when it first shows up on the public site." +msgstr "" + +#: ../../use/running-a-tournament.rst:73 +msgid "Tabbycat can be set to send emails once the draw is released to adjudicators informing them of their assignments for convenience." +msgstr "" + +#: ../../use/running-a-tournament.rst:78 +msgid "Entering and Releasing Motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:80 +msgid "Tabbycat is agnostic as to whether you enter motions into Tabbycat before or after they are shown publicly. However, they must be entered *at some point* before ballots are entered." +msgstr "" + +#: ../../use/running-a-tournament.rst:82 +msgid "**Enter the motion text.** Either before or after their public release motions can be entered in the **Motions** section for that round." +msgstr "" + +#: ../../use/running-a-tournament.rst:84 +msgid "**Release to general assembly.** If you are entering motions *before* they are publicly revealed note that there is a *Display Motions* button in the **Display** area that allows you to do a Power Point style motion release." +msgstr "" + +#: ../../use/running-a-tournament.rst:86 +msgid "**Release to public.** As with draws, if you have the *enable public view of motions* setting configured your Tabbycat website will display a running list of motions from the tournament. When this is on, using the **Release Motions to Public** button on the **Motions** page will mark the current set of motions as able to be displayed on this page." +msgstr "" + +#: ../../use/running-a-tournament.rst:91 +msgid "Entering Results" +msgstr "" + +#: ../../use/running-a-tournament.rst:93 +msgid "Enter debate results and feedback as they come in (and/or allow online entry of results and feedback)." +msgstr "" + +#: ../../use/running-a-tournament.rst:95 +msgid "Both results and feedback entered in the tab room or online need to be confirmed before the results are counted. To confirm a debate ballot and the debate as a whole, the confirmed checkbox under *Ballot Status* should be ticket in addition to the *Debate Status* being set to Confirmed." +msgstr "" + +#: ../../use/running-a-tournament.rst:97 +msgid "Note that you can track data entry progress from the **Overview** page for the tournament." +msgstr "" + +#: ../../use/running-a-tournament.rst:99 +msgid "See :ref:`data-entry` for more details about the data entry process." +msgstr "" + +#: ../../use/running-a-tournament.rst:101 +msgid "We strongly recommend entering all data using the assistant area, not the admin area. This is because the admin area (intentionally) does not enforce the data confirmation procedure." +msgstr "" + +#: ../../use/running-a-tournament.rst:106 +msgid "Advancing to the next round" +msgstr "" + +#: ../../use/running-a-tournament.rst:108 +msgid "Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button." +msgstr "" + +#: ../../use/running-a-tournament.rst:112 +msgid "When you advance to the next round, if you've enabled public results, the results for the current round (which is now the previous round) will be released to the public **unless** the round is marked as \"silent\" in the database. So if you're careful about when results should be released, don't change the current round until you're ready to release those results." +msgstr "" + +#: ../../use/running-a-tournament.rst:114 +msgid "There is a design assumption that you will always want to release results for non-silent rounds before you start working on the draw for the next round. If this isn't true for you, please get in touch with us so that we know. The workaround is to make all rounds silent, then unsilent them when you're ready to release results." +msgstr "" + +#: ../../use/running-a-tournament.rst:116 +msgid "Emails can be sent to speakers informing them of their team's win/loss/points record before advancing rounds. This is independent from whether the whole round's results are released to the public." +msgstr "" + diff --git a/docs/locale/kk/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/kk/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..fae915b11dd --- /dev/null +++ b/docs/locale/kk/LC_MESSAGES/use/starting-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-15 13:14\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: kk_KZ\n" + +#: ../../use/starting-a-tournament.rst:5 +msgid "Starting a Tournament" +msgstr "" + +#: ../../use/starting-a-tournament.rst:7 +msgid "This page outlines a few things you should do at the start of a tournament, after you've :ref:`imported the initial data `. Once you've done these, proceed to :ref:`running a tournament `." +msgstr "" + +#: ../../use/starting-a-tournament.rst:9 +msgid "Tabbycat is developed for — and tested on — modern web browsers. If you are using **Internet Explorer versions 8, 7, or 6** the interface may look odd or not function properly. Switch to a newer browser if possible." +msgstr "" + +#: ../../use/starting-a-tournament.rst:13 +msgid "Tournament configuration" +msgstr "" + +#: ../../use/starting-a-tournament.rst:15 +msgid "After importing all your data you can log into the site as an administrator by loading up the homepage and then using the **Login** button in the lower-right. From there you should go to the administration section of your tournament, and then go to the tournament configuration page by clicking **Setup** then **Configuration** in the menu." +msgstr "" + +#: ../../use/starting-a-tournament.rst:17 +msgid "Here you can adjust the debate rules and interface options to your liking then hit **Save** when finished. We also offer a number of presets that apply particular rule sets (such as the Australs rules) or feature sets (such as displaying information normally released during briefs on the website)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:20 +msgid "Special data types and options" +msgstr "" + +#: ../../use/starting-a-tournament.rst:22 +msgid "There are a few optional fields that are not covered in the initial data templates, in the visual importer, or that may only be relevant in particular scenarios. It's worth going over these quickly to see if they are needed for your tournament. You can view and edit these fields in the **Edit Database** area (link is in the menu under **Setup**)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "Adjudicator Feedback > Adj Feedback Questions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "As described in :ref:`adjudicator-feedback`, the types of questions that can be posed for adjudicator feedback are able to be heavily customised. If you are customising your feedback form it should be done here, and before the tournament starts." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "Authentication and Authorisation > Users" +msgstr "" + +#: ../../use/starting-a-tournament.rst:28 +msgid "Here you can add new admin users (those with full access) as well as new assistant users those (who can only do common data-entry tasks but not edit or view the full tab interface). See :ref:`user-accounts` for information on how to do this." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "The people you're adding accounts for should be physically present when you do this, so that they can enter their password." +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Participants > Regions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Optionally, each institution may belong to a *Region*. An institution's region is used within the adjudicator allocation process to visually identify teams and adjudicators for the purposes of highlighting diversity issues. These have traditionally been used for geographic regions (such as Oceania), although could be repurposed as arbitrary markers of information — for example they could be used to denote teams from a particular State, institutional size, or circuit." +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Participants > Adjudicators" +msgstr "" + +#: ../../use/starting-a-tournament.rst:36 +msgid "An adjudicators *Base Score* represents their relative ability to judge important rooms, where adjudicators with higher numbers will, relative to the other adjudicators, be placed in better roles (ie as Chairs) and in the rooms you deem most important in each round. If you are running a small tournament, and plan to do your allocations manually, you can set everyone's number to the same amount." +msgstr "" + +#: ../../use/starting-a-tournament.rst:37 +msgid "For larger tournaments, particularly those that collect feedback, see the :ref:`adjudicator-feedback` section for more information on how base scores and other variables influence the automated allocation process." +msgstr "" + +#: ../../use/starting-a-tournament.rst:38 +msgid "Regardless of how you score the adjs, if you have changed the minimimum chairing score in settings, you'll want to make sure there are enough adjudicators that meet this minimum threshold or the automated allocator may not function effectively." +msgstr "" + +#: ../../use/starting-a-tournament.rst:39 +msgid "All types of conflicts are assigned to the relevant adjudicator. Adjudicator's can be conflicted against particular teams, particular institutions, and other adjudicators. Each of these is a located in a tab at the top of the page." +msgstr "" + +#: ../../use/starting-a-tournament.rst:40 +msgid "Each adjudicator's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Each adjudicator's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "Participants > Teams" +msgstr "" + +#: ../../use/starting-a-tournament.rst:44 +msgid "Note the distinction here between full name and short name. The latter is used on pages where space is tight, such as the draw displays or the adjudicator allocation interface." +msgstr "" + +#: ../../use/starting-a-tournament.rst:45 +msgid "Note that \"Uses institutional prefix\" option. With this option on, a team from the 'MUDS' insttution named '1' or 'Gold' would be displayed as 'MUDS 1' or 'MUDS Gold'." +msgstr "" + +#: ../../use/starting-a-tournament.rst:46 +msgid "At present, setting a team's type to Bye, Swing, or Composite only affects very particular circumstances, and should be considered unnecessary." +msgstr "" + +#: ../../use/starting-a-tournament.rst:47 +msgid "If you do have composite teams, and wish to have them be conflicted by adjudicators from each respective instutution, you'll need to add a new team conflict to each adjudicator from each institution." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "If you do have swing teams, or teams that are otherwise ineligible for breaking, this is typically handled through the breaks interface in the main site" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Participants > Speakers" +msgstr "" + +#: ../../use/starting-a-tournament.rst:51 +msgid "Each speaker's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Each speaker's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "Tournaments > Divisions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "At the moment divisions are only useful for running tournaments that use round-robin style draws. Here, each division represents a draw pool within a round. Division support here is under development and not tested in many scenarios." +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Tournaments > Tournaments" +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Note that tournaments can have a welcome message (useful for displaying maps and other information on the homepage)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "Venues > Venues" +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "A venue's priority determines its priority in being allocated. If there are 20 debates, and 30 rooms, the 20 rooms with the highest priorities will be chosen. Furthermore, if particular debates are marked as important during the draw process, those debates will receive the rooms with the highest priorities. In this way you can give close rooms to members of the adj core, or give larger rooms to debates that will draw a large audience." +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venues > Venue Categories" +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venue categories are not needed for most kinds of tournaments. Their purpose is to classify particular venues, such as venues all within one building or venues that are accessible. Once assigned these categories can display in the venue's name — ie \"Red 01.01\" or be used to assign Venue Constraints that match particular teams, institutions, or adjudicators to particular types of venues." +msgstr "" + +#: ../../use/starting-a-tournament.rst:67 +msgid "Information for the briefing" +msgstr "" + +#: ../../use/starting-a-tournament.rst:69 +msgid "If you're using the online submissions feature, some things you should probably mention in the briefing:" +msgstr "" + +#: ../../use/starting-a-tournament.rst:71 +msgid "Adjudicators must fill out ballots completely, including motions and venues—they are entered into the system." +msgstr "" + +#: ../../use/starting-a-tournament.rst:72 +msgid "There is a static URL for each person's ballots and feedback forms. It can be bookmarked, or the page can refreshed after each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:73 +msgid "If people submit a result or feedback online, they should indicate that they have done so on the paper copy of their ballot." +msgstr "" + diff --git a/docs/locale/ro/LC_MESSAGES/about/authors.po b/docs/locale/ro/LC_MESSAGES/about/authors.po index a823b293dce..1719ec9e25a 100644 --- a/docs/locale/ro/LC_MESSAGES/about/authors.po +++ b/docs/locale/ro/LC_MESSAGES/about/authors.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:20\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" "Language: ro_RO\n" #: ../../../AUTHORS.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/about/changelog.po b/docs/locale/ro/LC_MESSAGES/about/changelog.po index c70e69a16c5..ea3610f8501 100644 --- a/docs/locale/ro/LC_MESSAGES/about/changelog.po +++ b/docs/locale/ro/LC_MESSAGES/about/changelog.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" "Language: ro_RO\n" #: ../../../CHANGELOG.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/about/contributing.po b/docs/locale/ro/LC_MESSAGES/about/contributing.po index c7b86a44638..92da10333a0 100644 --- a/docs/locale/ro/LC_MESSAGES/about/contributing.po +++ b/docs/locale/ro/LC_MESSAGES/about/contributing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:21\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" "Language: ro_RO\n" #: ../../../CONTRIBUTING.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/about/licence.po b/docs/locale/ro/LC_MESSAGES/about/licence.po index 70812ad8cec..af367dcd3ca 100644 --- a/docs/locale/ro/LC_MESSAGES/about/licence.po +++ b/docs/locale/ro/LC_MESSAGES/about/licence.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" "Language: ro_RO\n" #: ../../../LICENSE.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/about/support.po b/docs/locale/ro/LC_MESSAGES/about/support.po index d9cb8ad3279..dcd8134b571 100644 --- a/docs/locale/ro/LC_MESSAGES/about/support.po +++ b/docs/locale/ro/LC_MESSAGES/about/support.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" "Language: ro_RO\n" #: ../../about/support.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/about/tournament-history.po b/docs/locale/ro/LC_MESSAGES/about/tournament-history.po index 452fd7b4c89..b816b0f6b73 100644 --- a/docs/locale/ro/LC_MESSAGES/about/tournament-history.po +++ b/docs/locale/ro/LC_MESSAGES/about/tournament-history.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:20\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" "Language: ro_RO\n" #: ../../about/tournament-history.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/ro/LC_MESSAGES/features/adjudicator-allocation.po index 787569475f7..c988c69d9b1 100644 --- a/docs/locale/ro/LC_MESSAGES/features/adjudicator-allocation.po +++ b/docs/locale/ro/LC_MESSAGES/features/adjudicator-allocation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" "Language: ro_RO\n" #: ../../features/adjudicator-allocation.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/ro/LC_MESSAGES/features/adjudicator-feedback.po index 336d4d8c74f..0c8538b52bd 100644 --- a/docs/locale/ro/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/ro/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" "Language: ro_RO\n" #: ../../features/adjudicator-feedback.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/backups.po b/docs/locale/ro/LC_MESSAGES/features/backups.po index c29cc005437..83e276dcab0 100644 --- a/docs/locale/ro/LC_MESSAGES/features/backups.po +++ b/docs/locale/ro/LC_MESSAGES/features/backups.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" "Language: ro_RO\n" #: ../../features/backups.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/breaks.po b/docs/locale/ro/LC_MESSAGES/features/breaks.po index 6cde34ba74d..fc883b184fd 100644 --- a/docs/locale/ro/LC_MESSAGES/features/breaks.po +++ b/docs/locale/ro/LC_MESSAGES/features/breaks.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" "Language: ro_RO\n" #: ../../features/breaks.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/check-ins.po b/docs/locale/ro/LC_MESSAGES/features/check-ins.po index ca265c46bc2..4ecb84966a8 100644 --- a/docs/locale/ro/LC_MESSAGES/features/check-ins.po +++ b/docs/locale/ro/LC_MESSAGES/features/check-ins.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" "Language: ro_RO\n" #: ../../features/check-ins.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/data-entry.po b/docs/locale/ro/LC_MESSAGES/features/data-entry.po index ea8100f4782..ce5eda69392 100644 --- a/docs/locale/ro/LC_MESSAGES/features/data-entry.po +++ b/docs/locale/ro/LC_MESSAGES/features/data-entry.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" "Language: ro_RO\n" #: ../../features/data-entry.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/data-importers.po b/docs/locale/ro/LC_MESSAGES/features/data-importers.po index d5189914d9e..7aed2f464d4 100644 --- a/docs/locale/ro/LC_MESSAGES/features/data-importers.po +++ b/docs/locale/ro/LC_MESSAGES/features/data-importers.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" "Language: ro_RO\n" #: ../../features/data-importers.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/ro/LC_MESSAGES/features/draw-generation-bp.po index b0efd6866dd..8980eff9092 100644 --- a/docs/locale/ro/LC_MESSAGES/features/draw-generation-bp.po +++ b/docs/locale/ro/LC_MESSAGES/features/draw-generation-bp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:23\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" "Language: ro_RO\n" #: ../../features/draw-generation-bp.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/draw-generation.po b/docs/locale/ro/LC_MESSAGES/features/draw-generation.po index 0be8cb8848e..588f203f37d 100644 --- a/docs/locale/ro/LC_MESSAGES/features/draw-generation.po +++ b/docs/locale/ro/LC_MESSAGES/features/draw-generation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:24\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" "Language: ro_RO\n" #: ../../features/draw-generation.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/notifications.po b/docs/locale/ro/LC_MESSAGES/features/notifications.po index ac4e2fde6e6..3d508abbbd0 100644 --- a/docs/locale/ro/LC_MESSAGES/features/notifications.po +++ b/docs/locale/ro/LC_MESSAGES/features/notifications.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" "Language: ro_RO\n" #: ../../features/notifications.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/features/preformed-panels.po b/docs/locale/ro/LC_MESSAGES/features/preformed-panels.po index a81617e3d41..d337a7c1a64 100644 --- a/docs/locale/ro/LC_MESSAGES/features/preformed-panels.po +++ b/docs/locale/ro/LC_MESSAGES/features/preformed-panels.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" "Language: ro_RO\n" #: ../../features/preformed-panels.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/printing.po b/docs/locale/ro/LC_MESSAGES/features/printing.po index 51c48237b85..9cf7524ee16 100644 --- a/docs/locale/ro/LC_MESSAGES/features/printing.po +++ b/docs/locale/ro/LC_MESSAGES/features/printing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" "Language: ro_RO\n" #: ../../features/printing.rst:3 diff --git a/docs/locale/ro/LC_MESSAGES/features/standings-rules.po b/docs/locale/ro/LC_MESSAGES/features/standings-rules.po index b8281a84279..01bf4cc93da 100644 --- a/docs/locale/ro/LC_MESSAGES/features/standings-rules.po +++ b/docs/locale/ro/LC_MESSAGES/features/standings-rules.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" "Language: ro_RO\n" #: ../../features/standings-rules.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/team-code-names.po b/docs/locale/ro/LC_MESSAGES/features/team-code-names.po index 1322414d1eb..247e6336503 100644 --- a/docs/locale/ro/LC_MESSAGES/features/team-code-names.po +++ b/docs/locale/ro/LC_MESSAGES/features/team-code-names.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" "Language: ro_RO\n" #: ../../features/team-code-names.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/user-accounts.po b/docs/locale/ro/LC_MESSAGES/features/user-accounts.po index 989967b70f5..624a89adc96 100644 --- a/docs/locale/ro/LC_MESSAGES/features/user-accounts.po +++ b/docs/locale/ro/LC_MESSAGES/features/user-accounts.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" "Language: ro_RO\n" #: ../../features/user-accounts.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/features/venue-constraints.po b/docs/locale/ro/LC_MESSAGES/features/venue-constraints.po index f5d1fc39fdb..52212f4717d 100644 --- a/docs/locale/ro/LC_MESSAGES/features/venue-constraints.po +++ b/docs/locale/ro/LC_MESSAGES/features/venue-constraints.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" "Language: ro_RO\n" #: ../../features/venue-constraints.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/guide/comparisons.po b/docs/locale/ro/LC_MESSAGES/guide/comparisons.po index 2edac4f49d9..e2eba258e1b 100644 --- a/docs/locale/ro/LC_MESSAGES/guide/comparisons.po +++ b/docs/locale/ro/LC_MESSAGES/guide/comparisons.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" "Language: ro_RO\n" #: ../../guide/comparisons.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/guide/scaling.po b/docs/locale/ro/LC_MESSAGES/guide/scaling.po index 6fe183616c7..a586b0f7d62 100644 --- a/docs/locale/ro/LC_MESSAGES/guide/scaling.po +++ b/docs/locale/ro/LC_MESSAGES/guide/scaling.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" "Language: ro_RO\n" #: ../../guide/scaling.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/ro/LC_MESSAGES/guide/tournament-logistics.po index ba3511d15f6..1a389302e27 100644 --- a/docs/locale/ro/LC_MESSAGES/guide/tournament-logistics.po +++ b/docs/locale/ro/LC_MESSAGES/guide/tournament-logistics.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" "Language: ro_RO\n" #: ../../guide/tournament-logistics.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/guide/upgrading.po b/docs/locale/ro/LC_MESSAGES/guide/upgrading.po index dfe899cadd6..872626ac0a3 100644 --- a/docs/locale/ro/LC_MESSAGES/guide/upgrading.po +++ b/docs/locale/ro/LC_MESSAGES/guide/upgrading.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" "Language: ro_RO\n" #: ../../guide/upgrading.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/index.po b/docs/locale/ro/LC_MESSAGES/index.po index 69383718012..9d95bee45bb 100644 --- a/docs/locale/ro/LC_MESSAGES/index.po +++ b/docs/locale/ro/LC_MESSAGES/index.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:17\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" "Language: ro_RO\n" #: ../../index.rst:18 diff --git a/docs/locale/ro/LC_MESSAGES/install/docker.po b/docs/locale/ro/LC_MESSAGES/install/docker.po index e92502b0631..1acd5cbeb85 100644 --- a/docs/locale/ro/LC_MESSAGES/install/docker.po +++ b/docs/locale/ro/LC_MESSAGES/install/docker.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" "Language: ro_RO\n" #: ../../install/docker.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/heroku.po b/docs/locale/ro/LC_MESSAGES/install/heroku.po index 72eb2d0737e..e13fac1fd9e 100644 --- a/docs/locale/ro/LC_MESSAGES/install/heroku.po +++ b/docs/locale/ro/LC_MESSAGES/install/heroku.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" "Language: ro_RO\n" #: ../../install/heroku.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/linux.po b/docs/locale/ro/LC_MESSAGES/install/linux.po index 4031f82f612..5334d482bca 100644 --- a/docs/locale/ro/LC_MESSAGES/install/linux.po +++ b/docs/locale/ro/LC_MESSAGES/install/linux.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" "Language: ro_RO\n" #: ../../install/linux.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/local.po b/docs/locale/ro/LC_MESSAGES/install/local.po index 4430b76b598..d51cac5ec71 100644 --- a/docs/locale/ro/LC_MESSAGES/install/local.po +++ b/docs/locale/ro/LC_MESSAGES/install/local.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" "Language: ro_RO\n" #: ../../install/local.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/osx.po b/docs/locale/ro/LC_MESSAGES/install/osx.po index f8871391cae..ac6ba6ab215 100644 --- a/docs/locale/ro/LC_MESSAGES/install/osx.po +++ b/docs/locale/ro/LC_MESSAGES/install/osx.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" "Language: ro_RO\n" #: ../../install/osx.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/windows.po b/docs/locale/ro/LC_MESSAGES/install/windows.po index 573e1edb8f7..e89ca2e3a65 100644 --- a/docs/locale/ro/LC_MESSAGES/install/windows.po +++ b/docs/locale/ro/LC_MESSAGES/install/windows.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" "Language: ro_RO\n" #: ../../install/windows.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/install/wsl.po b/docs/locale/ro/LC_MESSAGES/install/wsl.po index 1614354f5bc..8202d3c9633 100644 --- a/docs/locale/ro/LC_MESSAGES/install/wsl.po +++ b/docs/locale/ro/LC_MESSAGES/install/wsl.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" "Language: ro_RO\n" #: ../../install/wsl.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/ro/LC_MESSAGES/use/finishing-a-tournament.po index 51ec5ad8ed7..b9d3b4cc498 100644 --- a/docs/locale/ro/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/ro/LC_MESSAGES/use/finishing-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" "Language: ro_RO\n" #: ../../use/finishing-a-tournament.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/use/importing-data.po b/docs/locale/ro/LC_MESSAGES/use/importing-data.po index 5472cbc1d08..08ede224e7f 100644 --- a/docs/locale/ro/LC_MESSAGES/use/importing-data.po +++ b/docs/locale/ro/LC_MESSAGES/use/importing-data.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" "Language: ro_RO\n" #: ../../use/importing-data.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/ro/LC_MESSAGES/use/running-a-tournament.po index d2d9cf702e3..238d60e81f0 100644 --- a/docs/locale/ro/LC_MESSAGES/use/running-a-tournament.po +++ b/docs/locale/ro/LC_MESSAGES/use/running-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" "Language: ro_RO\n" #: ../../use/running-a-tournament.rst:5 diff --git a/docs/locale/ro/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/ro/LC_MESSAGES/use/starting-a-tournament.po index 617e5dbf48a..66679db578c 100644 --- a/docs/locale/ro/LC_MESSAGES/use/starting-a-tournament.po +++ b/docs/locale/ro/LC_MESSAGES/use/starting-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-02-25 20:16\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" "Language: ro_RO\n" #: ../../use/starting-a-tournament.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/about/authors.po b/docs/locale/tr/LC_MESSAGES/about/authors.po index be86a09387d..992fffeb152 100644 --- a/docs/locale/tr/LC_MESSAGES/about/authors.po +++ b/docs/locale/tr/LC_MESSAGES/about/authors.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" "Language: tr_TR\n" #: ../../../AUTHORS.rst:3 diff --git a/docs/locale/tr/LC_MESSAGES/about/changelog.po b/docs/locale/tr/LC_MESSAGES/about/changelog.po index cdf2dbe0797..15190045e4b 100644 --- a/docs/locale/tr/LC_MESSAGES/about/changelog.po +++ b/docs/locale/tr/LC_MESSAGES/about/changelog.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 17:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" "Language: tr_TR\n" #: ../../../CHANGELOG.rst:3 @@ -1684,7 +1686,7 @@ msgstr "" #: ../../../CHANGELOG.rst:628 msgid "Feedback" -msgstr "Geri Bildirim" +msgstr "Geri bildirim" #: ../../../CHANGELOG.rst:627 msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" diff --git a/docs/locale/tr/LC_MESSAGES/about/contributing.po b/docs/locale/tr/LC_MESSAGES/about/contributing.po index 99af8e31454..ad803a365d4 100644 --- a/docs/locale/tr/LC_MESSAGES/about/contributing.po +++ b/docs/locale/tr/LC_MESSAGES/about/contributing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" "Language: tr_TR\n" #: ../../../CONTRIBUTING.rst:3 @@ -182,7 +184,7 @@ msgstr "" #: ../../../CONTRIBUTING.rst:96 msgid "Documentation" -msgstr "" +msgstr "Belgeler" #: ../../../CONTRIBUTING.rst:98 msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." diff --git a/docs/locale/tr/LC_MESSAGES/about/licence.po b/docs/locale/tr/LC_MESSAGES/about/licence.po index b116b80acd8..b0fb299dc93 100644 --- a/docs/locale/tr/LC_MESSAGES/about/licence.po +++ b/docs/locale/tr/LC_MESSAGES/about/licence.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" "Language: tr_TR\n" #: ../../../LICENSE.rst:3 diff --git a/docs/locale/tr/LC_MESSAGES/about/support.po b/docs/locale/tr/LC_MESSAGES/about/support.po index 0857cf6a706..2581715730f 100644 --- a/docs/locale/tr/LC_MESSAGES/about/support.po +++ b/docs/locale/tr/LC_MESSAGES/about/support.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,13 +12,15 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" "Language: tr_TR\n" #: ../../about/support.rst:3 msgid "Support" -msgstr "" +msgstr "Destek" #: ../../about/support.rst:5 msgid "There are a number of ways to report bugs, ask for help, or submit feedback." diff --git a/docs/locale/tr/LC_MESSAGES/about/tournament-history.po b/docs/locale/tr/LC_MESSAGES/about/tournament-history.po index f8da141d7b3..17aab62c5c4 100644 --- a/docs/locale/tr/LC_MESSAGES/about/tournament-history.po +++ b/docs/locale/tr/LC_MESSAGES/about/tournament-history.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:19\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" "Language: tr_TR\n" #: ../../about/tournament-history.rst:3 diff --git a/docs/locale/tr/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/tr/LC_MESSAGES/features/adjudicator-allocation.po index 8c9fd7874b3..e2f82025226 100644 --- a/docs/locale/tr/LC_MESSAGES/features/adjudicator-allocation.po +++ b/docs/locale/tr/LC_MESSAGES/features/adjudicator-allocation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,13 +12,15 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" "Language: tr_TR\n" #: ../../features/adjudicator-allocation.rst:5 msgid "Adjudicator Allocation" -msgstr "" +msgstr "Jüri Tahsisi" #: ../../features/adjudicator-allocation.rst:7 msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." diff --git a/docs/locale/tr/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/tr/LC_MESSAGES/features/adjudicator-feedback.po index d6bab579da1..ceba6529532 100644 --- a/docs/locale/tr/LC_MESSAGES/features/adjudicator-feedback.po +++ b/docs/locale/tr/LC_MESSAGES/features/adjudicator-feedback.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 17:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" "Language: tr_TR\n" #: ../../features/adjudicator-feedback.rst:5 @@ -104,7 +106,7 @@ msgstr "" #: ../../features/adjudicator-feedback.rst:39 #: ../../features/adjudicator-feedback.rst:41 msgid "choices" -msgstr "" +msgstr "seçenekler" #: ../../features/adjudicator-feedback.rst:41 msgid "**select multiple**" diff --git a/docs/locale/tr/LC_MESSAGES/features/backups.po b/docs/locale/tr/LC_MESSAGES/features/backups.po index a3eb7d0acb6..35cedfbbfbb 100644 --- a/docs/locale/tr/LC_MESSAGES/features/backups.po +++ b/docs/locale/tr/LC_MESSAGES/features/backups.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:25\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" "Language: tr_TR\n" #: ../../features/backups.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/features/breaks.po b/docs/locale/tr/LC_MESSAGES/features/breaks.po index f495b0e0ebe..4391475a8f7 100644 --- a/docs/locale/tr/LC_MESSAGES/features/breaks.po +++ b/docs/locale/tr/LC_MESSAGES/features/breaks.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:26\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" "Language: tr_TR\n" #: ../../features/breaks.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/features/check-ins.po b/docs/locale/tr/LC_MESSAGES/features/check-ins.po index f79b63c493e..714c646c10a 100644 --- a/docs/locale/tr/LC_MESSAGES/features/check-ins.po +++ b/docs/locale/tr/LC_MESSAGES/features/check-ins.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,13 +12,15 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" "Language: tr_TR\n" #: ../../features/check-ins.rst:5 msgid "Check-Ins" -msgstr "" +msgstr "Girişler" #: ../../features/check-ins.rst:7 msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." diff --git a/docs/locale/tr/LC_MESSAGES/features/data-entry.po b/docs/locale/tr/LC_MESSAGES/features/data-entry.po index 887e24b3f7c..a282d698663 100644 --- a/docs/locale/tr/LC_MESSAGES/features/data-entry.po +++ b/docs/locale/tr/LC_MESSAGES/features/data-entry.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" "Language: tr_TR\n" #: ../../features/data-entry.rst:5 @@ -118,7 +120,7 @@ msgstr "" #: ../../features/data-entry.rst:68 msgid "Private URLs" -msgstr "" +msgstr "Özel URL'ler" #: ../../features/data-entry.rst:70 msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." diff --git a/docs/locale/tr/LC_MESSAGES/features/data-importers.po b/docs/locale/tr/LC_MESSAGES/features/data-importers.po index afdd00f8f3b..c91e8ae8a2e 100644 --- a/docs/locale/tr/LC_MESSAGES/features/data-importers.po +++ b/docs/locale/tr/LC_MESSAGES/features/data-importers.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:22\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" "Language: tr_TR\n" #: ../../features/data-importers.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/tr/LC_MESSAGES/features/draw-generation-bp.po index 8d42923ed59..da6e5f94f03 100644 --- a/docs/locale/tr/LC_MESSAGES/features/draw-generation-bp.po +++ b/docs/locale/tr/LC_MESSAGES/features/draw-generation-bp.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 17:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" "Language: tr_TR\n" #: ../../features/draw-generation-bp.rst:5 @@ -71,7 +73,7 @@ msgstr "" #: ../../features/draw-generation-bp.rst:28 #: ../../features/draw-generation-bp.rst:179 msgid "Simple" -msgstr "" +msgstr "Basit" #: ../../features/draw-generation-bp.rst:29 msgid "**Rényi entropy**" @@ -80,7 +82,7 @@ msgstr "" #: ../../features/draw-generation-bp.rst:30 #: ../../features/draw-generation-bp.rst:254 msgid "Population variance" -msgstr "" +msgstr "Popülasyon varyansı" #: ../../features/draw-generation-bp.rst:31 msgid ":ref:`Rényi order `" @@ -448,7 +450,7 @@ msgstr "" #: ../../features/draw-generation-bp.rst:190 msgid "Rényi entropy" -msgstr "" +msgstr "Rényi entropisi" #: ../../features/draw-generation-bp.rst:192 msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." diff --git a/docs/locale/tr/LC_MESSAGES/features/draw-generation.po b/docs/locale/tr/LC_MESSAGES/features/draw-generation.po index edbc415dc83..4f46805b8aa 100644 --- a/docs/locale/tr/LC_MESSAGES/features/draw-generation.po +++ b/docs/locale/tr/LC_MESSAGES/features/draw-generation.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" "Language: tr_TR\n" #: ../../features/draw-generation.rst:5 @@ -54,19 +56,19 @@ msgstr "" #: ../../features/draw-generation.rst:24 msgid "Pull up from top" -msgstr "" +msgstr "Yukarıdan yukarı çek" #: ../../features/draw-generation.rst:25 msgid "Pull up from bottom" -msgstr "" +msgstr "Alttan yukarı çek" #: ../../features/draw-generation.rst:26 msgid "Pull up from middle" -msgstr "" +msgstr "Ortadan yukarı çek" #: ../../features/draw-generation.rst:27 msgid "Pull up at random" -msgstr "" +msgstr "Rastgele yukarı çek" #: ../../features/draw-generation.rst:29 msgid "If sides are `Random` or `Balance`:" @@ -102,15 +104,15 @@ msgstr "" #: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 msgid "Random" -msgstr "" +msgstr "Rastgele" #: ../../features/draw-generation.rst:42 msgid "Balance" -msgstr "" +msgstr "Denge" #: ../../features/draw-generation.rst:43 msgid "Pre-allocated" -msgstr "" +msgstr "Önceden tahsis edilmiş" #: ../../features/draw-generation.rst:44 msgid "Manual ballot" @@ -126,15 +128,15 @@ msgstr "" #: ../../features/draw-generation.rst:48 msgid "Slide" -msgstr "" +msgstr "Kaydırma" #: ../../features/draw-generation.rst:49 msgid "Fold" -msgstr "" +msgstr "Katla" #: ../../features/draw-generation.rst:50 msgid "Adjacent" -msgstr "" +msgstr "Komşu" #: ../../features/draw-generation.rst:53 msgid ":ref:`Conflict avoidance method `" @@ -146,11 +148,11 @@ msgstr "" #: ../../features/draw-generation.rst:55 msgid "Off" -msgstr "" +msgstr "Kapalı" #: ../../features/draw-generation.rst:56 msgid "One-up-one-down" -msgstr "" +msgstr "Bir-yukarı-bir-aşağı" #: ../../features/draw-generation.rst:58 msgid ":ref:`Pullup restriction `" @@ -162,15 +164,15 @@ msgstr "" #: ../../features/draw-generation.rst:60 msgid "No restriction" -msgstr "" +msgstr "Kısıtlama yok" #: ../../features/draw-generation.rst:61 msgid "Choose from teams who have been pulled up the fewest times so far" -msgstr "" +msgstr "Şimdiye kadar en az kez yukarı çekilen takımlar arasından seçim yap" #: ../../features/draw-generation.rst:62 msgid "Choose from teams with the lowest draw strength by speaks so far" -msgstr "" +msgstr "Şimdiye kadarki en düşük kura gücüne sahip takımlar arasından seçim yap" #: ../../features/draw-generation.rst:64 msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." @@ -334,7 +336,7 @@ msgstr "" #: ../../features/draw-generation.rst:153 msgid "Pairing method" -msgstr "" +msgstr "Eşleştirme yöntemi" #: ../../features/draw-generation.rst:154 msgid "It's easiest to describe these by example, using a ten-team bracket:" @@ -362,7 +364,7 @@ msgstr "" #: ../../features/draw-generation.rst:166 msgid "Conflict avoidance method" -msgstr "" +msgstr "Conflict kaçınma yöntemi" #: ../../features/draw-generation.rst:167 msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." @@ -402,7 +404,7 @@ msgstr "" #: ../../features/draw-generation.rst:187 msgid "Pullup restriction" -msgstr "" +msgstr "Yukarı çekme kısıtlaması" #: ../../features/draw-generation.rst:188 msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" diff --git a/docs/locale/tr/LC_MESSAGES/features/notifications.po b/docs/locale/tr/LC_MESSAGES/features/notifications.po index b2b8b24bd6c..dba5a3551a9 100644 --- a/docs/locale/tr/LC_MESSAGES/features/notifications.po +++ b/docs/locale/tr/LC_MESSAGES/features/notifications.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:13\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" "Language: tr_TR\n" #: ../../features/notifications.rst:3 diff --git a/docs/locale/tr/LC_MESSAGES/features/preformed-panels.po b/docs/locale/tr/LC_MESSAGES/features/preformed-panels.po index ac48862542c..bcf536f0e4c 100644 --- a/docs/locale/tr/LC_MESSAGES/features/preformed-panels.po +++ b/docs/locale/tr/LC_MESSAGES/features/preformed-panels.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,13 +12,15 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" "Language: tr_TR\n" #: ../../features/preformed-panels.rst:5 msgid "Preformed Panels" -msgstr "" +msgstr "Önceden kurulmuş paneller" #: ../../features/preformed-panels.rst:7 msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." diff --git a/docs/locale/tr/LC_MESSAGES/features/printing.po b/docs/locale/tr/LC_MESSAGES/features/printing.po index ce9e6141dcd..0385c8baecb 100644 --- a/docs/locale/tr/LC_MESSAGES/features/printing.po +++ b/docs/locale/tr/LC_MESSAGES/features/printing.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" "Language: tr_TR\n" #: ../../features/printing.rst:3 diff --git a/docs/locale/tr/LC_MESSAGES/features/standings-rules.po b/docs/locale/tr/LC_MESSAGES/features/standings-rules.po index af8aa0f7c11..76c3efbfa2b 100644 --- a/docs/locale/tr/LC_MESSAGES/features/standings-rules.po +++ b/docs/locale/tr/LC_MESSAGES/features/standings-rules.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-05-15 06:08\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" "Language: tr_TR\n" #: ../../features/standings-rules.rst:5 @@ -58,7 +60,7 @@ msgstr "" #: ../../features/standings-rules.rst:36 msgid "Wins" -msgstr "" +msgstr "Galibiyetler" #: ../../features/standings-rules.rst:37 msgid "How many debates the team has won." @@ -66,7 +68,7 @@ msgstr "" #: ../../features/standings-rules.rst:39 msgid "Points" -msgstr "Puanları" +msgstr "Puanlar" #: ../../features/standings-rules.rst:40 msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." @@ -178,7 +180,7 @@ msgstr "" #: ../../features/standings-rules.rst:103 msgid "Who-beat-whom" -msgstr "" +msgstr "Kim kimi yendi" #: ../../features/standings-rules.rst:104 msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." diff --git a/docs/locale/tr/LC_MESSAGES/features/team-code-names.po b/docs/locale/tr/LC_MESSAGES/features/team-code-names.po index eb6a00adebc..d6d69053163 100644 --- a/docs/locale/tr/LC_MESSAGES/features/team-code-names.po +++ b/docs/locale/tr/LC_MESSAGES/features/team-code-names.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" "Language: tr_TR\n" #: ../../features/team-code-names.rst:5 @@ -62,23 +64,23 @@ msgstr "" #: ../../features/team-code-names.rst:49 msgid "Do not use code names" -msgstr "" +msgstr "Kod adlarını kullanma" #: ../../features/team-code-names.rst:50 msgid "Use real names everywhere, and show code names in tooltips" -msgstr "" +msgstr "Her yerde gerçek adları kullan ve araç ipuçlarında kod adlarını göster" #: ../../features/team-code-names.rst:51 msgid "Use code names for public; real names with code names in tooltips for admins" -msgstr "" +msgstr "Herkese açık olarak kod adları kullan; yöneticiler için araç ipuçlarında kod adları ve gerçek adları kullan" #: ../../features/team-code-names.rst:52 msgid "Use code names for public; code names with real names in tooltips for admins" -msgstr "" +msgstr "Herkese açık olarak kod adları kullan; Yöneticiler için araç ipuçlarında gerçek adları ve kod adlarını kullan" #: ../../features/team-code-names.rst:53 msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" -msgstr "" +msgstr "Kod adlarını her yerde kullan; araç ipuçları kullanma (gerçek adlar bazı yönetici görünümlerinde gösterilir)" #: ../../features/team-code-names.rst:55 msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." diff --git a/docs/locale/tr/LC_MESSAGES/features/user-accounts.po b/docs/locale/tr/LC_MESSAGES/features/user-accounts.po index 33dd8b8ce00..4376865f9ac 100644 --- a/docs/locale/tr/LC_MESSAGES/features/user-accounts.po +++ b/docs/locale/tr/LC_MESSAGES/features/user-accounts.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" "Language: tr_TR\n" #: ../../features/user-accounts.rst:5 @@ -42,7 +44,7 @@ msgstr "" #: ../../features/user-accounts.rst:19 msgid "Public" -msgstr "" +msgstr "Herkese açık" #: ../../features/user-accounts.rst:20 msgid "The public" diff --git a/docs/locale/tr/LC_MESSAGES/features/venue-constraints.po b/docs/locale/tr/LC_MESSAGES/features/venue-constraints.po index 4c60f906277..753377f8ebc 100644 --- a/docs/locale/tr/LC_MESSAGES/features/venue-constraints.po +++ b/docs/locale/tr/LC_MESSAGES/features/venue-constraints.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:12\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" "Language: tr_TR\n" #: ../../features/venue-constraints.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/guide/comparisons.po b/docs/locale/tr/LC_MESSAGES/guide/comparisons.po index b5a63438316..86e7d84806a 100644 --- a/docs/locale/tr/LC_MESSAGES/guide/comparisons.po +++ b/docs/locale/tr/LC_MESSAGES/guide/comparisons.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:11\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" "Language: tr_TR\n" #: ../../guide/comparisons.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/guide/scaling.po b/docs/locale/tr/LC_MESSAGES/guide/scaling.po index 9af8caf64f5..96000aa65ed 100644 --- a/docs/locale/tr/LC_MESSAGES/guide/scaling.po +++ b/docs/locale/tr/LC_MESSAGES/guide/scaling.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" "Language: tr_TR\n" #: ../../guide/scaling.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/tr/LC_MESSAGES/guide/tournament-logistics.po index a7420c2a490..b7e3c005750 100644 --- a/docs/locale/tr/LC_MESSAGES/guide/tournament-logistics.po +++ b/docs/locale/tr/LC_MESSAGES/guide/tournament-logistics.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 17:40\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:16\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" "Language: tr_TR\n" #: ../../guide/tournament-logistics.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/guide/upgrading.po b/docs/locale/tr/LC_MESSAGES/guide/upgrading.po index cdd07437663..2f4a0acdf42 100644 --- a/docs/locale/tr/LC_MESSAGES/guide/upgrading.po +++ b/docs/locale/tr/LC_MESSAGES/guide/upgrading.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:18\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" "Language: tr_TR\n" #: ../../guide/upgrading.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/index.po b/docs/locale/tr/LC_MESSAGES/index.po index fb24f4b33b6..b1436f360c2 100644 --- a/docs/locale/tr/LC_MESSAGES/index.po +++ b/docs/locale/tr/LC_MESSAGES/index.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:32\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" "Language: tr_TR\n" #: ../../index.rst:18 diff --git a/docs/locale/tr/LC_MESSAGES/install/docker.po b/docs/locale/tr/LC_MESSAGES/install/docker.po index 5f605702376..fa7e7153c64 100644 --- a/docs/locale/tr/LC_MESSAGES/install/docker.po +++ b/docs/locale/tr/LC_MESSAGES/install/docker.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:17\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" "Language: tr_TR\n" #: ../../install/docker.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/heroku.po b/docs/locale/tr/LC_MESSAGES/install/heroku.po index ff8a7b13d53..468e46f49c3 100644 --- a/docs/locale/tr/LC_MESSAGES/install/heroku.po +++ b/docs/locale/tr/LC_MESSAGES/install/heroku.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" "Language: tr_TR\n" #: ../../install/heroku.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/linux.po b/docs/locale/tr/LC_MESSAGES/install/linux.po index 18e4cb6aada..0700d1d934e 100644 --- a/docs/locale/tr/LC_MESSAGES/install/linux.po +++ b/docs/locale/tr/LC_MESSAGES/install/linux.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:14\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" "Language: tr_TR\n" #: ../../install/linux.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/local.po b/docs/locale/tr/LC_MESSAGES/install/local.po index 5299c2c461a..b4463a405da 100644 --- a/docs/locale/tr/LC_MESSAGES/install/local.po +++ b/docs/locale/tr/LC_MESSAGES/install/local.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" "Language: tr_TR\n" #: ../../install/local.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/osx.po b/docs/locale/tr/LC_MESSAGES/install/osx.po index e4e2cd08c44..14912810005 100644 --- a/docs/locale/tr/LC_MESSAGES/install/osx.po +++ b/docs/locale/tr/LC_MESSAGES/install/osx.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:30\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:15\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" "Language: tr_TR\n" #: ../../install/osx.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/windows.po b/docs/locale/tr/LC_MESSAGES/install/windows.po index e3e5ab5febb..2707d71c5e5 100644 --- a/docs/locale/tr/LC_MESSAGES/install/windows.po +++ b/docs/locale/tr/LC_MESSAGES/install/windows.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" "Language: tr_TR\n" #: ../../install/windows.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/install/wsl.po b/docs/locale/tr/LC_MESSAGES/install/wsl.po index e041f10b058..c051abc4634 100644 --- a/docs/locale/tr/LC_MESSAGES/install/wsl.po +++ b/docs/locale/tr/LC_MESSAGES/install/wsl.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" "Language: tr_TR\n" #: ../../install/wsl.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/tr/LC_MESSAGES/use/finishing-a-tournament.po index a622ea596e5..e8e45a95e53 100644 --- a/docs/locale/tr/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/tr/LC_MESSAGES/use/finishing-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:55\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" "Language: tr_TR\n" #: ../../use/finishing-a-tournament.rst:5 @@ -26,7 +28,7 @@ msgstr "" #: ../../use/finishing-a-tournament.rst:10 msgid "Tab Release" -msgstr "" +msgstr "Tab Yayınlama" #: ../../use/finishing-a-tournament.rst:12 msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" @@ -34,7 +36,7 @@ msgstr "" #: ../../use/finishing-a-tournament.rst:14 msgid "Team Tab" -msgstr "" +msgstr "Takım Tabı" #: ../../use/finishing-a-tournament.rst:15 msgid "Speakers Tab" @@ -42,11 +44,11 @@ msgstr "" #: ../../use/finishing-a-tournament.rst:16 msgid "Replies Tab" -msgstr "" +msgstr "Özet Tabı" #: ../../use/finishing-a-tournament.rst:17 msgid "Motions Tab" -msgstr "" +msgstr "Önerge Tabı" #: ../../use/finishing-a-tournament.rst:19 msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." diff --git a/docs/locale/tr/LC_MESSAGES/use/importing-data.po b/docs/locale/tr/LC_MESSAGES/use/importing-data.po index f376f53bd47..811cb124938 100644 --- a/docs/locale/tr/LC_MESSAGES/use/importing-data.po +++ b/docs/locale/tr/LC_MESSAGES/use/importing-data.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:28\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" "Language: tr_TR\n" #: ../../use/importing-data.rst:5 diff --git a/docs/locale/tr/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/tr/LC_MESSAGES/use/running-a-tournament.po index 8c51746a7f8..40232dd2cf7 100644 --- a/docs/locale/tr/LC_MESSAGES/use/running-a-tournament.po +++ b/docs/locale/tr/LC_MESSAGES/use/running-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2023-05-25 23:55\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" "Language: tr_TR\n" #: ../../use/running-a-tournament.rst:5 @@ -62,7 +64,7 @@ msgstr "" #: ../../use/running-a-tournament.rst:24 msgid "Availability" -msgstr "" +msgstr "Uygunluk" #: ../../use/running-a-tournament.rst:26 msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." diff --git a/docs/locale/tr/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/tr/LC_MESSAGES/use/starting-a-tournament.po index 8002440fb35..f3b56cb31b2 100644 --- a/docs/locale/tr/LC_MESSAGES/use/starting-a-tournament.po +++ b/docs/locale/tr/LC_MESSAGES/use/starting-a-tournament.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-31 10:38-0400\n" -"PO-Revision-Date: 2020-03-08 16:31\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-05 17:27\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,8 +12,10 @@ msgstr "" "Generated-By: Babel 2.7.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" "Language: tr_TR\n" #: ../../use/starting-a-tournament.rst:5 diff --git a/docs/locale/vi/LC_MESSAGES/about/authors.po b/docs/locale/vi/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..bfce8dee7ed --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/authors.po @@ -0,0 +1,72 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: vi_VN\n" + +#: ../../../AUTHORS.rst:3 +msgid "Authors & Acknowledgements" +msgstr "" + +#: ../../../AUTHORS.rst:6 +msgid "Authors" +msgstr "" + +#: ../../../AUTHORS.rst:8 +msgid "Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:" +msgstr "" + +#: ../../../AUTHORS.rst:10 +msgid "Philip Belesky (`pb-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:11 +msgid "Chuan-Zheng Lee (`cz-e-mail `_)" +msgstr "" + +#: ../../../AUTHORS.rst:13 +msgid "Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:16 +msgid "Contributors" +msgstr "" + +#: ../../../AUTHORS.rst:18 +msgid "Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat." +msgstr "" + +#: ../../../AUTHORS.rst:19 +msgid "Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category." +msgstr "" + +#: ../../../AUTHORS.rst:20 +msgid "Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced." +msgstr "" + +#: ../../../AUTHORS.rst:21 +msgid "Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the \"Tournament Logistics\" section of our documentation." +msgstr "" + +#: ../../../AUTHORS.rst:24 +msgid "Sponsors" +msgstr "" + +#: ../../../AUTHORS.rst:26 +msgid "Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/about/changelog.po b/docs/locale/vi/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..71d8437541d --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/changelog.po @@ -0,0 +1,1922 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-21 18:31\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: vi_VN\n" + +#: ../../../CHANGELOG.rst:3 +msgid "Change Log" +msgstr "" + +#: ../../../CHANGELOG.rst:6 +msgid "2.4.0 (Maine)" +msgstr "" + +#: ../../../CHANGELOG.rst:7 +msgid "*Release date: ?*" +msgstr "" + +#: ../../../CHANGELOG.rst:9 +msgid "Added support for Russian, and shortened the language selector" +msgstr "" + +#: ../../../CHANGELOG.rst:10 +msgid "Renamed 'test score' to 'base score'" +msgstr "" + +#: ../../../CHANGELOG.rst:11 +msgid "Divisions-specific features have been deprecated and removed" +msgstr "" + +#: ../../../CHANGELOG.rst:12 +msgid "Moved the 'Edit Database' menu item to the dropdown with the logo in the admin navigation" +msgstr "" + +#: ../../../CHANGELOG.rst:13 +msgid "Pull-ups can now be restricted to teams with the lowest draw strength (by speaker or team points) of their bracket" +msgstr "" + +#: ../../../CHANGELOG.rst:14 +msgid "The number of pull-ups and draw strength by speaker score are now available as team standing metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:15 +msgid "Added the new emoji that come along with Unicode 11 — thanks to Viran Weerasekera for this addition!" +msgstr "" + +#: ../../../CHANGELOG.rst:16 +msgid "The 'Show adjudicator institutions' preference now covers a wider range of cases; meaning that if it is unchecked then all adjudicator's institutional affiliations should be hidden from the public" +msgstr "" + +#: ../../../CHANGELOG.rst:20 +msgid "2.3.2" +msgstr "" + +#: ../../../CHANGELOG.rst:21 +msgid "*Release date: 19 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:23 +msgid "Fixed issue where teams would appear to be unavailable in break rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:24 ../../../CHANGELOG.rst:294 +#: ../../../CHANGELOG.rst:302 ../../../CHANGELOG.rst:314 +msgid "Other minor fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:28 +msgid "2.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:29 +msgid "*Release date: 6 October 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:31 +msgid "Fixed issue where the institutions list would count teams/adjudicators outside of the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:32 +msgid "Fixed issue where a rejected ballot form would crash rather than providing an error message" +msgstr "" + +#: ../../../CHANGELOG.rst:33 +msgid "Fixed issue where the javascript bundle would not build on a local windows install" +msgstr "" + +#: ../../../CHANGELOG.rst:34 +msgid "Fixed issue where the adjudicator record pages would show an unreleased motion if that round's draw was released" +msgstr "" + +#: ../../../CHANGELOG.rst:38 +msgid "2.3.0 (LaPerm)" +msgstr "" + +#: ../../../CHANGELOG.rst:39 +msgid "*Release date: 27 September 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:42 +msgid "Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation" +msgstr "" + +#: ../../../CHANGELOG.rst:43 +msgid "Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised" +msgstr "" + +#: ../../../CHANGELOG.rst:44 +msgid "Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates" +msgstr "" + +#: ../../../CHANGELOG.rst:45 +msgid "By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:47 +msgid "These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core" +msgstr "" + +#: ../../../CHANGELOG.rst:48 +msgid "A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information" +msgstr "" + +#: ../../../CHANGELOG.rst:49 +msgid "The unused panel is now able to sort adjudicators by name, score, or drag order" +msgstr "" + +#: ../../../CHANGELOG.rst:50 +msgid "Average scores for all adjudicators, and a voting majority, are now shown next to the panel" +msgstr "" + +#: ../../../CHANGELOG.rst:51 +msgid "Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values" +msgstr "" + +#: ../../../CHANGELOG.rst:52 +msgid "The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:" +msgstr "" + +#: ../../../CHANGELOG.rst:54 +msgid "Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)" +msgstr "" + +#: ../../../CHANGELOG.rst:55 +msgid "Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "A range of improvements to the email notifications contributed by Étienne Beaulé:" +msgstr "" + +#: ../../../CHANGELOG.rst:57 +msgid "Ballot receipt emails now provide more information about team scores/points" +msgstr "" + +#: ../../../CHANGELOG.rst:58 +msgid "Emails are now in a rich-text format" +msgstr "" + +#: ../../../CHANGELOG.rst:59 +msgid "Custom emails may be sent out to select participants through the web-interface" +msgstr "" + +#: ../../../CHANGELOG.rst:60 +msgid "Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages" +msgstr "" + +#: ../../../CHANGELOG.rst:61 +msgid "Teams can be sent emails with their draw details" +msgstr "" + +#: ../../../CHANGELOG.rst:62 +msgid "Emails can be tracked to determine if sent or read (SendGrid-specific)" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Expanded the use of private URLs (Encore Étienne Beaulé):" +msgstr "" + +#: ../../../CHANGELOG.rst:64 +msgid "QR codes are now included in addition to the URL when printing private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:65 +msgid "Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:66 +msgid "Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Reworked how conflicts are determined to support double-past institutional conflicts:" +msgstr "" + +#: ../../../CHANGELOG.rst:68 +msgid "Added a \"team-institution conflict\" model" +msgstr "" + +#: ../../../CHANGELOG.rst:69 +msgid "Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them" +msgstr "" + +#: ../../../CHANGELOG.rst:70 +msgid "Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter" +msgstr "" + +#: ../../../CHANGELOG.rst:71 +msgid "An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties" +msgstr "" + +#: ../../../CHANGELOG.rst:72 +msgid "When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions" +msgstr "" + +#: ../../../CHANGELOG.rst:73 +msgid "Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:74 +msgid "Info-slides can now be split into paragraphs" +msgstr "" + +#: ../../../CHANGELOG.rst:75 +msgid "Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:76 +msgid "Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!" +msgstr "" + +#: ../../../CHANGELOG.rst:77 +msgid "Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``" +msgstr "" + +#: ../../../CHANGELOG.rst:78 +msgid "Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally." +msgstr "" + +#: ../../../CHANGELOG.rst:82 +msgid "2.2.10" +msgstr "" + +#: ../../../CHANGELOG.rst:83 +msgid "*Release date: 10 February 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:85 +msgid "Fixed the display of feedback quantities on the Feedback Overview Page" +msgstr "" + +#: ../../../CHANGELOG.rst:86 +msgid "Fixed issue where 'ignored' feedback would hide the result from the feedback graph but not affect an adjudicator's current score. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:90 +msgid "2.2.9" +msgstr "" + +#: ../../../CHANGELOG.rst:91 +msgid "*Release date: 24 January 2019*" +msgstr "" + +#: ../../../CHANGELOG.rst:93 +msgid "Fixed an issue that could cause errors for tournaments when using an atypical number of rounds and break sizes. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:94 +msgid "Fixed an issue where the display of adjudicator's record links would display their name twice" +msgstr "" + +#: ../../../CHANGELOG.rst:98 +msgid "2.2.8" +msgstr "" + +#: ../../../CHANGELOG.rst:99 +msgid "*Release date: 14 December 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:101 +msgid "Fix issue where the check-in buttons were always disabled on admin and assistant pages" +msgstr "" + +#: ../../../CHANGELOG.rst:102 +msgid "Other minor fixes. Thanks to Étienne for these and for the check-in button fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:106 +msgid "2.2.7" +msgstr "" + +#: ../../../CHANGELOG.rst:107 +msgid "*Release date: 16 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:109 +msgid "Lock redis-py version to 2.10.6, as workaround for `compatibility issue between django-redis and redis-py `_" +msgstr "" + +#: ../../../CHANGELOG.rst:110 +msgid "Fix login link on page shown after a user logs out" +msgstr "" + +#: ../../../CHANGELOG.rst:114 +msgid "2.2.6" +msgstr "" + +#: ../../../CHANGELOG.rst:115 +msgid "*Release date: 14 November 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:117 +msgid "Fix issue where check-ins could not be revoked" +msgstr "" + +#: ../../../CHANGELOG.rst:118 +msgid "Fix issue where the standings overview 'dashboard' included scores from elimination rounds. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:119 +msgid "Fix issue where the Average Individual Speaker Score metric would fail to calculate in some circumstances. Thanks to Étienne for this fix" +msgstr "" + +#: ../../../CHANGELOG.rst:120 +msgid "Fix issue where draw emails would crash if venues were unspecified. Thanks, again, to Étienne for this fix!" +msgstr "" + +#: ../../../CHANGELOG.rst:124 +msgid "2.2.5" +msgstr "" + +#: ../../../CHANGELOG.rst:125 +msgid "*Release date: 21 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:127 +msgid "Remove the buttons from the public check-ins page (as these do nothing unless the user is logged in)" +msgstr "" + +#: ../../../CHANGELOG.rst:128 +msgid "Hopefully fixed error that could cause Team- and Adjudicator- Institutional conflicts to not show properly on Allocation pages" +msgstr "" + +#: ../../../CHANGELOG.rst:129 +msgid "Thanks to Étienne for pull requests fixing rare bugs in the user creation form and break generation when rounds are not present" +msgstr "" + +#: ../../../CHANGELOG.rst:133 +msgid "2.2.4" +msgstr "" + +#: ../../../CHANGELOG.rst:134 +msgid "*Release date: 9 October 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:136 +msgid "Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:140 +msgid "2.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:141 +msgid "*Release date: 28 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:143 +msgid "*Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:144 +msgid "Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:145 +msgid "Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)" +msgstr "" + +#: ../../../CHANGELOG.rst:149 +msgid "2.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:150 +msgid "*Release date: 22 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:152 +msgid "*Actually* fix the issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:156 +msgid "2.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:157 +msgid "*Release date: 21 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:159 +msgid "Fix issue causing public views of released scoresheets to throw errors" +msgstr "" + +#: ../../../CHANGELOG.rst:163 +msgid "2.2.0 (Khao Manee)" +msgstr "" + +#: ../../../CHANGELOG.rst:164 +msgid "*Release date: 20 September 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Implemented a new server architecture on Heroku along with other optimisation that should significantly improve the performance of sites receiving lots of traffic. Note that if you are upgrading an existing Heroku instance this requires a few tweaks before you deploy the update:" +msgstr "" + +#: ../../../CHANGELOG.rst:167 +msgid "Add the `https://github.com/heroku/heroku-buildpack-nginx.git` build pack under the Settings area of the Heroku Dashboard and positioning it first" +msgstr "" + +#: ../../../CHANGELOG.rst:168 +msgid "If your Heroku Stack is not \"heroku-16\" (noted under that same Settings page) it will need to be set as such using the Heroku CLI and the ``heroku stack:set heroku-16 --app APP_NAME`` command" +msgstr "" + +#: ../../../CHANGELOG.rst:169 +msgid "Added a page to the documentation that details how to scale a Tabbycat site that is receiving large amounts of traffic; and another page that documents how to upgrade a Tabbycat site to a new version" +msgstr "" + +#: ../../../CHANGELOG.rst:170 +msgid "Added support for Japanese and Portuguese. Let us know if you'd like to help contribute translations for either language (or a new one)!" +msgstr "" + +#: ../../../CHANGELOG.rst:171 +msgid "The results-entry page now updates its data live, giving you a more up to date look at data entry progress and reducing the cases of old data leading people to enter new ballots when they meant to confirm them" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "A huge thanks to Étienne Beaulé for contributing a number of major new features and bug fixes. Notably:" +msgstr "" + +#: ../../../CHANGELOG.rst:173 +msgid "Added a means to mark feedback as 'ignored' so that it still is recorded as having been submitted, but does not affect the targeted-adjudicator's feedback score" +msgstr "" + +#: ../../../CHANGELOG.rst:174 +msgid "Added email notification to adjudicators on round release" +msgstr "" + +#: ../../../CHANGELOG.rst:175 +msgid "Implemented participant self-check-in through the use of their private URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:176 +msgid "Gave all participants to a tournament a private URL key rather than being by team, and added a landing page for the participants using this key" +msgstr "" + +#: ../../../CHANGELOG.rst:177 +msgid "Implemented templated email notifications with ballot submission and round advance with the messages in a new settings panel. Private URL emails are now also customizable" +msgstr "" + +#: ../../../CHANGELOG.rst:178 +msgid "Added the \"average individual speaker score\" metric which averages the scores of all substantive speeches by the team within preliminary rounds. The old \"average speaker score\" metric has been renamed to to \"average total speaker score\"" +msgstr "" + +#: ../../../CHANGELOG.rst:179 +msgid "Reworked the ballots status graph to be an area chart" +msgstr "" + +#: ../../../CHANGELOG.rst:180 +msgid "Added the ability to hide motions on printed ballots (even if they have been entered). Thanks to Github user 0zlw for the feature request!" +msgstr "" + +#: ../../../CHANGELOG.rst:181 +msgid "Added the ability to unconfirm feedback from any of the views that show it" +msgstr "" + +#: ../../../CHANGELOG.rst:182 +msgid "BP motion statistics now also show average points split by bench and half" +msgstr "" + +#: ../../../CHANGELOG.rst:183 +msgid "Added a warning when users are close to their free-tier database limit on Heroku that makes it clear not to create new tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:184 +msgid "Added ``exportconfig`` and ``importconfig`` management commands to export and import tournament configurations to a JSON file" +msgstr "" + +#: ../../../CHANGELOG.rst:185 +msgid "Upgraded `django-dynamic-preferences `_ to version 1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:187 +msgid "This won't affect most users, but advanced users previously having problems with a stray ``dynamic_preferences_users_userpreferencemodel`` table who are upgrading an existing instance may wish to run the SQL command ``DROP TABLE dynamic_preferences_users_userpreferencemodel;`` to remove this stray table. When this table was present, it caused an inconsistency between migration state and database schema that in turned caused the ``python manage.py flush`` command to fail. More information is available in the `django-dynamic-preferences changelog `_" +msgstr "" + +#: ../../../CHANGELOG.rst:191 +msgid "2.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:192 +msgid "*Release date: 21 August 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:194 +msgid "Added an alert for British Parliamentary format grand-final ballots that explains the workaround needed to nominate a sole winner" +msgstr "" + +#: ../../../CHANGELOG.rst:195 +msgid "Improved display of images shown when sharing Tabbycat links on social media" +msgstr "" + +#: ../../../CHANGELOG.rst:196 +msgid "Optimised the performance of several commonly-loaded pages. Thanks to Étienne Beaulé for the pull request!" +msgstr "" + +#: ../../../CHANGELOG.rst:197 +msgid "Prevented the entry of integer-scale feedback questions without the required min/max attributes" +msgstr "" + +#: ../../../CHANGELOG.rst:198 +msgid "Provided a shortcut link to editing a round's feedback weight" +msgstr "" + +#: ../../../CHANGELOG.rst:199 +msgid "Prevented standings from crashing when only a single standings metric is set" +msgstr "" + +#: ../../../CHANGELOG.rst:203 +msgid "2.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:204 +msgid "*Release date: 14 July 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:206 +msgid "Fixed an error caused when calculating breaks including teams without institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:207 +msgid "Improved display of long motions and info slides" +msgstr "" + +#: ../../../CHANGELOG.rst:208 +msgid "Fixed bug in feedback progress tracking with UADC-style adjudication" +msgstr "" + +#: ../../../CHANGELOG.rst:209 +msgid "Fixed bug where the public checks page would cause large amounts of failing requests" +msgstr "" + +#: ../../../CHANGELOG.rst:210 +msgid "Fixed visual issue with adjudicator lists wrapping poorly on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:211 +msgid "Limited the time it takes to serve requests to match Heroku's in-built limit; this may help improve the performance of sites under heavy load" +msgstr "" + +#: ../../../CHANGELOG.rst:215 +msgid "2.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:216 +msgid "*Release date: 19 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:218 +msgid "The Scan Identifiers page now orders check-ins from top to bottom" +msgstr "" + +#: ../../../CHANGELOG.rst:219 +msgid "The Scan Identifiers now plays different sounds for failed check-ins" +msgstr "" + +#: ../../../CHANGELOG.rst:220 +msgid "The Scan Identifiers now has a toggle for sounds; allowing it to work in browsers like Safari that block auto-playing audio" +msgstr "" + +#: ../../../CHANGELOG.rst:224 +msgid "2.1.0 (Japanese Bobtail)" +msgstr "" + +#: ../../../CHANGELOG.rst:225 +msgid "*Release date: 7 May 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:227 +msgid "Added an introductory modal for the adjudicator allocation page to help outline how the features and workflow operate" +msgstr "" + +#: ../../../CHANGELOG.rst:228 +msgid "Added an automated method for assigning importances to debates using their bracket or 'liveness'. This should allow smaller tournaments to more easily assign importances and save time for larger tournaments that do so" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "Added the ability to switch between using 'team codes' and standard team names" +msgstr "" + +#: ../../../CHANGELOG.rst:230 +msgid "By default team codes are set to match that team's emoji, but team codes are editable and can be imported like standard data" +msgstr "" + +#: ../../../CHANGELOG.rst:231 +msgid "Team codes can be swapped in an out for standard team names at will, with precise control over the contexts in which either is used — i.e. in public-facing pages, in admin-facing pages, in tooltips, *etc.*" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Added a range of 'check-in' functionality" +msgstr "" + +#: ../../../CHANGELOG.rst:233 +msgid "This includes barcode assignment, printing, and scanning. Scanning methods are optimised both for manual entry, entry with barcodes scanners, and for a 'live' scanning view that uses your phone's camera!" +msgstr "" + +#: ../../../CHANGELOG.rst:234 +msgid "This includes new people and venue status pages that show an overview of check-in status and allow for easy manual check-ins; ideal for a roll-calls!. This page can also be made public" +msgstr "" + +#: ../../../CHANGELOG.rst:235 +msgid "Ballot check-ins have been converted to this new method, and now all printed ballots will contain the barcodes needed to scan them" +msgstr "" + +#: ../../../CHANGELOG.rst:236 +msgid "Venue check-ins have been added alongside the standard 'person' check-ins to allow you to track a room's status at the start of the day or round-by-round" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Added (partial) translations in French, Spanish and Arabic" +msgstr "" + +#: ../../../CHANGELOG.rst:238 +msgid "Users can now use a link in the footer to switch the site's language into French, Spanish, or Arabic. By default Tabbycat should also match your browser's language and so automatically apply those languages if it matches" +msgstr "" + +#: ../../../CHANGELOG.rst:239 +msgid "Our translations are generously provided by volunteers, but (so far) do not cover all of the interface text within Tabbycat. If you're interested in helping to translate new or existing languages please get in touch!" +msgstr "" + +#: ../../../CHANGELOG.rst:240 +msgid "Thanks to the excellent team at QatarDebate for contributing the Arabic translations, and to Alejandro, Hernando, Julian and Zoe for contributing the Spanish translations." +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Added a new (beta) feature: allocation 'sharding'" +msgstr "" + +#: ../../../CHANGELOG.rst:242 +msgid "Sharding allows you to split up the Adjudicator Allocation screen into a defined subset of the draw. This has been designed so that you can have multiple computers doing allocations simultaneously; allowing the adjudication core to split itself and tackle allocations in parallel." +msgstr "" + +#: ../../../CHANGELOG.rst:243 +msgid "Shards can be assigned into defined fractions (i.e. halves or fifths) according to specific criteria (i.e. bracket or priority) and following either a top-to-bottom sorting or a mixed sorting that ensures each bracket has an even proportion of each criteria." +msgstr "" + +#: ../../../CHANGELOG.rst:244 +msgid "Added an option to show a \"Confirm Digits\" option to pre-printed ballots that asks adjudicators to confirm their scores in a manner that may help clarify instances or bad handwriting. This can be enabled in the \"Data Entry\" settings area." +msgstr "" + +#: ../../../CHANGELOG.rst:245 +msgid "Added a 'liveness' calculator for BP that will estimate whether each team has, can, or can't break in each of their categories (as previously existed for 2-team formats)" +msgstr "" + +#: ../../../CHANGELOG.rst:246 +msgid "Added draw pull-up option: pull up from middle" +msgstr "" + +#: ../../../CHANGELOG.rst:247 +msgid "Added new draw option: choose pull-up from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../../CHANGELOG.rst:248 +msgid "Added the ability to have different 'ballots-per-debates' for in/out rounds; accommodating tournaments like Australian Easters that use consensus for preliminary rounds but voting for elimination rounds." +msgstr "" + +#: ../../../CHANGELOG.rst:249 +msgid "Added time zone support to the locations where times are displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:250 +msgid "Administrators can now view pages as if they were Assistants; allowing them to (for example) use the data entry forms that enforce double-checking without needed to create a separate account" +msgstr "" + +#: ../../../CHANGELOG.rst:251 +msgid "Fixed χ² test in motion statistics, and refactored the motion statistics page" +msgstr "" + +#: ../../../CHANGELOG.rst:252 +msgid "Teams, like adjudicators, no longer need to have an institution" +msgstr "" + +#: ../../../CHANGELOG.rst:253 +msgid "Added a page allowing for bulk updates to adjudicator scores" +msgstr "" + +#: ../../../CHANGELOG.rst:254 +msgid "Added break categories to team standings, and new team standings pages for break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Made speaker standings more configurable" +msgstr "" + +#: ../../../CHANGELOG.rst:256 +msgid "Second-order metrics can now be specified" +msgstr "" + +#: ../../../CHANGELOG.rst:257 +msgid "Added trimmed mean (also known as high-low drop)" +msgstr "" + +#: ../../../CHANGELOG.rst:258 +msgid "Added ability to set no limit for number of missed debates" +msgstr "" + +#: ../../../CHANGELOG.rst:259 +msgid "Standard deviation is now the population standard deviation (was previously sample), and ranks in ascending order if used to rank speakers." +msgstr "" + +#: ../../../CHANGELOG.rst:273 ../../../CHANGELOG.rst:386 +msgid "Quality of life improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:262 +msgid "Added a \"☆\" indicator to more obviously liveness in the adjudicator allocation screen" +msgstr "" + +#: ../../../CHANGELOG.rst:263 +msgid "Added WYSIWYG editor for tournament welcome message, and moved it to tournament configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:264 +msgid "Added \"appellant\" and \"respondent\" to the side name options" +msgstr "" + +#: ../../../CHANGELOG.rst:265 +msgid "Added a two new columns to the feedback overview page: one that displays the current difference between an adjudicator's test score and their current weighted score; another the displays the standard deviation of an adjudicator's feedback scores" +msgstr "" + +#: ../../../CHANGELOG.rst:266 +msgid "Added an 'important feedback' page that highlights feedback significantly above or below an adjudicator's test score" +msgstr "" + +#: ../../../CHANGELOG.rst:267 +msgid "Added a means to bulk-import adjudicator scores (for example from a CSV) to make it easier to work with external feedback processing" +msgstr "" + +#: ../../../CHANGELOG.rst:268 +msgid "Speakers and speaker's emails in the simple importer can now be separated by commas or tabs in addition to new lines" +msgstr "" + +#: ../../../CHANGELOG.rst:269 +msgid "The \"shared\" checkbox in the simple importer is now hidden unless the relevant tournament option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:270 +msgid "Current team standings page now shows silent round results if \"Release all round results to public\" is set" +msgstr "" + +#: ../../../CHANGELOG.rst:271 +msgid "The Consensus vs Voting options for how ballots work has now been split into two settings: one option for preliminary rounds and one option for elimination rounds" +msgstr "" + +#: ../../../CHANGELOG.rst:272 +msgid "Speaker scores now show as integers (without decimals) where the tournament format would not allow decimals" +msgstr "" + +#: ../../../CHANGELOG.rst:273 +msgid "Added a page showing a list of institutions in the tournament" +msgstr "" + +#: ../../../CHANGELOG.rst:274 +msgid "On the assistant \"enter results\" page, pressing \"/\" jumps to the \"Find in Table\" box, so data entry can be done entirely from your keyboard" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "Switched to using a Websockets/Channels based infrastructure to better allow for asynchronous updates. This should also ameliorate cases where the Memcachier plugin expired due to inactivity which would then crash a site. Notes for those upgrading:" +msgstr "" + +#: ../../../CHANGELOG.rst:276 +msgid "On Heroku: You should remove the Memcachier plugin and instead add 'heroku-redis' to any instances being upgraded" +msgstr "" + +#: ../../../CHANGELOG.rst:277 +msgid "Locally: You should recreate your `local_settings.py` from the `local_settings.example` file" +msgstr "" + +#: ../../../CHANGELOG.rst:280 +msgid "Upgraded to Django 2.0" +msgstr "" + +#: ../../../CHANGELOG.rst:279 +msgid "Converted most raw SQL queries to use the new ``filter`` keyword in annotations" +msgstr "" + +#: ../../../CHANGELOG.rst:283 +msgid "2.0.7" +msgstr "" + +#: ../../../CHANGELOG.rst:284 +msgid "*Release date: 13 April 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:286 +msgid "Fixed an issue preventing draws with pre-allocate sides generating" +msgstr "" + +#: ../../../CHANGELOG.rst:290 +msgid "2.0.6" +msgstr "" + +#: ../../../CHANGELOG.rst:291 +msgid "*Release date: 20 March 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:293 +msgid "Added reminder to add own-institution conflicts in the Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:298 +msgid "2.0.5" +msgstr "" + +#: ../../../CHANGELOG.rst:299 +msgid "*Release date: 7 February 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:301 +msgid "Improved the printing of scoresheets and feedback forms on Chrome." +msgstr "" + +#: ../../../CHANGELOG.rst:306 +msgid "2.0.4" +msgstr "" + +#: ../../../CHANGELOG.rst:307 +msgid "*Release date: 22 January 2018*" +msgstr "" + +#: ../../../CHANGELOG.rst:309 +msgid "Add alert for users who try to do voting ballots on BP-configured tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:310 +msgid "Fixed issue where draws of the \"manual\" type would not generate correctly" +msgstr "" + +#: ../../../CHANGELOG.rst:311 +msgid "Fixed issue where a ballot's speaker names dropdown would contain both team's speakers when using formats with side selection" +msgstr "" + +#: ../../../CHANGELOG.rst:312 +msgid "Fixed issue where scoresheets would not show correctly under some configurations" +msgstr "" + +#: ../../../CHANGELOG.rst:313 +msgid "Improved display of really long motions when using the inbuilt motion-showing page" +msgstr "" + +#: ../../../CHANGELOG.rst:318 +msgid "2.0.3" +msgstr "" + +#: ../../../CHANGELOG.rst:319 +msgid "*Release date: 3 December 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:321 +msgid "Fixed issue where the 'prefix team name with institution name' checkbox would not be correctly saved when using the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:322 +msgid "Removed the scroll speed / text size buttons on mobile draw views that were making it difficult to view the table" +msgstr "" + +#: ../../../CHANGELOG.rst:323 +msgid "Improved the display of the motions tab page on mobile devices and fixed an issue where it appeared as if only half the vetoes were made" +msgstr "" + +#: ../../../CHANGELOG.rst:327 +msgid "2.0.2" +msgstr "" + +#: ../../../CHANGELOG.rst:328 +msgid "*Release date: 27 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Fixes and improvements to diversity overview" +msgstr "" + +#: ../../../CHANGELOG.rst:331 +msgid "Fixed average feedback rating from teams, it was previously (incorrectly) showing the average feedback rating from all adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:332 +msgid "Gender splits for average feedback rating now go by target adjudicator; this was previously source adjudicator" +msgstr "" + +#: ../../../CHANGELOG.rst:333 +msgid "Persons with unknown gender are now shown in counts (but not score/rating averages); a bug had previously caused them to be incorrectly counted as zero" +msgstr "" + +#: ../../../CHANGELOG.rst:334 +msgid "Improved query efficiency of the page" +msgstr "" + +#: ../../../CHANGELOG.rst:335 +msgid "Improved the BP motions tab for out-rounds by specifying advancing teams as \"top/bottom ½\" rather than as 1st/4th and removed the average-points-per-position graphs that were misleading" +msgstr "" + +#: ../../../CHANGELOG.rst:336 +msgid "Improved handling of long motions in the motion display interface" +msgstr "" + +#: ../../../CHANGELOG.rst:337 +msgid "Fixed issue where creating BP tournaments using the wizard would create an extra break round given the size of the break specified" +msgstr "" + +#: ../../../CHANGELOG.rst:338 +msgid "Fixed auto-allocation in consensus panels where there are fewer judges than debates in the round" +msgstr "" + +#: ../../../CHANGELOG.rst:339 +msgid "Fixed reply speaker validity check when speeches are marked as duplicate" +msgstr "" + +#: ../../../CHANGELOG.rst:340 +msgid "Prohibit assignment of teams to break categories of other tournaments in Edit Database area" +msgstr "" + +#: ../../../CHANGELOG.rst:344 +msgid "2.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:345 +msgid "*Release date: 21 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:347 +msgid "Fixed issue where results submission would crash if sides are unconfirmed" +msgstr "" + +#: ../../../CHANGELOG.rst:348 +msgid "Fixed issue where scoresheets would not display properly for adjudicators who lack institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:349 +msgid "Fixed issue where the round history indicators in the Edit Adjudicators page would sometimes omit the \"rounds ago\" indicator" +msgstr "" + +#: ../../../CHANGELOG.rst:353 +msgid "2.0.0 (Iberian Lynx)" +msgstr "" + +#: ../../../CHANGELOG.rst:354 +msgid "*Release date: 13 November 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "British Parliamentary support" +msgstr "" + +#: ../../../CHANGELOG.rst:357 +msgid "Full support for British Parliamentary format has been added and we're incredibly excited to see Tabbycat's unique features and design (finally) available as an option for those tabbing in the predominant global format" +msgstr "" + +#: ../../../CHANGELOG.rst:358 +msgid "As part of the implementation of this format we've made significant improvements over existing tab software on how sides are allocated within BP draws. This means that teams are less likely to have 'imbalanced' proportions of side allocations (for example having many more debates as Opening Government than Closing Opposition)" +msgstr "" + +#: ../../../CHANGELOG.rst:359 +msgid "We've added a new \"Comparisons\" page added to the documentation to outline some of the key differences between Tabbycat and other software in the context of BP tabbing" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "Refreshed interface design" +msgstr "" + +#: ../../../CHANGELOG.rst:361 +msgid "The basic graphic elements of Tabbycat have had a their typography, icons, colours, forms, and more redesign for a more distinctive and clear look. We also now have an official logo!" +msgstr "" + +#: ../../../CHANGELOG.rst:362 +msgid "The \"Motions\" stage of the per-round workflow has now been rolled into the Display area to better accommodate BP formats and consolidate the Draw/Motion 'release' process" +msgstr "" + +#: ../../../CHANGELOG.rst:363 +msgid "Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks" +msgstr "" + +#: ../../../CHANGELOG.rst:364 +msgid "Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area" +msgstr "" + +#: ../../../CHANGELOG.rst:365 +msgid "More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions" +msgstr "" + +#: ../../../CHANGELOG.rst:366 +msgid "Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "Improved handling of Break Rounds ballots and sides allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:368 +msgid "The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised" +msgstr "" + +#: ../../../CHANGELOG.rst:369 +msgid "Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores" +msgstr "" + +#: ../../../CHANGELOG.rst:370 +msgid "Now, like Break Categories, you can define arbitrary Categories such as 'Novice' or 'ESL' to create custom Speaker tabs for groups of Speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:371 +msgid "You can now release an Adjudicators Tab showing test scores, final scores, and/or per-round feedback averages" +msgstr "" + +#: ../../../CHANGELOG.rst:372 +msgid "Information Slides can now be added to the system; either for showing to an auditorium within Tabbycat or for displaying alongside the public list of motions and/or the motions tab" +msgstr "" + +#: ../../../CHANGELOG.rst:373 +msgid "Teams and adjudicators are no longer required to have institutions; something that should be very useful when setting up small IVs and the like" +msgstr "" + +#: ../../../CHANGELOG.rst:374 +msgid "Private URLs can now be incrementally generated. Records of sent mail are now also kept by Tabbycat, so that emails can be incrementally sent to participants as registration data changes" +msgstr "" + +#: ../../../CHANGELOG.rst:376 +msgid "After creating a new tournament you will now be prompted to apply a basic rules and public information preset" +msgstr "" + +#: ../../../CHANGELOG.rst:377 +msgid "Better handling of errors that arise when a debate team is missing or where two teams have been assigned the same side" +msgstr "" + +#: ../../../CHANGELOG.rst:378 +msgid "Fixed issue where the adjudicator feedback graphs would not sort along with their table" +msgstr "" + +#: ../../../CHANGELOG.rst:379 +msgid "The Feedback Overview page now makes it more clear how the score is determined, the current distribution of scores, and how scores affect the distribution of chairs, panellists, and trainees" +msgstr "" + +#: ../../../CHANGELOG.rst:380 +msgid "Speaker tabs now default to sorting by average, except for formats where we are certain that they must be sorted by total. The speaker tab page itself now prominently notes which setting is is currently using" +msgstr "" + +#: ../../../CHANGELOG.rst:381 +msgid "'Feedback paths' now default to a more permissive setting (rather than only allowing Chairs to submit feedback) and the Feedback Overview page will note that current configuration" +msgstr "" + +#: ../../../CHANGELOG.rst:382 +msgid "Emails can be assigned to adjudicators and teams in the Simple Importer" +msgstr "" + +#: ../../../CHANGELOG.rst:383 +msgid "More of the tables that allow you to set or edit data (such as the check-in tables for adjudicators, teams and venues) now automatically save changes" +msgstr "" + +#: ../../../CHANGELOG.rst:384 +msgid "When adding/editing users extraneous fields have been hidden and the \"Staff\" and \"Superuser\" roles have new sub-text clarifying what they mean for users with those permissions" +msgstr "" + +#: ../../../CHANGELOG.rst:385 +msgid "Team record pages now show cumulative team points, and if the speaker tab is fully released, speaker scores for that team in each debate" +msgstr "" + +#: ../../../CHANGELOG.rst:389 +msgid "1.4.6" +msgstr "" + +#: ../../../CHANGELOG.rst:390 +msgid "*Release date: 23 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:392 +msgid "Fixed issue where speaker standings with a large amount of non-ranking speakers would cause the page to load slowly or time-out." +msgstr "" + +#: ../../../CHANGELOG.rst:396 +msgid "1.4.5" +msgstr "" + +#: ../../../CHANGELOG.rst:397 +msgid "*Release date: 14 October 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:399 +msgid "Added warning message when adjudicator scores are outside the expected range" +msgstr "" + +#: ../../../CHANGELOG.rst:400 +msgid "Fixed handling of uniqueness failure in simple importer for teams" +msgstr "" + +#: ../../../CHANGELOG.rst:404 +msgid "1.4.4" +msgstr "" + +#: ../../../CHANGELOG.rst:405 +msgid "*Release date: 27 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:407 +msgid "Fixed Vue dependency issue preventing Heroku installs after a dependency release" +msgstr "" + +#: ../../../CHANGELOG.rst:408 +msgid "Fixed issue with formatting non-numeric standings metrics" +msgstr "" + +#: ../../../CHANGELOG.rst:409 +msgid "Fixed behaviour of public tabs when all rounds are silent" +msgstr "" + +#: ../../../CHANGELOG.rst:413 +msgid "1.4.3" +msgstr "" + +#: ../../../CHANGELOG.rst:414 +msgid "*Release date: 9 September 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:416 +msgid "A number of improvements to error handling and logging" +msgstr "" + +#: ../../../CHANGELOG.rst:417 +msgid "Changed the \"previous round\" of an elimination round to point to the last one in the same break category" +msgstr "" + +#: ../../../CHANGELOG.rst:418 +msgid "Other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:422 +msgid "1.4.2" +msgstr "" + +#: ../../../CHANGELOG.rst:423 +msgid "*Release date: 23 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:425 +msgid "Minor bug fixes and error logging improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:429 +msgid "1.4.1" +msgstr "" + +#: ../../../CHANGELOG.rst:430 +msgid "*Release date: 2 August 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:432 +msgid "Fixed bug that prevented edited matchups from being saved" +msgstr "" + +#: ../../../CHANGELOG.rst:433 +msgid "Added flag to prevent retired sites from using the database for sessions" +msgstr "" + +#: ../../../CHANGELOG.rst:437 +msgid "1.4.0 (Havana Brown)" +msgstr "" + +#: ../../../CHANGELOG.rst:438 +msgid "*Release date: 26 July 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:" +msgstr "" + +#: ../../../CHANGELOG.rst:441 +msgid "Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping" +msgstr "" + +#: ../../../CHANGELOG.rst:442 +msgid "When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress" +msgstr "" + +#: ../../../CHANGELOG.rst:443 +msgid "Added conflicts and recent histories to the slideovers shown for teams/adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:444 +msgid "Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels" +msgstr "" + +#: ../../../CHANGELOG.rst:445 +msgid "Each interface's table is now sortable by a debate's importance, bracket, liveness, etc." +msgstr "" + +#: ../../../CHANGELOG.rst:446 +msgid "Added a new \"Tournament Logistics\" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document" +msgstr "" + +#: ../../../CHANGELOG.rst:447 +msgid "Added (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)" +msgstr "" + +#: ../../../CHANGELOG.rst:448 +msgid "Added an ESL/EFL tab release option and status field" +msgstr "" + +#: ../../../CHANGELOG.rst:449 +msgid "Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this" +msgstr "" + +#: ../../../CHANGELOG.rst:450 +msgid "The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates" +msgstr "" + +#: ../../../CHANGELOG.rst:451 +msgid "Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished" +msgstr "" + +#: ../../../CHANGELOG.rst:452 +msgid "Added 'Average Speaks by Round' to the standings overview page" +msgstr "" + +#: ../../../CHANGELOG.rst:453 +msgid "Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important" +msgstr "" + +#: ../../../CHANGELOG.rst:454 +msgid "Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes" +msgstr "" + +#: ../../../CHANGELOG.rst:455 +msgid "Fixed issue where VenueCategories could not be edited if they did not have Venues set" +msgstr "" + +#: ../../../CHANGELOG.rst:456 +msgid "Various other small fixes and improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:460 +msgid "1.3.1" +msgstr "" + +#: ../../../CHANGELOG.rst:461 +msgid "*Release date: 26 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:463 +msgid "Fixed bug that allowed duplicate emoji to be occasionally generated" +msgstr "" + +#: ../../../CHANGELOG.rst:467 +msgid "1.3.0 (Genetta)" +msgstr "" + +#: ../../../CHANGELOG.rst:468 +msgid "*Release date: 9 May 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:470 +msgid "Added the ability to mark speeches as duplicates when entering ballots so that they will not show in speaker tabs, intended for use with 'iron-man' speeches and swing speakers" +msgstr "" + +#: ../../../CHANGELOG.rst:471 +msgid "Reworked venue constraints and venue display options by streamlining \"venue groups\" and \"venue constraint categories\" into a single \"venue category\" type, with options for how they are used and displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:472 +msgid "Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs" +msgstr "" + +#: ../../../CHANGELOG.rst:473 +msgid "Reworked the simple data importer (formerly the visual importer) to improve its robustness" +msgstr "" + +#: ../../../CHANGELOG.rst:474 +msgid "Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)" +msgstr "" + +#: ../../../CHANGELOG.rst:475 +msgid "Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release" +msgstr "" + +#: ../../../CHANGELOG.rst:476 +msgid "Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)" +msgstr "" + +#: ../../../CHANGELOG.rst:477 +msgid "Added the ability to redact individual person's identifying details from speaker tabs" +msgstr "" + +#: ../../../CHANGELOG.rst:478 +msgid "Added the ability for user passwords to be easily reset" +msgstr "" + +#: ../../../CHANGELOG.rst:479 +msgid "Added a minimal set of default feedback questions to newly created Tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:480 +msgid "When a tournament's current round is set, redirect to a page where it can be set, rather than crashing" +msgstr "" + +#: ../../../CHANGELOG.rst:481 +msgid "A number of other minor bug fixes and enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:485 +msgid "1.2.3" +msgstr "" + +#: ../../../CHANGELOG.rst:486 +msgid "*Release date: 17 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:488 +msgid "Improved the display of the admin ballot entry form on mobile devices" +msgstr "" + +#: ../../../CHANGELOG.rst:489 ../../../CHANGELOG.rst:497 +#: ../../../CHANGELOG.rst:505 +msgid "A number of other minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:493 +msgid "1.2.2" +msgstr "" + +#: ../../../CHANGELOG.rst:494 +msgid "*Release date: 4 March 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:496 +msgid "Protected debate-team objects from cascaded deletion, and added warning messages with guidance when users would otherwise do this" +msgstr "" + +#: ../../../CHANGELOG.rst:501 +msgid "1.2.1" +msgstr "" + +#: ../../../CHANGELOG.rst:502 +msgid "*Release date: 25 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:504 +msgid "Printable feedback forms will now display the default rating scale, any configured introduction text, and better prompt you to add additional questions" +msgstr "" + +#: ../../../CHANGELOG.rst:509 +msgid "1.2.0 (Foldex)" +msgstr "" + +#: ../../../CHANGELOG.rst:510 +msgid "*Release date: 15 February 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:512 +msgid "Changed the core workflow by splitting display- and motion- related activities into separate pages to simplify each stage of running a round" +msgstr "" + +#: ../../../CHANGELOG.rst:513 +msgid "Added support for Docker-based installations to make local/offline installations much more simple" +msgstr "" + +#: ../../../CHANGELOG.rst:514 +msgid "Added a \"Tabbykitten\" version of Tabbycat that can be deployed to Heroku without a needing a credit/debit card" +msgstr "" + +#: ../../../CHANGELOG.rst:515 +msgid "Added button to load a demo tournament on the 'New Tournament' page so it is easier to test-run Tabbycat" +msgstr "" + +#: ../../../CHANGELOG.rst:516 +msgid "Changed venue groups to be separate to venue constraint categories" +msgstr "" + +#: ../../../CHANGELOG.rst:517 +msgid "Modified the licence to clarify that donations are required for some tournaments and added a more explicit donations link and explanation page" +msgstr "" + +#: ../../../CHANGELOG.rst:518 +msgid "Added information about autosave status to the adjudicator allocations page" +msgstr "" + +#: ../../../CHANGELOG.rst:519 +msgid "Added configurable side names so that tournaments can use labels like \"Proposition\"/\"Opposition\" instead of \"Affirmative\"/\"Negative\"" +msgstr "" + +#: ../../../CHANGELOG.rst:520 +msgid "Started work on basic infrastructure for translations" +msgstr "" + +#: ../../../CHANGELOG.rst:524 +msgid "1.1.7" +msgstr "" + +#: ../../../CHANGELOG.rst:525 +msgid "*Release date: 31 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:527 +msgid "Yet more minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:528 +msgid "The auto-allocation UI will now detail your minimum rating setting better" +msgstr "" + +#: ../../../CHANGELOG.rst:529 +msgid "Added guidance on database backups to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:533 +msgid "1.1.6" +msgstr "" + +#: ../../../CHANGELOG.rst:534 +msgid "*Release date: 19 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:536 +msgid "A number of minor bug fixes" +msgstr "" + +#: ../../../CHANGELOG.rst:537 +msgid "Added basic infrastructure for creating tabbycat translations" +msgstr "" + +#: ../../../CHANGELOG.rst:541 +msgid "1.1.5" +msgstr "" + +#: ../../../CHANGELOG.rst:542 +msgid "*Release date: 12 January 2017*" +msgstr "" + +#: ../../../CHANGELOG.rst:544 +msgid "A number of minor bug fixes and improvements to documentation" +msgstr "" + +#: ../../../CHANGELOG.rst:548 +msgid "1.1.4" +msgstr "" + +#: ../../../CHANGELOG.rst:549 +msgid "*Release date: 25 November 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:551 +msgid "Redesigned the footer area to better describe Tabbycat and to promote donations and related projects" +msgstr "" + +#: ../../../CHANGELOG.rst:552 +msgid "Slight tweaks to the site homepage and main menus to better accommodate the login/log out links" +msgstr "" + +#: ../../../CHANGELOG.rst:553 +msgid "A few minor bug fixes and improvements to error reporting" +msgstr "" + +#: ../../../CHANGELOG.rst:557 +msgid "1.1.3" +msgstr "" + +#: ../../../CHANGELOG.rst:558 +msgid "*Release date: 15 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:560 +msgid "Fixed bug affecting some migrations from earlier versions" +msgstr "" + +#: ../../../CHANGELOG.rst:561 +msgid "Made latest results show question mark rather than crash if a team is missing" +msgstr "" + +#: ../../../CHANGELOG.rst:562 +msgid "Fixed bug affecting the ability to save motions" +msgstr "" + +#: ../../../CHANGELOG.rst:563 +msgid "Fixed bug preventing draw flags from being displayed" +msgstr "" + +#: ../../../CHANGELOG.rst:567 +msgid "1.1.2" +msgstr "" + +#: ../../../CHANGELOG.rst:568 +msgid "*Release date: 14 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:570 +msgid "Allow panels with even number of adjudicators (with warnings), by giving chair the casting vote" +msgstr "" + +#: ../../../CHANGELOG.rst:571 +msgid "Removed defunct person check-in, which hasn't been used since 2010" +msgstr "" + +#: ../../../CHANGELOG.rst:572 +msgid "Collapsed availability database models into a single model with Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:573 +msgid "Collapsed optional fields in action log entries into a single generic field using Django content types" +msgstr "" + +#: ../../../CHANGELOG.rst:574 +msgid "Added better warnings when attempting to create an elimination round draw with fewer than two teams" +msgstr "" + +#: ../../../CHANGELOG.rst:575 +msgid "Added warnings in Edit Database view when editing debate teams" +msgstr "" + +#: ../../../CHANGELOG.rst:576 +msgid "Renamed \"AIDA pre-2015\" break rule to \"AIDA 1996\"" +msgstr "" + +#: ../../../CHANGELOG.rst:580 +msgid "1.1.1" +msgstr "" + +#: ../../../CHANGELOG.rst:581 +msgid "*Release date: 8 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:583 +msgid "Fixed a bug where the team standings and team tab would crash when some emoji were not set" +msgstr "" + +#: ../../../CHANGELOG.rst:587 +msgid "1.1.0 (Egyptian Mau)" +msgstr "" + +#: ../../../CHANGELOG.rst:588 +msgid "*Release date: 3 September 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:590 +msgid "Added support for the United Asian Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:591 +msgid "Added support for the World Schools Debating Championships style" +msgstr "" + +#: ../../../CHANGELOG.rst:592 +msgid "Made Windows 8+ Emoji more colourful" +msgstr "" + +#: ../../../CHANGELOG.rst:593 +msgid "Fixed an incompatability between Vue and IE 10-11 which caused tables to not render" +msgstr "" + +#: ../../../CHANGELOG.rst:594 +msgid "Minor bug fixes and dependency updates" +msgstr "" + +#: ../../../CHANGELOG.rst:598 +msgid "1.0.1" +msgstr "" + +#: ../../../CHANGELOG.rst:599 +msgid "*Release date: 19 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:601 +msgid "Fixed a minor bug with the visual importer affecting similarly named institutions" +msgstr "" + +#: ../../../CHANGELOG.rst:602 +msgid "Fixed error message when user tries to auto-allocate adjudicators on unconfirmed or released draw" +msgstr "" + +#: ../../../CHANGELOG.rst:603 +msgid "Minor docs edits" +msgstr "" + +#: ../../../CHANGELOG.rst:607 +msgid "1.0.0 (Devon Rex)" +msgstr "" + +#: ../../../CHANGELOG.rst:608 +msgid "*Release date: 16 August 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Redesigned and redeveloped adjudicator allocation page" +msgstr "" + +#: ../../../CHANGELOG.rst:611 +msgid "Redesigned interface, featuring clearer displays of conflict and diversity information" +msgstr "" + +#: ../../../CHANGELOG.rst:612 +msgid "Changes to importances and panels are now automatically saved" +msgstr "" + +#: ../../../CHANGELOG.rst:613 +msgid "Added debate \"liveness\" to help identify critical rooms—many thanks to Thevesh Theva" +msgstr "" + +#: ../../../CHANGELOG.rst:614 +msgid "Panel score calculations performed live to show strength of voting majorities" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "New features" +msgstr "" + +#: ../../../CHANGELOG.rst:616 +msgid "Added record pages for teams and adjudicators" +msgstr "" + +#: ../../../CHANGELOG.rst:617 +msgid "Added a diversity tab to display demographic information about participants and scoring" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Significant general improvements" +msgstr "" + +#: ../../../CHANGELOG.rst:619 +msgid "Shifted most table rendering to Vue.js to improve performance and design" +msgstr "" + +#: ../../../CHANGELOG.rst:620 +msgid "Drastically reduced number of SQL queries in large tables, *e.g.* draw, results, tab" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Break round management" +msgstr "" + +#: ../../../CHANGELOG.rst:622 +msgid "Completed support for break round draws" +msgstr "" + +#: ../../../CHANGELOG.rst:623 +msgid "Simplified procedure for adding remarks to teams and updating break" +msgstr "" + +#: ../../../CHANGELOG.rst:624 +msgid "Reworked break generation code to be class-based, to improve future extensibility" +msgstr "" + +#: ../../../CHANGELOG.rst:625 +msgid "Added support for break qualification rules: AIDA Australs, AIDA Easters, WADL" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Feedback" +msgstr "Phản hồi" + +#: ../../../CHANGELOG.rst:627 +msgid "Changed Boolean fields in AdjudicatorFeedbackQuestion to reflect what they actually do" +msgstr "" + +#: ../../../CHANGELOG.rst:628 +msgid "Changed \"panellist feedback enabled\" option to \"feedback paths\", a choice of three options" +msgstr "" + +#: ../../../CHANGELOG.rst:630 +msgid "Dropped \"/t/\" from tournament URLs and moved \"/admin/\" to \"/database/\", with 301 redirects" +msgstr "" + +#: ../../../CHANGELOG.rst:631 +msgid "Added basic code linting to the continuous integration tests" +msgstr "" + +#: ../../../CHANGELOG.rst:632 +msgid "Many other small bug fixes, refactors, optimisations, and documentation updates" +msgstr "" + +#: ../../../CHANGELOG.rst:636 +msgid "0.9.0 (Chartreux)" +msgstr "" + +#: ../../../CHANGELOG.rst:637 +msgid "*Release date: 13 June 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:639 +msgid "Added a beta implementation of the break rounds workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:640 +msgid "Added venue constraints, to allow participants or divisions to preferentially be given venues from predefined groups" +msgstr "" + +#: ../../../CHANGELOG.rst:641 +msgid "Added a button to regenerate draws" +msgstr "" + +#: ../../../CHANGELOG.rst:642 +msgid "Refactored speaker standings implementation to match team standings implementation" +msgstr "" + +#: ../../../CHANGELOG.rst:643 +msgid "New standings metrics, draw methods, and interface settings for running small tournaments and division-based tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:644 +msgid "Improved support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:645 +msgid "Improved user-facing error messages in some scenarios" +msgstr "" + +#: ../../../CHANGELOG.rst:646 +msgid "Most frontend dependencies now handled by Bower" +msgstr "" + +#: ../../../CHANGELOG.rst:647 +msgid "Static file compilation now handled by Gulp" +msgstr "" + +#: ../../../CHANGELOG.rst:648 ../../../CHANGELOG.rst:660 +msgid "Various bug fixes, optimisations, and documentation edits" +msgstr "" + +#: ../../../CHANGELOG.rst:652 +msgid "0.8.3" +msgstr "" + +#: ../../../CHANGELOG.rst:653 +msgid "*Release date: 4 April 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:655 +msgid "Restored and reworking printing functionality for scoresheets/feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:656 +msgid "Restored Edit Venues and Edit Matchups on the draw pages" +msgstr "" + +#: ../../../CHANGELOG.rst:657 +msgid "Reworked tournament data importers to use csv.DictReader, so that column order in files doesn't matter" +msgstr "" + +#: ../../../CHANGELOG.rst:658 +msgid "Improved dashboard and feedback graphs" +msgstr "" + +#: ../../../CHANGELOG.rst:659 +msgid "Add separate pro speakers tab" +msgstr "" + +#: ../../../CHANGELOG.rst:664 +msgid "0.8.2" +msgstr "" + +#: ../../../CHANGELOG.rst:665 +msgid "*Release date: 20 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:667 +msgid "Fixed issue where scores from individual ballots would be deleted when any other panel in the round was edited" +msgstr "" + +#: ../../../CHANGELOG.rst:668 +msgid "Fixed issue where page crashes for URLs with \"tab\" in it but that aren't recognized tab pages" +msgstr "" + +#: ../../../CHANGELOG.rst:672 +msgid "0.8.1" +msgstr "" + +#: ../../../CHANGELOG.rst:673 +msgid "*Release date: 15 March 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:675 +msgid "Fixed a bug where editing a Team in the admin section could cause an error" +msgstr "" + +#: ../../../CHANGELOG.rst:676 +msgid "Added instructions on how to account for speakers speaking twice to docs" +msgstr "" + +#: ../../../CHANGELOG.rst:677 +msgid "Venues Importer wont show VenueGroup import info unless that option is enabled" +msgstr "" + +#: ../../../CHANGELOG.rst:681 +msgid "0.8.0 (Bengal)" +msgstr "" + +#: ../../../CHANGELOG.rst:682 +msgid "*Release date: 29 February 2016*" +msgstr "" + +#: ../../../CHANGELOG.rst:684 +msgid "Upgraded to Python 3.4, dropped support for Python 2" +msgstr "" + +#: ../../../CHANGELOG.rst:685 +msgid "Restructured directories and, as a consequence, changed database schema" +msgstr "" + +#: ../../../CHANGELOG.rst:686 +msgid "Added Django migrations to the release (they were previously generated by the user)" +msgstr "" + +#: ../../../CHANGELOG.rst:687 +msgid "Migrated documentation to `Read The Docs `_" +msgstr "" + +#: ../../../CHANGELOG.rst:688 +msgid "New user interface design and workflow" +msgstr "" + +#: ../../../CHANGELOG.rst:689 +msgid "Overhauled tournament preferences to use `django-dynamic-preferences `_" +msgstr "" + +#: ../../../CHANGELOG.rst:690 +msgid "Added new visual data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:691 +msgid "Improved flexibility of team standings rules" +msgstr "" + +#: ../../../CHANGELOG.rst:692 +msgid "Moved data utility scripts to Django management commands" +msgstr "" + +#: ../../../CHANGELOG.rst:693 +msgid "Changed emoji to Unicode characters" +msgstr "" + +#: ../../../CHANGELOG.rst:694 +msgid "Various other fixes and refinements" +msgstr "" + +#: ../../../CHANGELOG.rst:698 +msgid "0.7.0 (Abyssinian)" +msgstr "" + +#: ../../../CHANGELOG.rst:699 +msgid "*Release date: 31 July 2015*" +msgstr "" + +#: ../../../CHANGELOG.rst:701 +msgid "Support for multiple tournaments" +msgstr "" + +#: ../../../CHANGELOG.rst:702 +msgid "Improved and extensible tournament data importer" +msgstr "" + +#: ../../../CHANGELOG.rst:703 +msgid "Display gender, region, and break category in adjudicator allocation" +msgstr "" + +#: ../../../CHANGELOG.rst:704 +msgid "New views for online adjudicator feedback" +msgstr "" + +#: ../../../CHANGELOG.rst:705 +msgid "Customisable adjudicator feedback forms" +msgstr "" + +#: ../../../CHANGELOG.rst:706 +msgid "Randomised URLs for public submission" +msgstr "" + +#: ../../../CHANGELOG.rst:707 +msgid "Customisable break categories" +msgstr "" + +#: ../../../CHANGELOG.rst:708 +msgid "Computerised break generation (break round draws not supported)" +msgstr "" + +#: ../../../CHANGELOG.rst:709 +msgid "Lots of fixes, interface touch-ups and performance enhancements" +msgstr "" + +#: ../../../CHANGELOG.rst:710 +msgid "Now requires Django 1.8 (and other package upgrades)" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/about/contributing.po b/docs/locale/vi/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..105d4eaa57d --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/contributing.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-25 02:58\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: vi_VN\n" + +#: ../../../CONTRIBUTING.rst:3 +msgid "Contributing" +msgstr "" + +#: ../../../CONTRIBUTING.rst:5 +msgid "Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation." +msgstr "" + +#: ../../../CONTRIBUTING.rst:7 +msgid "Feel free to `join our Facebook group `_ if you have any questions about how to get started." +msgstr "" + +#: ../../../CONTRIBUTING.rst:10 +msgid "Feedback and ideas" +msgstr "" + +#: ../../../CONTRIBUTING.rst:12 +msgid "These can be added as issues in the `GitHub repository `_; posts in our `Facebook group `_; or as an :ref:`email to the developers `." +msgstr "" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Bug reports" +msgstr "" + +#: ../../../CONTRIBUTING.rst:17 +msgid "Please report bugs by opening a new issue in our `GitHub repository `_. It is most helpful if you can include:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:19 +msgid "How Tabbycat was installed (on Heroku, locally on macOS, `etc.`)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Any details about your tournament and setup that might be helpful in troubleshooting" +msgstr "" + +#: ../../../CONTRIBUTING.rst:21 +msgid "Detailed steps for how to reproduce the bug" +msgstr "" + +#: ../../../CONTRIBUTING.rst:24 +msgid "Getting started with development" +msgstr "" + +#: ../../../CONTRIBUTING.rst:26 +msgid "To easily test your changes to Tabbycat you probably want a working :ref:`local install ` (without using Docker)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:27 +msgid "Please submit pull requests for features and bug fixes against `develop` (but not `master`)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:28 +msgid "We broadly use the `git-flow workflow `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:29 +msgid "We use Django's testing tools — adding unit tests to new features is greatly appreciated" +msgstr "" + +#: ../../../CONTRIBUTING.rst:31 +msgid "A number of our tests use `Selenium `_ and `ChromeDriver `_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser and ChromeDriver installed." +msgstr "" + +#: ../../../CONTRIBUTING.rst:33 +msgid "A number of extra dependencies are required for running tests, linting, and serving the documentation. These can be installed with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:37 +msgid "Our ``package.json`` provides a convenience command that runs a standard set of development tools simultaneously, such as the Django server and the automatic recompilation with live injecting of javascript and CSS. Once you have set ``USE_WEBPACK_SERVER=True`` in your ``settings_local.py`` you can then run this with::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:42 +msgid "Generating test data" +msgstr "" + +#: ../../../CONTRIBUTING.rst:44 +msgid "There are management commands to help developers quickly generate data for use in testing, including results and feedback. A list of all commands can be found from ``dj help``, but the most useful in this context are:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:46 +msgid "``dj importtournament ( minimal8team | australs24team | bp88team )``, which imports participant data for the 8-team (``minimal8team``), 24-team Australs (``australs24team``) and 88-team BP (``bp88team``) demonstration tournaments respectively." +msgstr "" + +#: ../../../CONTRIBUTING.rst:47 +msgid "``dj simulaterounds ROUND [ROUND ROUND ...]``, which simulates all of the rounds specified, generating a draw, an adjudicator allocation and a complete set of random results (but not feedback)." +msgstr "" + +#: ../../../CONTRIBUTING.rst:48 +msgid "``dj generatefeedback ROUND [ROUND ROUND ...]``, which randomly generates feedback for all existing debates in the specified rounds." +msgstr "" + +#: ../../../CONTRIBUTING.rst:49 +msgid "``dj generateresults ROUND [ROUND ROUND ...]``, which randomly generates results for all existing debates in the specified rounds. (You don't need to run this if you ran ``simulaterounds``, because that already does it.)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:51 +msgid "Rounds can be specified by sequence number (``seq``) or abbreviation. You can find more information about each of them by adding ``--help`` after the command name." +msgstr "" + +#: ../../../CONTRIBUTING.rst:54 +msgid "Database schema changes" +msgstr "" + +#: ../../../CONTRIBUTING.rst:56 +msgid "When adding new features, it may be necessary to modify the database schema to support these new additions. After the changes are made, the migration files made by ``python manage.py makemigrations`` must also be committed. The migration files should also contain methods fill the new fields based on existing data if possible." +msgstr "" + +#: ../../../CONTRIBUTING.rst:58 +msgid "Fixture files (found under ``data/fixtures/``) may also need to be updated, which can be done by running the ``migrate_fixtures.py`` script under a unmigrated database, then committing the result. ::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:64 +msgid "Style guide" +msgstr "" + +#: ../../../CONTRIBUTING.rst:66 +msgid "For the front end interface design there is a style guide available at \"/style/\" once a tournament has been setup." +msgstr "" + +#: ../../../CONTRIBUTING.rst:68 +msgid "For python code, we use `flake8 `_ to check for a non-strict series of style rules. Warnings will trigger a Travis CI build to fail. The entire codebase can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:72 +msgid "For stylesheets, we use `stylelint `_. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:76 +msgid "For javascript, we use `eslint `_ to enforce the `standardJS `_ style and the standard recommendation of the vue plugin for eslint. The relevant code can be checked by using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:81 +msgid "Versioning convention" +msgstr "" + +#: ../../../CONTRIBUTING.rst:83 +msgid "Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:85 +msgid "the database can't be migrated forwards using ``python manage.py migrate --no-input``, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:86 +msgid "there is a major change to how the tournament workflow goes, or" +msgstr "" + +#: ../../../CONTRIBUTING.rst:87 +msgid "we make some other change that is, in our opinion, significant enough to warrant a milestone." +msgstr "" + +#: ../../../CONTRIBUTING.rst:89 +msgid "We write `data migrations `_ to allow existing systems to be upgraded easily. However, we don't always support backward database migrations. Our expectation is that long-lived installations keep up with our latest version." +msgstr "" + +#: ../../../CONTRIBUTING.rst:91 +msgid "One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:93 +msgid "Starting from version 0.7.0, we use cat breeds as the code names for major versions." +msgstr "" + +#: ../../../CONTRIBUTING.rst:96 +msgid "Documentation" +msgstr "Tài liệu hướng dẫn" + +#: ../../../CONTRIBUTING.rst:98 +msgid "Documentation is created using `Sphinx `_ and hosted at `Read The Docs `_. Pushes to ``develop`` will update the *latest* documentation set, while pushes to ``master`` will update the *stable* documentation set." +msgstr "" + +#: ../../../CONTRIBUTING.rst:100 +msgid "To preview the documentation locally, install the development dependencies and then start the server::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:104 +msgid "You should then be able to preview the docs at `127.0.0.1:7999 `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:107 +msgid "Project structure" +msgstr "" + +#: ../../../CONTRIBUTING.rst:109 +msgid "``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline." +msgstr "" + +#: ../../../CONTRIBUTING.rst:110 +msgid "``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively" +msgstr "" + +#: ../../../CONTRIBUTING.rst:111 +msgid "``docs`` contains our document source files and images (although some are linked from the root directory)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``tabbycat`` is the main directory containing the Django project" +msgstr "" + +#: ../../../CONTRIBUTING.rst:113 +msgid "``locale`` contains translation strings for shared templates (others are in respective app directories)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:114 +msgid "``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins." +msgstr "" + +#: ../../../CONTRIBUTING.rst:115 +msgid "``utils`` contains shared utilities" +msgstr "" + +#: ../../../CONTRIBUTING.rst:116 +msgid "All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates." +msgstr "" + +#: ../../../CONTRIBUTING.rst:117 +msgid "In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:120 +msgid "Internationalization/Localization" +msgstr "" + +#: ../../../CONTRIBUTING.rst:122 +msgid "The `gettext `_ framework is used to enable the translation of strings in Python files and Django templates. Backend in this context signifies these types of files." +msgstr "" + +#: ../../../CONTRIBUTING.rst:124 +msgid "The backend's translation files can be updated from the ``tabbycat`` directory using one or more of the supporting language codes (see settings.py)::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:128 +msgid "To do more than one language, just specify ``-l`` multiple times, _e.g._ ``-les -lar``." +msgstr "" + +#: ../../../CONTRIBUTING.rst:130 +msgid "These can then be compiled using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:134 +msgid "As it stands Heroku needs the .mo files pre-compiled (see `issue in Heroku Python buildpack `_, so these are committed to Git. Note that the English (``en``) language files should not be compiled; their sole purpose is to provide a source language for `Crowdin `_." +msgstr "" + +#: ../../../CONTRIBUTING.rst:136 +msgid "Strings defined in Vue files must similarily be marked with ``gettext`` but must be added manually to ``tabbycat/locale/LANGUAGE_CODE/djangojs.po``, for each language supported. These can then compiled to javascript bundles using::" +msgstr "" + +#: ../../../CONTRIBUTING.rst:141 +msgid "These are then also committed to git to save users needing to run `compilejsi18n` during setup. The resulting files are then bundled as part of the npm build task. Updating these translations in development (live-reload) requires the use of the ``cp-i18n`` npm task." +msgstr "" + +#: ../../../CONTRIBUTING.rst:144 +msgid "Release checklist" +msgstr "" + +#: ../../../CONTRIBUTING.rst:146 +msgid "Check that all migrations have been generated and committed into Git" +msgstr "" + +#: ../../../CONTRIBUTING.rst:147 +msgid "Merge translations from the Crowdin pull request and compile messages" +msgstr "" + +#: ../../../CONTRIBUTING.rst:148 +msgid "Bump version number in ``docs/conf.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:149 +msgid "Bump version number and (if applicable) codename in ``tabbycat/settings/core.py``" +msgstr "" + +#: ../../../CONTRIBUTING.rst:150 +msgid "Update the main ``CHANGELOG.rst`` file (including release date)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Check the major current deployment options, including:" +msgstr "" + +#: ../../../CONTRIBUTING.rst:152 +msgid "The ``deploy_heroku.py`` script" +msgstr "" + +#: ../../../CONTRIBUTING.rst:153 +msgid "The Tabbykitten version" +msgstr "" + +#: ../../../CONTRIBUTING.rst:154 +msgid "Docker (macOS, Windows 10*) and Docker Toolbox (Windows 10 Home) methods" +msgstr "" + +#: ../../../CONTRIBUTING.rst:155 +msgid "Using Bash and Powershell on Windows" +msgstr "" + +#: ../../../CONTRIBUTING.rst:156 +msgid "Using Terminal on macOS (at least test out a fresh install of the npm/pip dependencies)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:157 +msgid "Check that the last Travis CI build passed and run the full local test suite (this will include the Selenium tests that are not on Travis)" +msgstr "" + +#: ../../../CONTRIBUTING.rst:158 +msgid "Shift remaining issues from the Github Milestone" +msgstr "" + +#: ../../../CONTRIBUTING.rst:159 +msgid "Create and finish the release branch as per git-flow" +msgstr "" + +#: ../../../CONTRIBUTING.rst:160 +msgid "Ensure the tag is correct (``vX.Y.Z``) and published to GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:161 +msgid "Back-merge ``master`` to the ``kitten`` branch" +msgstr "" + +#: ../../../CONTRIBUTING.rst:162 +msgid "Back-merge ``develop`` to the in-progress feature branches" +msgstr "" + +#: ../../../CONTRIBUTING.rst:163 +msgid "Issue a formal release with change notes on GitHub" +msgstr "" + +#: ../../../CONTRIBUTING.rst:164 +msgid "Post change notes on the Facebook page/group" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/about/licence.po b/docs/locale/vi/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..940edbb3753 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/licence.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: vi_VN\n" + +#: ../../../LICENSE.rst:3 +msgid "Licence Information" +msgstr "" + +#: ../../../LICENSE.rst:5 +msgid "We haven't released Tabbycat under an open-source licence, so there is no formal and general right to use this software. Nonetheless, you're welcome to freely use Tabbycat to help run a debating tournament if it is a not-for-profit and not-for-fundraising activity. A voluntary donation of A$1 (Australian dollar) per team would be greatly appreciated, and would help us meet costs and justify our ongoing work and support for Tabbycat users. (A donation link is in the footer of your Tabbycat site.)" +msgstr "" + +#: ../../../LICENSE.rst:8 +msgid "Use at for-profit or fundraising tournaments" +msgstr "" + +#: ../../../LICENSE.rst:10 +msgid "If you use Tabbycat at a tournament where any individual or organisation is making a profit or raising funds (other than to cover the direct costs of the tournament), you or your tournament **must** make a donation of A$1 (Australian dollar) per team to the Tabbycat maintenance team, as outlined in each tournament’s donation page (the link is in the footer of your Tabbycat site). This includes instances where organisations run tournaments partly as fundraising activities and applies even if the organisation itself is a non-profit." +msgstr "" + +#: ../../../LICENSE.rst:12 +msgid "While we suggest that non-profit, non-fundraising tournaments budget for a donation of A$1 per team, it is not required in order for such tournaments to use Tabbycat." +msgstr "" + +#: ../../../LICENSE.rst:15 +msgid "Modifications to and redistributions of Tabbycat" +msgstr "" + +#: ../../../LICENSE.rst:17 +msgid "We grant you permission to modify and/or redistribute Tabbycat, provided that" +msgstr "" + +#: ../../../LICENSE.rst:19 +msgid "you do not receive any payment for this modification and/or redistribution," +msgstr "" + +#: ../../../LICENSE.rst:20 +msgid "if you modify Tabbycat, you add prominent notices stating that you modified it," +msgstr "" + +#: ../../../LICENSE.rst:21 +msgid "all references and functionality relating to donations are kept intact, and" +msgstr "" + +#: ../../../LICENSE.rst:22 +msgid "this licence page and all attributions of authorship are included as-is." +msgstr "" + +#: ../../../LICENSE.rst:24 +msgid "Modifying Tabbycat for payment, or using a version of Tabbycat that has been modified for payment, is strictly prohibited without our express permission." +msgstr "" + +#: ../../../LICENSE.rst:26 +msgid "If you use a version of Tabbycat that has been modified by you or a third party to run a for-profit or fundraising tournament, the abovementioned donation of A$1 per team is still required." +msgstr "" + +#: ../../../LICENSE.rst:29 +msgid "Disclaimer of warranty and liability" +msgstr "" + +#: ../../../LICENSE.rst:31 +msgid "We work on this software in our spare time and make it available for not-for-profit use in the hope that it will benefit the debating community. **It is provided \"as is\", without any warranty of any kind, express or implied, including without limitation any warranties of merchantability and fitness for a particular purpose, and we disclaim all legal liability. By using Tabbycat, you agree that none of its contributors will be held liable for any loss or claim arising directly or indirectly from using the software, or for any loss or claim otherwise in connection with the software.**" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/about/support.po b/docs/locale/vi/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..9fa446c18aa --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/support.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-25 02:58\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: vi_VN\n" + +#: ../../about/support.rst:3 +msgid "Support" +msgstr "Hỗ trợ" + +#: ../../about/support.rst:5 +msgid "There are a number of ways to report bugs, ask for help, or submit feedback." +msgstr "" + +#: ../../about/support.rst:8 +msgid "Facebook" +msgstr "" + +#: ../../about/support.rst:10 +msgid "`Our Facebook group `_ is a good place to ask for help. It's also a good place to keep up with new releases and participate in more general discussions of features and ideas." +msgstr "" + +#: ../../about/support.rst:13 +msgid "GitHub" +msgstr "" + +#: ../../about/support.rst:15 +msgid "Adding an issue to our `GitHub repository `_ is a great way to let us know about bugs or writeup suggestions for how to improve Tabbycat. Pull requests are also encouraged!" +msgstr "" + +#: ../../about/support.rst:17 +msgid "When submitting bugs or reporting errors please let us know your site address (if installed online) or operating system (if local) along with a complete description of the problem along with any error messages." +msgstr "" + +#: ../../about/support.rst:20 +msgid "Email" +msgstr "" + +#: ../../about/support.rst:22 +msgid "Feel free to :ref:`contact the maintainers directly ` if you are not able to access Facebook or GitHub." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/about/tournament-history.po b/docs/locale/vi/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..9774c228227 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/about/tournament-history.po @@ -0,0 +1,248 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: vi_VN\n" + +#: ../../about/tournament-history.rst:3 +msgid "Tournament History" +msgstr "" + +#: ../../about/tournament-history.rst:5 +msgid "A partial list of major national and international tournaments (that we know of) which have used Tabbycat." +msgstr "" + +#: ../../about/tournament-history.rst:8 +msgid "2017" +msgstr "" + +#: ../../about/tournament-history.rst:10 +msgid "`APU Philosophy CHallenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:11 +msgid "`ANU Spring IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:12 +msgid "`Australian British Parliamentary Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:13 +msgid "`Australasian Wom*ns Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:14 +msgid "Asia World Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:15 +msgid "`Asia British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:16 +msgid "`Borneo British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:17 +msgid "`Canadian British Parliamentary Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:18 +msgid "`Cambridge Asian Schools BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:19 +msgid "Cambodia United Asian Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:20 +msgid "`China British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:21 +msgid "`Japan British Parliamentary Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:22 +msgid "`Kings College London IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:23 +msgid "`Kuala Lumpur Open Challenge `_" +msgstr "" + +#: ../../about/tournament-history.rst:24 +msgid "`KPU Pro Ams `_" +msgstr "" + +#: ../../about/tournament-history.rst:25 +msgid "`Malaysian National Intervarsity Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:26 +msgid "`Melbourne Mini `_" +msgstr "" + +#: ../../about/tournament-history.rst:27 +msgid "`New Zealand Easters 2017 `_" +msgstr "" + +#: ../../about/tournament-history.rst:28 +msgid "`New Zealand British Parliamentary Debating Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:29 +msgid "`North East Asia Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:30 +msgid "`Swords Mini-Gong `_" +msgstr "" + +#: ../../about/tournament-history.rst:31 +msgid "`Shanghai Asian Schools British Parliamentary Debate Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:32 +msgid "`UCD Law Society IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:33 +msgid "`UCD Vice President's Cup `_" +msgstr "" + +#: ../../about/tournament-history.rst:34 +msgid "`UQ Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:35 +msgid "`UT MARA Open `_" +msgstr "" + +#: ../../about/tournament-history.rst:36 +msgid "`Victoria Cup IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:37 +msgid "`Western Sydney BP Championship `_" +msgstr "" + +#: ../../about/tournament-history.rst:38 +msgid "`Wollongong Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:39 +msgid "`Yale IV `_" +msgstr "" + +#: ../../about/tournament-history.rst:42 +msgid "2016" +msgstr "" + +#: ../../about/tournament-history.rst:44 +msgid "`Sydney Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:45 +msgid "`Joynt Scroll 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:46 +msgid "`Malaysia Debate Open 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:47 +msgid "`New Zealand Easters 2016 `_" +msgstr "" + +#: ../../about/tournament-history.rst:48 +msgid "`Perth Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:49 +msgid "`Thailand United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:50 ../../about/tournament-history.rst:61 +msgid "The National Law School Debate" +msgstr "" + +#: ../../about/tournament-history.rst:51 +msgid "The Khazak National Schools Debating Championship" +msgstr "" + +#: ../../about/tournament-history.rst:54 +msgid "2015" +msgstr "" + +#: ../../about/tournament-history.rst:56 +msgid "`Bali United Asian Debating Championships `_" +msgstr "" + +#: ../../about/tournament-history.rst:57 +msgid "`Daejeon Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:58 +msgid "`Joynt Scroll `_" +msgstr "" + +#: ../../about/tournament-history.rst:59 +msgid "`Malaysia Debate Open 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:60 +msgid "`New Zealand Easters 2015 `_" +msgstr "" + +#: ../../about/tournament-history.rst:62 +msgid "`UNSW/UTS Easters `_" +msgstr "" + +#: ../../about/tournament-history.rst:65 +msgid "2014" +msgstr "" + +#: ../../about/tournament-history.rst:67 +msgid "`Joynt Scroll 2014 `_" +msgstr "" + +#: ../../about/tournament-history.rst:68 +msgid "NTU United Asian Debating Championships" +msgstr "" + +#: ../../about/tournament-history.rst:69 +msgid "`Otago Australs `_" +msgstr "" + +#: ../../about/tournament-history.rst:72 +msgid "2012" +msgstr "" + +#: ../../about/tournament-history.rst:74 +msgid "Wellington Australs" +msgstr "" + +#: ../../about/tournament-history.rst:77 +msgid "2010" +msgstr "" + +#: ../../about/tournament-history.rst:79 +msgid "Auckland Australs" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/vi/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..e5cd4d4de72 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/adjudicator-allocation.po @@ -0,0 +1,160 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 18:40\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: vi_VN\n" + +#: ../../features/adjudicator-allocation.rst:5 +msgid "Adjudicator Allocation" +msgstr "Phân bổ giám khảo" + +#: ../../features/adjudicator-allocation.rst:7 +msgid "The adjudicator allocation screen offers the ability to automatically generate an allocation and/or allow you to create or edit an allocation manually. This interface is somewhat complex as it attempts to provide all of the information needed to inform allocation while also providing a number of automatic and manual tools for the allocation process itself." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:10 +msgid "Assigning Debate Priority" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:12 +msgid "For tournaments with more than a few debates you generally want to begin the allocation process by applying a priority value to your debates. A debate's priority value is used by the automatic adjudicator allocator (or the preformed panel indicator) to match the strongest panels to the debates that need them most." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:16 +msgid "The prioritise button in the top-left allows you to assign a priority value automatically based on a debate's bracket or its 'liveness'. Remember that in early rounds there are usually not enough results for the liveness of each debate to be distinct and that Tabbycat measures liveness based on the sum of all live break categories — a debate can have more liveness points than it has teams if there are teams that are live in multiple categories." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:18 +msgid "The automatic prioritiser never uses the 'highest' priority value so that you can easily use this to highlight the debates that need the strongest panels without needing to redistribute the priority of other debates." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:20 +msgid "Regardless of whether you automatically assign priority, there are sliders to the left of each team that can be used to manually specify priority. These are usually used to override the automatic priority of a debate if that matchup needs and especially strong/weak/mediocre panel for reasons that are not reflected in its bracket/liveness." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:24 +msgid "If each debate's priority is the same, the automatic adjudicator will fall-back on using the debate's bracket as a substitute for priority. Thus, you can skip the prioritisation process (or only prioritise the most/least important debates) if you want a relatively even spread of panellists (e.g. during Round 1)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:27 +msgid "Automatic Adjudicator Allocation" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:29 +msgid "Once you are happy with your priorities you can begin assigning adjudicators. This also has an (optional) automatic process that will create panels for you. In creating these panels automatically, the allocator will:" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:31 +msgid "Avoid creating 'hard' conflicts (i.e. personal or institutional clashes) between adjudicators and teams while also trying to avoid 'soft' conflicts (i.e. avoiding an adjudicator seeing the same team again)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:32 +msgid "Form panels whose relative average voting score matches the relative priority you assigned to each debate." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:33 +msgid "Allocate trainees (unless disabled or none are under the threshold) to panels (allocated first to the highest-strength panels)." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:34 +msgid "Violate the above intents in cases where there are inescapable constraints — e.g. if there are too many soft or hard conflicts to avoid creating panels that do not trigger them." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:36 +msgid "Remember that Tabbycat will only automatically allocate adjudicators that have been marked as available for this round." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:38 +msgid "To begin this process, click the *Allocate* button in the top-left. If you have :ref:`formed preformed panels ` for this round, the modal will first ask whether you want to assign adjudicators using those panels; otherwise the modal will contain a number of options that can be used to control the allocation. In general, the *minimum feedback score* value is the most important setting to consider as it determines the threshold needed for adjudicators to not be allocated as trainees." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:42 +msgid "Once you click *Auto-Allocate* the modal should disappear and your panels should appear. At large tournaments, and in the later rounds, it is not unheard of for this process to take a minute or longer." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:44 +msgid "You can re-run the automatic allocation process on top of an existing allocation. Thus it is worth tweaking your priorities or allocation settings if the allocation does not seem optimal to you. Also note that the allocation process is not deterministic — if you rerun it the panels will be different." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:46 +msgid "Once your adjudicators have been allocated you can drag and drop them on to different panels. You can also drag and drop them to the 'unused area' (the gray bar at the bottom of the page) if you wish to store them temporarily or remove them from the draw. Dropping an adjudicator into the chair position will 'swap' that adjudicator into the previous position of the new chair." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:49 +msgid "Saving, Live Updates, and Sharing" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:51 +msgid "Changes to your panels save automatically and you can exit the allocation page whenever you wish." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:53 +msgid "In addition, the allocation pages maintain a 'live' connection to the server that shows updates made by other users who are viewing/using the same page. That is to say, if two people on two computers are both viewing the allocation page they should see each other's changes in real-time. This allows you to 'distribute' the task of allocation across individual people (rather than sharing a screen/projector) if desired." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:55 +msgid "It is possible to have users 'undo' or 'overwrite' each others changes despite this live system, e.g. if both users drag and adjudicator somewhere at the same time." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:57 +msgid "If you are dividing the task of allocation across multiple people, the *Sharding* system can help by allowing individuals to limit their view of the draw. The use case here is usually to divide the draw up into mutually-exclusive subsets so that individuals (or groups) of the adjudication core can focus on creating panels across the draw in parallel." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:61 +msgid "To activate sharding, click the small icon to the right of the \"Allocate\" button. This then presents a number of options for how the draw is divide up into distinct sets. If you want to ensure that each person opens a completely distinct set of the draw, you will need to coordinate the options that each user selects here. They will need to set the **same** options for *Shard Mix*, *Shard Split* and *Shard Sort* but select a **different** *Open* option (i.e. opt-in to viewing a different shard from the other users). The ability to exit a sharded view is available in the same dialogue." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:64 +msgid "In-Place Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:66 +msgid "Adjudicators and teams may have borders of varying colors. These borders indicate that there is a clash — soft or hard — within a debate and highlights the teams/adjudicators that have triggered this. There is a key for these colors available at the top of the page — e.g. orange means *institutional conflict* while blue means *this adjudicator has seen this adjudicator/team before*." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:70 +msgid "In general, you want to be on the lookout for red borders ('hard conflicts') and for teams with orange borders (institutional conflicts). Blue borders on teams/adjudicators and orange borders between adjudicators are usually of lesser concern." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:72 +msgid "There are two 'special' types of highlight — a gray background in the chair position (no chair) or in the panellist position (the panel is not an odd-size). Adjudicators may also have a black background if they have not been marked as available." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:75 +msgid "Hover Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:77 +msgid "When you hover over an adjudicator or team, they will take on a purple background and other adjudicators or teams may suddenly have different colored backgrounds. These indicate the conflicts that this team/adjudicator has with those other teams/adjudicators. By showing this information you can avoid swapping that adjudicator into a new debate which they have a conflict with." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:81 +msgid "When you hover over an adjudicator or team the top-most area of the screen will show additional information about them, such as all of their previous institutions, their conflicts, their break category, their team members, their region, and who they saw in the last few rounds." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:84 +msgid "Toggle Highlights" +msgstr "" + +#: ../../features/adjudicator-allocation.rst:86 +msgid "In the top-right of the interface are a number of toggles that changes the color of adjudicators and teams to more easily check specific types of information. For example, selecting the gender toggle will color-code teams and adjudicators with the gender that has been recorded in Tabbycat. Note that when a toggle is active, the color key will update to show the meaning of these new colors." +msgstr "" + +#: ../../features/adjudicator-allocation.rst:90 +msgid "When finalising an adjudication you may want to ensure you have turned off any toggle highlights — often they make it more difficult to see the border colors that indicate conflicts." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/vi/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..905df347ed6 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/adjudicator-feedback.po @@ -0,0 +1,258 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-21 18:31\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: vi_VN\n" + +#: ../../features/adjudicator-feedback.rst:5 +msgid "Adjudicator Feedback" +msgstr "Phản hồi của giám khảo" + +#: ../../features/adjudicator-feedback.rst:7 +msgid "You can set the questions that are used on adjudicator feedback forms. The only field that is permanently there is the ``score`` field, which is an overall score assessing the adjudicator. All other questions (including a generic comments section) must be defined if you want them to be on the form." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:9 +msgid "Currently, there are two methods of setting questions:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:11 +msgid "Through the :ref:`edit database area `. Go to **Setup** > **Edit Database**, then click **Change** next to *Adjudicator feedback questions*. You can add questions here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:14 +msgid "Using the :ref:`importtournament command `." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:16 +msgid "Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field descriptions in the edit database area helpful.) Some more details are here." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:20 +msgid "Answer types and options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Type" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Relevant options" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:23 +msgid "Appearance" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +msgid "**checkbox**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:25 +#: ../../features/adjudicator-feedback.rst:27 +#: ../../features/adjudicator-feedback.rst:35 +#: ../../features/adjudicator-feedback.rst:37 +msgid "\\-" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:27 +msgid "**yes/no (dropdown)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +msgid "**integer (textbox)**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:29 +#: ../../features/adjudicator-feedback.rst:31 +#: ../../features/adjudicator-feedback.rst:33 +msgid "min_value, max_value" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:31 +msgid "**integer scale**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:33 +msgid "**float**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:35 +msgid "**text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:37 +msgid "**long text**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +msgid "**select one**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:39 +#: ../../features/adjudicator-feedback.rst:41 +msgid "choices" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:41 +msgid "**select multiple**" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:44 +msgid "Options:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:46 +msgid "**min_value** and **max_value** specify the minimum and maximum allowable values in the field. Mandatory for \"integer scale\" types and optional for \"integer (textbox)\" and \"float\" types." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:47 +msgid "**choices** is used with \"select one\" and \"select multiple\" types, and is a ``//``-delimited list of possible answers, *e.g.* ``biased//clear//concise//rambly//attentive//inattentive``" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:48 +msgid "**required** specifies whether users must fill out the field before clicking \"submit\". This requirement is only enforced on public submission forms. It is not enforced on forms entered by tab room assistants." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:50 +msgid "The exception to this is the \"checkbox\" type. For checkboxes, \"required\" means that the user cannot submit the form unless the box is checked. Think of it like an \"I agree to the terms\" checkbox. This isn't a deliberate design decision—it's just a quirk of how checkboxes work on web forms." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:53 +msgid "Want another answer type?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:55 +msgid "We don't really intend to add any further complexity to the built-in feedback system. If the above answer types don't cover your needs, we suggest using a third-party feedback system. You might be able to adapt `SurveyMonkey `_, `Google Forms `_ or `Qualtrics `_ to your needs." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:60 +msgid "We may be persuaded to make an exception if the new question type you have in mind is easy to add: that is, if it is straightforward to implement using standard web page elements and fits into the existing questionnaire framework (see :ref:`feedback-questionnaires` below). If you think there is such a case, please contact us using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:69 +msgid "Different questionnaires" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:71 +msgid "Tabbycat allows you to specify two questionnaires: one for feedback submitted by teams, and one for feedback submitted by adjudicators. You must specify in each question whether to include the question in each questionnaire." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:75 +msgid "**from_team**, if checked, includes the question in feedback submitted by teams" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:77 +msgid "**from_adj**, if checked, includes the question in feedback submitted by adjudicators" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:81 +msgid "Who gives feedback on whom?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:82 +msgid "Tabbycat allows for three choices for which adjudicators give feedback on which other adjudicators:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:85 +msgid "Chairs give feedback on panellists and trainees" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:86 +msgid "Chairs give feedback on panellists and trainees, and panellists give feedback on chairs" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:88 +msgid "All adjudicators, including trainees, give feedback on all other adjudicators they have adjudicated with" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:91 +msgid "You can set this in the **feedback paths** option under *Setup* > *Configuration* > *Feedback*. Your choice affects each of the following:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:94 +msgid "The options presented to adjudicators in the online feedback form" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:95 +msgid "The printable feedback forms" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:96 +msgid "The submissions expected when calculating feedback progress and highlighting missing feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:99 +msgid "The feedback paths option only affects feedback from adjudicators. Teams are always assumed to give feedback on the orallist, and they are encouraged to do so through hints on the online and printable feedback forms, but there is nothing technically preventing them from submitting feedback from any adjudicator on their panel." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:105 +msgid "Advanced users" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:108 +msgid "If you need a different setting, you need to edit the source code. Specifically, you should edit the function ``expected_feedback_targets`` in tabbycat/adjfeedback/utils.py." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:112 +msgid "Unless we can be convinced that they are very common, we don't intend to add any further choices to the feedback paths option. If your needs are specific enough that you need to differ from the available settings, they are probably also beyond what is sensible for a built-in feedback system, and we recommend using a third-party feedback system instead." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:119 +msgid "How is an adjudicator's score determined?" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:121 +msgid "For the purpose of the automated allocation, an adjudicator's overall score is a function of their base score, the current round's feedback weight, and their average feedback score. This number is calculated according to the following formula:" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:126 +msgid "\\textrm{score} = (1-w)\\times\\textrm{base score} + w\\times\\textrm{average feedback score}" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:130 +msgid "where :math:`w` is the feedback weight for the round. Note that because the feedback score is averaged across all pieces of feedback (rather than on a per-round total) rounds in which a person receives feedback from many sources (say from all teams and all panellists) could impact their average score much more than a round in which they only receive feedback from one or two sources." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:132 +msgid "Under this formula, each round's feedback weight can be used to determine the relative influence of the base score vs feedback in determining the overall score. As an example, say that an adjudicator received 5.0 as their base score, but their average feedback rating has thus far been 2.0. If the current rounds' feedback weight is set to 0.75, then their overall score would be 2.75. If the current round's feedback weight is set to 0.5 their score would be 3.5. If the weight was 0, their score will always be their base score; if the weight was 1 it will always be their average feedback value." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:141 +msgid "To change the weight of a round you will need to go to the Edit Database area, open the round in question, and change its *Feedback weight* value. It is common to set rounds with a low feedback weight value early on in the tournament (when feedback is scant) and to increase the feedback weight as the tournament progresses." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:143 +msgid "A participant's base score can, in conjunction with feedback weight, also be used as a manual override for an adjudicator's overall ranking. At several tournaments, adjudication cores have set every round's feedback weight to 0, and manually adjusted an adjudicator's base score in response to feedback they have received and reviewed. In this way complete control over every adjudicator's overall score can be exerted." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:145 +msgid "If feedback from trainee adjudicators is enabled, any scores that they submit in their feedback are not counted towards that adjudicator's overall score." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:148 +msgid "Ignoring/Discarding feedback" +msgstr "" + +#: ../../features/adjudicator-feedback.rst:150 +msgid "There are some cases where feedback should be discarded or ignored, but there are some differences between the two. Discarded feedback is mostly due to having another piece of feedback that supersedes the discarded ones. Ignored feedback is different as it still counts the affected feedback as submitted, just inconsequential, ignored in the adjudicator's score calculation." +msgstr "" + +#: ../../features/adjudicator-feedback.rst:152 +msgid "Feedback can be marked as discarded in the database view, under the ``confirmed`` field. It can also be marked as ignored in the same view. Controls to reverse these designations are also available there. To mark feedback as ignored, an option is available in the administrator's and assistant's feedback adding form, as well in the form of a toggle link at the bottom of each card." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/backups.po b/docs/locale/vi/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..07fb4ec576f --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/backups.po @@ -0,0 +1,120 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: vi_VN\n" + +#: ../../features/backups.rst:5 +msgid "Backups" +msgstr "" + +#: ../../features/backups.rst:7 +msgid "Tabbycat doesn't provide an in-built backup system; instead you should create copies of your database directly. Heroku provides a very good backup utility for all sites hosted on Heroku which makes this easy, and for Heroku-based Tabbycat sites, we strongly recommend it." +msgstr "" + +#: ../../features/backups.rst:12 +msgid "You should **always** back up the database before deleting *any* data while in the Edit Database area, because deleting data cannot be undone. It is also a good idea to back up the database before doing anything in the Edit Database area, unless you're very familiar and confident with editing the Tabbycat database directly." +msgstr "" + +#: ../../features/backups.rst:18 +msgid "You may, as a matter of standard practice at large tournaments, wish to back up the database twice per round: Once just after you've generated the draw and allocated adjudicators, and once just after you've finished entering results." +msgstr "" + +#: ../../features/backups.rst:22 +msgid "If you're using an online version of Tabbycat, it's a good idea to download the backups. While it's extremely rare to lose internet access or have an outage in a critical web service (*i.e.*, Heroku), having a local copy of your backups allows you to :ref:`restore your tab to a local installation ` if this ever happens." +msgstr "" + +#: ../../features/backups.rst:29 +msgid "Installations on Heroku" +msgstr "" + +#: ../../features/backups.rst:31 +msgid "Heroku provides a utility to easily back up and restore the entire site database." +msgstr "" + +#: ../../features/backups.rst:35 +msgid "If you don't have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:36 +msgid "You can capture backups from the Heroku Dashboard:" +msgstr "" + +#: ../../features/backups.rst:38 +msgid "Go to the `Heroku Dashboard `_ and click on your app." +msgstr "" + +#: ../../features/backups.rst:40 +msgid "Under *Installed add-ons*, go to **Heroku Postgres**." +msgstr "" + +#: ../../features/backups.rst:41 +msgid "Scroll down, and click on the **Capture Backup** button." +msgstr "" + +#: ../../features/backups.rst:42 +msgid "Once the capture has finished, a **Download** button will be available." +msgstr "" + +#: ../../features/backups.rst:44 +msgid "You can't restore a backup without the Heroku Command Line Interface (CLI), so if you end up needing your backup, you'll need to install the `Heroku CLI `_, and then follow the instructions below." +msgstr "" + +#: ../../features/backups.rst:50 +msgid "If you have the Heroku CLI" +msgstr "" + +#: ../../features/backups.rst:52 +msgid "The best guide to backing up databases is the `Heroku Dev Center's PGBackups guide `_." +msgstr "" + +#: ../../features/backups.rst:55 +msgid "To capture a backup::" +msgstr "" + +#: ../../features/backups.rst:59 +msgid "To download the most recently captured backup::" +msgstr "" + +#: ../../features/backups.rst:63 +msgid "To restore a backup::" +msgstr "" + +#: ../../features/backups.rst:67 +msgid "If you have multiple Tabbycat sites, you'll need to specify which one by adding ``--app mytournamentname`` to the end of the command." +msgstr "" + +#: ../../features/backups.rst:71 +msgid "Local installations" +msgstr "" + +#: ../../features/backups.rst:73 +msgid "There are lots of ways to back up local PostgreSQL databases, but we'd suggest using the `pg_dump `_ and `pg_restore `_ commands." +msgstr "" + +#: ../../features/backups.rst:83 +msgid "Restoring a Heroku backup to a local installation" +msgstr "" + +#: ../../features/backups.rst:85 +msgid "As detailed in the `Heroku Dev Center `_, you can restore a downloaded Heroku backup to a local installation. This might be useful if, say, your internet connection breaks irrecoverably in the middle of a tournament and you need to run offline. Of course, for this to work, you need to have downloaded your backup before your internet connection broke---a good reason to download a copy of your backups as soon as you make them." +msgstr "" + +#: ../../features/backups.rst:92 +msgid "Assuming your download is called ``latest.dump`` (this is the default name), your PostgreSQL username is ``tabbycat``, and you wish to call your local database ``fromheroku`` (if not, replace arguments as appropriate)::" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/breaks.po b/docs/locale/vi/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..c0b390c7b3f --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/breaks.po @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:41\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: vi_VN\n" + +#: ../../features/breaks.rst:5 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../features/breaks.rst:7 +msgid "In Tabbycat, elimination rounds (sometimes called *outrounds* or the *final series*) are called \"break rounds\", and the qualification of teams to compete in the elimination phase of a tournament is called the \"break\"." +msgstr "" + +#: ../../features/breaks.rst:12 +msgid "About break categories" +msgstr "" + +#: ../../features/breaks.rst:14 +msgid "Tabbycat supports multiple and arbitrarily-named break categories. Most tournaments will have just one category, typically called \"Open\", leading to the grand final. Some tournaments also have restricted-eligibility break categories, for example, for novice teams or teams for whom English is a second language." +msgstr "" + +#: ../../features/breaks.rst:19 +msgid "Having multiple break categories is intended for tournaments where multiple *parallel* elimination phases derive from the *same* preliminary rounds (inrounds). It's not for parallel but distinct competitions---for those, you should create distinct tournaments." +msgstr "" + +#: ../../features/breaks.rst:27 +msgid "Break qualification rules" +msgstr "" + +#: ../../features/breaks.rst:29 +msgid "Tabbycat supports several break qualification rules, and each break category must be configured to use one of them. Most tournaments will use \"Standard\", which is the default." +msgstr "" + +#: ../../features/breaks.rst:38 +msgid "Rule name (string to use in ``importtournament`` CSV files)" +msgstr "" + +#: ../../features/breaks.rst:39 +msgid "Descrption" +msgstr "" + +#: ../../features/breaks.rst:41 +msgid "Standard (``standard``)" +msgstr "" + +#: ../../features/breaks.rst:42 +msgid "The top *n* teams break. This is the default, and most tournaments use this rule." +msgstr "" + +#: ../../features/breaks.rst:45 +msgid "AIDA 1996 (``aida-1996``)" +msgstr "" + +#: ../../features/breaks.rst:46 +msgid "The top *n* teams that are also in the top three teams from their institution break." +msgstr "" + +#: ../../features/breaks.rst:49 +msgid "AIDA 2016 (Australs) (``aida-2016-australs``)" +msgstr "" + +#: ../../features/breaks.rst:50 +msgid "The top *n* teams that fulfil either of these criteria break:" +msgstr "" + +#: ../../features/breaks.rst:53 +msgid "They are in the top *n* teams overall, and in the top three teams from their institution." +msgstr "" + +#: ../../features/breaks.rst:55 +msgid "They have at least as many wins as the *n*\\ th-ranked team, and they are the top team from their institution." +msgstr "" + +#: ../../features/breaks.rst:58 +msgid "If fewer than *n* teams fulfil either criterion, then the best teams not fulfilling the criteria are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:62 +msgid "AIDA 2016 (Easters) (``aida-2016-easters``)" +msgstr "" + +#: ../../features/breaks.rst:63 +msgid "As for AIDA 2016 (Australs), except that if fewer than *n* teams fulfil either criterion, then only the best teams who are in the top three teams from their institution are added to make *n* teams." +msgstr "" + +#: ../../features/breaks.rst:68 +msgid "The break generators are somewhat more complex than described in the above table: among other things, they also handle cases where there is a tie for the last place in the break, and for those break categories marked \"general\", they will show where ineligible teams would have broken, had they been eligible." +msgstr "" + +#: ../../features/breaks.rst:75 +msgid "Setting up break categories and rounds" +msgstr "" + +#: ../../features/breaks.rst:77 +msgid "For each break category in your tournament, you need to do two things:" +msgstr "" + +#: ../../features/breaks.rst:79 +msgid "Create (and name) a break category" +msgstr "" + +#: ../../features/breaks.rst:80 +msgid "Create break rounds for the category" +msgstr "" + +#: ../../features/breaks.rst:81 +msgid "Set the eligibility of teams to compete in the category" +msgstr "" + +#: ../../features/breaks.rst:83 +msgid "If you only have one break category (open) and you create your tournament using the \"Create New Tournament\" page, simply enter the number of teams in the break (*e.g.*, 8 if you're breaking to quarterfinals). Tabbycat will create the break category and break rounds for you. For any further break categories, you'll need to go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Break Categories**. Fill out the forms for the number of new break categories and save. Rounds will be created automatically. You'll still need to set the eligibility of teams though, as in (3) below." +msgstr "" + +#: ../../features/breaks.rst:92 +msgid "If you create your tournament using the `importtournament` command or in **Edit Database**, you'll need to do all three steps above yourself. You may also want to edit the break rounds (2) to change their names." +msgstr "" + +#: ../../features/breaks.rst:97 +msgid "1. Creating break categories" +msgstr "" + +#: ../../features/breaks.rst:99 +msgid "If using the `importtournament` command, there is an example file, *break_categories.csv*, that you can copy and adjust. If using **Edit Database**, add categories under **Break Qualification > Break categories**." +msgstr "" + +#: ../../features/breaks.rst:103 +msgid "Most of the fields are self-explanatory or described on the Edit Database form, except for one: \"rule\", which sets the break qualification rule. Permissible values are described in :ref:`breakqual-rules` above. If using `importtournament`, be sure to use the correct string (in brackets in the table). The rule defaults to \"Standard\" (``standard``)." +msgstr "" + +#: ../../features/breaks.rst:109 +msgid "The \"institution cap\" field was removed in Tabbycat 1.0. All Australs break qualification rules are now hard-coded to a cap of three teams per institution." +msgstr "" + +#: ../../features/breaks.rst:114 +msgid "2. Creating break rounds" +msgstr "" + +#: ../../features/breaks.rst:116 +msgid "You should create a round for every break round you intend to hold, including it in *rounds.csv* if using `importtournament`, or adding them under **Tournaments > Rounds** if using **Edit Database**. Be careful to set the following fields correctly:" +msgstr "" + +#: ../../features/breaks.rst:121 +msgid "*Break category* must be set to the relevant break category." +msgstr "" + +#: ../../features/breaks.rst:122 +msgid "*Stage* and *draw type* must both be set to \"Elimination\"." +msgstr "" + +#: ../../features/breaks.rst:125 +msgid "3. Setting break eligibility" +msgstr "" + +#: ../../features/breaks.rst:127 +msgid "Once a break category has been created it will not have any teams eligible for it, even if it was marked as \"Is general\". To edit the eligibility of teams for any break round go to the **Breaks** item in the left-hand menu for a particular tournament and then click **Team Eligiblity**." +msgstr "" + +#: ../../features/breaks.rst:132 +msgid "Here you can select \"all\" or \"none\" to toggle all team eligiblities or edit them using the tick boxes. Once you **save** it should return you to the main break page which will display the number of teams marked eligible." +msgstr "" + +#: ../../features/breaks.rst:136 +msgid "Adjudicators can be marked as \"breaking\" on the **Feedback** page; clicking **Adjudicators** on the breaks page will take you straight there." +msgstr "" + +#: ../../features/breaks.rst:140 +msgid "Generating the break" +msgstr "" + +#: ../../features/breaks.rst:142 +msgid "Unlike team or speaker standings, each category's break (and the break ranks of teams) are not determined automatically and updated continuously. Instead each can be generated (and regenerated) as desired." +msgstr "" + +#: ../../features/breaks.rst:146 +msgid "To do so go to the **Breaks** item in the left-hand menu and then click the white button that corresponds to the break category you'd like to determine the rankings for. When prompted, select **Generate the break for all categories** to display the list of breaking teams." +msgstr "" + +#: ../../features/breaks.rst:151 +msgid "From this page you can update the breaking teams list for this break category (or all categories) as well as view and edit 'remarks' that account for cases in which a team may not break (such as being capped or losing a coin toss)." +msgstr "" + +#: ../../features/breaks.rst:155 +msgid "Please double-check the generated break before announcing or releasing it. Although the break generation code is designed to handle edge cases, we don't test the code for such cases." +msgstr "" + +#: ../../features/breaks.rst:160 +msgid "Creating draws for break rounds" +msgstr "" + +#: ../../features/breaks.rst:162 +msgid "Creating a draw for a break round proceeds as normal, except that the team availability process is skipped. Instead, when you visit the availability page for that round it will have automatically determined which teams should be debating based upon the determined break for that category. Once a draw has been generated it will then use the relevant break ranks to create the matchups (ie 1st-breaking vs 16th-breaking, 2nd vs 15th, *etc.*). Subsequent break rounds will then also automatically determine matchups based on the previous round's results and room ranks." +msgstr "" + +#: ../../features/breaks.rst:171 +msgid "If the \"break size\" of a break category is not a power of 2, it will treat the first break round as a partial-elimination draw and only create a draw for the teams not skipping the partial-elimination round. Subsequent break rounds will then process as described above." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/check-ins.po b/docs/locale/vi/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..397e1abaaa9 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/check-ins.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:41\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: vi_VN\n" + +#: ../../features/check-ins.rst:5 +msgid "Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:7 +msgid "A 'Check-in' is a record of a speaker, adjudicator, venue, or ballot's status at a particular point in time. Typically these are used at large tournaments to reliably track who is or is not present for the first round of each day." +msgstr "" + +#: ../../features/check-ins.rst:9 +msgid "Check-ins serve a similar purpose to the :ref:`availability ` system. However availabilities are tied to a particular round rather than to a particular time — they are generally used to record instances where you know ahead of time whether a person should or should not be included in a draw. In contrast, check-ins are useful for when you *don't* know ahead of time whether a person will be able to be put into the draw and so want to be able to confirm their presence with a high degree of confidence. That said the two systems interact — the standard availability pages allow you to easily set all adjudicators or teams who have checked-in as available for a given round." +msgstr "" + +#: ../../features/check-ins.rst:12 +msgid "Check-In Identifiers" +msgstr "" + +#: ../../features/check-ins.rst:14 +msgid "Check-ins are associated with a 'identifier' — a number that is unique to each speaker and adjudicator. To generate these numbers go to the *Identifiers* section under the Check-Ins menu. From here you generate identifiers for Speakers, Adjudicators, and Venues as needed. Note also that Identifiers can be manually added or edited in the *Edit Database* area if necessary." +msgstr "" + +#: ../../features/check-ins.rst:18 +msgid "Once this number has been generated it can be transformed into a barcode so that it can be easily included on tournament badges or otherwise printed and disbursed. On the same *Identifiers* page you can use the *View barcodes* option to open up a page that lists all the barcodes for the speakers, adjudicators, or venues." +msgstr "" + +#: ../../features/check-ins.rst:22 +msgid "The identifiers for ballots are automatically generated when printing ballots." +msgstr "" + +#: ../../features/check-ins.rst:25 +msgid "Recording Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:27 +msgid "On the *Scanning* section of Check-ins you can record a particular check-in. This can be done in a few different ways:" +msgstr "" + +#: ../../features/check-ins.rst:29 +msgid "You can type in the Identifier number into the box. Once five numbers have been identified it will automatically issue the check-in and clear the input field for the next number." +msgstr "" + +#: ../../features/check-ins.rst:31 +msgid "If you have purchased barcode scanners and configured them as USB keyboards they should then be compatible with this page: upon page load the cursor should be positioned in the input field, and any scanned barcodes should populate it with the specified number, issue the check-in, and then clear the box for the next scan." +msgstr "" + +#: ../../features/check-ins.rst:33 +msgid "Barcode scanners are probably cheaper than you think. A perfectly serviceable model should be around $20 USD or less although a cursory Google search might at first turn up models that are many times that amount. If you are a curious tab director, or are involved in a tournament with a little spare money, having just one or two around for critical tasks can be highly valuable." +msgstr "" + +#: ../../features/check-ins.rst:35 +msgid "If your device has a (web)cam you can use the Scan Using Camera button. Any barcodes put in front of the camera's video stream will be scanned into the form. A sound will play when a barcode has been identified — so be aware that turning sound on or using headphones can help identify when a scan has been made." +msgstr "" + +#: ../../features/check-ins.rst:39 +msgid "Camera scanning works on most modern browsers although it will only work with Safari 11 or higher (iOS 11+ and macOS 10.13+). Camera scanning may also not work when using a local-installation of Tabbycat in all browsers, *except* Firefox where it seems to. Depending on the quality of your camera barcodes that are less than 4cm wide may not be recognised — ideally barcodes should be at least 5cm if using this method as your main way of checking-in things." +msgstr "" + +#: ../../features/check-ins.rst:41 +msgid "The Check-in status page (described below) allows assistants and administrators to manually check-in particular people or entire institutions without needing to know their identifiers." +msgstr "" + +#: ../../features/check-ins.rst:44 +msgid "The Check-In 'Window'" +msgstr "" + +#: ../../features/check-ins.rst:46 +msgid "Because Check-In events are not explicitly linked to rounds there is essentially a 'window' or time period in which a check-in is still considered valid. The time of this 'window' in hours can be set in *Setup* > *Configuration* > *Data Entry*." +msgstr "" + +#: ../../features/check-ins.rst:48 +msgid "At tournaments the run check-ins during the start of each day the check-in 'window' (i.e. the time before check-ins expire) you can leave this window setting at the default time (12 hours) which should give enough time to distinguish between the first check-ins of that day as compared to the last check-ins of the previous day. At tournaments where you want to run a check-in process at the start of every round you may want to set the time to around 2 hours or something much shorter." +msgstr "" + +#: ../../features/check-ins.rst:51 +msgid "Viewing Check-Ins" +msgstr "" + +#: ../../features/check-ins.rst:53 +msgid "On the *People Statuses* section of Check-ins you can view who has or has not been checked-in. This page will live-update with the latest check-ins so you should be able to leave it open to monitor income attendances." +msgstr "" + +#: ../../features/check-ins.rst:57 +msgid "The blue \"tick\" boxes allow you to manually check-in people and/or entire institutions (for *People*) or venues and/or venue groups (for *Venues*) , without the need to scan their identifiers. This style of check-in is designed for use an auditorium roll-call type situation where you might be running through a list of people to the room or identifying absences on a per-institution basis." +msgstr "" + +#: ../../features/check-ins.rst:59 +msgid "A public version of this check-in status page can be enabled under *Setup* > *Configuration* > *Public Features* which can be useful for allowing people to self-police check-ins and/or validate their check-in worked." +msgstr "" + +#: ../../features/check-ins.rst:62 +msgid "Check-Ins for Ballots" +msgstr "" + +#: ../../features/check-ins.rst:64 +msgid "Ballots can be checked-in to quickly validate which ballots are physically present in the tab room. This can help more quickly identify ballots that are missing. Which ballots have or have not been checked-in will show up on the Results page. Ballots can be scanned using the standard 'Scan Identifiers' page." +msgstr "" + +#: ../../features/check-ins.rst:66 +msgid "Barcodes are automatically assigned and included to ballots when they are printed. Barcodes have no check-in window — any relevant check-in event counts regardless of how long ago it was." +msgstr "" + +#: ../../features/check-ins.rst:69 +msgid "Check-Ins for Venues" +msgstr "" + +#: ../../features/check-ins.rst:71 +msgid "Venues can be checked-in, but what a 'venue check-in' means is a bit more flexible. It might be used to validate which rooms are debate-ready at the start of a day (i.e. unlocked; has a desk) or it could be used during the rounds to record which rooms have returned their ballots." +msgstr "" + +#: ../../features/check-ins.rst:73 +msgid "Venues have a separate check-in window setting to that of people." +msgstr "" + +#: ../../features/check-ins.rst:75 +msgid "Venues have their own Status page (like people) and can be checked-in there manually. Like speakers and adjudicators their barcodes can also be printed off." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/data-entry.po b/docs/locale/vi/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..1e528971535 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/data-entry.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:41\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: vi_VN\n" + +#: ../../features/data-entry.rst:5 +msgid "Entering Ballots and Feedback" +msgstr "" + +#: ../../features/data-entry.rst:8 +msgid "Ballot check-in" +msgstr "" + +#: ../../features/data-entry.rst:10 +msgid "For tournaments that require it, there is a \"ballot check-in\" page that can be used to record the arrival of ballots to the tab room. When there's a missing ballot, it can help establish whether the ballot never made it to the tab room, or whether it's probably floating around in the room forgotten. Also, it can help enforce early checks that panels return the correct number of ballots to the room." +msgstr "" + +#: ../../features/data-entry.rst:12 +msgid "To get to the ballot check-in, click the relevant round in the menu of the admin area, and then click \"Results\" and then \"Ballot Check-In\". This requires superuser privileges." +msgstr "" + +#: ../../features/data-entry.rst:14 +msgid "There's no adverse effect from not using the ballot check-in. Data enterers will still be able to enter and confirmed ballots, even if not checked in." +msgstr "" + +#: ../../features/data-entry.rst:18 +msgid "Since the ballot check-in tends to require a dedicated computer or two, it can be worth creating a separate superuser account for ballot check-in, so that it doesn't appear on the action logs as being by a particular person." +msgstr "" + +#: ../../features/data-entry.rst:19 +msgid "Don't forget to provision a computer or two for this if you're planning to use it." +msgstr "" + +#: ../../features/data-entry.rst:20 +msgid "Ballot check-ins can be a bottleneck, so you might decide they're not worth using. Alternatively, you might have multiple computers for this purpose, or you might dedicate a tab room helper to driving the process (since this is probably faster than runners doing the typing in turn)." +msgstr "" + +#: ../../features/data-entry.rst:23 +msgid "Ballot entry" +msgstr "" + +#: ../../features/data-entry.rst:27 +msgid "Most tab rooms run some sort of check system to ensure data is entered accurately. In Tabbycat, this is built into the system, which also helps speed it up." +msgstr "" + +#: ../../features/data-entry.rst:29 +msgid "As a general principle, Tabbycat requires all ballots to be looked at by two people. The first person enters the data from the ballot, and the second person checks it. The second person isn't allowed to modify the data—they either confirm it or reject it, and if they reject it, then the whole process starts again. This is by design: to be confirmed, the *same* data must have been seen by at least two people." +msgstr "" + +#: ../../features/data-entry.rst:31 +msgid "The administrator area does **not** work like this. It's designed to be flexible, so allows you to edit, confirm or unconfirm any ballot at any time. For this reason, you should use the **assistant** area to enter ballots, even if you have a superuser account." +msgstr "" + +#: ../../features/data-entry.rst:35 +msgid "Don't forget to check the totals against the ballot—they're a useful integrity check too." +msgstr "" + +#: ../../features/data-entry.rst:36 +msgid "Don't forget to check the winner against the ballot! If the adjudicator gets it wrong, it's worth asking to clarify." +msgstr "" + +#: ../../features/data-entry.rst:37 +msgid "It can be helpful to think about the room layout to maximize efficiency." +msgstr "" + +#: ../../features/data-entry.rst:38 +msgid "Some tab rooms like to assign some to data entry and some to verification. This isn't really necessary, since Tabbycat doesn't let the same person enter and verify the same ballot. (This is one of many reasons why every person should have their own account.)" +msgstr "" + +#: ../../features/data-entry.rst:39 +msgid "Emails can be configured to be sent to adjudicators as a receipt of their ballot once confirmed." +msgstr "" + +#: ../../features/data-entry.rst:42 +msgid "Duplicate/Swing Speeches" +msgstr "" + +#: ../../features/data-entry.rst:46 +msgid "When entering the ballots there is a toggle label *'Iron' speeches*. When set to \"yes\" this allows you to have the same speaker deliver multiple speeches provided their extra speeches are labelled on the form as 'duplicates'. Typically, most tournaments require that lesser 'iron man' speech is discarded from the tab, which would mean that you would mark the lower speaker of the two scores as the duplicate (note that this may require you to check each score's average across a panel)." +msgstr "" + +#: ../../features/data-entry.rst:48 +msgid "Speeches marked as duplicates are not included in the speaker tab. This means that they can also be used to exclude swing speakers from the tab as needed; even if they do not actually speak twice. To do so, change the name of the swing speaker to be that of an existing team member and ensure that that speech is marked as a duplicate." +msgstr "" + +#: ../../features/data-entry.rst:50 +msgid "There is also an option under **Standings** in the **Configuration** section that specifies the number of debates a speaker can miss before you will not show on the tab. By default there is no limit, but if need be this can be set to hide swing speakers from the final speaker tab." +msgstr "" + +#: ../../features/data-entry.rst:53 +msgid "Feedback entry" +msgstr "" + +#: ../../features/data-entry.rst:57 +msgid "Feedback doesn't have the same verification process as ballots. Feedback that is entered by the tab room is assumed to be confirmed. If feedback is entered multiple times, all copies are retained but only the last one \"counts\" (is considered confirmed)." +msgstr "" + +#: ../../features/data-entry.rst:60 +msgid "Online entry" +msgstr "" + +#: ../../features/data-entry.rst:62 +msgid "There are two methods of allowing ballots and feedback to be submitted online. Both are set in the **Data Entry** page of each tournament's **Configuration** section and can be set independently; both in whether each can be submitted online at all and in which method of online submission are available." +msgstr "" + +#: ../../features/data-entry.rst:68 +msgid "Private URLs" +msgstr "" + +#: ../../features/data-entry.rst:70 +msgid "The first method of data entry is using 'private URLs'. When this setting is enabled you can create a special URL that is unique to a participant. This link contains a number of random characters and is not displayed publicly; it is in effect a secret that only that a specific participant should know. Presuming people do not share these links to others, this provides a means to (relatively) securely identify who is submitting what information. Because Tabbycat knows which participant has which URL it will only allow them to submit feedback/ballots for debates that they were speakers/adjudicators in." +msgstr "" + +#: ../../features/data-entry.rst:72 +msgid "Private URLs should provide more than adequate security for almost all tournaments' purposes, but they aren't foolproof. Anyone with access to the URL for a participant can submit feedback or ballots on their behalf, so it's important that participants not share their URLs. This also means participants need to be careful when submitting from devices they do not own, because the URL will be logged in that device's browser history." +msgstr "" + +#: ../../features/data-entry.rst:74 +msgid "These links must be generated within Tabbycat after the preference is enabled. To do so go to the **Feedback** section and then the **Private URLs** area. Once there you will be prompted to generate those URLs for all participants, which — once generated — will be presented in separate tables (one for teams; one for adjudicators)." +msgstr "" + +#: ../../features/data-entry.rst:78 +msgid "These URLs can then be distributed to each person in a number of ways. There are pages within Tabbycat for printing them out (one URL per page labelled by recipient) or emailing them out (providing participants have been assigned email addresses). In the past tournaments have also used data from this table to send out SMSs by bulk, or distributed them to institutional representatives to disburse." +msgstr "" + +#: ../../features/data-entry.rst:82 +msgid "You can assign email address to participants using the :ref:`importtournament command ` when importing your registration data, or by going to the *Edit Data* area and looking up each Speaker/Adjudicator." +msgstr "" + +#: ../../features/data-entry.rst:83 +msgid "If, after generating the private URLs, you add additional Teams or Adjudicators you can go to the *Edit Database* area , look up each Speaker/Adjudicator, and type in a bunch of random characters as their *Url key* to assign them a private URL." +msgstr "" + +#: ../../features/data-entry.rst:84 +msgid "You can delete the current set of URLs by running this command in a shell on your server (replacing TOURNAMENT_SLUG with the appropriate value): ``python manage.py privateurls delete --tournament TOURNAMENT_SLUG``" +msgstr "" + +#: ../../features/data-entry.rst:89 +msgid "Public URLs" +msgstr "" + +#: ../../features/data-entry.rst:91 +msgid "The second method of data entry is using 'normal URLs'. This essentially means that any users visiting the public version of the site is able to submit a ballot or feedback (as specified by their respective settings). They do so by self-selecting which Team or Adjudicator they are then entering in a form as normal." +msgstr "" + +#: ../../features/data-entry.rst:93 +msgid "This is, rather obviously, not a particularly secure method of data entry — nothing is stopping anyone on the site from entering data as someone else. The data can be checked, verified, and edited as normal by admins however. As such, this method is only recommended for small tournaments where you can trust those present to enter accurate information (or where accuracy is not crucial)." +msgstr "" + +#: ../../features/data-entry.rst:95 +msgid "There is an additional setting to set a 'tournament password' that needs to be submitted to enable the form. It is imagined, that if enabled, this password would only be distributed to tournament participants. However this only helps (at best) prevent non-participants from entering information; the fundamental problem of not verifying who is submitting what information is still present." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/data-importers.po b/docs/locale/vi/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..2e82d9773bf --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/data-importers.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:41\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: vi_VN\n" + +#: ../../features/data-importers.rst:5 +msgid "Tournament Data Importers" +msgstr "" + +#: ../../features/data-importers.rst:7 +msgid "This page describes how to write your own tournament data importer. It is aimed at an audience that is familiar with programming in Python, and may be willing to get their head around the Django model if necessary." +msgstr "" + +#: ../../features/data-importers.rst:9 +msgid "The **tournament data importer** is the class that imports data from one or more files (usually CSV files) into the database. A base class ``BaseTournamentDataImporter`` is in `importer/base.py `_. An example of a data importer is in `importer/anorak.py `_." +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "Todo" +msgstr "" + +#: ../../features/data-importers.rst:11 +msgid "This page is incomplete. If you're finding this information insufficient, please contact Chuan-Zheng using the contact details in the :ref:`authors` section." +msgstr "" + +#: ../../features/data-importers.rst:14 +msgid "Why write your own?" +msgstr "" + +#: ../../features/data-importers.rst:16 +msgid "While Tabbycat has standard import formats, you might find that none of them fit the data that you need to import." +msgstr "" + +#: ../../features/data-importers.rst:18 +msgid "It's not possible to devise a single, universally-convenient import file format. Tabbycat supports way too many permutations of configurations for this to be workable. Instead, we provide the ones that have been useful before and are therefore likely to be useful again—but if your tournament has different needs, you might decide that it's easier to write an importer to conform to you, rather than conform to the importer." +msgstr "" + +#: ../../features/data-importers.rst:20 +msgid "A base importer class abstracts away most of the nitty-gritty of parsing files, allowing new importers to focus on their interpretation with as little code as possible." +msgstr "" + +#: ../../features/data-importers.rst:22 +msgid "To allow new importers to be written with as little code as possible, most of the work is abstracted to the base class. The flipside of this abstraction is that it induces a learning curve." +msgstr "" + +#: ../../features/data-importers.rst:25 +msgid "Basic workflow" +msgstr "" + +#: ../../features/data-importers.rst:27 +msgid "Choose a name. We name importers after items of clothing in alphabetical order (starting at 'Anorak')." +msgstr "" + +#: ../../features/data-importers.rst:28 +msgid "Write a subclass of ``BaseTournamentDataImporter``." +msgstr "" + +#: ../../features/data-importers.rst:29 +msgid "Write the front-end interface. This will probably be a `Django management command `_." +msgstr "" + +#: ../../features/data-importers.rst:32 +msgid "A basic example" +msgstr "" + +#: ../../features/data-importers.rst:34 +msgid "It's easiest to start with an example. Here's a basic importer with just one import method, which imports adjudicators." +msgstr "" + +#: ../../features/data-importers.rst:60 +msgid "Let's break this down. The method ``import_adjudicators()`` takes a single argument, a file object representing the CSV file. Most of the work is passed off to ``self._import()``. This helper method is defined in ``BaseTournamentDataImporter`` and is where most of the intelligence lies." +msgstr "" + +#: ../../features/data-importers.rst:65 +msgid "When called, ``self._import(f, model, interpreter)`` does the following:" +msgstr "" + +#: ../../features/data-importers.rst:67 +msgid "It reads the CSV file using a `csv.DictReader `_. A ``DictReader`` iterates through the CSV file, yielding a dict for each line, whose keys are given by the column header names in the first row of the file." +msgstr "" + +#: ../../features/data-importers.rst:72 +msgid "On each line:" +msgstr "" + +#: ../../features/data-importers.rst:74 +msgid "It passes the dict given by the ``DictReader`` to ``interpreter``. The interpreter modifies the dict (or creates a new one) to prepare it for the model constructor, and returns it." +msgstr "" + +#: ../../features/data-importers.rst:78 +msgid "The dict returned by ``interpreter`` is then passed as keyword arguments to the ``model`` constructor." +msgstr "" + +#: ../../features/data-importers.rst:81 +msgid "So in very simplified form, ``self._import(f, model, interpreter)`` does this:" +msgstr "" + +#: ../../features/data-importers.rst:92 +msgid "(There's a lot more to it than that, but that's the basic idea.)" +msgstr "" + +#: ../../features/data-importers.rst:94 +msgid "A consequence of relying on column headers to identify fields is that the header names in CSV files must match model field names exactly, unless they are deleted by the interpreter using the ``DELETE`` keyword (see below)." +msgstr "" + +#: ../../features/data-importers.rst:100 +msgid "Interpreters" +msgstr "" + +#: ../../features/data-importers.rst:101 +msgid "The main task of an importer, then, is to provide interpreters so that ``self._import`` knows how to interpret the data in a CSV file. An interpreter takes a dict and returns a dict. For example:" +msgstr "" + +#: ../../features/data-importers.rst:113 +msgid "This interpreter does the following:" +msgstr "" + +#: ../../features/data-importers.rst:115 +msgid "Replaces ``line['institution']`` with an Institution object, by looking up the original value by name." +msgstr "" + +#: ../../features/data-importers.rst:117 +msgid "Replaces ``line['gender']`` with a ``Person.GENDER_*`` constant. We'll come back to how this works later." +msgstr "" + +#: ../../features/data-importers.rst:119 +msgid "Adds a new ``line['tournament']`` entry to the dict, being the Tournament object represented by ``self.tournament``, the tournament that was passed to the importer's constructor." +msgstr "" + +#: ../../features/data-importers.rst:122 +msgid "Leaves all other entries in the dict unchanged." +msgstr "" + +#: ../../features/data-importers.rst:124 +msgid "This looks simple enough, but it's very robust. What if a cell in the CSV file is blank, or what if the file omits a column? (For example, some tournaments might not collect information about participant gender, so Tabbycat doesn't require it.) We could deal with these scenarios on a case-by-case basis, but that's cumbersome." +msgstr "" + +#: ../../features/data-importers.rst:130 +msgid "Instead, we provide a ``make_interpreter`` method that returns an interpreter method which, in turn, takes care of all these details. This way, all you have to do is provide the functions that transform fields. So the following is equivalent to the above, but better:" +msgstr "" + +#: ../../features/data-importers.rst:143 +msgid "Notice that we provided a callable in two of these keyword arguments, and a (non-callable) Tournament object to the third. ``make_interpreter`` is smart enough to tell the difference, and treat them differently. What it does with each field depends on (a) whether a value exists in the CSV file and (b) what transformation function was provided, as summarised in the following table:" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Value in CSV file" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Transformation" +msgstr "" + +#: ../../features/data-importers.rst:150 +msgid "Action" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "provided and not callable" +msgstr "" + +#: ../../features/data-importers.rst:152 +msgid "populate model field with interpreter value" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "does not exist or blank" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "callable or not provided" +msgstr "" + +#: ../../features/data-importers.rst:155 +msgid "do not pass to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:158 ../../features/data-importers.rst:161 +msgid "exists and not blank" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "callable" +msgstr "" + +#: ../../features/data-importers.rst:158 +msgid "call interpreter on column value, pass result to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "not provided" +msgstr "" + +#: ../../features/data-importers.rst:161 +msgid "pass column value directly to model constructor" +msgstr "" + +#: ../../features/data-importers.rst:169 +msgid "If a transformation isn't an existing method, you might find `lambda functions `_ useful. For example: ``lambda x: Speaker.objects.get(name=x)``." +msgstr "" + +#: ../../features/data-importers.rst:173 +msgid "You shouldn't check for mandatory fields. If a mandatory field is omitted, the model constructor will throw an error, and ``self._import()`` will catch the error and pass a useful message on to the caller. On the other hand, if it's an optional field in the model, it should optional in the importer, too. Similarly, interpreters generally shouldn't specify defaults; these should be left to model definitions." +msgstr "" + +#: ../../features/data-importers.rst:180 +msgid "You don't need to include interpreter transformations for things like converting strings to integers, floats or booleans. Django converts strings to appropriate values when it instantiates models. So, for example, adding ``test_score=float`` to the above interpreter would be redundant." +msgstr "" + +#: ../../features/data-importers.rst:186 +msgid "More complicated interpreters" +msgstr "" + +#: ../../features/data-importers.rst:188 +msgid "If you have a column in the CSV file that shouldn't be passed to the model constructor, you can tell the interpreter to remove it by using the special ``DELETE`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:199 +msgid "The ``make_interpreter`` can only deal with modifications where each field is modified separately of the others (or not at all). If you want to combine information from multiple fields, you need to write your interpreter the long way (perhaps calling a function returned by ``make_interpreter`` to do some of the work)." +msgstr "" + +#: ../../features/data-importers.rst:205 +msgid "On the other hand, if you don't need to do any transformations involving some sort of object or constant lookup, then you can just omit the ``interpreter`` argument of ``self._lookup()``, and it'll just leave the fields as-is." +msgstr "" + +#: ../../features/data-importers.rst:210 +msgid "Lookup functions" +msgstr "" + +#: ../../features/data-importers.rst:211 +msgid "In the above example, we used a function ``self.lookup_gender`` to convert from the text in the CSV file to a ``Person.GENDER_*`` constant. To make this easier, the importer provides a convenience function to define such lookup functions. Let's look at the relevant lines again:" +msgstr "" + +#: ../../features/data-importers.rst:224 +msgid "This should be a member of your subclass, in our case, ``ExampleTournamentDataImporter``. It generates a function that looks something like:" +msgstr "" + +#: ../../features/data-importers.rst:241 +msgid "The ``make_lookup`` function takes two arguments. The first is a text description of what it's looking up; this is used for the error message if the value in the CSV file isn't recognised. The second is a dict mapping tuples of valid strings to constants." +msgstr "" + +#: ../../features/data-importers.rst:247 +msgid "Debugging output" +msgstr "" + +#: ../../features/data-importers.rst:249 +msgid "The ``BaseTournamentDataImporter`` constructor accepts a ``loglevel`` argument:" +msgstr "" + +#: ../../features/data-importers.rst:255 +msgid "If ``loglevel`` is set to ``logging.DEBUG``, the importer will print information about every instance it creates." +msgstr "" + +#: ../../features/data-importers.rst:258 +msgid "You can also pass in a logger for it to use (instead of the default one) with the ``logger`` argument." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/vi/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..eb2d372235a --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/draw-generation-bp.po @@ -0,0 +1,598 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-25 04:13\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: vi_VN\n" + +#: ../../features/draw-generation-bp.rst:5 +msgid "Draw Generation (BP)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:7 +msgid "The draw generator for British Parliamentary tournaments tries to rotate teams through positions by assigning them positions they've been in less often before the current round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:12 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `. Options in `italics` with an asterisk are not WUDC-compliant. The recommended options are shown in **bold**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:19 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation-bp.rst:20 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation-bp.rst:21 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation-bp.rst:22 +msgid ":ref:`Pullup distribution `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:23 +msgid "Where pullup teams get placed" +msgstr "" + +#: ../../features/draw-generation-bp.rst:24 +msgid "**Anywhere in bracket**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:25 +msgid "*All in the same room*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:26 +msgid ":ref:`Position cost `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:27 +msgid "Which cost function to use to indicate which position profiles are preferred" +msgstr "" + +#: ../../features/draw-generation-bp.rst:28 +#: ../../features/draw-generation-bp.rst:179 +msgid "Simple" +msgstr "" + +#: ../../features/draw-generation-bp.rst:29 +msgid "**Rényi entropy**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:30 +#: ../../features/draw-generation-bp.rst:254 +msgid "Population variance" +msgstr "" + +#: ../../features/draw-generation-bp.rst:31 +msgid ":ref:`Rényi order `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:32 +msgid "Order of Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:33 +msgid "Any non-negative number (default: **1**, *i.e.* Shannon entropy)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:34 +msgid ":ref:`Position cost exponent `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:35 +msgid "Degree to which large position imbalances should be prioritised" +msgstr "" + +#: ../../features/draw-generation-bp.rst:36 +msgid "Any non-negative number (default: **4**)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:37 +msgid ":ref:`Assignment method `" +msgstr "" + +#: ../../features/draw-generation-bp.rst:38 +msgid "Algorithm used to assign positions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:39 +msgid "*Hungarian*\\*" +msgstr "" + +#: ../../features/draw-generation-bp.rst:40 +msgid "**Hungarian with preshuffling**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:45 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation-bp.rst:47 +msgid "To try to achieve position balance, Tabbycat treats the allocation of teams to debates as an `assignment problem `_. That is, it computes the \"cost\" of assigning each team to each position in each debate, and finds an assignment of all teams to a position in a debate that minimises the total cost (the sum over all teams)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:50 +msgid "A simple example" +msgstr "" + +#: ../../features/draw-generation-bp.rst:52 +msgid "Here's a small example, to illustrate the idea. Say you have a tournament with 16 teams, and you're about to draw round 4. There are sixteen \"places\" in the draw: four positions in each of four rooms. Tabbycat calculates the \"cost\" of putting each team in each place, and puts them in a matrix, like this:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Room" +msgstr "Phòng" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Top" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Second" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Third" +msgstr "" + +#: ../../features/draw-generation-bp.rst:61 +msgid "Bottom" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "Position" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "OO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CG" +msgstr "" + +#: ../../features/draw-generation-bp.rst:63 +msgid "CO" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +msgid "**A (8)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "16" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +msgid ":q:`0`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:65 +#: ../../features/draw-generation-bp.rst:67 +#: ../../features/draw-generation-bp.rst:69 +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:77 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:81 +#: ../../features/draw-generation-bp.rst:83 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:93 +#: ../../features/draw-generation-bp.rst:95 +msgid "∞" +msgstr "" + +#: ../../features/draw-generation-bp.rst:67 +msgid "**B (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:69 +msgid "**C (7)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +msgid "**D (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:73 +#: ../../features/draw-generation-bp.rst:75 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:85 +#: ../../features/draw-generation-bp.rst:87 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:91 +#: ../../features/draw-generation-bp.rst:95 +msgid "0" +msgstr "" + +#: ../../features/draw-generation-bp.rst:71 +#: ../../features/draw-generation-bp.rst:79 +#: ../../features/draw-generation-bp.rst:89 +#: ../../features/draw-generation-bp.rst:95 +msgid ":q:`16`" +msgstr "" + +#: ../../features/draw-generation-bp.rst:73 +msgid "**E (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:75 +msgid "**F (6)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:77 +msgid "**G (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:79 +msgid "**H (5)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:81 +msgid "**I (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:83 +msgid "**J (4)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:85 +msgid "**K (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:87 +msgid "**L (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:89 +msgid "**M (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:91 +msgid "**N (3)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:93 +msgid "**O (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:95 +msgid "**P (1)**" +msgstr "" + +#: ../../features/draw-generation-bp.rst:98 +msgid "Each \"16\" is the cost of putting a team in a position it's seen once; each \"0\" is the cost of putting a team in the position it hasn't. (Details of how this is calculated are :ref:`below `.) For example, team A (on 8 points) has been in every position except CO. The ∞'s indicate places where the team isn't allowed to go, because the room isn't in their bracket. For example, the three teams on 6 points (D, E, F) can go in either the top or second room, because any of them can be the pullup team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:100 +msgid "The algorithm then chooses entries so that one is selected from each row and one is selected from each column, in a way that minimises the sum of the selected entries. In this case, the selected entries are highlighted in blue. For example, the top room comprises teams E (OG), B (OO), C (CG) and A (CO)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:102 +msgid "Sometimes, particularly in round 4, it simply isn't possible to \"satisfy\" everyone. For example, among the top eight teams, five haven't been in OO, but only two can be accommodated within those brackets. In this case, teams B and G got lucky; there are also many other draws that would have incurred the same total cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:104 +msgid "More generally, in most cases, there will be many optimal solutions. To randomise the selection among them, Tabbycat (under default settings) randomly permutes the rows and columns of the matrix before starting the assignment algorithm." +msgstr "" + +#: ../../features/draw-generation-bp.rst:107 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:112 +msgid "Pullup distribution" +msgstr "" + +#: ../../features/draw-generation-bp.rst:114 +msgid "If the number of teams in a bracket is not a multiple of four, it pulls up teams from the next bracket down. The pullup distribution then governs how those teams are paired into the upper bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:116 +msgid "The available options are as follows:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:120 +msgid "**Anywhere in bracket:** The pullup teams are treated as if they were any other team in their new bracket. For example, if there are 17 teams in a 10-point bracket, then the three 9-point teams that get pulled up may be paired anywhere in the 10-point bracket, independently of each other. Chance might put them in the same room, but more likely, they will not all be in the same room, so there will be multiple pullup rooms in the 10-point bracket." +msgstr "" + +#: ../../features/draw-generation-bp.rst:122 +msgid "**All in the same room:** All of the pullup teams will be paired into the same room. This means that there will be at most one pullup room per bracket, effectively creating an \"intermediate bracket\"." +msgstr "" + +#: ../../features/draw-generation-bp.rst:124 +msgid "While it can be argued that the `All in the same room` setting is fairer, it is prohibited by the WUDC constitution. If your tournament follows WUDC rules, you cannot use this setting." +msgstr "" + +#: ../../features/draw-generation-bp.rst:126 +msgid "The teams that get pulled up aren't specifically chosen---they're just assigned as part of the algorithm described :ref:`above `, which optimises for position balance. Tabbycat doesn't support taking anything else into account when choosing pullup teams. (WUDC rules wouldn't allow it, either.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:131 +msgid "Position cost options" +msgstr "" + +#: ../../features/draw-generation-bp.rst:133 +msgid "The `position cost function` is a function that indicates how \"bad\" it would be if a team were to be allocated a certain position (OG, OO, CG, CO) in a debate. When generating a draw, Tabbycat chooses from among the draws that minimise the sum of the position costs for each team." +msgstr "" + +#: ../../features/draw-generation-bp.rst:135 +msgid "More formally:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:139 +msgid "A `position history` or just `history` :math:`\\mathbf{h}` is a 4-tuple where each element is the number of times a team has already been in the corresponding position. For example, :math:`\\mathbf{h} = (0, 2, 1, 1)` means that a team has been in OO twice, CG and CO once each, and hasn't been in OG." +msgstr "" + +#: ../../features/draw-generation-bp.rst:140 +msgid "A cost function :math:`C(\\mathbf{h},s)` is a function specifying how \"bad\" it would be if a team with position history :math:`\\mathbf{h}` were assigned the position :math:`s` in the next round." +msgstr "" + +#: ../../features/draw-generation-bp.rst:142 +msgid "Tabbycat allows you to choose from a number of different **position cost functions**, as well as a **position cost exponent** :math:`\\beta`. Then, when allocating teams to debates, Tabbycat allocates teams to positions :math:`(s_t, t \\in\\mathcal{T})` to minimise" +msgstr "" + +#: ../../features/draw-generation-bp.rst:144 +msgid "\\sum_{t \\in \\mathcal{T}} [C(\\mathbf{h}_t,s_t)]^\\beta" +msgstr "" + +#: ../../features/draw-generation-bp.rst:148 +msgid "where :math:`\\mathcal{T}` is the set of all teams, :math:`\\mathbf{h}_t` is the position history of team :math:`t` and :math:`s_t` is the position to which team :math:`t` would be allocated." +msgstr "" + +#: ../../features/draw-generation-bp.rst:153 +msgid "Position cost exponent" +msgstr "" + +#: ../../features/draw-generation-bp.rst:155 +msgid "The **position cost exponent** :math:`\\beta` controls how different teams trade off with each other." +msgstr "" + +#: ../../features/draw-generation-bp.rst:159 +msgid "The **larger** :math:`\\beta` is, the more concerned it is with preventing *very* bad situations. That is, it will give more teams some slight unevenness in order to prevent one team from getting a `very` uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:161 +msgid "The **smaller** :math:`\\beta` is, the more concerned it is with preventing *any* unevenness. That is, it will try to keep more teams from being uneven *at all*, at the cost of possibly letting just one team get a very uneven history." +msgstr "" + +#: ../../features/draw-generation-bp.rst:163 +msgid "At the large extreme, as :math:`\\beta\\rightarrow\\infty`, it will do everything it can to minimise the plight of the *worst-off* team, and it won't care for *any* team other than the worst-off." +msgstr "" + +#: ../../features/draw-generation-bp.rst:165 +msgid "At the small extreme, as :math:`\\beta\\rightarrow 0`, it will do everything it can to minimise the number of teams with a non-optimal profile---but if it's impossible to protect a team from sub-optimality, it won't care *how* uneven the unlucky team gets." +msgstr "" + +#: ../../features/draw-generation-bp.rst:167 +msgid "The \"balanced\" approach would be :math:`\\beta = 1`, which just takes the cost function as-is. This doesn't mean that this is the best idea, however---you'd typically want to bias towards preventing very uneven histories a bit more. Most tournaments will probably want :math:`\\beta` to be somewhere between 2 and 5. (Note that :math:`\\beta` need not be an integer.)" +msgstr "" + +#: ../../features/draw-generation-bp.rst:172 +msgid "Position cost functions" +msgstr "" + +#: ../../features/draw-generation-bp.rst:174 +msgid "Tabbycat allows you to choose between three position cost functions :math:`C(\\mathbf{h},s)`: **Simple**, **Rényi entropy** and **Population variance**." +msgstr "" + +#: ../../features/draw-generation-bp.rst:176 +msgid "In the descriptions that follow, :math:`\\mathcal{S} = \\{\\texttt{OG}, \\texttt{OO}, \\texttt{CG}, \\texttt{CO}\\}`, the set of all BP positions." +msgstr "" + +#: ../../features/draw-generation-bp.rst:181 +msgid "The simple cost function :math:`C_\\textrm{simple}(\\mathbf{h},s)` returns the number of times the team has already been in position :math:`s`, less the number of times the team has been in its least frequent position. That is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:183 +msgid "C_\\mathrm{simple}(\\mathbf{h},s) = \\mathbf{h}[s] - \\min_{s' \\in\\mathcal{S}} \\mathbf{h}[s']" +msgstr "" + +#: ../../features/draw-generation-bp.rst:187 +msgid "where :math:`\\mathbf{h}[s]` is the element of :math:`\\mathbf{h}` corresponding to position :math:`s`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:190 +msgid "Rényi entropy" +msgstr "" + +#: ../../features/draw-generation-bp.rst:192 +msgid "Informally speaking, the `Rényi entropy `_ is a measure of the diversity of the positions in a team's history. A history consisting only of one position has *low* entropy, while a history that is perfectly evenly distributed has *high* entropy. The **Rényi entropy cost function** reverses this intuition, so that an even hypothetical history has low cost, while an uneven hypothetical history has high cost." +msgstr "" + +#: ../../features/draw-generation-bp.rst:194 +msgid "The Rényi entropy takes one parameter, known as its *order*, :math:`\\alpha`, which will be further discussed below." +msgstr "" + +#: ../../features/draw-generation-bp.rst:196 +msgid "More formally, the Rényi entropy cost function :math:`C_\\textrm{R\\'enyi}(\\mathbf{h},s)` is defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:198 +msgid "C_\\textrm{R\\'enyi}(\\mathbf{h},s) = n_\\mathbf{h} [2 - H_\\alpha(\\hat{p}_{\\mathbf{h},s})]" +msgstr "" + +#: ../../features/draw-generation-bp.rst:202 +msgid "where" +msgstr "" + +#: ../../features/draw-generation-bp.rst:206 +msgid ":math:`n_\\mathbf{h} = \\sum_{s'} \\mathbf{h}[s']` is the number of rounds the team has competed in so far." +msgstr "" + +#: ../../features/draw-generation-bp.rst:207 +msgid ":math:`\\hat{p}_{\\mathbf{h},s}` is the *normalised hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:209 +msgid "\\hat{p}_{\\mathbf{h},s}[s'] = \\begin{cases} \\frac{1}{n_\\mathbf{h} + 1} (\\mathbf{h}[s'] + 1), &\\text{ if } s = s', \\\\ \\frac{1}{n_\\mathbf{h} + 1} \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:216 +msgid "Note that :math:`\\hat{p}_{\\mathbf{h},s}` is a probability distribution (that is, its elements sum to 1)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:218 +msgid ":math:`H_\\alpha(\\cdot)` is the `Rényi entropy `_ of order :math:`\\alpha` of a probability distribution, defined as" +msgstr "" + +#: ../../features/draw-generation-bp.rst:220 +msgid "H_\\alpha(p) = \\frac{1}{1-\\alpha} \\log_2 \\left( \\sum_{s\\in\\mathcal{S}} (p[s])^\\alpha \\right), \\qquad \\alpha \\ne 1." +msgstr "" + +#: ../../features/draw-generation-bp.rst:224 +msgid "In the special (limiting) case where :math:`\\alpha=1`, it reduces to the `Shannon entropy `_," +msgstr "" + +#: ../../features/draw-generation-bp.rst:226 +msgid "H_1(p) =-\\sum_{s\\in\\mathcal{S}} p[s] \\log_2 p[s]." +msgstr "" + +#: ../../features/draw-generation-bp.rst:230 +msgid "Note that for all :math:`\\alpha`, :math:`0 \\le H_\\alpha(p) \\le \\log_2(4) = 2` (since there are four positions in BP)." +msgstr "" + +#: ../../features/draw-generation-bp.rst:234 +msgid "The **Rényi order** is the parameter :math:`\\alpha` above, and it controls *what it means to be \"even among positions\"* for a team. Note that \"evenness\" is not easily defined. After round 8, which position history is more even: (0, 2, 3, 3) or (1, 1, 1, 5)? The Rényi order allows us to tune this definition." +msgstr "" + +#: ../../features/draw-generation-bp.rst:238 +msgid "The **smaller** :math:`\\alpha` is, the more it cares that teams compete in every position *at least* once, favouring (1, 1, 1, 5) over (0, 2, 3, 3): it's worse to have never OGed, than it is to have COed five times." +msgstr "" + +#: ../../features/draw-generation-bp.rst:240 +msgid "The **larger** :math:`\\alpha` is, the more it cares that teams do not compete in *any* (one) position too many times, favouring (0, 2, 3, 3) over (1, 1, 1, 5): it's worse to have COed five times, than it is to have never OGed." +msgstr "" + +#: ../../features/draw-generation-bp.rst:242 +msgid "At the small extreme, as :math:`\\alpha\\rightarrow0`, it *only* counts how many positions a team has seen at least once, and doesn't care about the distribution among them so long as a team has been in each position once." +msgstr "" + +#: ../../features/draw-generation-bp.rst:244 +msgid "At the large extreme, as :math:`\\alpha\\rightarrow\\infty`, it *only* looks at how many times each team has seen its *most frequent* position, and tries to keep this number even among all teams." +msgstr "" + +#: ../../features/draw-generation-bp.rst:246 +msgid "The \"balanced\" approach would be :math:`\\alpha=1` (the `Shannon entropy `_), though of course it's arguable what \"balanced\" means. Tabbycat defaults to this value." +msgstr "" + +#: ../../features/draw-generation-bp.rst:248 +msgid "To give some intuition for the useful range: In round 9, a strict ordering by number of positions seen at least once occurs for approximately :math:`\\alpha < 0.742`. A strict ordering by number of times in the most frequent position occurs for :math:`\\alpha>3`. Changing :math:`\\alpha` outside the range :math:`[0.742, 3]` will still affect the relative (cardinal) weighting *between teams*, but will not affect the *ordinal* ranking of possible histories." +msgstr "" + +#: ../../features/draw-generation-bp.rst:250 +msgid "The purpose of weighting costs by :math:`n_\\mathbf{h}` is to prioritise those teams who have competed in every round over those who have competed in fewer rounds." +msgstr "" + +#: ../../features/draw-generation-bp.rst:256 +msgid "The **population variance** cost function is just the population variance of the history 4-tuple," +msgstr "" + +#: ../../features/draw-generation-bp.rst:258 +msgid "C_\\textrm{popvar}(\\mathbf{h},s) = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\left(\\mathbf{\\hat{h}}_s[s'] - \\mu_{\\mathbf{\\hat{h}}_s} \\right)^2," +msgstr "" + +#: ../../features/draw-generation-bp.rst:262 +msgid "where :math:`\\mathbf{\\hat{h}}_s` is the *hypothetical* position history that would arise if a team with history :math:`\\mathbf{h}` were to be allocated position :math:`s` in the next round; that is," +msgstr "" + +#: ../../features/draw-generation-bp.rst:264 +msgid "\\mathbf{\\hat{h}}_s[s'] = \\begin{cases} \\mathbf{h}[s'] + 1, &\\text{ if } s = s', \\\\ \\mathbf{h}[s'], &\\text{ if } s \\ne s'. \\end{cases}" +msgstr "" + +#: ../../features/draw-generation-bp.rst:271 +msgid "and where :math:`\\mu_{\\mathbf{\\hat{h}}_s}` is the mean of :math:`\\mathbf{\\hat{h}}_s`," +msgstr "" + +#: ../../features/draw-generation-bp.rst:273 +msgid "\\mu_{\\mathbf{\\hat{h}}_s} = \\frac14 \\sum_{s'\\in\\mathcal{S}} \\mathbf{\\hat{h}}_s[s']." +msgstr "" + +#: ../../features/draw-generation-bp.rst:277 +msgid "At the extremes, a team that has seen all positions evenly will have a population variance of zero, while a team that has seen just one position :math:`n` times will have a population variance of :math:`\\frac{3n^2}{16}`." +msgstr "" + +#: ../../features/draw-generation-bp.rst:282 +msgid "Assignment method" +msgstr "" + +#: ../../features/draw-generation-bp.rst:284 +msgid "Tabbycat uses the `Hungarian algorithm `_ to solve the `assignment problem `_ of assigning teams to positions in debates. This can be run with or without preshuffling:" +msgstr "" + +#: ../../features/draw-generation-bp.rst:288 +msgid "**Hungarian algorithm** just runs the Hungarian algorithm as-is, with no randomness. This probably isn't what you want." +msgstr "" + +#: ../../features/draw-generation-bp.rst:290 +msgid "**Hungarian algorithm with preshuffling** also runs the Hungarian algorithm on the position cost matrix, but shuffles the input so that the draw is randomised, subject to having optimal position allocations." +msgstr "" + +#: ../../features/draw-generation-bp.rst:292 +msgid "Preshuffling doesn't compromise the optimality of position allocations: It simply shuffles the order in which teams and debates appear in the input to the algorithm, by randomly permuting the rows and columns of the position cost matrix. The Hungarian algorithm still guarantees an optimal position assignment, according to the chosen position cost function." +msgstr "" + +#: ../../features/draw-generation-bp.rst:294 +msgid "Running the Hungarian algorithm *without* preshuffling has the side effect of grouping teams with similar speaker scores in to the same room, and is therefore prohibited by WUDC rules. Its inclusion as an option is mainly academic; most tournaments will not want to use it in practice." +msgstr "" + +#: ../../features/draw-generation-bp.rst:296 +msgid "No other assignment methods are currently supported. For example, Tabbycat can't run fold (high-low) or adjacent (high-high) pairing *within* brackets." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/draw-generation.po b/docs/locale/vi/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..4aff565ac37 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/draw-generation.po @@ -0,0 +1,436 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: vi_VN\n" + +#: ../../features/draw-generation.rst:5 +msgid "Draw Generation" +msgstr "" + +#: ../../features/draw-generation.rst:7 +msgid "The draw generator is quite flexible. You can specify a number of settings to suit different tournaments' rules." +msgstr "" + +#: ../../features/draw-generation.rst:10 +msgid "Summary of options" +msgstr "" + +#: ../../features/draw-generation.rst:11 +msgid "Options are set in the **Configuration** page as described in :ref:`starting a tournament `." +msgstr "" + +#: ../../features/draw-generation.rst:18 +msgid "Option" +msgstr "" + +#: ../../features/draw-generation.rst:19 +msgid "Description" +msgstr "" + +#: ../../features/draw-generation.rst:20 +msgid "Allowable values" +msgstr "" + +#: ../../features/draw-generation.rst:22 +msgid ":ref:`Odd bracket resolution method `" +msgstr "" + +#: ../../features/draw-generation.rst:23 +msgid "How to resolve odd brackets" +msgstr "" + +#: ../../features/draw-generation.rst:24 +msgid "Pull up from top" +msgstr "" + +#: ../../features/draw-generation.rst:25 +msgid "Pull up from bottom" +msgstr "" + +#: ../../features/draw-generation.rst:26 +msgid "Pull up from middle" +msgstr "" + +#: ../../features/draw-generation.rst:27 +msgid "Pull up at random" +msgstr "" + +#: ../../features/draw-generation.rst:29 +msgid "If sides are `Random` or `Balance`:" +msgstr "" + +#: ../../features/draw-generation.rst:31 +msgid "Intermediate" +msgstr "" + +#: ../../features/draw-generation.rst:32 +msgid "Intermediate with bubble-up-bubble-down" +msgstr "" + +#: ../../features/draw-generation.rst:34 +msgid "If sides are `Pre-allocated`:" +msgstr "" + +#: ../../features/draw-generation.rst:36 +msgid "Intermediate 1" +msgstr "" + +#: ../../features/draw-generation.rst:37 +msgid "Intermediate 2" +msgstr "" + +#: ../../features/draw-generation.rst:39 +msgid ":ref:`Side allocations method `" +msgstr "" + +#: ../../features/draw-generation.rst:40 +msgid "How to allocate aff/neg" +msgstr "" + +#: ../../features/draw-generation.rst:41 ../../features/draw-generation.rst:51 +msgid "Random" +msgstr "" + +#: ../../features/draw-generation.rst:42 +msgid "Balance" +msgstr "" + +#: ../../features/draw-generation.rst:43 +msgid "Pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:44 +msgid "Manual ballot" +msgstr "" + +#: ../../features/draw-generation.rst:46 +msgid ":ref:`Pairing method `" +msgstr "" + +#: ../../features/draw-generation.rst:47 +msgid "How to pair teams within brackets" +msgstr "" + +#: ../../features/draw-generation.rst:48 +msgid "Slide" +msgstr "" + +#: ../../features/draw-generation.rst:49 +msgid "Fold" +msgstr "" + +#: ../../features/draw-generation.rst:50 +msgid "Adjacent" +msgstr "" + +#: ../../features/draw-generation.rst:53 +msgid ":ref:`Conflict avoidance method `" +msgstr "" + +#: ../../features/draw-generation.rst:54 +msgid "How to avoid history/institution conflicts" +msgstr "" + +#: ../../features/draw-generation.rst:55 +msgid "Off" +msgstr "" + +#: ../../features/draw-generation.rst:56 +msgid "One-up-one-down" +msgstr "" + +#: ../../features/draw-generation.rst:58 +msgid ":ref:`Pullup restriction `" +msgstr "" + +#: ../../features/draw-generation.rst:59 +msgid "Whether and how to restrict pullups" +msgstr "" + +#: ../../features/draw-generation.rst:60 +msgid "No restriction" +msgstr "" + +#: ../../features/draw-generation.rst:61 +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: ../../features/draw-generation.rst:62 +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: ../../features/draw-generation.rst:64 +msgid "The valid options for intermediate brackets change depending on whether sides are pre-allocated, but these are **not** checked for validity. If you choose an invalid combination, Tabbycat will just crash. This won't corrupt the database, but it might be momentarily annoying." +msgstr "" + +#: ../../features/draw-generation.rst:67 +msgid "The big picture" +msgstr "" + +#: ../../features/draw-generation.rst:68 +msgid "When generating a power-paired draw, Tabbycat goes through five steps:" +msgstr "" + +#: ../../features/draw-generation.rst:70 +msgid "First, it divides teams into \"raw brackets\", grouping them by the number of wins." +msgstr "" + +#: ../../features/draw-generation.rst:71 +msgid "Second, it resolves odd brackets, applying the odd brackets rule to make sure there is an even number of teams in each bracket. This is often called \"pulling up\" teams." +msgstr "" + +#: ../../features/draw-generation.rst:72 +msgid "Third, within each bracket, it pairs teams into debates using the pairing method." +msgstr "" + +#: ../../features/draw-generation.rst:73 +msgid "Fourth, if enabled, it adjusts pairings to avoid history or institution conflicts." +msgstr "" + +#: ../../features/draw-generation.rst:74 +msgid "Finally, it assigns sides to teams in each debate." +msgstr "" + +#: ../../features/draw-generation.rst:76 +msgid "For each of these steps except the first, Tabbycat allows you to choose between a number of different methods." +msgstr "" + +#: ../../features/draw-generation.rst:80 +msgid "Explanations of options" +msgstr "" + +#: ../../features/draw-generation.rst:85 +msgid "Odd bracket resolution" +msgstr "" + +#: ../../features/draw-generation.rst:86 +msgid "The **draw odd brackets** option specifies what you do when a bracket has an odd number of teams. (Obviously you have to do something, otherwise you can't pair off teams within the bracket.) There are two groups of methods: pull-up and intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:90 +msgid "**Pull-up methods** take one or more teams from the next bracket down, and move them into the odd bracket to fill the bracket." +msgstr "" + +#: ../../features/draw-generation.rst:92 +msgid "**Intermediate brackets** take the excess teams from the odd bracket and move them down into a new bracket, which sits between the odd bracket and the next one down (the \"intermediate bracket\"). It then takes teams from the next bracket down and moves them up to fill the new intermediate bracket." +msgstr "" + +#: ../../features/draw-generation.rst:94 +msgid "The exact mechanics depend on whether or not sides are pre-allocated." +msgstr "" + +#: ../../features/draw-generation.rst:97 +msgid "When sides are not pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:101 +msgid "**Pull-up methods:** Take a team from the next bracket down, and add them to the odd bracket to form an even bracket. You can choose to pull up the top team from the next bracket, or the bottom team, or the middle team, or a randomly chosen team. (If you pull up the middle team, and the bracket has an even number of teams, then it will choose randomly from the two middle teams.)" +msgstr "" + +#: ../../features/draw-generation.rst:103 +msgid "**Intermediate brackets:** Take the bottom team from the odd bracket and match them against the top team from the next bracket. An intermediate bracket always has two teams." +msgstr "" + +#: ../../features/draw-generation.rst:105 +msgid "If you're using conflict avoidance and intermediate brackets, you will probably want to use **Intermediate with bubble-up-bubble-down** instead. This uses the \"bubble-up-bubble-down\" rule to swap teams out of an intermediate bracket if there is a history or institution conflict. This is defined in the Australs constitution and is analogous to the \"one-up-one-down\" rule." +msgstr "" + +#: ../../features/draw-generation.rst:107 +msgid "Using `Intermediate` with `One-up-one-down` does **not** imply `Intermediate with bubble-up-bubble-down`. You must enable `Intermediate with bubble-up-bubble-down` specifically." +msgstr "" + +#: ../../features/draw-generation.rst:110 +msgid "When sides are pre-allocated" +msgstr "" + +#: ../../features/draw-generation.rst:111 +msgid "When sides are pre-allocated, an \"odd bracket\" is one that has an uneven number of affirmative and negative teams. (So odd brackets can have an even number of teams, *e.g.* 4 affs and 2 negs.)" +msgstr "" + +#: ../../features/draw-generation.rst:115 +msgid "**Pull-up methods:** Take as many teams from the next bracket down as necessary to fill the bracket. If there aren't enough teams in the next bracket down, take teams from the bracket after that, and so on, until the (original) odd bracket is filled. Higher brackets are always filled first. You can choose to pull up the top teams from the next bracket, the bottom teams, or a random selection of teams." +msgstr "" + +#: ../../features/draw-generation.rst:117 +msgid "**Intermediate brackets:** Take the unpaired teams in a bracket, and move them down to a new intermediate bracket. Then, take the number of teams necessary from the opposite side, from the next bracket down, to fill the next bracket." +msgstr "" + +#: ../../features/draw-generation.rst:119 +msgid "**Intermediate 1** and **Intermediate 2** differ only in what happens if there aren't enough teams in the next bracket to fill the intermediate bracket. In **Intermediate 1**, it will just take teams from the bracket after that, and so on, until the intermediate bracket is filled. In **Intermediate 2**, it will split the intermediate bracket: the teams that can be paired with the next bracket form the first intermediate bracket, and then the teams that aren't form a new (unfilled) intermediate bracket, to be filled from teams from the bracket after that. This keeps going, splitting into as many intermediate brackets as necessary, until all excess teams from the original odd bracket are paired." +msgstr "" + +#: ../../features/draw-generation.rst:124 +msgid "Side allocations" +msgstr "" + +#: ../../features/draw-generation.rst:125 +msgid "There are four methods:" +msgstr "" + +#: ../../features/draw-generation.rst:129 +msgid "**Random** allocates randomly. Some tournaments might like this, but most will probably want to use Balance, because Random doesn't guarantee that a team won't be (say) affirming the entire tournament." +msgstr "" + +#: ../../features/draw-generation.rst:130 +msgid "**Balance** assigns the team that has affirmed less so far the affirmative side (and, therefore, the team that has negated less the negative side). If both teams have affirmed the same number of times, it assigns sides randomly." +msgstr "" + +#: ../../features/draw-generation.rst:131 +msgid "**Preallocated** is used for pre-allocated sides. If used, you must enter data for pre-allocated sides into the database, as specified below." +msgstr "" + +#: ../../features/draw-generation.rst:132 +msgid "**Manually enter from ballot** is used for tournaments where the sides of the teams involved are not assigned in advance, but are instead determined by the teams themselves" +msgstr "" + +#: ../../features/draw-generation.rst:135 +msgid "Pre-allocated sides" +msgstr "" + +#: ../../features/draw-generation.rst:136 +msgid "There isn't currently any way to edit side allocations from the front end. To do so from the back end, you need to create one ``TeamPositionAllocation`` entry for each team in each round. All teams must have an allocation for every round. There are a few ways to do this, take your pick:" +msgstr "" + +#: ../../features/draw-generation.rst:140 +msgid "If you're using the :ref:`importtournament command `, it reads sides from the file sides.csv." +msgstr "" + +#: ../../features/draw-generation.rst:141 +msgid "You can do this from the Django admin interface (under Setup > Edit Database) by going to the relevant team and adding a **team position allocation** entry. That is:" +msgstr "" + +#: ../../features/draw-generation.rst:143 +msgid "Click **Admin** on the bottom right of any page after logging into an account with :ref:`superuser access `." +msgstr "" + +#: ../../features/draw-generation.rst:144 +msgid "Next to **Teams**, click **Change**." +msgstr "" + +#: ../../features/draw-generation.rst:145 +msgid "Click on the name of the team you want to edit side allocations for." +msgstr "" + +#: ../../features/draw-generation.rst:146 +msgid "Add or edit the entry or entries in the **Team position allocations** table at the bottom." +msgstr "" + +#: ../../features/draw-generation.rst:148 +msgid "You can also do this by writing a script that creates ``TeamPositionAllocation`` objects and saves them. Have a look at `draw/management/commands/generatesideallocations.py `_ for an example." +msgstr "" + +#: ../../features/draw-generation.rst:153 +msgid "Pairing method" +msgstr "" + +#: ../../features/draw-generation.rst:154 +msgid "It's easiest to describe these by example, using a ten-team bracket:" +msgstr "" + +#: ../../features/draw-generation.rst:156 +msgid "**Fold**: 1 vs 10, 2 vs 9, 3 vs 8, 4 vs 7, 5 vs 6. (Also known as high-low pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:157 +msgid "**Slide**: 1 vs 6, 2 vs 7, 3 vs 8, 4 vs 9, 5 vs 10." +msgstr "" + +#: ../../features/draw-generation.rst:158 +msgid "**Adjacent**: 1 vs 2, 3 vs 4, 5 vs 6, 7 vs 8, 9 vs 10. (Also known as high-high pairing.)" +msgstr "" + +#: ../../features/draw-generation.rst:159 +msgid "**Random**: paired at random within bracket." +msgstr "" + +#: ../../features/draw-generation.rst:161 +msgid "Teams are always paired within their brackets, after resolving odd brackets." +msgstr "" + +#: ../../features/draw-generation.rst:166 +msgid "Conflict avoidance method" +msgstr "" + +#: ../../features/draw-generation.rst:167 +msgid "A **conflict** is when two teams would face each other that have seen each other before, or are from the same institutions. Some tournaments have a preference against allowing this if it's avoidable within certain limits. The **draw avoid conflicts** option allows you to specify how." +msgstr "" + +#: ../../features/draw-generation.rst:169 +msgid "You can turn this off by using **Off**. Other than this, there is currently one conflict avoidance method implemented." +msgstr "" + +#: ../../features/draw-generation.rst:171 +msgid "**One-up-one-down** is the method specified in the Australs constitution. Broadly speaking, if there is a debate with a conflict:" +msgstr "" + +#: ../../features/draw-generation.rst:173 +msgid "It tries to swap teams with the debate \"one up\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:174 +msgid "If that doesn't work, it tries to swap teams with the debate \"one down\" from it in the draw." +msgstr "" + +#: ../../features/draw-generation.rst:175 +msgid "If neither of those works, it accepts the original conflicted debate." +msgstr "" + +#: ../../features/draw-generation.rst:177 +msgid "It's a bit more complicated than that, for two reasons:" +msgstr "" + +#: ../../features/draw-generation.rst:181 +msgid "History conflicts are prioritised over (*i.e.*, \"worse than\") institution conflicts. So it's fine to resolve a history conflict by creating an institution conflict, but not the vice versa." +msgstr "" + +#: ../../features/draw-generation.rst:182 +msgid "Each swap obviously affects the debates around it, so it's not legal to have two adjacent swaps. (Otherwise, in theory, a team could \"one down\" all the way to the bottom of the draw!) So there is an optimization algorithm that finds the best combination of swaps, *i.e.* the one that minimises conflict, and if there are two profiles that have the same least conflict, then it chooses the one with fewer swaps." +msgstr "" + +#: ../../features/draw-generation.rst:187 +msgid "Pullup restriction" +msgstr "" + +#: ../../features/draw-generation.rst:188 +msgid "You can restrict which teams can be pulled up by configuring the draw generator to choose a pullup team from among only those teams who are the \"best off\" according to a given metric. If several teams are equally \"best off\" within the lower bracket, the draw generator chooses among them using the same **pull-up method** already specified (*e.g.*, \"pull up from top\")" +msgstr "" + +#: ../../features/draw-generation.rst:192 +msgid "You can **choose from teams who have been pulled up the fewest times so far**, that is, in rounds before the current round. Most of the time, this is equivalent to saying that a team cannot be pulled up more than once. But if *all* teams in a bracket have been pulled up at least once, it then chooses from among teams who have been pulled up *only* once (if any), and so on." +msgstr "" + +#: ../../features/draw-generation.rst:194 +msgid "You can **choose from teams with the lowest draw strength so far**, by **wins** or **speaks**." +msgstr "" + +#: ../../features/draw-generation.rst:196 +msgid "If you choose speaks, it's unlikely that two teams will have the same draw strength by speaks, so most of the time this will just choose the team in the lower bracket that's had the easiest draw so far (as measured by their opponents' speaker scores)." +msgstr "" + +#: ../../features/draw-generation.rst:198 +msgid "Pullup restrictions only apply when the :ref:`odd bracket resolution method ` is a pullup method. They have no effect on intermediate brackets." +msgstr "" + +#: ../../features/draw-generation.rst:201 +msgid "What do I do if the draw looks wrong?" +msgstr "" + +#: ../../features/draw-generation.rst:203 +msgid "You can edit match-ups directly from the draw page. Functionally, you can do anything you want. Of course, operationally, you should only edit the draw when you *know* that the draw algorithm got something wrong. If you need to do this, even just once, please file a bug report by creating a new issue on `our issues page on GitHub `_." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/notifications.po b/docs/locale/vi/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..92166de129c --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/notifications.po @@ -0,0 +1,257 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: vi_VN\n" + +#: ../../features/notifications.rst:3 +msgid "Sending Notifications" +msgstr "" + +#: ../../features/notifications.rst:5 +msgid "Tabbycat offers integrations with email delivery services to send notifications to participants on certain enumerated events. For sending these emails, `SendGrid `_ is readily available as an add-on in Heroku. It may be necessary to install the `SendGrid add-on `_ manually. Other integrations may also be used in its place by changing the relevant environment variables." +msgstr "" + +#: ../../features/notifications.rst:8 +msgid "Events" +msgstr "" + +#: ../../features/notifications.rst:10 +msgid "Tabbycat includes a number of templated notifications that can be sent in various times. Variables which are included between curly brackets which are substituted for personalized information passed by email. Links to email will redirect to a page where the message can be changed and the participants selected." +msgstr "" + +#: ../../features/notifications.rst:12 +msgid "All emails have the ``{{ USER }}`` and ``{{ TOURN }}`` variables to indicate who the email is sent to, and the tournament it relates to. The \"From\" in the emails will also be the tournament's name." +msgstr "" + +#: ../../features/notifications.rst:17 +msgid "Email content and description" +msgstr "" + +#: ../../features/notifications.rst:18 +msgid "Variables" +msgstr "" + +#: ../../features/notifications.rst:20 +msgid "**Adjudicator draw notification**" +msgstr "" + +#: ../../features/notifications.rst:22 +msgid "Email to adjudicators indicating their room assignment." +msgstr "" + +#: ../../features/notifications.rst:24 ../../features/notifications.rst:36 +#: ../../features/notifications.rst:74 +msgid "Available through the admin draw page." +msgstr "" + +#: ../../features/notifications.rst:25 ../../features/notifications.rst:37 +msgid "``{{ ROUND }}``: The round name" +msgstr "" + +#: ../../features/notifications.rst:26 ../../features/notifications.rst:38 +msgid "``{{ VENUE }}``: The venue of the assigned debate" +msgstr "" + +#: ../../features/notifications.rst:27 ../../features/notifications.rst:39 +msgid "``{{ PANEL }}``: A list of all the adjudicators assigned to the venue (with positions)" +msgstr "" + +#: ../../features/notifications.rst:28 ../../features/notifications.rst:40 +msgid "``{{ DRAW }}``: A list of the team matchup with their roles" +msgstr "" + +#: ../../features/notifications.rst:29 +msgid "``{{ POSITION }}``: The target adjudicator's position in the panel" +msgstr "" + +#: ../../features/notifications.rst:30 +msgid "``{{ URL }}``: A link to the adjudicator's private URL page" +msgstr "" + +#: ../../features/notifications.rst:32 +msgid "**Team draw notification**" +msgstr "" + +#: ../../features/notifications.rst:34 +msgid "Email to teams indicating their pairing." +msgstr "" + +#: ../../features/notifications.rst:41 +msgid "``{{ TEAM }}``: The team's code or short name" +msgstr "" + +#: ../../features/notifications.rst:42 +msgid "``{{ SIDE }}``: The team's side" +msgstr "" + +#: ../../features/notifications.rst:44 +msgid "**Private URL distribution**" +msgstr "" + +#: ../../features/notifications.rst:46 +msgid "Email to participants giving them their private URL for electronic forms." +msgstr "" + +#: ../../features/notifications.rst:48 +msgid "Available through the private URLs page." +msgstr "" + +#: ../../features/notifications.rst:49 +msgid "``{{ URL }}``: The personalized URL" +msgstr "" + +#: ../../features/notifications.rst:50 +msgid "``{{ KEY }}``: The private code in the URL" +msgstr "" + +#: ../../features/notifications.rst:52 +msgid "**Ballot submission receipt**" +msgstr "" + +#: ../../features/notifications.rst:54 +msgid "Email to adjudicators of their ballot after tabroom confirmation." +msgstr "" + +#: ../../features/notifications.rst:56 +msgid "Sent automatically when their ballot's result status becomes confirmed, if enabled in the \"Notifications\" section of the tournament options." +msgstr "" + +#: ../../features/notifications.rst:58 +msgid "``{{ DEBATE }}``: The name (with round & venue) of the relevent debate" +msgstr "" + +#: ../../features/notifications.rst:59 +msgid "``{{ SCORES }}``: The submitted ballot with speaker scores ands team names" +msgstr "" + +#: ../../features/notifications.rst:61 +msgid "**Current team standings**" +msgstr "" + +#: ../../features/notifications.rst:63 +msgid "Email to speakers with their point total." +msgstr "" + +#: ../../features/notifications.rst:65 +msgid "Available through the \"Confirm Round Completion\" page." +msgstr "" + +#: ../../features/notifications.rst:66 +msgid "``{{ URL }}``: The URL of the team standings page (if public)" +msgstr "" + +#: ../../features/notifications.rst:67 +msgid "``{{ TEAM }}``: The team's name" +msgstr "" + +#: ../../features/notifications.rst:68 +msgid "``{{ POINTS }}``: The team's number of points" +msgstr "" + +#: ../../features/notifications.rst:70 +msgid "**Motion release**" +msgstr "" + +#: ../../features/notifications.rst:72 +msgid "Email to speakers with the motion(s) of the current round." +msgstr "" + +#: ../../features/notifications.rst:75 +msgid "``{{ ROUND }}``: The name of the round" +msgstr "" + +#: ../../features/notifications.rst:76 +msgid "``{{ MOTIONS }}``: A list of the motions released" +msgstr "" + +#: ../../features/notifications.rst:78 +msgid "**Team information**" +msgstr "" + +#: ../../features/notifications.rst:80 +msgid "Email to speakers with information pertaining to their team, such as eligibility and codes." +msgstr "" + +#: ../../features/notifications.rst:82 +msgid "Available through the Participants page." +msgstr "" + +#: ../../features/notifications.rst:83 +msgid "``{{ SHORT }}``: The team's short name" +msgstr "" + +#: ../../features/notifications.rst:84 +msgid "``{{ LONG }}``: The team's long name" +msgstr "" + +#: ../../features/notifications.rst:85 +msgid "``{{ CODE }}``: The team's code name" +msgstr "" + +#: ../../features/notifications.rst:86 +msgid "``{{ EMOJI }}``: The team's assigned emoji" +msgstr "" + +#: ../../features/notifications.rst:87 +msgid "``{{ DIVISION }}``: The team's division if applicable" +msgstr "" + +#: ../../features/notifications.rst:88 +msgid "``{{ BREAK }}``: Break categories which the team is a member" +msgstr "" + +#: ../../features/notifications.rst:89 +msgid "``{{ SPEAKERS }}``: A list of the speakers in the team" +msgstr "" + +#: ../../features/notifications.rst:90 +msgid "``{{ INSTITUTION }}``: The team's affiliation" +msgstr "" + +#: ../../features/notifications.rst:93 +msgid "Event Webhook" +msgstr "" + +#: ../../features/notifications.rst:95 +msgid "With SendGrid, the status of sent emails can be sent to Tabbycat to be displayed, giving an indication of failures and whether participants have opened the messages. To activate this feature, setup must be done both in your SendGrid account and in Tabbycat." +msgstr "" + +#: ../../features/notifications.rst:97 +msgid "Set a secret key in the Email section of the tournament's preferences. This key must be alphanumeric without any spaces." +msgstr "" + +#: ../../features/notifications.rst:98 +msgid "Copy the \"web-hook\" link presented in a box at the top of the \"email participants\" page." +msgstr "" + +#: ../../features/notifications.rst:99 +msgid "Go to https://app.sendgrid.com/settings/mail_settings and select \"Event Notifications\"" +msgstr "" + +#: ../../features/notifications.rst:100 +msgid "Enable the feature and paste the Tabbycat URL under \"HTTP POST URL\"." +msgstr "" + +#: ../../features/notifications.rst:101 +msgid "Select the notifications to keep track (or all of them)." +msgstr "" + +#: ../../features/notifications.rst:103 +msgid "Each email and change in status sent to Tabbycat will add a row to the database. If the number of rows is limited, as is for free Heroku apps, enabling the webhook may use up a significant number of rows. Be selective in the events to keep track." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/preformed-panels.po b/docs/locale/vi/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..daa86eff377 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/preformed-panels.po @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-27 04:16\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: vi_VN\n" + +#: ../../features/preformed-panels.rst:5 +msgid "Preformed Panels" +msgstr "Bàn giám khảo chỉ định" + +#: ../../features/preformed-panels.rst:7 +msgid "Preformed panels, also known as a 'shadow draw', allow adjudicator panels to be created *before* a round has been drawn and then applied once its draw is ready. This means that panel formation can be done during periods outside the normal time pressure of finalising a draw for release. This can save a lot of time at large tournaments, or at tournaments where the adjudication core wants to carefully control the specific combination of adjudicators within panels." +msgstr "" + +#: ../../features/preformed-panels.rst:9 +msgid "Tabbycat's implementation of preformed panels is more powerful, but less simple, than many others. The chief difference is that our workflow does not simply transpose a linear set of preformed panels atop a draw. Instead we employ Tabbycat's existing allocation tools, primarily the notion of a debate's *priority*, to allow for a non-linear matching of preformed panels that avoids adjudicator conflicts and better adapts to a given draw — particularly when the most important debates do not strictly follow the highest debate brackets." +msgstr "" + +#: ../../features/preformed-panels.rst:11 +msgid "The central concept is that each preformed panel has a priority value. When applying preformed panels to a draw, the allocator ties to best match the priority value of each preformed panel to the priority of each actual debate. This is similar to how Tabbycat's normal auto-allocator matches the strength of each panel (as measured by adjudicators' ratings) to the priority of each debate." +msgstr "" + +#: ../../features/preformed-panels.rst:14 +msgid "Step 1: Create preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:16 +msgid "You can find the preformed panels section either" +msgstr "" + +#: ../../features/preformed-panels.rst:18 +msgid "under the **Setup** menu (for all rounds), or" +msgstr "" + +#: ../../features/preformed-panels.rst:19 +msgid "on the **Draw** page (for the current and next round)." +msgstr "" + +#: ../../features/preformed-panels.rst:21 +msgid "Initially, the preformed panels page will have no panels. Click the **Create Panels** button in the top left to make some. The panels it creates are based upon a projection of that round's general results using the results of the previous round. As a result, each preformed panel will have a *bracket range*, the lowest and highest brackets that debate might be in, and a *liveness range*, the maximum number of teams that could be live in that room." +msgstr "" + +#: ../../features/preformed-panels.rst:25 +msgid "Like the normal adjudicator allocation interface, the preformed panel interfaces will indicate when an adjudicator has not been marked as available. If using preformed panels, you may want to set adjudicator availability earlier than you would otherwise." +msgstr "" + +#: ../../features/preformed-panels.rst:27 +msgid "Liveness in the anticipated draw only pertains to the open category (the first break category that is marked as a \"general\" category). It's not possible to meaningfully predict where teams open-dead but live in other categories will end up." +msgstr "" + +#: ../../features/preformed-panels.rst:30 +msgid "Step 2: Assign priorities to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:32 +msgid "By default the priority slider for all preformed panels is in the neutral position. You can use the \"Prioritise\" button in the top left to assign priority values automatically, based upon their brackets or liveness. Before or after this step you can alter the priorities as usual — even after you have allocated adjudicators." +msgstr "" + +#: ../../features/preformed-panels.rst:34 +msgid "It's important to remember to assign a range of priorities to the panels. Without distinct priority values, the application of your preformed panels to the actual draw will be essentially random. If allocating priorities manually, it is a good idea to keep a relatively even distribution of priorities — use the range!" +msgstr "" + +#: ../../features/preformed-panels.rst:36 +msgid "In Round 1, each debate has a liveness and bracket of 0. If you are using preformed panels in this instance you may need to manually-differentiate their priorities." +msgstr "" + +#: ../../features/preformed-panels.rst:39 +msgid "Step 3: Allocate adjudicators to preformed panels" +msgstr "" + +#: ../../features/preformed-panels.rst:43 +msgid "Now that your panels have a priority, you can begin allocating adjudicators. You can do this manually, but do note that the normal auto-allocator for adjudicators also works in this context (the \"Allocate\" button). Even if you want to tweak your panels extensively, the auto-allocator can provide a good first-pass collection of panels, because it will give stronger adjudicators to the panels that you have marked as important." +msgstr "" + +#: ../../features/preformed-panels.rst:45 +msgid "The created panels all auto-save, so you can leave the page and return to pick up where you left. Like the main allocation interface, changes should appear 'live' across different computers and the sharding system is available to divide up each person's view of the draw." +msgstr "" + +#: ../../features/preformed-panels.rst:48 +msgid "Step 4: Generate the draw" +msgstr "" + +#: ../../features/preformed-panels.rst:50 +msgid "Proceed with the creation of the draw as usual. Open up the normal adjudicator allocation page for that round." +msgstr "" + +#: ../../features/preformed-panels.rst:53 +msgid "Step 5: Assign priorities to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:55 +msgid "When allocating preformed panels, the priority levels are what connects the preformed panels to the actual debates. It is thus crucial that you assign priorities to the debates in the actual draw using automatic prioritisation or the manual sliders. Because the automatic prioritiser does not employ the highest priority value, it is worth having a look at the draw and seeing if any debates justify this before proceeding." +msgstr "" + +#: ../../features/preformed-panels.rst:58 +msgid "Step 6: Allocate preformed panels to debates" +msgstr "" + +#: ../../features/preformed-panels.rst:60 +msgid "To allocate preformed panels to your debates, click the normal \"Allocate\" button and then select the *Preformed Panels* option." +msgstr "" + +#: ../../features/preformed-panels.rst:64 +msgid "This will then allocate the preformed panels to debates." +msgstr "" + +#: ../../features/preformed-panels.rst:68 +msgid "You can the edit the allocation as normal. If needed, you can redo the allocation of the preformed panels at any point." +msgstr "" + +#: ../../features/preformed-panels.rst:71 +msgid "How does the allocator work?" +msgstr "" + +#: ../../features/preformed-panels.rst:73 +msgid "Roughly speaking, the allocator tries to match panel priorities to debate priorities, while avoiding conflicts. It'll mostly try to swap panels within priority levels in order to avoid conflicts. If there aren't exactly as many panels at each priority level as there are debates, it'll do its best to match what it can." +msgstr "" + +#: ../../features/preformed-panels.rst:75 +msgid "More formally, it treats the allocation of preformed panels to debates as an `assignment problem `_, with a cost of assigning each panel :math:`p` to each debate :math:`d` given by" +msgstr "" + +#: ../../features/preformed-panels.rst:77 +msgid "C(p,d) = w_\\mathrm{mism} [\\mathrm{importance}(p) - \\mathrm{importance(d)}]^2 + w_\\mathrm{conf} \\, \\mathrm{conflicts}(p,d) + w_\\mathrm{hist} \\, \\mathrm{history}(p,d)" +msgstr "" + +#: ../../features/preformed-panels.rst:81 +msgid "where" +msgstr "" + +#: ../../features/preformed-panels.rst:83 +msgid ":math:`w_\\mathrm{mism}` is the \"Importance mismatch penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:84 +msgid ":math:`w_\\mathrm{hist}` is the \"Adjudicator conflict penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:85 +msgid ":math:`w_\\mathrm{conf}` is the \"Adjudicator history penalty\" in the \"Draw rules\" settings," +msgstr "" + +#: ../../features/preformed-panels.rst:86 +msgid ":math:`\\mathrm{importance}(p)` is the importance of panel :math:`p`," +msgstr "" + +#: ../../features/preformed-panels.rst:87 +msgid ":math:`\\mathrm{importance}(d)` is the importance of debate :math:`d`," +msgstr "" + +#: ../../features/preformed-panels.rst:88 +msgid ":math:`\\mathrm{conflicts}(p,d)` is the number of adjudicator-team conflicts between panel :math:`p` and debate :math:`d`, and" +msgstr "" + +#: ../../features/preformed-panels.rst:89 +msgid ":math:`\\mathrm{history}(p,d)` is the number of adjudicators and teams who have seen each other between panel :math:`p` and debate :math:`d`." +msgstr "" + +#: ../../features/preformed-panels.rst:91 +msgid "It then uses the `Hungarian algorithm `_ to find the assignment of panels to debates that minimizes the total cost of the pairings." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/printing.po b/docs/locale/vi/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..4de17d1477e --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/printing.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: vi_VN\n" + +#: ../../features/printing.rst:3 +msgid "Printing Ballots and Feedback" +msgstr "" + +#: ../../features/printing.rst:5 +msgid "Tabbycat offers the ability to print scoresheets and feedback sheets on a per-round basis. This means that each scoresheet is customised to match the draw, and so will display:" +msgstr "" + +#: ../../features/printing.rst:7 +msgid "The motion or possible motions that could have been chosen from" +msgstr "" + +#: ../../features/printing.rst:8 +msgid "The teams, and a list of speakers for each team" +msgstr "" + +#: ../../features/printing.rst:9 +msgid "The room number, and name of the adjudicators present" +msgstr "" + +#: ../../features/printing.rst:11 +msgid "Feedback sheets will also be customised in this manner; displaying:" +msgstr "" + +#: ../../features/printing.rst:13 +msgid "A 'from' source. Sheet will be printed for each possible piece of feedback in that room: ie adjudicators will each get a sheet for their panellists and trainees while teams and panellists will get sheets for the chair." +msgstr "" + +#: ../../features/printing.rst:14 +msgid "The specific questions you established when configuring the :ref:`adjudicator feedback questions `" +msgstr "" + +#: ../../features/printing.rst:15 +msgid "The room number" +msgstr "" + +#: ../../features/printing.rst:17 +msgid "To print the ballots for each round, you would go to the **Display** page for that round, the click one of the two relevant print links. This opens a new window. In each window, you then use your browser's print function (CTRL-P). In the resulting print interface (from your browser) you'll want to turn background graphics on, header/footers off, and set the layout to portrait (feedback sheets) or landscape (score sheets)." +msgstr "" + +#: ../../features/printing.rst:19 +msgid "Typically you'd save these to PDF for printing, although you should be able to print straight from this dialogue box." +msgstr "" + +#: ../../features/printing.rst:21 +msgid "Printing works best in Safari and Firefox; use those if possible." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/standings-rules.po b/docs/locale/vi/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..dfa76ee7534 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/standings-rules.po @@ -0,0 +1,272 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2023-03-25 13:46\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: vi_VN\n" + +#: ../../features/standings-rules.rst:5 +msgid "Standings Rules" +msgstr "" + +#: ../../features/standings-rules.rst:8 +msgid "Team standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:10 +msgid "In Tabbycat, you can choose how teams are ranked in the team standings. For example, at Australs, teams are ranked first on the number of wins, and second on their total speaker score. The setting that specifies how teams are ranked is called the **team standings precedence**. The team standings precedence is used:" +msgstr "" + +#: ../../features/standings-rules.rst:15 +msgid "When displaying the team tab," +msgstr "" + +#: ../../features/standings-rules.rst:16 +msgid "Whenever a power-paired draw is generated, and" +msgstr "" + +#: ../../features/standings-rules.rst:17 +msgid "When computing which teams are in the break." +msgstr "" + +#: ../../features/standings-rules.rst:19 +msgid "When you choose the team standings precedence, you choose from a list of *metrics*. Then, in the standings, teams will be sorted first by the first metric, then by the second metric, and so on. You must choose at least one metric, and you can choose up to eight. Teams tied on all metrics will have the same rank." +msgstr "" + +#: ../../features/standings-rules.rst:25 +msgid "If you like, you can also choose **team standings extra metrics**, which are metrics that will be shown in the team standings, but not used to rank teams." +msgstr "" + +#: ../../features/standings-rules.rst:33 ../../features/standings-rules.rst:132 +msgid "Metric" +msgstr "" + +#: ../../features/standings-rules.rst:34 ../../features/standings-rules.rst:133 +msgid "Description" +msgstr "" + +#: ../../features/standings-rules.rst:36 +msgid "Wins" +msgstr "" + +#: ../../features/standings-rules.rst:37 +msgid "How many debates the team has won." +msgstr "" + +#: ../../features/standings-rules.rst:39 +msgid "Points" +msgstr "Điểm" + +#: ../../features/standings-rules.rst:40 +msgid "How many points the team has. For two-team formats, this is just a synonym for wins, and differs only in column labelling. For BP, this is 3 points for a first, 2 for a second, 1 for a third and 0 for a fourth." +msgstr "" + +#: ../../features/standings-rules.rst:44 +msgid "Total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:45 +msgid "The sum of all speaker scores attained in all debates." +msgstr "" + +#: ../../features/standings-rules.rst:47 +msgid "Average total speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:48 ../../features/standings-rules.rst:157 +msgid "The average total speaker score over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:51 +msgid "Average individual speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:52 +msgid "The total substantive speaker score, over all debates the team has had and the number of speakers. Provides an equivalent metric to average total speaker score in no-reply formats, but within the substantive speech scoring range." +msgstr "" + +#: ../../features/standings-rules.rst:57 +msgid "Speaker score standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:58 +msgid "The standard deviation of total speaker scores over all debates the team has had, not counting debates where they or their opponents forfeited. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:63 +msgid "Sum of margins" +msgstr "" + +#: ../../features/standings-rules.rst:64 +msgid "The sum of all margins. Wins are positive, losses are negative." +msgstr "" + +#: ../../features/standings-rules.rst:66 +msgid "Average margin" +msgstr "" + +#: ../../features/standings-rules.rst:67 +msgid "The average margin over all debates the team has had, not counting debates where they or their opponents forfeited." +msgstr "" + +#: ../../features/standings-rules.rst:70 +msgid "Draw strength by wins" +msgstr "" + +#: ../../features/standings-rules.rst:71 +msgid "The sum of the number of wins of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:73 +msgid "This is also known in some circuits as *win points*, *opponent wins* or *opponent strength*." +msgstr "" + +#: ../../features/standings-rules.rst:76 +msgid "Draw strength by speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:77 +msgid "The sum of speaker scores of every team this team has faced so far." +msgstr "" + +#: ../../features/standings-rules.rst:79 +msgid "Votes/ballots carried" +msgstr "" + +#: ../../features/standings-rules.rst:80 +msgid "The number of adjudicators that gave this team a win across all of their debates. Also known as the number of *ballots* or *judges* a team has." +msgstr "" + +#: ../../features/standings-rules.rst:83 +msgid "In cases where the panel is smaller or larger than 3, this number is normalised to be out of 3. For example, if a panel of five splits 3--2, then the winning team is recorded as gaining 1.8 votes, and the losing team is recorded as gaining 1.2. This also means that solo adjudicators are always worth three votes." +msgstr "" + +#: ../../features/standings-rules.rst:89 +msgid "Number of firsts" +msgstr "" + +#: ../../features/standings-rules.rst:90 +msgid "The number of debates in which the team came first. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:93 +msgid "Number of seconds" +msgstr "" + +#: ../../features/standings-rules.rst:94 +msgid "The number of debates in which the team came second. Only makes sense for British Parliamentary." +msgstr "" + +#: ../../features/standings-rules.rst:97 +msgid "Number of pullups before this round" +msgstr "" + +#: ../../features/standings-rules.rst:98 +msgid "The number of times the team has been pulled up as part of :ref:`draw generation `. You probably wouldn't use this as a metric to rank teams, but you may wish to display it as an \"extra metric\" in the team standings for transparency." +msgstr "" + +#: ../../features/standings-rules.rst:103 +msgid "Who-beat-whom" +msgstr "" + +#: ../../features/standings-rules.rst:104 +msgid "If there are exactly two teams tied on all metrics earlier in the precedence than this one, then check if the teams have faced each other. If they have, the team that won their encounter is ranked higher. If they have seen each other more than once, the team that has won more of their encounters is ranked higher." +msgstr "" + +#: ../../features/standings-rules.rst:110 +msgid "If there are more than two teams tied, this metric is not applied." +msgstr "" + +#: ../../features/standings-rules.rst:112 +msgid "This metric can be specified multiple times. Each time who-beat-whom occurs, it applies to all the metrics earlier in the precedence than the occurrence in question." +msgstr "" + +#: ../../features/standings-rules.rst:118 +msgid "Speaker standings rules" +msgstr "" + +#: ../../features/standings-rules.rst:120 +msgid "The speaker standings precedence is only used in speaker standings (*i.e.*, it doesn't affect the operation of the tournament). As for team standings, the **speaker standings precedence** specifies which metrics are used to rank speakers, with the second metric tie-breaking the first, the third tie-breaking the second, and so on. The **speaker standings extra metrics** are metrics that will be shown in the speaker standings, but won't be used to rank speakers." +msgstr "" + +#: ../../features/standings-rules.rst:135 +msgid "Total" +msgstr "" + +#: ../../features/standings-rules.rst:136 +msgid "The sum of all speaker scores attained by the speaker. Note that if a speaker misses a round, they'll typically be relegated to the bottom of the speaker standings by this metric." +msgstr "" + +#: ../../features/standings-rules.rst:140 +msgid "Average" +msgstr "" + +#: ../../features/standings-rules.rst:141 +msgid "The average of all speaker scores attained by the speaker." +msgstr "" + +#: ../../features/standings-rules.rst:143 +msgid "Trimmed mean" +msgstr "" + +#: ../../features/standings-rules.rst:144 +msgid "The average speaker score after excluding their highest and lowest speaker scores. Also known as the *high-low drop*, *truncated mean* or *Olympic average*." +msgstr "" + +#: ../../features/standings-rules.rst:148 +msgid "If the speaker has only one or two scores, this metric just returns the average of those scores, without excluding any." +msgstr "" + +#: ../../features/standings-rules.rst:151 +msgid "Standard deviation" +msgstr "" + +#: ../../features/standings-rules.rst:152 +msgid "The standard deviation of all speaker scores attained by the speaker. This metric is ranked in ascending order (smaller standard deviations ranked higher)." +msgstr "" + +#: ../../features/standings-rules.rst:156 +msgid "Average speaker score" +msgstr "" + +#: ../../features/standings-rules.rst:160 +msgid "Number of speeches given" +msgstr "" + +#: ../../features/standings-rules.rst:161 +msgid "The number of speaker scores associated with the speaker. (In tournaments where teams can rotate speakers, this may not be all rounds.) This metric is normally used as an \"extra\" (unranked) metric, because it'd be weird to rank by number of speeches given, but you can if you want to." +msgstr "" + +#: ../../features/standings-rules.rst:168 +msgid "Motion balance" +msgstr "" + +#: ../../features/standings-rules.rst:170 +msgid "The motion balance page applies a statistical test to estimate the degree to which a motion is imbalanced. This is calculated by first making an underlying assumption that a motion is generally fair. This will be our null hypothesis: that, for a given motion, affirmative teams won the same number of times as negative teams." +msgstr "" + +#: ../../features/standings-rules.rst:172 +msgid "Our chi-squared test will then be centred around disproving this hypothesis. If we disprove the hypothesis, we say that, in the context of this tournament and this draw, the motion ended up being unbalanced. However (technically speaking) if we fail to reject the null hypothesis, we would conclude that there is insufficient evidence to suggest that the motion was unbalanced in the context of this tournament." +msgstr "" + +#: ../../features/standings-rules.rst:174 +msgid "The test proceeds by `calculating the chi-squared stat, then running a series of tests `_. The tests are where we go a little off-book with respect to statistical methodology. Normally we would test at a single \"level of significance\" (ie. with a certain degree of certainty), but that's insufficient in telling us how bad a motion ended up being. So, instead, we conduct a range of tests with a range of levels of significance, and calculate the minimum level of significance that causes our null hypothesis to be rejected. Using the minimum level of significance that rejects our null hypothesis, we can then grade the fairness of the motion on a scale. Motions whose tests fall below a certain threshold will be considered fair, while others will be graded based on the minimum." +msgstr "" + +#: ../../features/standings-rules.rst:176 +msgid "For formats with topic selection, the same test is applied using the number of affirmative and negative vetoes in place of wins. The assumption here is that, during the time allotted for motion selection, teams estimate how appealing a motion is from their position, and then veto the topic that they feel is least favourable. Thus, the null hypothesis is that a motion that is perceived of as fair would be vetoed by affirmative and negative teams to an equal degree." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/team-code-names.po b/docs/locale/vi/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..e0589f38e93 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/team-code-names.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: vi_VN\n" + +#: ../../features/team-code-names.rst:5 +msgid "Team Code Names" +msgstr "" + +#: ../../features/team-code-names.rst:7 +msgid "Some tournaments use \"code names\" to obscure the institutional affiliations of teams. For example, rather than calling a team \"Harvard DK\", they would be presented in the draw as \"Butterfly\". A natural way to do this would be just to change the name of every team, but then the team's \"real name\" would be hidden from tournament staff, too." +msgstr "" + +#: ../../features/team-code-names.rst:13 +msgid "Instead, Tabbycat allows you to assign code names to teams, alongside their real names. This way, you can have code names show to participants, while real team names show in administrative views (*e.g.* allocating adjudicators). It also allows you to \"decode\" team names for elimination rounds or final tab release easily, without having to actually change every team's name." +msgstr "" + +#: ../../features/team-code-names.rst:19 +msgid "While the most frequently-used public views have been checked to ensure that they show only code names, not all views have been checked thoroughly. Please check views using demonstration data on a test site, configured in the same way that you would use it at your tournament, before using code names at a real tournament." +msgstr "" + +#: ../../features/team-code-names.rst:26 +msgid "Assigning code names" +msgstr "" + +#: ../../features/team-code-names.rst:28 +msgid "Most methods of importing teams, including the simple importer and the ``importtournament`` command, automatically assign code names to teams. The code name is the name of the emoji that is automatically assigned at the same time. For example, the team assigned 🦋 will be code-named \"Butterfly\"." +msgstr "" + +#: ../../features/team-code-names.rst:33 +msgid "If you wish to use your own code names, you need to set the \"code name\" field of each team. Here are two ways to do this:" +msgstr "" + +#: ../../features/team-code-names.rst:36 +msgid "**Edit Database area:** Enter the Edit Database area, and under **Participants > Teams**, click **Change**. Modify each team one by one, entering a new code name then saving." +msgstr "" + +#: ../../features/team-code-names.rst:39 +msgid "``importtournament`` **command:** If you imported a tournament from CSV files, you can just add a ``code_name`` column to your teams CSV file." +msgstr "" + +#: ../../features/team-code-names.rst:43 +msgid "Displaying code names" +msgstr "" + +#: ../../features/team-code-names.rst:45 +msgid "Code names are disabled by default; to enable then, go to **Setup > Configuration > Public Options**, and change the **Team code names** option. You can choose between the following options:" +msgstr "" + +#: ../../features/team-code-names.rst:49 +msgid "Do not use code names" +msgstr "" + +#: ../../features/team-code-names.rst:50 +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: ../../features/team-code-names.rst:51 +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:52 +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: ../../features/team-code-names.rst:53 +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: ../../features/team-code-names.rst:55 +msgid "\"Code names in tooltips\" means that the code name will display in the details box that appears when you roll over a team's name, and similarly for real names." +msgstr "" + +#: ../../features/team-code-names.rst:58 +msgid "One typical use is as follows:" +msgstr "" + +#: ../../features/team-code-names.rst:60 +msgid "Before the tournament, set the team code names setting to *Use code names for public; real names with code names in tooltips for admins*. This hides real names from anything participants would see, but continues to refer to teams in administrative views by real names." +msgstr "" + +#: ../../features/team-code-names.rst:64 +msgid "After the break is announced, set it to *Use real names everywhere, and show code names in tooltips*. This basically decodes all team names, while still allowing people to look up the (now former) code name of a team." +msgstr "" + +#: ../../features/team-code-names.rst:68 +msgid "If you're enabling team codes, you probably want to disable the **Show team institutions** option too." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/user-accounts.po b/docs/locale/vi/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..ea14fd68176 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/user-accounts.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: vi_VN\n" + +#: ../../features/user-accounts.rst:5 +msgid "User Accounts" +msgstr "" + +#: ../../features/user-accounts.rst:7 +msgid "For obvious reasons, user logins are required to data entry and administrative functions. Conceptually, there are four levels of access:" +msgstr "" + +#: ../../features/user-accounts.rst:14 +msgid "Access" +msgstr "" + +#: ../../features/user-accounts.rst:15 +msgid "Should be used by" +msgstr "" + +#: ../../features/user-accounts.rst:16 +msgid "Grants access to" +msgstr "" + +#: ../../features/user-accounts.rst:17 +msgid "Is capable of" +msgstr "" + +#: ../../features/user-accounts.rst:19 +msgid "Public" +msgstr "" + +#: ../../features/user-accounts.rst:20 +msgid "The public" +msgstr "" + +#: ../../features/user-accounts.rst:21 +msgid "Publicly available information." +msgstr "" + +#: ../../features/user-accounts.rst:22 +msgid "Viewing things, and submitting new ballots/feedback if electronic submission is permitted by the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:24 +msgid "Assistant" +msgstr "" + +#: ../../features/user-accounts.rst:25 +msgid "Data entry helpers" +msgstr "" + +#: ../../features/user-accounts.rst:26 +msgid "The assistant area" +msgstr "" + +#: ../../features/user-accounts.rst:27 +msgid "Entering, confirming and printing ballots and feedback, checking in ballots and people, and displaying the draw." +msgstr "" + +#: ../../features/user-accounts.rst:29 +msgid "Superuser" +msgstr "" + +#: ../../features/user-accounts.rst:30 +msgid "Chief adjudicators" +msgstr "" + +#: ../../features/user-accounts.rst:31 +msgid "The administrator and assistant areas" +msgstr "" + +#: ../../features/user-accounts.rst:32 +msgid "Generating draws, allocating adjudicators and venues, and editing ballots, feedback and adjudicator scores." +msgstr "" + +#: ../../features/user-accounts.rst:34 +msgid "Staff and superuser" +msgstr "" + +#: ../../features/user-accounts.rst:35 +msgid "Tab director" +msgstr "" + +#: ../../features/user-accounts.rst:36 +msgid "The administrator, assistant and Edit Database areas" +msgstr "" + +#: ../../features/user-accounts.rst:37 +msgid "Editing the database directly." +msgstr "" + +#: ../../features/user-accounts.rst:39 +msgid "If a user account on the tab system belongs to someone who is also a participant in the tournament (*e.g.*, a chief adjudicator), these two capacities are completely separate. User accounts are only used to regulate access to administrative functions. Tabbycat doesn't know about any relationship between user accounts, and who is participating in the tournament." +msgstr "" + +#: ../../features/user-accounts.rst:42 +msgid "Account roles" +msgstr "" + +#: ../../features/user-accounts.rst:44 +msgid "You should create an account for each person who needs to access the tab system. When you create an account in the Edit Database area, there are checkboxes for **Superuser status** and **Staff access**. Superusers have access to the administrator area, and staff have access to the Edit Database area. You should grant permissions as follows:" +msgstr "" + +#: ../../features/user-accounts.rst:46 +msgid "Tab directors should get both superuser and staff status." +msgstr "" + +#: ../../features/user-accounts.rst:47 +msgid "Chief adjudicators and their deputies should get superuser status, but not staff status." +msgstr "" + +#: ../../features/user-accounts.rst:48 +msgid "Tab assistants (helping only with data entry) should get neither superuser nor staff status." +msgstr "" + +#: ../../features/user-accounts.rst:50 +msgid "Tournament participants (other than tab staff) do not need an account. Everything they need to know can be accessed without an account. If you're using electronic ballots or electronic feedback, they access these using a URL that only they know (see :ref:`private-urls`)." +msgstr "" + +#: ../../features/user-accounts.rst:52 +msgid "When doing data entry, users with superuser status should use the **assistant area**. The administrator area is intended for managing the tournament, and doesn't include someand should **not** in general be used for data entry. Specifically, the administrator area lacks checks that are important for data integrity assurance. It should be used only to override the normal :ref:`data entry ` procedure, for example, to unconfirm or modify a ballot." +msgstr "" + +#: ../../features/user-accounts.rst:54 +msgid "The **Edit Database** interface should not be used except where it is actually necessary. There are a few functions which require this, but as a principle, it shouldn't be used as a matter of course." +msgstr "" + +#: ../../features/user-accounts.rst:56 +msgid "In theory, you could grant an account staff status but not superuser status. But then they'd be allowed to edit the database, but not run the tournament, which would be weird." +msgstr "" + +#: ../../features/user-accounts.rst:59 +msgid "Adding accounts" +msgstr "" + +#: ../../features/user-accounts.rst:61 +msgid "To add an account:" +msgstr "" + +#: ../../features/user-accounts.rst:63 +msgid "Go to the Edit Database area of the site." +msgstr "" + +#: ../../features/user-accounts.rst:65 +msgid "Under **Authentication and Authorization**, click the **Add** link next to **Users**." +msgstr "" + +#: ../../features/user-accounts.rst:67 +msgid "Ask the user to enter a username, password and possibly email address." +msgstr "" + +#: ../../features/user-accounts.rst:69 +msgid "Only they should know what the password is." +msgstr "" + +#: ../../features/user-accounts.rst:70 +msgid "If you're hosting on the internet, all passwords should be at least moderately strong!" +msgstr "" + +#: ../../features/user-accounts.rst:71 +msgid "Passwords are not stored as raw passwords, so you can't figure out what their password is." +msgstr "" + +#: ../../features/user-accounts.rst:72 +msgid "The email address is optional." +msgstr "" + +#: ../../features/user-accounts.rst:73 +msgid "This email address is only used to reset their password if they forget it, and has nothing to do with the email address that Tabbycat uses to send emails to tournament participants (*e.g.* private URL links)." +msgstr "" + +#: ../../features/user-accounts.rst:75 +msgid "If they are being assigned superuser and/or staff status, check the relevant boxes." +msgstr "" + +#: ../../features/user-accounts.rst:77 +msgid "Click \"Save\" or \"Save and add another\"." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/features/venue-constraints.po b/docs/locale/vi/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..f52b27a842f --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/features/venue-constraints.po @@ -0,0 +1,168 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: vi_VN\n" + +#: ../../features/venue-constraints.rst:5 +msgid "Venue Constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:7 +msgid "Tabbycat supports a basic form of venue constraints. A **venue constraint** is a requirement that a particular **team, adjudicator, institution** or **division** be assigned to a venue in a particular **venue category**. Typical uses would include:" +msgstr "" + +#: ../../features/venue-constraints.rst:12 +msgid "Meeting venue accessibility requirements of particular teams (*e.g.* step-free access)" +msgstr "" + +#: ../../features/venue-constraints.rst:14 +msgid "Placing adjudication core and tab team members close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:15 +msgid "Keeping all debates in a division in one location" +msgstr "" + +#: ../../features/venue-constraints.rst:17 +msgid "Constraints apply to **venue categories**, not individual venues. That is, you specify that (say) a team should be given a venue from a particular *list* of venues. Of course, it's permissible for a venue category to have only one venue in it." +msgstr "" + +#: ../../features/venue-constraints.rst:22 +msgid "The algorithm used to satisfy venue constraints is not guaranteed to be optimal. In some rare cases, it may propose an allocation that fails some constraints, even though some other allocation would have satisfied all (or more) constraints. In almost all practical circumstances, however, it should work, and save human effort (and time) in specially allocating rooms." +msgstr "" + +#: ../../features/venue-constraints.rst:29 +msgid "Adding venue categories" +msgstr "" + +#: ../../features/venue-constraints.rst:31 +msgid "Before you add venue constraints, you first need to add venue categories. Each venue category is a list of venues, typically satisfying a particular need. For example, you might have a category for each of the following:" +msgstr "" + +#: ../../features/venue-constraints.rst:35 +msgid "Venues with step-free access" +msgstr "" + +#: ../../features/venue-constraints.rst:36 +msgid "Venues that are close to general assembly (the briefing room)" +msgstr "" + +#: ../../features/venue-constraints.rst:37 +msgid "Venues that are close to the tab room" +msgstr "" + +#: ../../features/venue-constraints.rst:38 +msgid "Venues that are, or venues that are not, being live-streamed" +msgstr "" + +#: ../../features/venue-constraints.rst:40 +msgid "Each venue can be in as many categories as you like (or none at all)." +msgstr "" + +#: ../../features/venue-constraints.rst:44 +msgid "To add or edit venue categories, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Categories**. Note that this page will show all existing Venue Categories first before showing the blank forms that allow you to create new categories. Give your category a name (like \"Step-free access\"), assign it some venues, then click the \"Save Venue Categories\" button at the bottom of the page." +msgstr "" + +#: ../../features/venue-constraints.rst:47 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue categories\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:50 +msgid "Adding venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:52 +msgid "To add or edit venue constraints, go to the **Import Data** area (under Setup) then select **Add/Edit Venue Constraints**. Note that this page will show all existing Venue Constraints first before showing the blank forms that allow you to create new categories. Note that the \"Constrainee ID\" field should let you select from a dropdown or type in the name of an adjudicator, institution, or team (rather than having to lookup the exact ID)." +msgstr "" + +#: ../../features/venue-constraints.rst:57 +msgid "Alternately you can add or edit a venue category by going to the **Edit Database** area (under Setup), scroll down to \"Venues\" and click \"Venue constraints\". Then click the **+ Add venue category** button in the top-right of the page or click an existing item." +msgstr "" + +#: ../../features/venue-constraints.rst:59 +msgid "For each constraint, you need to specify four things:" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "**Category**" +msgstr "" + +#: ../../features/venue-constraints.rst:62 +msgid "The venue category to which the subject of this constraint should be locked." +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "**Priority**" +msgstr "" + +#: ../../features/venue-constraints.rst:65 +msgid "This is a number used to resolve conflicts between constraints. Constraints with higher priority (greater number) take precedence over those with lower priority. If none of your constraints will ever conflict, then the priority is arbitrary (but it must still be specified)." +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "**Subject content** **type**" +msgstr "" + +#: ../../features/venue-constraints.rst:72 +msgid "The type of subject to which this constraint relates: adjudicator, team, institution or division." +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "**Subject ID**" +msgstr "" + +#: ../../features/venue-constraints.rst:75 +msgid "Which adjudicator, team, institution or division the constraint relates to. The textbox takes a number (the ID of the object in the database), but you can search for the subject by clicking on the search icon next to it. This will bring up a table of objects of the type specified in \"subject content type\" for you to choose from. (You need to select the subject content type first.)" +msgstr "" + +#: ../../features/venue-constraints.rst:86 +msgid "Applying venue constraints" +msgstr "" + +#: ../../features/venue-constraints.rst:88 +msgid "If you don't have any venue constraints for adjudicators, venue constraints are applied automatically when the draw is generated." +msgstr "" + +#: ../../features/venue-constraints.rst:91 +msgid "However, if you have one or more venue constraints for adjudicators, it's not possible to take adjudicator venue constraints into account during draw generation, because the adjudicator allocation isn't known then. You'll need to run the venue allocation yourself after you've allocated adjudicators." +msgstr "" + +#: ../../features/venue-constraints.rst:96 +msgid "To run venue allocation, go to **Edit Venues** (while looking at the draw), then in the screen where you can edit venues, click the **Auto Allocate** button. You can also do this at any other point (say, after adding a new venue constraint) if, for whatever reason, you would like to re-run the venue allocation algorithm." +msgstr "" + +#: ../../features/venue-constraints.rst:102 +msgid "If a venue constraint couldn't be met, a message will show in the \"conflicts/flags\" column of the draw. A constraint might not be met for a number of reasons:" +msgstr "" + +#: ../../features/venue-constraints.rst:106 +msgid "It could be that constraints of different parties (say, one team and one adjudicator) conflicted, so only one could be fulfilled." +msgstr "" + +#: ../../features/venue-constraints.rst:108 +msgid "It could be that all available rooms in the relevant category were already taken by other, higher-priority constraints." +msgstr "" + +#: ../../features/venue-constraints.rst:110 +msgid "It could just be one of those edge cases that's too hard for the naïve algorithm to handle." +msgstr "" + +#: ../../features/venue-constraints.rst:113 +msgid "Currently, Tabbycat doesn't tell you which of these happened, so if the venue allocation fails to meet all your constraints, it's on you to figure out why. In most scenarios, we imagine you'll have few enough constraints that this will be obvious; for example, if the chief adjudicator is judging a team with accessibility requirements, it might be obvious that the latter's constraint took priority. We might in future add support for more useful guidance on conflicting constraints, but we currently consider this to be of low priority." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/guide/comparisons.po b/docs/locale/vi/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..c12ee2abd77 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/guide/comparisons.po @@ -0,0 +1,338 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: vi_VN\n" + +#: ../../guide/comparisons.rst:5 +msgid "Tab Software Comparisons" +msgstr "" + +#: ../../guide/comparisons.rst:7 +msgid "If you're reading this, you're probably interested in using Tabbycat, and wondering how it compares to other options. Perhaps you're a long-time user of another tab system, and wondering what Tabbycat can do better. This page is our effort to help answer this. Tabbycat's been around since 2010, but since BP support is a recent addition (2017), we thought it would be useful to outline the differences between Tabbycat and other BP software." +msgstr "" + +#: ../../guide/comparisons.rst:9 +msgid "Obviously, this page is written by the developers of Tabbycat, and naturally, we have our biases. But rarely is there a single best option for everyone and every situation: different tab programs imagine the tabbing process in a different ways and have made unique trade-offs in their development process and design decisions. So we've tried to be as fair and accurate as we can, and we've consulted experienced tab directors (other than us!) and chief adjudicators to help provide a balanced overview." +msgstr "" + +#: ../../guide/comparisons.rst:11 +msgid "At present, this guide just focuses on the major options available for the British Parliamentary format, although we'd like to expand this to incorporate the other formats that Tabbycat supports at some point in the future. As with all of our documentation, the source for this page `is on GitHub `_, and we welcome feedback and contributions." +msgstr "" + +#: ../../guide/comparisons.rst:14 +msgid "On feature lists" +msgstr "" + +#: ../../guide/comparisons.rst:16 +msgid "In the first draft of this document, we had a table that listed every feature we could think of, along with which software does and doesn't support it. This ended up not being a great idea, for a couple of reasons." +msgstr "" + +#: ../../guide/comparisons.rst:18 +msgid "Firstly, the largest feature disparities are for relatively niche features. All of the software discussed can do the basics necessary to run a tournament: generate draws, allocate adjudicators, enter results, etc. As a result, we will — like a good whip speech — be comparative and note key feature disparities when discussing each alternative software directly." +msgstr "" + +#: ../../guide/comparisons.rst:20 +msgid "Secondly, we felt that the 'checklist' approach to comparing tab software would do a disservice to the reasons you would actually choose one software over another. Except where a niche capability is essential, raw technical specifications rarely define the experience of using a product such as a phone, a car, or indeed, tabbing software. With Tabbycat, we've spent eight years continuously refining the tabbing workflow and smoothing out rough edges, and we believe you'll find the result extremely user-friendly and robust. As always, the best way to check this out is by :ref:`setting up a demo site and taking it for a spin `!" +msgstr "" + +#: ../../guide/comparisons.rst:23 +msgid "Comparison with Tabbie2" +msgstr "" + +#: ../../guide/comparisons.rst:26 +msgid "Centralised site vs individual sites" +msgstr "" + +#: ../../guide/comparisons.rst:28 +msgid "Tabbie2 and Tabbycat are both internet-based systems. Tabbie2 hosts all tournaments on a single site. However, when using Tabbycat, each tournament or organisation sets up its own site. Each model has its advantages and disadvantages in different areas:" +msgstr "" + +#: ../../guide/comparisons.rst:30 +msgid "**User identification**. Tabbie2's centralised model allows for site-wide user accounts for all tournament participants. This means that they can use the same login information for all tournaments, and perform tasks such as submitting ballots and feedback through that unified account. If you're in an established circuit, most of your participants probably already have user accounts which are identified and collected (via e-mail addresses) during registration. If you're in a newer circuit, or one where Tabbie2 is rarely used, most of your participants will probably need to create an account — a process which Tabbie2 handles by e-mailing them a request to do so when that person is added to your tournament." +msgstr "" + +#: ../../guide/comparisons.rst:32 +msgid "In Tabbycat's decentralised model, there is no persistent 'account' for tournament participants on each tab site or across different tab sites. Indeed, the only people who can log in to the site are those who have been given accounts by the tab director, such as tab staff and members of the adjudication core." +msgstr "" + +#: ../../guide/comparisons.rst:34 +msgid "For secure e-ballot and e-feedback submissions, Tabbycat assigns a \"private URL\" to each adjudicator or team. This is essentially a password that allows a participant to only submit data that they should have access to in that specific tournament. This means participants don't need user accounts and you don't need to collect user account information; however if your tournament uses e-ballots or e-feedback you will need to distribute those private URLs to participants. Tabbycat can e-mail these to participants for you, or print them to give them to participants, or you could distribute the URLs using your own means." +msgstr "" + +#: ../../guide/comparisons.rst:36 +msgid "**Control over data**. Some participant information in Tabbie2 is shared between tournaments, like their names and conflicts (discussed below). This means participants can manage it directly through their user accounts, without needing to go through you. On the other hand, this requires your participants to co-operate in keeping their accounts up to date, and to provide the correct e-mail address during registration (you'd be surprised how many don't). Furthermore, participants may look to you for assistance, and your ability to help is limited to directing them through Tabbie2 channels—easy enough if they forget their password, but not so much if they forget their account's e-mail address." +msgstr "" + +#: ../../guide/comparisons.rst:38 +msgid "Because each Tabbycat site is its own, you'll need to collect and import all participant details yourself. This might seem like more to do, but it also means there's no need to match your data to existing accounts, which can be time-consuming and prone to participant error. It also means you can freely change data, for example, to correct a participant's name or institution, or to add data like conflicts on an ad-hoc basis." +msgstr "" + +#: ../../guide/comparisons.rst:40 +msgid "**Data privacy**. Conflicts are typically entered into the tab, and are sensitive information. Tabbie2's centralisation allows for conflicts to be self-nominated by users and stored in their user accounts. This, in theory, saves the need for users to report conflicts to tab directors and other tournament staff. In practice, however, only special \"super\" users on Tabbie2 have access to the stored conflicts of users (otherwise anyone could access a user's conflicts by creating a new tournament and adding that user as a participant), so many tournaments need to collect this information from participants anyway." +msgstr "" + +#: ../../guide/comparisons.rst:42 +msgid "Tabbycat's decentralised model means that no-one will have access to conflict information except for the tab staff of each individual instance of Tabbycat. Unlike Tabbie2, Tabbycat's developers do not have any access to your tournament's data — conflicts or otherwise. However, to help us continually improve the software, Tabbycat does send error reports to its developers if there is a serious bug or crash in the code, which could potentially contain confidential information depending on which page triggered the report. As a result of Tabbycat's decentralised data storage, each tournament does need to collect and enter conflicts as part of their registration process." +msgstr "" + +#: ../../guide/comparisons.rst:44 +msgid "**When things go wrong**. In our view, this is probably the most important factor. Obviously, we all hope you never have to fix things. But no software is perfect, and software developed by volunteers in their spare time (as both Tabbie2 and Tabbycat are) is especially imperfect. On occasion, glitches or edge cases occur, and fixing them requires you to directly edit the offending data in the database. Being able to do this without assistance can be the difference between a delay of minutes and a delay of hours." +msgstr "" + +#: ../../guide/comparisons.rst:46 +msgid "In Tabbycat, because it's your site, you have full control of the database, and can edit it through Tabbycat's \"Edit Database\" area. This allows you to fix things (or break things, if you're not careful!). Tabbie2's centralisation prevents this—for obvious reasons, only Tabbie2's developers have direct database access, which makes their intervention necessary if direct database access is required to resolve a problem." +msgstr "" + +#: ../../guide/comparisons.rst:49 ../../guide/comparisons.rst:138 +msgid "Running your tournament" +msgstr "" + +#: ../../guide/comparisons.rst:51 +msgid "Tabbie2 and Tabbycat have broadly similar workflows for running rounds; at least on paper. Key differences are discussed below:" +msgstr "" + +#: ../../guide/comparisons.rst:53 +msgid "**Data import**. Tabbie2 takes CSV files for import. Tabbycat has a CSV file importer, but it's (for now) only accessible through a command-line interface and is only expected to be used for large tournaments by experienced tab directors. As a more user-friendly alternative, Tabbycat also has an import wizard that's designed to make it easy to copy and paste CSV data. This works well for small and medium scale tournaments, but is cumbersome for large ones." +msgstr "" + +#: ../../guide/comparisons.rst:55 +msgid "**Public interface**. Tabbycat can optionally publish the entire draw, as well as current team point standings and results of previous rounds, online. Tabbie2 shows to a logged-in user information about the debate that user is in for that round, but doesn't allow people to check up on people who are not themselves." +msgstr "" + +#: ../../guide/comparisons.rst:57 +msgid "**Position rotation**. Tabbie2 uses an algorithm known as the \"Silver Line algorithm\", which keeps swapping pairs of teams until no further improvement is found. Because it stops at any 'local optimum', this method isn't guaranteed to be the best possible distribution of positions, and for large tournaments it often isn't. Tabbycat instead uses the `Hungarian algorithm `_, an well-known algorithm that finds the (globally) optimal allocation of positions. (One might describe this algorithm, in technical terms, as 'powerful'.) Tabbycat also produces a position balance report, so that in every round you can see which teams have unbalanced position histories." +msgstr "" + +#: ../../guide/comparisons.rst:59 +msgid "**Venue allocations**. Both Tabbie2 and Tabbycat allow for debate venues to be automatically assigned and manually edited. Tabbycat also allows you to specify 'venue constraints' that can automatically match particular participants with their accessibility requirements, or alternatively allow for tournament staff, such as a convenor or chief adjudicator, to be allocated rooms close to the briefing hall or tab room." +msgstr "" + +#: ../../guide/comparisons.rst:61 +msgid "**Ballot entry**. Both Tabbie2 and Tabbycat support entering ballots online ('e-ballots') and entering ballots from paper from the tab room. Tabbie2 was built with e-ballots in mind, while Tabbycat was originally built for tab room staff, and the ballot entry paradigms reflect that. Both are flexible, just a little different—the best way to understand the difference is to try a demo of each. Also, Tabbycat takes note of the order in which speakers in a team spoke (i.e. who was PM and who was DPM), whereas Tabbie2 just records scores." +msgstr "" + +#: ../../guide/comparisons.rst:63 +msgid "As discussed earlier in *User identification*; Tabbie2's e-ballots are tied to unified user accounts, whereas Tabbycat's e-ballots are tied to per-tournament and per-adjudicator 'private URLs'." +msgstr "" + +#: ../../guide/comparisons.rst:65 +msgid "**Break and speaker categories**. Tabbie2 has ESL, EFL and novice markers, which you can enable in a tournament's settings. Tabbycat supports user-defined break and speaker categories, so if your tournament has ESL, EFL, novice or any other form of category, you can define and customise those categories as needed." +msgstr "" + +#: ../../guide/comparisons.rst:67 +msgid "**Adjudicator allocation algorithm**. Both Tabbie2 and Tabbycat use an algorithm to recommend an initial allocation of adjudicators to debates. In principle, they both work by assigning \"costs\" to allocations, and trying to find the minimum-cost assignment. Some notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:69 +msgid "Tabbie2 uses simulated annealing, which is not guaranteed to be optimal and technically needs to be tuned to be effective (which you're probably not doing). Tabbycat uses the Hungarian algorithm, which guarantees an optimal solution." +msgstr "" + +#: ../../guide/comparisons.rst:70 +msgid "On the other hand, the Hungarian algorithm can't account for relationships between adjudicators on a panel, so adjudicator-adjudicator conflicts aren't considered by Tabbycat's algorithm (though they are highlighted in the interface)." +msgstr "" + +#: ../../guide/comparisons.rst:71 +msgid "Tabbycat's cost function is simpler and more naive. On the other hand, Tabbie2's is more complicated and can be rather opaque (even if you read its source code)." +msgstr "" + +#: ../../guide/comparisons.rst:72 +msgid "Tabbie2 allows for single-gender panels to be charged an additional cost. Tabbycat's algorithm doesn't, but the interface does provide a way to easily check for this visually." +msgstr "" + +#: ../../guide/comparisons.rst:73 +msgid "Tabbie2 automatically calculates the importance of a room based on its bracket (team points). In Tabbycat, debate importance can be assigned for all debates automatically based on on a room's bracket or the quantity of live break categories inside it. Instead of — or subsequent to — automatic classification any importance value can be manually tweaked as desired. These options mean there is a greater flexibility in determining which debates the allocation algorithm should prioritise." +msgstr "" + +#: ../../guide/comparisons.rst:75 +msgid "**Adjudicator allocation interface**. While both interfaces use drag and drop interactions, and allow for color highlights to help identify adjudicators by gender, region, and feedback rating, Tabbycat's allocation interface was designed to be usable on both small screens and projectors, and has a number of extra features that can help inform allocations. These features include:" +msgstr "" + +#: ../../guide/comparisons.rst:77 +msgid "Clashes are shown directly in the interface when they apply, but dragging an adjudicator will also show you the potential conflicts that would occur if they were relocated in a new panel. This can make it much easier to avoid creating new clashes when shifting adjudicators around the draw." +msgstr "" + +#: ../../guide/comparisons.rst:78 +msgid "An inline display of an estimate of whether a team is 'live' for each of their break categories — i.e. whether they are 'safe' (have enough points to break); 'dead' (cannot gain enough points to break); or 'live' (still in contention)." +msgstr "" + +#: ../../guide/comparisons.rst:79 +msgid "'History' conflicts (where an adjudicator has seen a team before, or previously was on a panel with another judge) are displayed so they can be avoided." +msgstr "" + +#: ../../guide/comparisons.rst:80 +msgid "Each adjudicator is present as occupying a particular position (chair, panellist, trainee) rather than having those positions calculated automatically." +msgstr "" + +#: ../../guide/comparisons.rst:81 +msgid "Chairs can be 'swapped' by dragging adjudicators on top of each other, and an 'unallocated' area can be used to view and store adjudicators that have not been allocated." +msgstr "" + +#: ../../guide/comparisons.rst:83 +msgid "**Adjudicator feedback customisation**. Both Tabbie2 and Tabbycat have built-in adjudicator feedback forms, and allow you to specify the questions on the feedback form. Notable differences:" +msgstr "" + +#: ../../guide/comparisons.rst:85 +msgid "Setting up questions is painless on neither system. Tabbycat requires you to use the Edit Database area; Tabbie2 makes you click through a slightly more opaque maze of pages and forms." +msgstr "" + +#: ../../guide/comparisons.rst:86 +msgid "Tabbycat allows for a richer range of types of questions than Tabbie2 does." +msgstr "" + +#: ../../guide/comparisons.rst:87 +msgid "Tabbie2 allows you to specify different questionnaires for team-on-chair, chair-on-panellist and panellist-on-chair. Tabbycat only differentiates between team-on-adjudicator and adjudicator-on-adjudicator." +msgstr "" + +#: ../../guide/comparisons.rst:88 +msgid "Tabbycat gives you more control over who is expected to submit feedback on whom; e.g. whether teams submit on panellists, and whether panellists submit on each other. In Tabbie2, you can effect this with blank questionnaires, but only for the three options listed above." +msgstr "" + +#: ../../guide/comparisons.rst:89 +msgid "Tabbycat can, optionally, automatically incorporate feedback into adjudicator scores using a naive weighted average with the adjudicator base score. This can be disabled by simply setting feedback weight to zero, as some adjudication cores prefer. Tabbie2 has no ability to automatically incorporate feedback." +msgstr "" + +#: ../../guide/comparisons.rst:90 +msgid "Tabbycat produces a \"shame list\" of unsubmitted feedback, which you can optionally publish on the public-facing site to try to incentivise submission." +msgstr "" + +#: ../../guide/comparisons.rst:92 +msgid "(How participants access adjudicator feedback submission is discussed in *User identification* above.)" +msgstr "" + +#: ../../guide/comparisons.rst:95 ../../guide/comparisons.rst:149 +msgid "Other considerations" +msgstr "" + +#: ../../guide/comparisons.rst:97 +msgid "**Offline availability**. If you like, you can also install Tabbycat on your own computer, rather than host it as website on a server. This means that you can use it offline. However installing Tabbycat in this manner will require the (at least brief) use of a command line interface." +msgstr "" + +#: ../../guide/comparisons.rst:99 +msgid "**Cost**. Tabbie2 is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:101 +msgid "**Documentation**. Tabbycat has `relatively extensive documentation `_ that can be useful for learning how to use a particular feature or understanding what is happening at a technical level." +msgstr "" + +#: ../../guide/comparisons.rst:103 +#, python-format +msgid "**Hosting location**. Tabbycat recommends using Heroku, an established cloud platform service for deploying web applications. Heroku is in turn hosted on Amazon Web Services (AWS). Both Heroku and AWS are highly reliable and widely used; downtime for both has historically been (at worst) less than 0.05% over an annual period. Tabbie2 is hosted on `Uberspace `_; a pay-what-you-want web hosting service. To the best of our knowledge, uptime statistics are not available." +msgstr "" + +#: ../../guide/comparisons.rst:105 +msgid "**Multi-format support**. If you are interested in tabbing both four- and two- team formats there may be some value in using and learning Tabbycat as it will let you use the same software in both settings." +msgstr "" + +#: ../../guide/comparisons.rst:108 +msgid "Comparison with Tournaman" +msgstr "" + +#: ../../guide/comparisons.rst:111 +msgid "Native app vs web app" +msgstr "" + +#: ../../guide/comparisons.rst:113 +msgid "The crucial strength — and limitation — of Tournaman is that it is a Windows desktop application. Naturally, being a desktop app limits the features it can offer, relative to web apps like Tabbycat or Tabbie2, since it can't offer any online access. On the other hand, working with a desktop app can often be simpler than a web app." +msgstr "" + +#: ../../guide/comparisons.rst:115 +msgid "**Installation**. You'll need to run (or emulate) a Windows machine to run Tournaman. Assuming you're using Windows, Tournaman's installation process is easy and familiar." +msgstr "" + +#: ../../guide/comparisons.rst:117 +#, python-format +msgid "Tabbycat has a simple one-click installation process if you're deploying online (:ref:`to Heroku `). However, if you want to run Tabbycat on your own computer rather than a website, this is substantially more complicated. Local installations of Tabbycat work by having your computer emulate a web server, and while we've tried to make this as accessible as possible, a technical background is definitely helpful for this. Using our :ref:`Docker-based method ` should be simple, but it's not 100% reliable, and if it fails it can be difficult to figure out why. If internet access is available, we recommend running Tabbycat on Heroku." +msgstr "" + +#: ../../guide/comparisons.rst:119 +msgid "**Online features**. Because Tournaman runs fully offline, it naturally can't support many internet-based features: electronic ballots, online publication of draws and live team standings, and integrated tab release. Typically, if you wanted to publish anything online from Tournaman, you'd do so by publishing the files that Tournaman generates locally. In Tabbycat, all of these are built in, so there's a single website for all tab information." +msgstr "" + +#: ../../guide/comparisons.rst:121 +msgid "**Multi-user access**. Tournaman can be configured to allow networked ballot entry, but in order to set it up, you need to be comfortable with basic computer networking. This works best on small isolated networks that you control directly, e.g. a dedicated router set up in the tab room. It's not a great idea to set this up on computers connected to a university-wide network: many IT departments won't permit it, and even if they do, it's insecure, since anyone on the network can access it." +msgstr "" + +#: ../../guide/comparisons.rst:123 +msgid "Tournaman's multi-user access is designed primarily to allow tab assistants to enter data. Key administrative tasks, such as draw generation and adjudicator allocation, must still be done on the computer on which Tournaman is installed. In contrast, web-based systems like Tabbycat and Tabbie2 allow users to login from any internet-connected device to access the functionality permitted by their account. This is often extremely useful if, say, you want to log in to a lectern computer, or have tab assistants work on mobile devices that they have with them." +msgstr "" + +#: ../../guide/comparisons.rst:125 +msgid "If you choose to install Tabbycat offline (rather than on Heroku), it's also possible to have the computer on which the local installation resides serve the website to other computers on the same network. This then permits anyone on the same network to access the \"local\" installation as if it were hosted on the internet. However, like Tournaman, such a configuration requires at least basic networking experience, and for security reasons is only advisable on small isolated networks that you control." +msgstr "" + +#: ../../guide/comparisons.rst:127 +msgid "**Backups and portability**. Both Tournaman and Tabbycat (unlike Tabbie2) store data in a way that is completely accessible to you. Tournaman does this by saving files on your computer's hard drive, while Tabbycat stores data in a SQL database that belongs to you." +msgstr "" + +#: ../../guide/comparisons.rst:129 +msgid "It should be emphasized that in both Tournaman and Tabbycat, actually needing to revert to a backup is extremely rare. Almost always, any glitch or error that breaks the tab can be resolved by editing data directly, without needing to \"roll back\" to a previous state. In Tournaman, this is done by editing the files that it writes to your hard drive (they're just XML files). In Tabbycat, this is done through the \"Edit Database\" area." +msgstr "" + +#: ../../guide/comparisons.rst:131 +msgid "Tournaman's storage of data as XML files makes backups easy, although effort should be made to have backups stored on other computers or the cloud (e.g. on Dropbox) in case the tab computer breaks or is lost. Restoring data from those backups (or transferring the tab to a different computer) is typically a simple process of copying the files back to the original location." +msgstr "" + +#: ../../guide/comparisons.rst:133 +msgid "As for Tabbycat, in online installations, backups can be taken easily using Heroku's `database backup capability `_. However, restoring backups requires you to have the Heroku command line interface installed. In offline installations, PostgreSQL's \"dump\" and \"restore\" commands are recommended, and may require some perseverance to get going reliability, particularly if you don't have prior SQL experience." +msgstr "" + +#: ../../guide/comparisons.rst:135 +msgid "Generally there is no need for data portability when working with an online copy of Tabbycat — the website can be accessed anywhere. However if working with an offline/local copy, a tab can be transferred between machines by creating a backup of the database and restoring it to the other machine's database (doing so requires technical knowledge)." +msgstr "" + +#: ../../guide/comparisons.rst:140 +msgid "**Adjudicator feedback**. Tournaman lets you assign judges rankings, however it does not directly manage or assist the process of collecting judge feedback. As such tab directors generally need to run a parallel feedback system, and then manually copy over changes to an adjudicator's ranking into Tournaman itself. In contrast, Tabbycat has integrated methods for collecting judge feedback that allow it to be more easily issued, collected, viewed, and automatically translated into modifications to an adjudicator's rank." +msgstr "" + +#: ../../guide/comparisons.rst:142 +msgid "**Adjudicator allocation**. Tournaman has a fixed judge ranking scale and (from what we understand) has a relatively fixed procedure for allocating panels according to their absolute ranks. We are unsure about the exact mechanics of how this works, but broad details are `available here `_." +msgstr "" + +#: ../../guide/comparisons.rst:144 +msgid "As with the discussion of allocation interfaces vis-à-vis Tabbie2, there are a number of features in the Tabbycat allocation interface that mean it is more easily used in a collaborative setting and can display additional information to inform draws." +msgstr "" + +#: ../../guide/comparisons.rst:146 +msgid "**Flexibility in draw rules**. As we've said, all major tab systems are WUDC-compliant. But if you want to deviate from WUDC rules, Tournaman has a few more options. Whereas Tabbycat allows you to use intermediate brackets (rather than pull-ups), Tournaman allows you to sacrifice power-pairing integrity for position balance (though this generally isn't necessary to achieve position balance), fold within brackets and avoid teams hitting their own institution. On the other hand, Tabbycat allows you to tune how position balance trades off between teams (which the WUDC constitution doesn't precisely specify)." +msgstr "" + +#: ../../guide/comparisons.rst:151 +msgid "**Stability and development**. Tournaman has been in use for over a decade and is generally considered to be stable and reliable. However, new features are relatively rarely added, and its being a native app means that it doesn't boast as many features as Tabbycat or Tabbie2." +msgstr "" + +#: ../../guide/comparisons.rst:153 +msgid "**Cost**. Tournaman is free to use. Tabbycat is free to use for not-for-profit, not-for-fundraising tournaments; tournaments for profit or fundraising must make a donation of A$1 per team. In addition, larger tournaments that run on Tabbycat's recommended web host (Heroku) may need to purchase an upgraded database service (the free tier has storage limits) which will cost around ~US$3 to use for the duration of a week-long tournament." +msgstr "" + +#: ../../guide/comparisons.rst:155 +msgid "**Availability of source code**. Tournaman's code is closed-source, meaning it is not publicly available. If you do not have any coding experience this is probably not relevant to you, but if you do, having access to the source of Tabbycat can help you understand how the program works and customise it as needed." +msgstr "" + +#: ../../guide/comparisons.rst:158 +msgid "Comparison with hand tabbing" +msgstr "" + +#: ../../guide/comparisons.rst:160 +msgid "Hand tabbing is easy, until it isn't. Traditionally, using a spreadsheet has been the go-to option for smallish tournaments because, hey, you're pretty handy with Excel, right? Making draws in spreadsheets (or on paper) seems like a pretty approachable task; ultimately it's all cells and formulae and numbers unlike the more arcane underpinnings of actual tab software." +msgstr "" + +#: ../../guide/comparisons.rst:162 +msgid "However, hand tabbing does require you to have a good working knowledge of how your format's rules work and how your spreadsheet software of choice can be made to work them. That process might be easy for you, or it might not be. But, either way, we'd like to think that Tabbycat offers a better alternative to hand-tabbing; regardless of how well you can actually hand-tab. The setup costs of creating a copy of Tabbycat are pretty low and you can speed through the process of draw creation, adjudicator allocation, and result entry at a pace. It's still not going to be as fast a spreadsheet for a small tournament, but we think it's getting pretty close. And in exchange for a little speed you get a much stronger guarantee of your draws being correct, options for online data entry, a more comprehensive and shareable final tab, and much more. Give it a shot!" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/guide/scaling.po b/docs/locale/vi/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..583f5a0134a --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/guide/scaling.po @@ -0,0 +1,252 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: vi_VN\n" + +#: ../../guide/scaling.rst:5 +msgid "Scaling & Performance on Heroku" +msgstr "" + +#: ../../guide/scaling.rst:7 +msgid "If you expect your Tabbycat site to gain lots of traffic — either because it has lots of participants or will be followed by lots of people online — there are a number of strategies to ensure that it will remain fast despite this attention. This is typically only necessary for very large tournaments that will display information on the public-facing version of your Tabbycat site; and even then only minor amounts of 'scaling' are needed at particular moments. However, if your site does become slow you want to know what to do and how to do it ahead of time in order to prevent disruptions." +msgstr "" + +#: ../../guide/scaling.rst:9 +msgid "By default, a Tabbycat installation runs on Heroku's free tier. This is a resource-constrained environment and improving performance will typically require paying for higher levels of Heroku services. These services are billed on a per-minute (not monthly) basis, meaning that if you make use of any upgrades mentioned below, you will only be billed for the actual duration used — i.e. if an upgrade is listed at $100/month, but you only use it for 4 hours, the final bill will be around $0.50. As such you can make use of high-performing resources just when they are needed, without needing to pay the full monthly price to maintain the resource indefinitely." +msgstr "" + +#: ../../guide/scaling.rst:13 +msgid "This page was largely written before a number of improvements in the ``2.2`` release of Tabbycat that have significantly increased traffic capacity. Its recommendations may be overly cautious given these improvements." +msgstr "" + +#: ../../guide/scaling.rst:17 +msgid "Scaling for performance reasons is a separate issue to that of `upgrading the database capacity `_ of your tab which just provides the ability to store data. That said, typically only tournaments that are large enough to need an upgraded database will be the ones that ever need to consider scaling for performance anyway." +msgstr "" + +#: ../../guide/scaling.rst:20 +msgid "Introduction to Scaling" +msgstr "" + +#: ../../guide/scaling.rst:22 +msgid "Heroku's primary resource is that of a 'dyno'. Each dyno can be thought of as running a copy of Tabbycat. Following the 'many hands make light work' principle, running a greater number of dynos will generally improve the ability of your site to serve lots of pages simultaneously because traffic is divided up amongst all of the available dynos. In normal circumstances most Tabbycat pages on the public site are served by Heroku in under a second; however they can take noticeably longer than that when the quantity of incoming traffic exceeds the capacity of the existing dyno(s) to serve it. In such cases the delay accrues because the excess page loads need to first wait for an available dyno in addition to the standard wait for a page to be processed and transferred to the user." +msgstr "" + +#: ../../guide/scaling.rst:24 +msgid "Thus scaling is almost always a process of increasing *throughput* in order to decrease the chance that any page load needs to wait in order to be served by a dyno. On the flip side, having extra dynos or upgraded dynos won't make Tabbycat itself run any faster in general — they are essentially wasted unless there is sufficient large amounts of traffic that a single dyno cannot serve all of it without creating a queue." +msgstr "" + +#: ../../guide/scaling.rst:26 +msgid "Dynos can be scaled by adding more dynos ('horizontally') or by adding upgraded dynos ('vertically'). In general, horizontal scaling should be the first and most effective strategy — the problem traffic causes is due to *concurrency* or lots of people loading lots of pages all at once. The traffic on Tabbycat sites typically fluctuates a lot, with moments of high intensity clustering around draw releases, round advances, and the final tab release. As such you generally only need to scale your dynos for very short periods of time." +msgstr "" + +#: ../../guide/scaling.rst:28 +msgid "In order to increase the number of dynos you first need to be using at least the **Standard 1X** level of dyno. Once set the Heroku Dashboard will show you a slider that can be used to increase the dyno count. While dynos higher than the **Standard 1X** level may help serve pages a tiny bit faster, having *more* dynos is far more effective than having *upgraded* dynos. Upgrading beyond **Standard 1X** is generally only required if you need additional memory (as described below) or want to use auto-scaling (also described below)." +msgstr "" + +#: ../../guide/scaling.rst:32 +msgid "There should be no need to increase the number of 'worker' dynos. While 'web' dynos are responsible for serving traffic, the worker only handles a few rare tasks such as serving email and creating allocations." +msgstr "" + +#: ../../guide/scaling.rst:34 +msgid "At large tournaments you should always upgrade your existing '**Free**' dyno to a '**Hobby**'-level dyno. This upgrade is crucial as it will enable a \"Metrics\" tab on your Heroku dashboard that provides statistics which are crucial to understanding how your site is performing and how to improve said performance. If you are at all unsure about how your site will perform it is a good idea to do this pre-emptively and keep an eye on these metrics over the course of the tournament." +msgstr "" + +#: ../../guide/scaling.rst:38 +msgid "If pages are not loading it could be due to two things: your site being overloaded with traffic, or a bug in Tabbycat itself. Generally, if you see a generic or Heroku-branded 'application error' page that means it is the former problem, whereas a Tabbycat-branded page indicates the latter." +msgstr "" + +#: ../../guide/scaling.rst:41 +msgid "Scaling Dynos" +msgstr "" + +#: ../../guide/scaling.rst:43 +msgid "Once you have upgraded your dyno to the **Hobby** level, the metrics tab provides a number of graphs that can be used to help identify how your site is performing. The first graph, **Events** provides an overview of any problems that are occurring:" +msgstr "" + +#: ../../guide/scaling.rst:47 +msgid "Red marks, or those labelled *Critical* typically indicate some sort of problem. H13 errors are a good measure of the amount of pages failing to load during heavy traffic, however they can be triggered under normal conditions — you want to check how many are occurring within a given time period and ensure its more than a handful." +msgstr "" + +#: ../../guide/scaling.rst:50 +msgid "Response Time & Throughput" +msgstr "" + +#: ../../guide/scaling.rst:54 +msgid "The response time is the amount of time it takes a dyno to load a page and serve it to your users. Smaller response times are thus good, and long response times (over fifteen seconds) indicate that a site is struggling to serve its content due to a large amount of queueing." +msgstr "" + +#: ../../guide/scaling.rst:56 +msgid "Heroku dynos have a maximum response time of 30 seconds, at which point they will stop serving the request. To users this appears as an error page or as a page that never loads. Thus if you see the graph is at or approaching 30 seconds at any point you need to try and diagnose what is causing this and add more resources to reduce the response time." +msgstr "" + +#: ../../guide/scaling.rst:60 +msgid "You can toggle the percentiles in this graph. Problems are much more severe if it affects the 50th percentile which represents a site that is probably not loading for the majority of its users. There are also a couple of Tabbycat functions (like automatic adjudicator allocation) that naturally take 10-20 seconds which means that the maximum or 99th percentile metrics are not very reflective of general traffic." +msgstr "" + +#: ../../guide/scaling.rst:62 +msgid "Closely related to this is the **Throughput** graph (further down) which shows how many pages your site is serving per second. Normally this is not particularly interesting, however note that the red part of the bar graph shows the amount of failed page requests. Like the **Response Time** graph, this can indicate issues with the site — normally this red portion should be well below 1rps (and ideally 0rps). If it is above 0.5 it represents a site that is producing a significant number of failed page loads." +msgstr "" + +#: ../../guide/scaling.rst:64 +msgid "You can verify if pages are not being served to users by checking the **Events** graph and looking for H12 errors, although occasionally they are not reported properly. A large amount of H13 errors can also be a cause for concern." +msgstr "" + +#: ../../guide/scaling.rst:67 +msgid "Dyno Load" +msgstr "" + +#: ../../guide/scaling.rst:71 +msgid "This graph shows how well your dynos are being utilised. It is scaled relative to the total number of dynos you are running (or have run previously). So if you have 10 dynos and the bar graph is near the '10' this shows that each dyno is being utilised 100% (either on average over a 1-minute period or as the maximum use over a 1-minute period)." +msgstr "" + +#: ../../guide/scaling.rst:73 +msgid "If this bar graph is hitting the top it will usually mean that a site that is slow or failing to load pages — if each dyno is busy it can't serve a new page until it is finished. This issue can often compound, with more traffic coming in than it is possible to serve and clear." +msgstr "" + +#: ../../guide/scaling.rst:75 +msgid "If your average, rather than maximum, dyno load is approaching the upper limit of however many dynos you are running now (remember the y-axis will often exceed however many dynos you are currently running) that is a very good sign that you should increase the quantity of dynos being run. Continue adding dynos and evaluate how this effects load so that the bar is not hitting its limit." +msgstr "" + +#: ../../guide/scaling.rst:77 +msgid "If you are consistently needing to scale things (or having previously had issues and are expecting a very heavy burst of traffic) it may be worth upgrading to the **Performance-M** dyno type, which will then allow you to enable the *Auto-scaling* feature. This will automatically add dynos as needed to cope with traffic, and remove them when they become unnecessary. This is very effective; however, note that this dyno-type is $250/month per dyno and will self-add dynos (within an upper limit you can specify). While this is not a huge price on a per hour/minute basis (even running 10 for an hour is only $4) you definitely want to ensure you keep a close eye on it and turn it off when it is not necessary. Note that it also tends to be quite aggressive in how many dynos it 'thinks' you need — you may want to increase the default response time threshold to prevent it scaling so quickly." +msgstr "" + +#: ../../guide/scaling.rst:80 +msgid "Memory Usage" +msgstr "" + +#: ../../guide/scaling.rst:84 +msgid "It is very rare that Tabbycat sites will hit the memory limits of the Free or Hobby level dynos — its almost always hovering around 256MB of the (standard dyno) limit of 512MB. However, if the graph is approaching the dashed line you may want to first restart the dynos (in the *More* dropdown in the upper-right) and see if that resolves it." +msgstr "" + +#: ../../guide/scaling.rst:86 +msgid "You can also confirm that memory limits are causing the app to fail by checking for the presence of R14 errors in the Events chart. If your site continues to come very close to that memory limit you will want to upgrade your dynos to the higher level dynos which have increased memory." +msgstr "" + +#: ../../guide/scaling.rst:89 +msgid "Alerts" +msgstr "" + +#: ../../guide/scaling.rst:91 +msgid "If the site is really struggling to perform its usually relatively obvious. However, if you want to be pre-warned of this, or just ensure things are as fast as possible, you can use the \"Configure Alerts\" feature on the Metrics page to receive emails when things are getting slow. We would recommend creating a Response Time Threshold warning of ``15000ms`` and a Response Requests Percentage Threshold of ``5%``." +msgstr "" + +#: ../../guide/scaling.rst:94 +msgid "Understanding Caching" +msgstr "" + +#: ../../guide/scaling.rst:96 +msgid "When a page is 'cached' it means that Tabbycat has stored a copy of the final output of the page. It can then send that copy directly to a user who is loading that page without needing to go through the normal process of fetching the data from the database, running any calculations, and formatting the results. Pages that are cached will serve quickly — if a page is taking more than a few seconds to load it usually means that page has not been cached (or your site is having too much traffic to serve pages quickly in general). The downside is that changes to the underlying data won't update until the cache has 'expired' and is regenerated. So, for example, a cached copy of the draw will not immediately reflect change to panels and a newly-release motion or tab page will not show up in the menu immediately." +msgstr "" + +#: ../../guide/scaling.rst:98 +msgid "By default Tabbycat caches public pages according to three levels: a 1-minute timeout, a 3.5-minute timeout, and a 2-hour timeout. The only pages on the 2-hour timeout are those that come with a full tab release — such as speaker standings, the motions tab, etc. Public pages that need to update quickly, such as the draw and homepage, are on the 1-minute timeout to ensure data is up to date. Public pages that update less frequently such as Standings, Results, Participants, and Breaks are on the 3.5-minute timeout." +msgstr "" + +#: ../../guide/scaling.rst:100 +msgid "Caching means that a Tabbycat site should actually perform *faster* when it is being viewed by many people at once, as the caches are constantly up-to-date and can be used to serve the majority of requests. When there is less traffic the caches are more likely to be regenerated each time someone goes to a page resulting in slower page loads. Most often performance problems come when a popular page, such as a newly-released draw gains a large amount of traffic suddenly (such as by people constantly refreshing the draw). If the page hasn't finished caching it has to do a full page calculation for each of those new loads, which will spike the amount of resource use until the page load queue is cleared." +msgstr "" + +#: ../../guide/scaling.rst:102 +msgid "One way to help mitigate this is to try and load those pages first yourself to ensuring the cache is populated before other people access it. To do so you would generally open a new private browsing tab, and navigate to the specific page(s) immediately after you have enabled them. This may require going to the URL directly rather than relying on the homepage or menu (which may not have been updated to show the new information). In the case of draw releases, this can also be mitigated by not release online draws until they have been first shown on a projector (so that people aren't trying to get draw information ahead of time)." +msgstr "" + +#: ../../guide/scaling.rst:104 +msgid "You can also increase the 1-minute timeout for the pages that are popular during the in-rounds, by going to the **Settings** section of your Heroku dashboard, clicking *Reveal Config Vars*, and creating a new key/value of ``PUBLIC_FAST_CACHE_TIMEOUT`` and ``180`` (to set the timeout to be 3 minutes i.e. 180 seconds). This should only be necessary as a last resort. Turning off public pages is also an option." +msgstr "" + +#: ../../guide/scaling.rst:106 +msgid "If you ever need to clear the cache (say to force the site to quickly show an update to the speaker tab) you can install `Heroku's Command Line Interface `_ and run the following command, replacing ``YOUR_APP`` with your site's name in the Heroku dashboard::" +msgstr "" + +#: ../../guide/scaling.rst:111 +msgid "Postgres Limits" +msgstr "" + +#: ../../guide/scaling.rst:113 +msgid "The free tier of the Postgres database services has a limit of 20 'connections'. As with Redis, it is rare that a Tabbycat site will exceed this limit; most Australs-sized tournaments will see a maximum of 12 connections at any point in time." +msgstr "" + +#: ../../guide/scaling.rst:117 +msgid "You can monitor this in your Heroku Dashboard by going to the **Resources** tab and clicking on the purple Postgres link. The **Connections** graph here will show you how close you are to the limit. The first tier up from the 'free' Hobby tiers (i.e. ``Standard-0``) has a connection limit of 120 which can be used to overcome these limits if you do encounter them." +msgstr "" + +#: ../../guide/scaling.rst:120 +msgid "Mirror Admin Sites" +msgstr "" + +#: ../../guide/scaling.rst:122 +msgid "If you *really* want to be safe, or are unable to resolve traffic issues and unable to quickly complete tasks on the admin site, it is possible to create a 'mirror' of the tab site just for admin use. This site can be configured to share the same database as the primary site — meaning it is in effect always identical — but because it is at a separate URL it won't have to respond to public traffic and so can't be swamped with a large page load queue." +msgstr "" + +#: ../../guide/scaling.rst:124 +msgid "This requires some technical knowledge to setup and hasn't been rigorously tested. It works fine in our experience but we haven't tested it extensively. If using this make sure you backup (and now how to restore backups) before setting one up." +msgstr "" + +#: ../../guide/scaling.rst:126 +msgid "To do so you would deploy a new copy of Tabbycat on Heroku as you normally would. Once the site has been setup, go to it in the Heroku Dashboard, click through to the **Resources** tab and remove the Postgres and Redis Add-ons. Using the `Heroku Command Line Interface `_ run this command, substituting ``YOUR_APP`` with your *primary* tab site's name (i.e. the app that you had initially setup before this)::" +msgstr "" + +#: ../../guide/scaling.rst:130 +msgid "Here, make a copy of the ``DATABASE_URL`` and ``REDIS_URL`` values. They should look like ``postgres://`` or ``redis://`` followed by a long set of numbers and characters. Once you have those, go to the *Settings* tab of the Heroku dashboard for your *mirror* tab site. Click **Reveal Config Vars**. There should be no set ``DATABASE_URL`` or ``REDIS_URL`` values here — if there are check you are on the right app and that the add-ons were removed as instructed earlier. If they are not set, then add in those values, with ``DATABASE_URL`` on the left, and that Postgres URL from earlier on the right. Do the same for ``REDIS_URL`` and the Redis URL. Then restart the app using the link under **More** in the top right." +msgstr "" + +#: ../../guide/scaling.rst:132 +msgid "Once you visit the mirror site it should be setup just like the original one, with changes made to one site also affecting the other as if they were just a single site." +msgstr "" + +#: ../../guide/scaling.rst:135 +msgid "Estimated Costs" +msgstr "" + +#: ../../guide/scaling.rst:137 +msgid "As a quick and rough benchmark, here is a list of typical prices you would encounter if scaling to meet the performance needs of a high-team-count high-traffic tournament at the approximate scale of an Australs (~100 teams) or above. This is a probably an overly-conservative estimate in that it is based on tournaments run on the ``2.1`` version of Tabbycat. Versions ``2.2`` and above should perform dramatically better and thus have less need to scale using Standard and Performance dynos." +msgstr "" + +#: ../../guide/scaling.rst:139 +msgid "1x ``Hobby Basic Postgres Plan`` ($9/month) run all day for 14 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:140 +msgid "A tournament of this size will require an upgraded database tier for the time when you are adding new data; i.e. during registration and rounds. Once the tab is released (and no further data changes needed) however you can downgrade it back to the ``Hobby Dev`` tier." +msgstr "" + +#: ../../guide/scaling.rst:141 +msgid "1x ``Hobby Dyno`` ($7/month each) run all day for 7 days = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:142 +msgid "As recommended, 1 hobby dyno should be run as a baseline in order to see the metrics dashboard; but this can be downgraded a day or so after the tab has been released and traffic is sparse." +msgstr "" + +#: ../../guide/scaling.rst:143 +msgid "3x ``Standard 1X Dyno`` ($25/month each) run 10 hours a day for 4 days = ~$4" +msgstr "" + +#: ../../guide/scaling.rst:144 +msgid "This higher quantity of dynos should only be necessary during traffic spikes (i.e. draw releases, immediately after round advances, and tab release) but unless you want to be constantly turning things on/off its usually easier just to upgrade them at the start of each day of in-rounds (or when the tab is published) and downgrade them at the end of each day. As mentioned earlier, you should occasionally check the *Dyno Load* in the Metrics area and adjust the number of dynos as needed." +msgstr "" + +#: ../../:1 +msgid "``Autoscaled Performance M Dynos`` ($250/month each) average of 5 run for 1 hour = ~$2" +msgstr "" + +#: ../../guide/scaling.rst:146 +msgid "For just round 1 it is a good idea to upgrade to the ``Performance M`` tier so you can enable auto-scaling and thus have the site automatically adjust the number of dynos to the amount of traffic it's getting (rather than having to guess the number of dynos needed ahead of time). Doing so ensures that the first round runs smoothly and means that you can then review the Metrics graphs to see what your 'peak' load looks like and resume using whatever quantity of ``Standard 1X Dyno`` will accommodate this peak load in future rounds." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/vi/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..c9c133d7496 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/guide/tournament-logistics.po @@ -0,0 +1,1394 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-29 23:38\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: vi_VN\n" + +#: ../../guide/tournament-logistics.rst:5 +msgid "Tournament Logistics" +msgstr "" + +#: ../../guide/tournament-logistics.rst:7 +msgid "Unlike the rest of our documentation, this section does not deal with particular features or technical concerns with Tabbycat itself. Instead it is an attempt to outline the logistics of tab direction and aims to be of general relevance for people running major tournaments. At present, it is organised by the various ‘stages' of tabbing a tournament, and most of the content takes the form of check-lists or comments designed to highlight and provide guidance on common issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:9 +msgid "Whilst it aims for general relevance, we should note that this guide is relatively opinionated and mostly written from the perspective of people whose primary experience is tabbing at Australasian tournaments using Tabbycat. That said, we welcome feedback and additions that can account for different format and regional considerations. In the future, if the guide becomes more general and more extensive, it could be spun off into a separate project." +msgstr "" + +#: ../../guide/tournament-logistics.rst:11 +msgid "As with the rest of our documentation, this page is source-available and we welcome :ref:`feedback and contributions `. Note also that we've formatted this guide a single page to reduce clutter, but the sub-sections in the sidebar can be used to help navigate across sections." +msgstr "" + +#: ../../guide/tournament-logistics.rst:14 +msgid "Planning and Preparation" +msgstr "" + +#: ../../guide/tournament-logistics.rst:16 +msgid "This section aims to outline concerns that occur in the months before the tournament: after you have agreed to help with tabbing and while the organising committee and adjudication core are deciding how they want to run key processes such as registration and feedback. It is organised in terms of who you should coordinate with in order to plan for a well-tabbed tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:19 +msgid "General Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:21 +msgid "You should avoid being the sole person responsible for that tab unless it is a small tournament. There are many cases where you want to be in several places at once and the easiest way to accommodate that is by having co-directors or trusted assistants. Few tab decisions require a single source of authority; it is far better to have multiple people available to share responsibilities around." +msgstr "" + +#: ../../guide/tournament-logistics.rst:23 +msgid "In a similar manner, it is worth considering how you can use the tournament to help train other people. Typically, knowledge of tabbing is concentrated in relatively few people and gained mostly through on-the-ground experience; meaning that every tournament should be approached as rare opportunity to help spread knowledge about tabbing more widely in a circuit. Consider reaching out to institutions or the tournament as a whole to see if they have anyone who would be interested in helping out." +msgstr "" + +#: ../../guide/tournament-logistics.rst:26 +msgid "Convenors" +msgstr "" + +#: ../../guide/tournament-logistics.rst:28 +msgid "It might sound obvious but it will pay to have a very thorough conversation about the tab process (more or less the contents of this document) with the convenors a few months out from the tournament. Do this even if you know the convenors to be knowledgeable or experienced debaters. Key concerns are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:32 +msgid "Whether internet access will be available and whether participants can be presumed to have smart phones. This has an obvious impact on how online feedback, ballots, and draw release is done. Note that Eduroam is not necessarily a reliable guarantee of access; many participants will come from universities who don't have access to it or will need to follow a setup process that is onerous or requires them to be at their home institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:33 +msgid "What kind of room is the tab room going to be? Is it possible to optimize its placement when the bookings for rooms are made? Key details include: How large is it? Does it have a sufficient amount of desk space (for data entry)? Does it have a good projector (for allocations)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:34 +msgid "If they have the resources, having an adjacent room available for just the adjudication core to use can also be useful. While you want to work closely with the adjudication core, they may want to discuss sensitive information (motions, equity) in a space without volunteers present; or they might at times get in the way of things, such as by eating lunch in the middle of a frenetic ballot entry process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:35 +msgid "Ensure that plans are made for food to be brought to tab room. Otherwise you will starve and the adjudication core will swan off to lunch. Having regular access to caffeine can also be similarly essential to some adjudication and tab teams." +msgstr "" + +#: ../../guide/tournament-logistics.rst:36 +msgid "What kind of printers will be available? Can the tournament buy/borrow one? This is obviously a key consideration for pre-printed ballots. Also try and ensure there are back-up printing options if possible. Clearly stipulate your need for ink and paper; and try and opt for a black/white laserjet, over an inkjet, if possible." +msgstr "" + +#: ../../guide/tournament-logistics.rst:37 +msgid "What kind of volunteers will be available? How many, and what is their experience level? As a very broad recommendation, you probably want around 1 volunteer for every 10 rooms, assuming volunteers are performing a dual role as data-enterers and ballot-collectors." +msgstr "" + +#: ../../guide/tournament-logistics.rst:38 +msgid "Will the tournament make a donation to whoever maintains the tabbing software you are using? Depending on the license of your tabbing software and the nature of your tournament (for profit vs not for profit) this may be required. Also, if your tab is self-hosted or independently hosted (such as how Tabbycat is generally deployed on Heroku) accounting officers should also be aware that there will be some costs associated with hosting the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:39 +msgid "You should also ensure that people helping with the tab are fairly compensated for their flights, registration, etc and that any volunteers are invited along to socials and/or given some other recompense." +msgstr "" + +#: ../../guide/tournament-logistics.rst:40 +msgid "Will Swing teams be available? You should plan to have at least one more than you need. For example, with 39 teams, you should have both an 40th swing team to fill in the draw, and the option to easily assemble an 41st swing team in case a team goes missing. At very large tournaments (say over 150 teams) you should plan for even more swing team capacity — it's not unheard of for say three teams to vanish all in a single round. In these cases, you should try and ensure that the swing teams are always ready to go — i.e. that that they are pre-formed, you have a clear communication channel with them, and that they distributed/waiting near the debating rooms so they can fill in at a moment's notice (often you will only find out that teams are missing right as debates are scheduled to start)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:41 +msgid "How will critical information be communicated to participants? Consider that in general, Facebook announcements do not reach many people, although paying to boost the posts is often a very cheap way of dramatically raising their effectiveness. In particular also ensure or check how you manage to get in touch with teams or adjudicators who go missing: will they have reliable phone numbers? Can you get a list of institutional reps who can be reliably called? You want to have processes in place for chasing up adjudicators who do things such as make scoring mistakes as soon as possible in order to minimise delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:42 +msgid "How will critical information be shared between the tab team, adjudication core, and logistics/convening teams? For smaller/medium sized tournaments a group chat augmented by phone calls (assuming everyone knows everyone else's number) can be sufficient, but even then, you need to ensure that any critical information conveyed privately (i.e. in a call or in person) is conveyed back to the group channel. At very large tournaments (or if you have the resources) walkie-talkies are an excellent way to manage communication — just make sure you have (ahead of time) reserve the different channels to a distinct and known purpose (i.e. general discussion; just the tab team & adjudication core; just convenors)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:43 +msgid "As part of this it is ideal if the organising committees can procure local SIM cards for members of the tab team and adjudication core who are not local. These should be relatively generous in their plans — you don't want to worry about running out of minutes or data if on a critical call or using a hotspot to make critical allocation adjustments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:44 +msgid "At major tournaments you want to arrive at least a day before check-in; and ideally whenever it is that the adjudication core is arriving for their own preparation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:47 +msgid "Registration" +msgstr "" + +#: ../../guide/tournament-logistics.rst:49 +msgid "Having effective registration systems and processes is one of the most important aspects of preparing to tab a large tournament. Bad registration data *will* make setting up a tab extremely painful and introduces the chance for mistakes or inconsistencies in tab data that will only come to light in the first round. As such:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:53 +msgid "You should check in with the registration team and see what they plan to do as soon as possible after being brought on-board. As part of this you should make it clear that you should be consulted on any decisions they make about what data to collect, when to collect it, and how to collect it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:54 +msgid "Registration data should be collected into a shared and live-updating source, such as a Google Sheet. There should be as few canonical sources (ideally one) of data as possible; i.e. there should be a single sheet for individual details, a single sheet for team details, etc; and these should be maintained all the way through to check-in. For both you, and the registration team, having multiple conflicting or outdated copies of data will lead to errors. However, for the registration team these errors can usually be easily sorted out in person (at check-in) but for you that information always needs to be reliable and up to date otherwise what is imported into the tab cannot be trusted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:56 +msgid "At this point our recommendation is to, in most cases, not use specialised registration systems as they are somewhat less intuitive and less flexible than setting up good Google Forms/Sheets." +msgstr "" + +#: ../../guide/tournament-logistics.rst:58 +msgid "If, for whatever reason, the registration team are not able to give you 'live' access to the data they have on hand, make sure they send you copies of it (even if it is incomplete) well before you need it to setup the tab itself. You want to be able to verify what data is actually being collected and how it is formatted well in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:60 +msgid "You should have access to *all* of the data collected; often registration teams will make (false) assumptions about what you do or do not need. It is better to have everything and then selectively filter out what is not relevant to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:61 +msgid "It is critical that the registration team should check in with you before setting up forms asking for information. Every additional time that registration asks for data there will be less and less participation in the process, so you should aim to gather all that you need at the first opportunity; typically during the canonical individual registration phase. Particular information that should not be overlooked for tab purposes:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:63 +msgid "Individual registration should ask whether a participant is a speaker or an adjudicator." +msgstr "" + +#: ../../guide/tournament-logistics.rst:64 +msgid "If that person is a speaker it should ask for their team name/number (reconciling these later is painful)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:65 +msgid "Individual registration should ask for any accessibility requirements of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:66 +msgid "Individual registration should ask for the previous institutions of both adjudicators and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:67 +msgid "Individual registration should ask for the email addresses of all participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:68 +msgid "Individual registration should ask for the phone numbers of adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:69 +msgid "Individual registration should ask for the gender identity of both adjudicators and speakers. Even if you are not *planning* on using this to inform processes, such as adjudicator allocations, you want it on hand in case plans change." +msgstr "" + +#: ../../guide/tournament-logistics.rst:71 +msgid "Independent adjudicators and the adjudication core should follow normal registration procedures. Having them not go through the normal process makes it easy to overlook their data or not get a complete picture of it. For example, adjudication core members might forget to nominate conflicts, or neglect to provide their previous institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:72 +msgid "You should confirm how the registration team plans to manage how people check-in to the accommodation in particular. Check-in is when issues with registration data come to light and it is vital that these changes are noted and recorded. Some form of validation of registration data *must* occur at check-in — in particular all adjudicators should be (individually) verified as present and all members of a team should confirm their presence along with their team's name/number and speakers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:73 +msgid "After check-in you need to have a definitive list of who is physically present at the tournament so you can run a first-round draw with confidence. Registration must know this and have processes in place for recording people individually as they arrive, and for that data to filter back to you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:75 +msgid "If you are using Tabbycat's secret links for feedback or ballots these are best distributed at check-in. The registration team should know about this, prepare for it, and be provided with the pdfs to print and distribute." +msgstr "" + +#: ../../guide/tournament-logistics.rst:78 +msgid "Adjudication cores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:80 +msgid "If there is a group chat for the adjudication core you probably want to be part of it; even if you don't contribute much. There are lots of small things that end up being discussed without consideration of how they will affect tab issues and it is also a chance to get to know — ahead of time — the people you will be working with closely over the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:82 +msgid "Members of the adjudication core will often leave tab-relevant decisions until the days prior to the first round or whenever it is that they can first meet with the tab team in person. This often wastes critical time and forces rushed decisions. Many considerations can instead be raised and discussed prior to the tournament. These could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:86 +msgid "How to manage the feedback process. This typically benefits from foresight and pre-planning, rather than being decided on the ground. Key considerations are:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:90 +msgid "Who submits feedback on whom? Do trainees do so on their chairs? Do panellists do so on each other? (Presuming your tab software supports these options)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:91 +msgid "Is feedback mandatory? If so, how will this be enforced exactly?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:92 +msgid "How much weight does each adjudicator's test or CV score have over the course of the tournament? By Round 3, or by Round 8, what proportion of an adjudicator's score is derived from their test and what proportion is derived from their feedback?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:93 +msgid "Will the adjudication core tweak an adjudicator's score to 'artificially' increase or decrease it to where they think it should be. For example, this could be done by adjusting a test/CV score upwards in order to compensate for bad feedback that (for whatever reason) they did not think was reliable or fair? Depending on your adjudication core's preferences and your tab software's allowances it is not unheard of for them to maintain full manual control over scores by reading/processing feedback results but only ever manually adjusting scores as a result (rather than having it automatically adjust due to the ratings in the feedback)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:94 +msgid "What is the score scale going to be? What do each of those numbers represent? How will this be communicated to participants so they can score accurately and consistently?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:95 +msgid "What kind of questions will feedback forms ask? If using :ref:`customisable printed or online forms ` consider how these questions be used tactically to identify key issues (say discriminatory scoring) or more easily identify people who should be promoted/demoted. While managing feedback is often a messy and subjective task, it can often be improved by being more targeted in what data it collects." +msgstr "" + +#: ../../guide/tournament-logistics.rst:96 +msgid "How will feedback be monitored, and how will this information feed back into the scores and allocations? At large tournaments it is not unusual for an adjudication core member to sit off each round to review and process feedback — there isn't really a good stretch of available time to do so otherwise. However even if doing this note that there are communication issues to manage here, as each adjudication core member will each end up with a relatively incomplete overview of the total volume of feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:98 +msgid "If possible it's nice to plan in advance for when the tab will be released (i.e. on the last night; the day after; etc.) as this often gets left to the last minute to be decided. Also the possibility of whether people can redact themselves from tabs should be raised, as that might be useful to inform participants of during online registration or tournament briefings. In a similar fashion, some adjudication cores might also want to limit speaker tabs to only a certain number of places, particularly at novice-centric tournaments." +msgstr "" + +#: ../../guide/tournament-logistics.rst:99 +msgid "How to handle conflict collection; see the following section." +msgstr "" + +#: ../../guide/tournament-logistics.rst:100 +msgid "How to handle the submission of scoresheets and feedback, primarily in terms of which parts of the process should be done online and offline. Some adjudication cores will have strong thoughts here; others will happily follow whatever you recommend. Key considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:104 +msgid "Paper-based feedback is much more taxing to enter than paper-based scoresheets — typically there is much more of it; it asks for a greater variety of data; and it is submitted at inconsistent times. The one advantage is that it is easier to make feedback mandatory with paper, as you can ensure all teams and adjudicators have done so prior to leaving the room. Thus, in most cases, a good online feedback system is much more preferable than paper. If using paper be aware that you will need a lot of volunteers to ensure the feedback is collected promptly. If internet or smartphone access is limited at your tournament it is probably best to accommodate both paper-based and online methods." +msgstr "" + +#: ../../guide/tournament-logistics.rst:105 +msgid "The consequences of having incorrect or missing ballots are much more severe than for feedback. As such major tournaments use paper ballots in some form as the final stage in a checking process to ensure that the results of a debate are definitely correct — adjudicators will always make mistakes and while digital ballots can catch/prevent some types of error (i.e. a low point win) they can't catch others (assigning the wrong scores to the wrong speaker, nominating the wrong winning team, etc.). Assuming your software supports both options, the choice is thus whether to use a hybrid approach (online submission followed by paper verification) or to rely entirely on paper. A fully-paper based approach will be simpler for both yourself and adjudicators, and can be almost as efficient if you have a sufficient number of volunteers. In contrast, a hybrid approach will be potentially much faster if you are short of volunteers and if you expect that almost all adjudicators will have access to the internet, a smartphone, and are capable of following instructions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:107 +msgid "In some circuits, and when using some particular tab software, tournaments might run a 'dual tab' where there is a second, independent, version of the tab software and database into which all data is *also* entered. From what we understand this performs a dual role, as both a backup system that can take over from the main one (say if internet access drops) and as a way of verifying ballot data (by comparing draws or databases between software rather than having a two-step entry process operating for a single tab). This practice seems obsolete when working with modern web-based tab software that is capable of backing up and restoring to an offline system, but we would like to hear your feedback if you think that is not the case." +msgstr "" + +#: ../../guide/tournament-logistics.rst:110 +msgid "Conflicts/Clashes (registration/equity/adjudication core)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:114 +msgid "There should always be a *single* means of collecting conflicts (i.e. a single Google Sheet/Form) and all conflicts should go through it. Because the nature of this data is sensitive and evolving, there must be a single location where it can be easily captured and verified as having been entered into the tab. Conflicts data should never be spread across a loose collection of emails/personal messages/spreadsheets; otherwise keeping track and knowing which ones have been entered into the system will be painful and error prone. Get in touch in with equity and registration in advance and make it clear that they should not make their own conflicts form; or if they've already made one, make sure you adopt it and have access/control of it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:115 +msgid "Conflicts should, ideally, *only be collected after a participants list has been published* and requests for people to nominate conflicts should also be sent out as few times as possible. Most people will only fill this form in once, so it is vital that when asked to nominate conflicts they have as much information as they need to do so comprehensively. Without a public and reasonably-complete participants list people will either nominate conflicts that are not present (wasting your time in cross-referencing data) or not realise someone is present and raise the conflict at a latter, less opportune time." +msgstr "" + +#: ../../guide/tournament-logistics.rst:116 +msgid "In some circuits only adjudicators are allowed to nominate conflicts because of the risk of teams using conflicts 'tactically' to block adjudicators that they think are terrible judges. However, having teams nominate conflicts can be useful: adjudicators may overlook a conflict or there may be equity-based reasons that a conflict is non-symmetrical. This trade-off can be handled in two ways:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:120 +msgid "Not allow teams to nominate conflicts during registration; but allow them to approach equity teams before, or during, the tournament to identify the conflict. Equity can then raise the issue with the tab team and adjudication core and it can be added to the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:121 +msgid "Allow teams to nominate conflicts during registration; but have the adjudication core review the data for 'tactical' conflicts. These are usually relatively easily identified, although can be overlooked if the adjudication core does not know the participants or their region/circuit well. The adjudication core can then override the conflict, discuss it with the teams, or raise it with equity. However, if going down this route, the tab team should discuss with the adjudication core how to manage this process well-ahead of the tournament, and ensure they actually do review the conflicts prior to the first round — otherwise it will likely surface during an allocation and become a major distraction during a critical time period." +msgstr "" + +#: ../../guide/tournament-logistics.rst:123 +msgid "As mentioned in the previous section, the adjudication core (possibly with equity) should provide some degree of guidance about what kinds of debating-related conflicts should be provided. People should be able to self-define what constitutes a conflict, but there are circumstances where they are overly cautious and can be reassured that it is not necessary. The opposite problem may occur also, where many people may have a very high bar for what defines a conflict which could lead to perceptions of bias from other participants." +msgstr "" + +#: ../../guide/tournament-logistics.rst:124 +msgid "Generally, it is preferable that each form nominates a single conflict, and people are asked to re-submit for each conflict they are adding." +msgstr "" + +#: ../../guide/tournament-logistics.rst:126 +msgid "To save you some hassle the conflict form should make this very clear (i.e. that one conflict = one submission; ensure the field labels reinforce this)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:127 +msgid "The conflict form should also make clear that you shouldn't use the form if you don't have any conflicts (i.e. people will submit 'None', 'None' etc)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:128 +msgid "The conflicts form should also make clear that adjudicator's don't need to submit a conflict for their current institution and that team's don't need to submit conflicts for adjudicators from their current institution." +msgstr "" + +#: ../../guide/tournament-logistics.rst:130 +msgid "In poorly-structured conflict forms, identifying exactly who is doing the conflicting and who is being conflicted is a nightmare. You want to structure the questions to minimise this ambiguity. A form should definitely ask:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:132 +msgid "Who are you (the conflict-specifier)?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:133 +msgid "Are you a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:134 +msgid "Which institution are you from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:135 +msgid "If part of a team, which team are you in?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:136 +msgid "Who are you conflicting?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:137 +msgid "Are they a team or an adjudicator?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:138 +msgid "Which institution are they from?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:139 +msgid "If they are in a team, which team is it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:140 +msgid "Have previously attended any other institutions; or have other reasons to conflict entire institutions? If so, specify those institutions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:142 +msgid "Note that this last question can be tricky to deal with; good tab software will let you conflict an adjudicator from an institution other than their own, but it is harder to mark an individual team as having members previously attending another institution. These circumstances are rare and typically very 'soft' conflicts but are probably best handled by creating individual conflicts between that team and adjudicators from the previous institution in question." +msgstr "" + +#: ../../guide/tournament-logistics.rst:143 +msgid "Adjudication core members will often not nominate their own conflicts; presuming that they will notice and correct them during allocations. They often forget or overlook this. Their conflicts should be entered as per normal." +msgstr "" + +#: ../../guide/tournament-logistics.rst:146 +msgid "Scheduling (convenors / venue organisers)" +msgstr "" + +#: ../../guide/tournament-logistics.rst:148 +msgid "One of the easiest ways to have things run late is to set an unrealistic schedule. As much as possible the timing allocated to rounds (inclusive of events such as lunch or committee forums) should conform to an even distribution of how long it takes to process results and create a draw/allocation — you don't want to be in a position where particular rounds have too much time and others too little time to spend on allocations and other crucial tasks. This is something that should definitely be working on in conjunction with convenors and other critical parties before they lock down timing details with food suppliers or the operators of the debating venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:150 +msgid "Note also that in most circumstances it is preferable to create a draw and allocation for the first day of the next round at the night before. This time should be built in to the schedule of the previous day, and raised with the adjudication core so they don't expect to be able to immediately depart after the day's rounds are done." +msgstr "" + +#: ../../guide/tournament-logistics.rst:152 +msgid "Below is the time taken within each round at Australs 2017. For context, this was neither a particular efficiently or inefficiently tabbed tournament. Notable details:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:156 +msgid "The tournament was ~40 rooms each round and had access to 3-6 runners and data enterers. Paper ballots were pre-printed and distributed by runners to rooms prior to the debates starting, then collected sometime after the 15 minute deliberation period. Feedback was submitted online. At Australs all adjudicators (excluding trainees) submit their own ballots." +msgstr "" + +#: ../../guide/tournament-logistics.rst:157 +msgid "The adjudication core were neither particular slow nor fast in allocating adjudicators compared to other adjudication cores. At Australs most adjudication cores will create allocations by using first running an automatic allocation then extensively tweak the results." +msgstr "" + +#: ../../guide/tournament-logistics.rst:158 +msgid "There were no serious issues that delayed the tabbing of any particular round beyond the routine and expected issues of last-minute draw changes, adjudicators producing incomprehensible ballots, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:159 +msgid "Whilst the tab ran relatively quickly, there were minor delays because of mismatches between the planned schedule and the optimal schedule from a tab perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:160 +msgid "A round at Australs takes around 2 hours from a debater's perspective: 30m of prep, ~60m for a debate, ~15m for deliberation, and ~15m for the oral adjudication and feedback." +msgstr "" + +#: ../../guide/tournament-logistics.rst:161 +msgid "We didn't note the timing of data-entry in Round 8 as there was no time pressure. After data entry was finished, finalising and double-checking the breaks took through to ~7-8pm." +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Day" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "One" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Two" +msgstr "" + +#: ../../guide/tournament-logistics.rst:164 +msgid "Three" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "Round" +msgstr "Vòng" + +#: ../../guide/tournament-logistics.rst:166 +msgid "1" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "2" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "3" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "4" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "5" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "6" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "7" +msgstr "" + +#: ../../guide/tournament-logistics.rst:166 +msgid "8" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "Draw generated" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +#: ../../guide/tournament-logistics.rst:169 +msgid "*Night prior**" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:43" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "16:12" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:17*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:05" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "15:46" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "19:10*" +msgstr "" + +#: ../../guide/tournament-logistics.rst:168 +msgid "12:07" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "Allocation finished" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:17 ``+34m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:36 ``+24m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "20:28* ``+71m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "12:58 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "16:24 ``+38m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "21:30* ``+140m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:169 +msgid "13:25 ``+78m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "Motions released" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:28" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:50 ``+33m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:47 ``+11m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "09:22" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "13:14 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "16:40 ``+16m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "9:30" +msgstr "" + +#: ../../guide/tournament-logistics.rst:170 +msgid "14:18 ``+53m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "First ballot received" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:51 ``+143m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:46 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:52 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:18 ``+116m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "15:13 ``+119m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "18:40 ``+120m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +msgid "11:35 ``+125m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:171 +#: ../../guide/tournament-logistics.rst:172 +msgid "?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "Last ballot confirmed" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:38 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "16:07 ``+21m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:15 ``+23m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:05 ``+47m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "15:44 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "19:09 ``+29m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:172 +msgid "12:06 ``+31m``" +msgstr "" + +#: ../../guide/tournament-logistics.rst:176 +msgid "Tab Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:178 +msgid "Setting up a tab site is the most technically challenging (or at least annoying) part of tabbing. It is where you need to reconcile large amounts of data and configure a variety of settings to ensure everything will run without issues during rounds. While this is often done a day or two before the tournament, ideally you should look to do as much as possible in the week or two beforehand where there is much less time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:181 +msgid "Importing data: workflow" +msgstr "" + +#: ../../guide/tournament-logistics.rst:185 +msgid "First check with registration people if their data is complete, and if not who is missing. If it's only a few people it's viable (for tab purposes) to use place-holders for them, as long as you remember to follow up and edit their data manually later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:186 +msgid "Familiarise yourself with the different methods for importing data into your tabbing program. Typically, these include options for bulk-importing spreadsheets, for adding information piece-by-piece through a graphical interface, or a hybrid systems. Depending on your tabbing software it may be easiest to first setup your tournament on a local copy of the tab (where it will be faster to rectify mistakes) and transfer the data to the live site when everything is mostly complete." +msgstr "" + +#: ../../guide/tournament-logistics.rst:188 +msgid "If you are using Tabbycat our spreadsheet importer is definitely easiest to use on a local copy; however using the visual importer is perfectly viable for larger tournaments if you are not comfortable with the command line. When using the spreadsheet importer note that it will likely take several iterations to get the data to import cleanly as there will typically be small mismatches in speaker/institution names and the like." +msgstr "" + +#: ../../guide/tournament-logistics.rst:190 +msgid "If the tournament (or the host society) has their own domain name and your tab software is self-hosted consider whether you want to setup the tab site on their domain so that the URL is nicer and/or easier to type." +msgstr "" + +#: ../../guide/tournament-logistics.rst:192 +msgid "If you are using Tabbycat, and deploying to Heroku, be sure to read our documentation about the size of Postgres database your tournament will require. Setting up the correct size of database from the start is the best way to go, as transferring information at a later stage is a hassle and could delay the tab at inopportune times." +msgstr "" + +#: ../../guide/tournament-logistics.rst:195 +msgid "Importing data: regions/societies" +msgstr "" + +#: ../../guide/tournament-logistics.rst:199 +msgid "Societies will often have special names that they like to use in draws (that are not the same as their institution's name or acronym). These can be gathered from institutional reps or from prior tabs. When in doubt err on the colloquial / most recognisable name; particularly for formats where teams need to find each other prior to the debate." +msgstr "" + +#: ../../guide/tournament-logistics.rst:200 +msgid "If your tabbing software has methods for assigning region information to teams and adjudicators (for diversity purposes) determine with the adjudication core the types of regions that will be used." +msgstr "" + +#: ../../guide/tournament-logistics.rst:203 +msgid "Importing data: participants" +msgstr "" + +#: ../../guide/tournament-logistics.rst:207 +msgid "Check you have emails/phone numbers included in your data that will be imported (presuming your tabbing software supports this) there are useful to have on hand later for either emailing out information or quickly following up errant adjudicators." +msgstr "" + +#: ../../guide/tournament-logistics.rst:208 +msgid "Often, the easiest way to prepare registration data for tab imports is to create new tabs in the registration spreadsheet, and use referencing to automatically order and arrange their data into the format your tab software wants. If the registration data changes significantly this will also make it easier to re-import things." +msgstr "" + +#: ../../guide/tournament-logistics.rst:209 +msgid "Often some adjudicators, typically local independents, may not be available for all rounds. Try and find out who this affects and when; once data has been imported you can :ref:`pre-check these adjudicators in and out of rounds ` (if your tab software supports this; otherwise note it for later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:210 +msgid "Remember that the swing team(s) probably also need to be imported into the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:213 +msgid "Data import: rooms" +msgstr "" + +#: ../../guide/tournament-logistics.rst:217 +msgid "Ideally you want not just a list of rooms, but also of their types and categories — i.e. what building a room is in and/or it will be coded so that participants can find it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:218 +msgid "You want to know if access to some rooms is conditional; i.e. if some rooms are only available for some rounds. Again, if your tab software supports it you can :ref:`record this availability information into the system ` (once data is imported) otherwise you can note it for later." +msgstr "" + +#: ../../guide/tournament-logistics.rst:219 +msgid "Registration should have collected information about accessibility requirements; they should be imported into your tab software (if it :ref:`supports automatically matching accessibility requirements `) or note for later. In general you will also want to use a similar process to ensure that members of the adjudication core are assigned rooms that are close to the tab room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:220 +msgid "You also want some idea of priority; that is to say if some rooms are inconvenient (and you have more rooms than you need) they should be marked as a low priority so they will be allocated only if needed. Again, this might be automatically done by your tab software or something you will need to note and manually change after each draw is made." +msgstr "" + +#: ../../guide/tournament-logistics.rst:223 +msgid "Data import: adjudicator test/CV scores" +msgstr "" + +#: ../../guide/tournament-logistics.rst:225 +msgid "Ideally the adjudication core should do this themselves as they are marking the test or scoring CVs. If they won't, or you don't trust them with full tab access, be prepared to do so yourself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:228 +msgid "Data import: tab access" +msgstr "" + +#: ../../guide/tournament-logistics.rst:230 +msgid "Set up user accounts for the adjudication core with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:231 +msgid "Set up user accounts for runners/assistants with dummy passwords (they can change them later)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:233 +msgid "If using Tabbycat and using online ballots or feedback with the private URLs method, participants should be emailed out their private URLs before they start travelling to arrive at the tournament (i.e. when they have a reasonable chance of checking their email). This can be done using the inbuilt pages on Tabbycat, or by importing participants data into a service such as Mailchimp." +msgstr "" + +#: ../../guide/tournament-logistics.rst:236 +msgid "Pre-Rounds Setup" +msgstr "" + +#: ../../guide/tournament-logistics.rst:239 +msgid "Setting up the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:241 +msgid "This is typically the first order of business, as all future pre-round setup tasks (i.e. training the adjudication core, testing printing, etc.) are better for being done in the same space that will be used throughout the rounds. Once you're in the space there are a couple of small checks to run through before the larger question of how to arrange and use the space should be tackled:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:245 +msgid "Check with convenors whether things can be left in the tab room overnight. If they can't you'll need to make plans for how to move any big items (printers; ballot stacks) to and from the tab room each day." +msgstr "" + +#: ../../guide/tournament-logistics.rst:246 +msgid "Check that the internet access in the tab room is reliable." +msgstr "" + +#: ../../guide/tournament-logistics.rst:247 +msgid "Check that the projector system works, both with whatever wired-in computer is in the room and when connected to your laptop." +msgstr "" + +#: ../../guide/tournament-logistics.rst:248 +msgid "Check what items either yourself, or the organisers, have at hand and check if anything needs to be acquired before the next day. Critical items for tab rooms are typically:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:252 +msgid "An extension cord with multi box; ideally a pair of each." +msgstr "" + +#: ../../guide/tournament-logistics.rst:253 +msgid "Whiteboard markers (assuming there is a whiteboard) otherwise permanent markers and large sheets of paper (i.e. A2) can suffice." +msgstr "" + +#: ../../guide/tournament-logistics.rst:254 +msgid "Boxes. Lots of boxes. Loose ballots are a source of confusion and error, so you want some way of temporarily storing ballots as they proceed through the entering and checking process. You probably want at least three large boxes (for ballots to-enter, ballots to-check, and finished ballots) but more will be useful." +msgstr "" + +#: ../../guide/tournament-logistics.rst:255 +msgid "Spare printing ink/toner, and paper for the printer. Ideally your paper would be multi-coloured, with each colour being used for a different round. Pastel colours are ideal, and you ideally want at least three different colours so that you don't have to repeat a colour within the same day. Be sure to calculate how many sheets you will need per round and ensure you have a generous number of spares." +msgstr "" + +#: ../../guide/tournament-logistics.rst:256 +msgid "If tabbing a format that can produce multiple ballots per-debate, staplers are essential to keep those ballots organised. Buy at least two sturdy ones." +msgstr "" + +#: ../../guide/tournament-logistics.rst:258 +msgid "Non-essential, but often useful to have items:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:262 +msgid "Whatever dongles/adapters you need to connect your laptop to the projectors, both in the tab room and in the briefing room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:263 +msgid "An Ethernet cable (or two) as a backup option if WiFi drops or is overloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:264 +msgid "Post-it notes are a great way to temporarily mark ballots with information; typically used to indicate ballots that need correcting." +msgstr "" + +#: ../../guide/tournament-logistics.rst:265 +msgid "You'll often need to make impromptu signs; sticky tape and/or blu-tack are good here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:266 +msgid "Spare pens for the people doing data entry to use" +msgstr "" + +#: ../../guide/tournament-logistics.rst:267 +msgid "Trash bags for collecting rubbish as it accumulates" +msgstr "" + +#: ../../guide/tournament-logistics.rst:268 +msgid "A Chrome Cast can occasionally be very useful if a projector or screen doesn't have accessible input cables or so that you can use a projector without having your laptop tethered to a particular podium and desk." +msgstr "" + +#: ../../guide/tournament-logistics.rst:270 +msgid "If you haven't already it's a good idea to check your printing setup by printing off a bunch of generic ballots and feedback forms to have on hand if the need arises (i.e. a ballot is missing and needs to go out ASAP; or if someone can't do feedback online and needs to do so on paper). At worst, the blank ballots you print can be used for the out-rounds. While printing these off, time how long it takes the printer to print say 25 ballots and extrapolate from that to figure out how long it will take to print the entire round's worth of ballots. Note that if printing off a round's ballots is relatively quick it can be useful to delay it in order to better accommodate any last-minute changes to the draw that happen post-announcement. It's also worth thinking about how you (or at least who will) group up the printed ballots in order to distribute them to runners." +msgstr "" + +#: ../../guide/tournament-logistics.rst:272 +msgid "At this point you should also setup whatever process you need for managing runners and the ballot collection process. At a minimum, this should probably be a spreadsheet or a list on a whiteboard outlining the different groups of rooms with spaces to mark in which runners are delivering/collecting ballots for each location. Who is running where might change from day to day and should be kept updated. It should also have some method for contacting each runner (i.e. a cell phone number)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:274 +msgid "The question of how to arrange the actual room is one with many answers, and is obviously shaped by the peculiarities of the space itself. However there needs to be some system behind it so that people know exactly where to go and what to do when there is time pressure." +msgstr "" + +#: ../../guide/tournament-logistics.rst:276 +msgid "The key consideration behind this system is typically the 'flow' of ballots: what happens after they are brought back from runners, but before they are completely entered into the system. Think through how you want this process to operate and how the space can be arranged to make each step as smooth as possible. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:280 +msgid "When runners initially return a big stack of ballots, what happens? They could be transferred directly to the data-enterers to start on, but it is often useful to have preliminary checks here in order to keep the job of the data-enterers as simple as possible. These checks could include:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:284 +msgid "For formats with multiple ballots per-debate, you typically want to identify and staple together all the ballots from a given panel." +msgstr "" + +#: ../../guide/tournament-logistics.rst:285 +msgid "For tournaments where ballots are liable to go missing (or for when you have plenty of data-enterers and want peace of mind) it is worth using the :ref:`ballot 'check-in' system of your tab software ` (if it has one) to mark off ballots as physically present in the tab room. This allows you to quickly identify which ballots are missing and begin tracking them down earlier than you would do otherwise if just waiting for the 'to enter' pile to be exhausted." +msgstr "" + +#: ../../guide/tournament-logistics.rst:286 +msgid "Depending on your preferences and resources, ballots could at this stage be checked for errors. This could include a basic sweep for missing information (i.e. totals) or a comprehensive sweep that includes checking math errors, ambiguous handwriting, low-point wins, etc.). While this will delay the time between ballots arriving and being entered, it will mean that you can start correcting ballots sooner, and lessens the burden on (potentially inexperienced) data-enterers to check and catch these. If you have many runners, and they are familiar with how debating scoring works, this is recommended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:288 +msgid "Once this preliminary step has occurred the next task is actually entering the ballots. The number of steps here is dependent on your tab software and tab settings; you might have had the 'draft' ballot be submitted online by chairs or you might have the whole two-step process of a 'draft' ballot entry and the 'confirmed' ballot entry taking place within the tab room. Considerations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:292 +msgid "Regardless of whether you are working with a one-step or a two-step process, you want to arrange the tables where data-enterers are sitting such that their need to move is minimised. That might mean either have a central inbox of ballots to enter in the centre of the tables (such that everyone can reach it) or having multiple 'clusters' of enterers around boxes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:293 +msgid "If work with a two-step process you want those two steps to be an active part of the spatial arrangement. That is to say, typically there will be a grouping of enterers who are working on the initial ballot entry (clustered around a box or boxes) and then a separate 'downstream' grouping of enterers that work on confirming/validating those entries. Depending on the size of tournament and quantity of runners, you either want it so that individuals from the first group can easily pass their ballots to the box of the second group; i.e. by reaching across the table or walking a short distance. At huge tournaments, you might want a dedicated person to transfer ballots between boxes to prevent enterers having to get up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:294 +msgid "In a two-step process people may need to transfer roles, as generally you want to prioritise entry and then validation. Often this isn't necessarily much more efficient, but if 'rebalancing' the roles make sure that the spaces assigned to each role can accommodate extra people, and that people physically move to occupy each role." +msgstr "" + +#: ../../guide/tournament-logistics.rst:295 +msgid "In general, you want to minimise the number of ballots that each enterer feels the need to 'hoard' to work through to keep the work evenly distributed. If people are taking a large number of ballots to process, at the final stages of entering some people will have a bunch to work through while others will be finished. Making it easy to collect and pass on ballots in the space itself helps cut down on this while keeping entry efficient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:296 +msgid "While the exact spatial arrangement depends on your numbers and what furniture is available, a long rectangle is a good starting point as the ballot process is in general linear (check, enter, validate, finish). Typically, this might look like a series of tables in a row with enterers sitting on either side and with the various ballot boxes in the middle." +msgstr "" + +#: ../../guide/tournament-logistics.rst:297 +msgid "When ballots have finished being enter/validated there definitely should be some sort of final 'done' box. Take care how ballots are put here, a common source of error is people putting ballots there before they are fully finished." +msgstr "" + +#: ../../guide/tournament-logistics.rst:298 +msgid "When ballots need to be corrected you generally want to 'extract' them from this process and hand them off to a tab-director or assistant to chase up and collect. There should be a forethought process for managing this; and ideally a dedicated space for it to prevent ballots being lost and to make it easy to identify ongoing issues. This might look like a process of sticking a post-it note (outlining the error) to the ballot, and then pulling it from entry/validation and placing it on a desk. Ideally you also want one of the tab directors always *not* doing data entry so that they are immediately available to manage this process." +msgstr "" + +#: ../../guide/tournament-logistics.rst:301 +msgid "Training volunteers" +msgstr "" + +#: ../../guide/tournament-logistics.rst:303 +msgid "If at all feasible you want to train that volunteers acting as runners and/or data enterers the day *before* the tournament starts otherwise the first round will be rough. It's generally a good idea for this training session to generally mirror the process of running a round. It's also generally a good idea that — even if you have enough people for dedicated runner and data-enterer roles — to train all volunteers so that they are familiar with each role and can fill in if needed. This has a couple of stages:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:307 +msgid "Introductions and details" +msgstr "" + +#: ../../guide/tournament-logistics.rst:311 +msgid "Volunteering is typically thankless and often stressful. It's also quite a dull and mechanical process: deliver paper; collect paper; enter numbers; check numbers. Given the rather unglamorous nature of their role you want your volunteers to feel welcome and a crucial part of a wider team. When meeting everyone for the first time try and run the introductions in a non-perfunctory manner and get to know people's background/interests and outline how valuable they are to the tournament." +msgstr "" + +#: ../../guide/tournament-logistics.rst:312 +msgid "As part of this process you should, note their cell phone numbers or whatever means you will use to coordinate communication between the team." +msgstr "" + +#: ../../guide/tournament-logistics.rst:313 +msgid "Figure out what will be happening during downtime and how you can make it more enjoyable. Would volunteers like to watch debates, work in the tab room, etc. Is there anything they would like during those down times (music, snacks, coffee, etc.)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:315 +msgid "Rooms and Running" +msgstr "" + +#: ../../guide/tournament-logistics.rst:319 +msgid "If runners are unfamiliar with debating in general, outline the basics of what draws are, what ballots are actually for, and what this process looks like from a debater's perspective." +msgstr "" + +#: ../../guide/tournament-logistics.rst:320 +msgid "Outline how/when the printing process occurs and who will sort/assign the ballots. Now is a good time to assign different runners to the different groups/rooms that they will be working with." +msgstr "" + +#: ../../guide/tournament-logistics.rst:321 +msgid "It is critical that, as a group, you actually go to everyone one of the venue groups and identify all of the venue rooms that are listed so that everyone knows exactly where to go. This may take some time. But it is a good chance to both check those rooms actually exist and pre-identify any problems that might occur with runners and debaters finding them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:322 +msgid "Outline in general what happens during ballot collecting: when to do it, how to approach chairs, what do to if they are slow or delaying. You should raise the chance of chairs being belligerent and outline how they (and you) should deal with this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:323 +msgid "If you are having runners pre-check ballots it's a good idea to fill out a few 'bad' ballots to demonstrate the kinds of checking required. If you are using any communication systems (i.e. having runners mark of buildings as 'done' in an online system) go through that now also." +msgstr "" + +#: ../../guide/tournament-logistics.rst:325 +msgid "Data entry and checking" +msgstr "" + +#: ../../guide/tournament-logistics.rst:329 +msgid "Before starting, setup logins for everyone and show them how to login. Also get an idea of what devices they will be using, or can bring, for data entry purposes. Check/ensure that they will have internet access on those devices." +msgstr "" + +#: ../../guide/tournament-logistics.rst:330 +msgid "Run through this in the actual tab room; illustrating examples with actual ballots and going through the roles in the actual spots which they will occur." +msgstr "" + +#: ../../guide/tournament-logistics.rst:331 +msgid "Run through how the seating/table/box arrangement works and the types of roles at different positions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:332 +msgid "Emphasise that in general, any ambiguities should be raised with the tab directors/assistants; i.e. that you should never guess about ballots but instead always delegate resolving issues to someone else." +msgstr "" + +#: ../../guide/tournament-logistics.rst:333 +msgid "Run through the different edge cases and things to check during entry. For example Iron Person speeches, mismatched totals, entering the wrong ballot for the wrong panellist, etc (see section below). Be sure to also go through what happens when the validation step fails; i.e. when a ballot needs to be re-entered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:336 +msgid "Training the adjudication core" +msgstr "" + +#: ../../guide/tournament-logistics.rst:338 +msgid "Typically making the first-round's draw and allocation is the best time to really run through how your tab software and processes work in a 'real' environment as well as the expectations surrounding their and your role. Generous amounts of time should be budgeted for this; it's not uncommon for it to take up most of an evening. It's also worth having an older tab, or a tab full of fake data handy in order to show them how, say, the feedback or allocation interfaces look like when full of data." +msgstr "" + +#: ../../guide/tournament-logistics.rst:340 +msgid "To kick off you should probably setup tab logins for the adjudication core as necessary, outline what kinds of access they have, and (particularly if they haven't used your tab software before) outline broadly what pages they should and shouldn't access. In particular, show them how to find and parse feedback as that is often the interface where they will be spending most of their time individually. As part of this tour outline (if you haven't already) how feedback will work, as well as the means by which the adjudication core can use the tab software to keep track of feedback as it comes in. Ideally some sort of general strategy should be formed for this, so that particular people sit out rounds, or are delegated the task of catching up on feedback at other points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:342 +msgid "Depending on how many runners you have it may be necessary, or beneficial, if the adjudication core helps out with data entry. However, if you go down this route the adjudication core need to be highly trained; they are often much more likely than volunteers (who are less self-confident and have more experience) to make errors. Whether you do or don't do this, ensure that adjudication core members know to come to the tab room ASAP after they have finished adjudications rather than swanning around socialising or going to lunch. Draws will often be held up just by the fact that not enough adjudication core members are present to start or finish an allocation." +msgstr "" + +#: ../../guide/tournament-logistics.rst:344 +msgid "The first-round allocation is the last thing you want to cover. It is typically your only change to slowly and comprehensively walk the adjudication core through the allocation interface and the allocation system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:346 +msgid "Allocation interfaces, while often complex, should be stepped through so that the adjudication core knows precisely how to operate it themselves (if needed). They should know what it can (and can't do) and how the different features can be used and activated. For example, diversity highlights might be an optional toggle (in which case you explain how to active it, when to do so, and what it represents) or there might be parts of the interface that detail information such as a room's liveness, energy, or bracket which should be highlighted and explained (i.e. how 'liveness' is determined)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:348 +msgid "Secondly, and most importantly, is outlining how the automated process of adjudicator allocation operates, and how this can be made to match the adjudication core's preferences. Typically, you want to rely on automatic adjudicator allocations as much as possible in order to decrease the time taken to do an allocation; however every adjudication core has a different philosophy on what their perfect allocation looks like, and it is your job to try and align that ideal with what the automated system produces as much as is possible. The precursor to this is yourself knowing how your tab system allocation works: what is the relationship between a debate's bracket (or assigned priority/energy) and the numeric ranking of the automatically generated panel? Does the software optimise panel strength for a voting majority, or across all panellists? When does the software allocate solo chairs over panels? How does it avoid conflicts? Does it have (and enforce) particular expectations for a given adjudicator's score; or does it rely on a more relative comparison? The answers to the questions will often be dramatically different between different programs and you should know them in advance." +msgstr "" + +#: ../../guide/tournament-logistics.rst:350 +msgid "Most tab software will have at least some options for you to configure those automated processes — either by changing the automatic allocation's parameters directly or by controlling the ranking and feedback systems that feed into it. The first round is the prime opportunity to configure these options so that they align as close as possible with what the priorities of the adjudication core. If your feedback ranking system is mismatched with how you expect the automatic allocation to place adjudicators, or if the distribution of adjudicators across the draw is not what you expect, the adjudication core will end up wasting significant amounts of time adjusting allocations. Even if things work well using the default settings, ensure you experiment and demonstrate the consequences of changing the settings just to show that it can be done, what the general effects are, and to see if there are even-better configurations." +msgstr "" + +#: ../../guide/tournament-logistics.rst:352 +msgid "This process of tweaking the automatic allocation settings is one you should also revisit as the rounds progress." +msgstr "" + +#: ../../guide/tournament-logistics.rst:354 +msgid "How to approach diversity (typically in terms of region and gender) across an allocation in particular is something that some members of an adjudication core will not have had to consider in the context of a large tournament with time pressure or in terms of having to make explicit trade-offs. Again, you should make it clear how the software can accommodate this, and get the adjudication core to plan for how (in general) they want to approach this. Often it will form the final phase of the allocation process, and so can easily be forgotten or skipped over; or people will have different philosophies of how to approach this which are only raised at critical points." +msgstr "" + +#: ../../guide/tournament-logistics.rst:356 +msgid "Outline that there will usually be a trade-off between the quality of each allocations and the speed at which the tournament runs. When time is not a factor, many adjudication cores will often take an hour or more in order to create a perfect allocation; but they should know though that aiming for perfect during many rounds will break the schedule. You should try and get them to set some sort of time goal for allocations, and (during the rounds) ensure that they are aware of when they are going too fast or too slow. Depending on your personal preferences and the norms surrounding tab direction in your circuit you may want to actual enforce these time limits." +msgstr "" + +#: ../../guide/tournament-logistics.rst:358 +msgid "Finally, outline how you will all communicate. Again, there should be a single medium for this so that everyone knows what is going on; and this is ideally something that has been planned out beforehand with them and the organising committee. But at this point the tab team may have expanded, or there may be better options than what was being used previously. It's also worth outlining which parts of the tab team will generally be doing what roles and where — i.e. who will be rolling the draw, who will be chasing up people, etc." +msgstr "" + +#: ../../guide/tournament-logistics.rst:361 +msgid "Preparing a briefing" +msgstr "" + +#: ../../guide/tournament-logistics.rst:365 +msgid "At large tournaments there should be some form of briefing covering ballots and feedback process, even if it is just quick one. Usually you will want to be the person to design and deliver this; other people less-familiar with the system may miss details." +msgstr "" + +#: ../../guide/tournament-logistics.rst:366 +msgid "Liaise with convenors and the other people doing briefings to ensure (a) they know you're doing one; and (b) you are not overlapping in terms of content." +msgstr "" + +#: ../../guide/tournament-logistics.rst:367 +msgid "See the last section of this document for notes on what can be useful to include here" +msgstr "" + +#: ../../guide/tournament-logistics.rst:370 +msgid "Final checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:374 +msgid "Check if the convenors have made a map that clearly outlines where the rooms are. Ensure it's clear and post it to either the tab site (ideally) or somewhere like Facebook." +msgstr "" + +#: ../../guide/tournament-logistics.rst:375 +msgid "Check that convenors have some sort of way-finding system in place, i.e. chalked directions or colour-coded signs. Check these colour codes match the names of your venues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:376 +msgid "Check that the draw types are correct for each round in the tab system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:377 +msgid "Check with adjudication core if/when there are secret rounds and that these are correct in the edit data base area." +msgstr "" + +#: ../../guide/tournament-logistics.rst:378 +msgid "Check how the draw will be displayed and managed. Is the projector good; how big does the text size need to be? How fast is the scroll?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:379 +msgid "If you will pre-print ballots check that you've set the \"return ballots to\" configuration setting; even if it just says \"to runners\"." +msgstr "" + +#: ../../guide/tournament-logistics.rst:382 +msgid "Managing Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:384 +msgid "Once everything has been setup and everyone knows what they should do, the actual process of running each round should go smoothly. It probably won't though. The earlier sections should have laid out what the ideal process for managing data entry and allocations, so this section will instead focus on what can go wrong and what to keep an eye out for." +msgstr "" + +#: ../../guide/tournament-logistics.rst:387 +msgid "Disaster scenarios" +msgstr "" + +#: ../../guide/tournament-logistics.rst:389 +msgid "There are two broad classes of disaster scenario here. The first, and more rare case is when either internet access at the venue goes out or if a web service that your tab software depends on has an outage (for example, both Tabbie 2 and Heroku-deployed Tabbycat instances depend on Amazon Web Services). The first can at least be solved temporarily if tethering is available, but if that is not possible (or the latter case occurs) you may need to switch to using an offline copy of that tab by restoring from a backup if the outage is non-transient." +msgstr "" + +#: ../../guide/tournament-logistics.rst:391 +msgid "Obviously, for this to work, you should be taking regular backups using whatever mechanism your tab software allows. Key times to do so are critical events such as finishing entering a round's data or finalising an adjudication allocation as these are especially difficult to recreate. Importantly, these backups are only useful to you if you have a downloaded copy of them; ideally download to a Dropbox or some other cloud service that will spread them across multiple computers and an online service." +msgstr "" + +#: ../../guide/tournament-logistics.rst:393 +msgid "Having an outage of internet access or a key web service go down to the point of having to switch to an offline tab is an exceedingly rare event, but one worth planning for at large tournaments. That is to say you should have ideally have an offline copy of your tabbing software setup on your local machine, and know how to restore a backup to it if necessary." +msgstr "" + +#: ../../guide/tournament-logistics.rst:395 +msgid "Backups are also useful as guards against a much more common source of error: data loss caused by user error. It is not unheard of for even experienced tab directors (or inexperienced adjudication core members) to accidentally delete an entire allocation, delete a round, or some other form of destructive action that would require a lot of work to redo. Taking backups at key points, and knowing how to restore them (to the online copy of the tab) is a useful — and occasionally essential — skill." +msgstr "" + +#: ../../guide/tournament-logistics.rst:397 +msgid "The much more common source of a major tab disruption is a major user-error or a bug within your tab software itself. Fixing these will be highly-context dependent and the best way you can prepare for them is to know your tab software well enough to understand what might have caused it or be able to contact someone else who does. That said, having backups on hand can also allow you to restore your database to before the bug or user-error occurred and try to proceed without re-triggering it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:400 +msgid "Expected problems" +msgstr "" + +#: ../../guide/tournament-logistics.rst:402 +msgid "Incorrect ballots are an inevitable tragedy. Many more optimistic tab directors will imagine that these can be prevented through sufficiently detailed briefings, recurring public shamings, or fool-proof ballot designs. While these might help in cutting down the number of errors, eliminating them entirely seems to be an unachievable goal. Note that this is particularly true at international tournaments and/or at tournaments that draw participants from circuits which have more than one predominant format." +msgstr "" + +#: ../../guide/tournament-logistics.rst:404 +msgid "While debaters as a whole display astonishing levels of innovation in discovering new ways to incorrectly fill in a ballot, there are a couple of broad cases that you should look out for an prepare people to deal with:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:408 +msgid "Not adding up score correctly. Pretty much everyone who does this will note that this is the first time that it has ever happened to them." +msgstr "" + +#: ../../guide/tournament-logistics.rst:409 +msgid "Omitting some information. Most common are not filling in total scores, the nominating winner, or the margin. Having omitted an entire team's scores or speaker names is not uncommon." +msgstr "" + +#: ../../guide/tournament-logistics.rst:410 +msgid "Scores that are outside the range." +msgstr "" + +#: ../../guide/tournament-logistics.rst:411 +msgid "Low-point wins, or tied-point wins. Typically occurs in conjunction with (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:412 +msgid "Poor handwriting rendering numbers illegible. While one could 'guess' whether a number is in fact a 6 or a 5 based on a team's total score, doing so is dangerous as it assumes that the person hasn't also done (1)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:413 +msgid "'Correcting' information in an ambiguous way. For example, using arrows to swap a speaker's order (which is typically circular/ambiguous) or drawing numbers over other numbers in a way that makes it unclear which is the original and which is the replacement." +msgstr "" + +#: ../../guide/tournament-logistics.rst:414 +msgid "Ballots just going entirely missing because either a runner missed the room, the chair forgot to return it, or the chair just left it in the room." +msgstr "" + +#: ../../guide/tournament-logistics.rst:416 +msgid "Ballots aside, there are a number of other common occurrences that will necessitate changes to the drawn and allocations:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:420 +msgid "Teams will not turn up to debates, or turn up to debates extremely late. In both cases they will often not notifying anyone. Aside from needing to swap in a swing team in their place in the draw, it's worth keeping in mind that the necessity of a swing team might not be known until right when debates are about to start (which can lead to issues if you assume trainees or runners will be filling up the 'spare' swing team)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:421 +msgid "Adjudicators will also go missing. As with teams this can usually be caught during roll call; but might also not be known up until debates start. If the adjudication core is available they can make adjustments, but often you will need to make a call as to whether to form an even-sized panel or to redistribute adjudicators from elsewhere." +msgstr "" + +#: ../../guide/tournament-logistics.rst:422 +msgid "When a draw is released there will often be conflicts that were unknown to the tab system, and will necessitate making changes to the draw post-release. It's important that when making these changes you keep a clear record of what needs to change (if there are multiple swaps needed it can get tricky to keep track of) and ensure that all parties involved know about where they are being swapped to." +msgstr "" + +#: ../../guide/tournament-logistics.rst:425 +msgid "Ongoing checks" +msgstr "" + +#: ../../guide/tournament-logistics.rst:427 +msgid "You will have a decent amount of downtime during rounds when debates are happening. A couple of things its worth keeping an eye on during that time:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:431 +msgid "Ensuring your backups have been taken and downloaded." +msgstr "" + +#: ../../guide/tournament-logistics.rst:432 +msgid "Ensuring the tab room isn't devolving into mess." +msgstr "" + +#: ../../guide/tournament-logistics.rst:433 +msgid "If you can be bothered (and if no adjudication core member is doing so) reviewing feedback for critical issues (i.e. comments highlighting severe issues, or chairs getting very low scores) is a good way to be useful. If using paper-based feedback this can look like physically separating out these feedback forms for the attention of the adjudication core; while if using online feedback systems you may want to keep a collection of browser tabs to show." +msgstr "" + +#: ../../guide/tournament-logistics.rst:434 +msgid "Chasing up the language committee (if one exists for this tournament) to confirm which teams are in which category and what their break preferences are (if multiple breaks are not allowed). You want to have this information confirmed as soon as possible as it becomes of critical value to allocations once the draw starts segmenting into live/dead rooms." +msgstr "" + +#: ../../guide/tournament-logistics.rst:435 +msgid "Reviewing how efficiently things are running and whether there are any bottlenecks that can be better addressed in the next round. It's generally a good idea to (on a whiteboard or a spreadsheet) keep track of how long each stage of a round is taking (running, data-entry, allocation) and what (if anything) is causing delays." +msgstr "" + +#: ../../guide/tournament-logistics.rst:437 +msgid "If hosting Tabbycat on Heroku keep an eye on the metrics section of the dashboard area, noting if there are 'timeout errors' and what the average response times are. Adding more dynos should help with both." +msgstr "" + +#: ../../guide/tournament-logistics.rst:440 +msgid "Breaks and Break Rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:443 +msgid "Generating the adjudicator's break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:445 +msgid "Determining the adjudicator break generally involves a complex set of considerations rather than strictly ranking based on feedback. As such most adjudication cores will use whiteboards or Google docs to draft and discuss the possible options. One thing to note here is that breaking adjudicators will need to be marked as such in the tab at some point (both so they can be on future draws, and for publication) so you want to be careful that the tab is the final source of authority here — it is easy for information to get out of sync between what the adjudication core is using to draft the break and the system." +msgstr "" + +#: ../../guide/tournament-logistics.rst:447 +msgid "When the adjudication core is determining the break ensure that they have an idea of the *quantity* of adjudicators needed (breaking too few or too many will cause issues) and whether there are any special considerations (such as having conflicts with large portions of the draw, or leaving at a given point) that involve a specific adjudicator being considered." +msgstr "" + +#: ../../guide/tournament-logistics.rst:450 +msgid "Generating the team break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:452 +msgid "Before doing so in an automated fashion, first check in your tab software whether all teams are assigned to the right break categories. Depending on whether your software supports multiple formats you probably also want to check that each break category is using the right 'rule' specified by the tournament (i.e. a WUDC- or Australs- compliant break ranking). Also double check the break size itself is correct in the software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:454 +msgid "Hopefully the automated system will generate a correct break, but this should always be checked against what you'd expect the results to be from standings. Note also that there are cases, such as when a team has to leave, or when teams are or are not double-breaking, that mean the automated break results need to be overridden (typically in Tabbycat you would add a marker or note to include their ranking, but exclude them from having a break rank)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:457 +msgid "Announcing the break" +msgstr "" + +#: ../../guide/tournament-logistics.rst:459 +msgid "Mistakes are made surprisingly often during results announcements. Again, this is often a problem with incomplete or out of sync data, where print-outs, slides, or the tab site itself might not reflect (for example) last minute changes about breaks or have potentially mixed up teams or adjudicators with similar names. Things that can help:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:463 +msgid "Have a single source for what is being read out — i.e. a printed list (recommended) or the tab site itself — but don't mix and match. If making slides (often a good idea for large/crowded venues) copy the data from the canonical source being announced." +msgstr "" + +#: ../../guide/tournament-logistics.rst:464 +msgid "Double check what is being read out against the tab site, and/or whatever draft lists were used to determine the adjudicator's break. Verify with the adjudication core that everyone who should be there is, and that nobody is missing." +msgstr "" + +#: ../../guide/tournament-logistics.rst:465 +msgid "Clarify what information should be on the print-outs and the general order in which things are read. For example, it might be easy to omit breaking adjudicator's institutions, to use ambiguous abbreviations over full institution names, or to have an inconsistent approach to how the information is read (i.e. whether it is read as *wins* then *team points* then *team name*)." +msgstr "" + +#: ../../guide/tournament-logistics.rst:466 +msgid "Without revealing any details try and get at least some guidance on how to pronounce names that people are not familiar with pronounce." +msgstr "" + +#: ../../guide/tournament-logistics.rst:467 +msgid "Have backup copies of whatever is being read from and clarify who is reading off what portions." +msgstr "" + +#: ../../guide/tournament-logistics.rst:468 +msgid "Try to publish the break list on the tab website (or via some other online method) shortly after it is announced in order to minimise the chance of misinformation spreading." +msgstr "" + +#: ../../guide/tournament-logistics.rst:471 +msgid "Managing the out-rounds" +msgstr "" + +#: ../../guide/tournament-logistics.rst:473 +msgid "Out-rounds are generally under less time pressure and can be managed by just one or two members of the tab team. However, they tend to be run in a more haphazard fashion, so there are a couple of things to keep on top of:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:477 +msgid "You should keep track of which adjudicators have or have not been used throughout the finals allocations. It is easy for adjudication cores to forget to allocate someone and have to either drop them or promote them beyond what they had originally intended." +msgstr "" + +#: ../../guide/tournament-logistics.rst:478 +msgid "It is very easy for ballots to get lost in break rounds as chairs have less defined roles and processes in what they do with their ballots. While having correct speaker scores correctly entered for break rounds isn't a strict necessity, it is nice to have and the alternative (using fake speaks just to record the winner) can cause confusion. Closely manage distributing ballots to the chairs and collecting them as soon as possible afterwards; especially if there is any time pressure. Generally it is not worth printing off per-debate ballots; just print a stack of generic ballots at the start of the out-rounds and distribute as needed." +msgstr "" + +#: ../../guide/tournament-logistics.rst:479 +msgid "You should know, in addition to when the break rounds are, when the results announcements are. Often these announcements are saved (for suspense or logistics reasons) until particular points of time (i.e. until the evening social; or until other out-rounds are finished). Obviously it's important not to accidentally release results; but often convenors and the adjudication core will often have different ideas about when results are meant to be released." +msgstr "" + +#: ../../guide/tournament-logistics.rst:481 +msgid "If using Tabbycat to manage out-rounds with multiple break categories, note that the round progression is no longer strictly linear. So be careful with when/if results are released online and note that often you can't rely on online interface to release draws publicly." +msgstr "" + +#: ../../guide/tournament-logistics.rst:484 +msgid "Preparing for tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:486 +msgid "At some point, if you haven't already, have a discussion with the adjudication core about when the tab itself will be released and what data will be released. Well before the tab is due to be released you want to check that anonymisations and any speaker flags (i.e. Novice, ESL) are up to date in your tab software." +msgstr "" + +#: ../../guide/tournament-logistics.rst:489 +msgid "Managing the tab release" +msgstr "" + +#: ../../guide/tournament-logistics.rst:491 +msgid "Almost there!" +msgstr "" + +#: ../../guide/tournament-logistics.rst:493 +msgid "If hosting Tabbycat on Heroku it's worth increasing the resources available to the server for the ~12 hour period following tab release; it's by far the most concentrated burst of traffic the site will receive. Because Heroku bills by the hour, even going to a relatively expensive option, such as performance dynos with auto-scaling, will be very cheap if run just for this period. That said the site should be relatively resilient even in the face of large amounts of traffic; even running with the most basic resources allocated, at worst pages will be temporarily slow or not load." +msgstr "" + +#: ../../guide/tournament-logistics.rst:495 +msgid "To get an idea of how the site is performing in the Heroku dashboard keep an eye on the average request time number and adjust the number of dynos to try and keep it under say two seconds; ideally just one. When you first turn on the tab release settings, make sure you go through and load every page before announcing it to the public, doing so will trigger the caching mechanism that means potentially complex pages (say the speaker tab) don't need to be calculated from scratch each time someone loads the page." +msgstr "" + +#: ../../guide/tournament-logistics.rst:498 +msgid "Post-tournament" +msgstr "" + +#: ../../guide/tournament-logistics.rst:500 +msgid "Once you have sufficiently recovered, consider writing up and sharing a post-script about how things went; noting things that did or didn't go well. Next year's tab directors would certainly appreciate it, and it would be great to see this kind of knowledge spread more widely. The developers of your tab software would also appreciate hearing your feedback; particularly if there were issues that could have been prevented or ameliorated by the software itself." +msgstr "" + +#: ../../guide/tournament-logistics.rst:503 +msgid "Appendix: Briefing Notes" +msgstr "" + +#: ../../guide/tournament-logistics.rst:505 +msgid "This is a very loose, but not exhaustive, collection of things that are useful to communicate to speakers and adjudicators in a tab briefing. While briefing fatigue is real, having clear expectations about how things like ballots and feedback work are highly valuable uses of the tournament's time if they can at all help cut down the kinds of problems that delay the tab." +msgstr "" + +#: ../../guide/tournament-logistics.rst:508 +msgid "How feedback works" +msgstr "" + +#: ../../guide/tournament-logistics.rst:510 +msgid "Is it online, or offline? If online did people receive links? What do they do if they have lost it?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:511 +msgid "Is feedback mandatory? What accountability mechanisms are there? Will you publish the shame list online or raise it in between rounds?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:512 +msgid "Who will be submitting feedback on who? Do trainees do so?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:513 +msgid "Remind teams that only one of their feedbacks count; they should coordinate who is doing it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:514 +msgid "What is the feedback scale? What does it correspond to? Common sources of confusion:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:516 +msgid "Feedback scales are not like Uber. You do not get five stars for being adequate and generic." +msgstr "" + +#: ../../guide/tournament-logistics.rst:517 +msgid "Feedback scales are not relative to position; it is an absolute scale. That is to say, if your trainee was good, they probably do not deserve the highest rating; they get whatever rating indicates they should be a panellist or low-chair." +msgstr "" + +#: ../../guide/tournament-logistics.rst:518 +msgid "Consider accompanying the score/scale with a statement characterising how these numbers correspond to positions - e.g. a 4.0 means 'should continue on good panels, should chair low rooms'" +msgstr "" + +#: ../../guide/tournament-logistics.rst:520 +msgid "If using online submission options, what should people without phones or internet access do?" +msgstr "" + +#: ../../guide/tournament-logistics.rst:523 +msgid "How ballots work" +msgstr "" + +#: ../../guide/tournament-logistics.rst:525 +msgid "This part of the presentation will be condescending. It is also necessary. The two causes of delays in the draw running late, and thus the tournament running late are (1) people not filling out ballots correctly or (2) people's ballots going missing. Emphasise that this should be taken seriously; minutes spent chasing bad ballots are often minutes that delay every single person at the tournament from doing what they are actually here to do. You should highlight, ideally with illustrated examples:" +msgstr "" + +#: ../../guide/tournament-logistics.rst:529 +msgid "Which parts of the ballot *must* be filled in; people will often overlook margins, or special fields such as motion vetoes." +msgstr "" + +#: ../../guide/tournament-logistics.rst:530 +msgid "That people must specify the full names of speakers; not nicknames or just-first names. Often names will be written poorly or have ambiguities (i.e. two speakers on a team called James) and having the full name is the only way to resolve it." +msgstr "" + +#: ../../guide/tournament-logistics.rst:531 +msgid "That people should **not draw arrows to swap the order of speakers** as these are impossible to decipher. Here, and in other areas, always *cross-out* information clearly and write it again rather than using arrows or drawing over what is there." +msgstr "" + +#: ../../guide/tournament-logistics.rst:532 +msgid "That people should try and write numbers in a manner that makes them crystal clear. Put cross-bars in 7s; bases on 1's. Make 8's actually look like two circles. If people know they have poor handwriting maybe consider writing the literal words — *seventy-one* below the numbers." +msgstr "" + +#: ../../guide/tournament-logistics.rst:533 +msgid "That for styles that do not have a single ballot for a panel, reiterate that everyone fills in their own ballots. At Australs, if this isn't made absolutely clear someone will average their panels ballots in order to try and 'help' you." +msgstr "" + +#: ../../guide/tournament-logistics.rst:534 +msgid "That runners do not fill out ballots. In BP, remind them that only chairs should fill out ballots (i.e. it cannot be deputised to a wing). In formats with individual ballots, remind chairs to make sure their wings have actually filled out a ballot, and get them to check for errors or ambiguities." +msgstr "" + +#: ../../guide/tournament-logistics.rst:535 +msgid "That everyone is bad at math. People who think they are good at math just haven't messed up their ballot *yet*. Emphasize that people should always use their phone's calculators to check totals. At typical tournaments using exclusively paper ballots math errors happen multiple times a round, almost every round." +msgstr "" + +#: ../../guide/tournament-logistics.rst:536 +msgid "How long people have to fill out their ballots. Suggest that chairs actually keep track of this time during a stopwatch, and start moving towards critical steps (i.e. scoring) well *before* the time is up, not *once* it is up." +msgstr "" + +#: ../../guide/tournament-logistics.rst:537 +msgid "Outline what chairs should do to return ballots. If ballots are being run by runners, outline what they should do if a runner doesn't appear. If they are not being run by runners remind people that returning ballots should be there number one priority, over say giving a lengthy adjudication or team feedback. Or getting lunch." +msgstr "" + +#: ../../guide/tournament-logistics.rst:538 +msgid "Remind people to *be nice to runners* and that being mean to runners will have serious consequences." +msgstr "" + +#: ../../guide/tournament-logistics.rst:539 +msgid "Remind people that the tab team and adjudication core will not, except for absolutely exceptional circumstances, accept photos or messaged descriptions of ballots; that all results must be on paper and handled in the same manner. The adjudication core should also be reminded of this." +msgstr "" + +#: ../../guide/tournament-logistics.rst:542 +msgid "How to locate the tab room" +msgstr "" + +#: ../../guide/tournament-logistics.rst:544 +msgid "People should know how to get to the tab room, either to raise issues with the adjudication core or to correct ballot errors. Make it crystal clear where it is and how to get there. Also ensure people know not to barge in; that they should knock and wait." +msgstr "" + +#: ../../guide/tournament-logistics.rst:546 +msgid "Clearly communicate the contact details of the tab directors and get people to take them down. In most cases you do not want people going through convenors or the adjudication core for any tab-related issues." +msgstr "" + +#: ../../guide/tournament-logistics.rst:549 +msgid "Misc" +msgstr "" + +#: ../../guide/tournament-logistics.rst:551 +msgid "Now is a good time to encourage people to consider getting involved with tabbing and tab-development. Emphasize that both do not necessarily require technical skills and that tabbers are (or should be) open to feedback and ideas from the wider community. Tell people to come find you and chat if they are interested and put up a link to the `Facebook tabbing group `_." +msgstr "" + +#: ../../guide/tournament-logistics.rst:553 +msgid "If you appreciated this guide we'd appreciate a slide promoting `Timekept `_ and `Debatekeeper `_. This would also be a good point to remind people that their timekeeping apps shouldn't be making noise *unless* they have been explicitly assigned to keep time by the chair." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/guide/upgrading.po b/docs/locale/vi/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..5d93ea601ef --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/guide/upgrading.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: vi_VN\n" + +#: ../../guide/upgrading.rst:5 +msgid "Upgrading Tabbycat" +msgstr "" + +#: ../../guide/upgrading.rst:7 +msgid "Generally only want to upgrade copies of tab sites that are used on an ongoing basis for multiple tournaments, or if there is a bugfix release between when you setup your site and when the tournament is running." +msgstr "" + +#: ../../guide/upgrading.rst:11 +msgid "Going from any version of Tabbycat 1 to any version of Tabbycat 2 won't work with the below instructions — check out the CHANGELOG for the 2.0 version for details of how to perform this upgrade." +msgstr "" + +#: ../../guide/upgrading.rst:14 +msgid "Upgrading a Local Copy" +msgstr "" + +#: ../../guide/upgrading.rst:16 +msgid "Assuming you haven't made any changes to the Tabbycat code, upgrading a locally installed copy should just be a matter of `downloading the latest source code `_ and replacing the existing files with the new ones. If you used git to download these files initially you can just pull down the latest copy of the master branch to do this." +msgstr "" + +#: ../../guide/upgrading.rst:18 +msgid "You would then repeat the \"Install Tabbycat\" instructions for your original installation method." +msgstr "" + +#: ../../guide/upgrading.rst:21 +msgid "Upgrading on Heroku" +msgstr "" + +#: ../../guide/upgrading.rst:23 +msgid "The easiest way to upgrade a Heroku site is to create an account on Github and then to `'fork' `_ the `Tabbycat repository `_." +msgstr "" + +#: ../../guide/upgrading.rst:25 +msgid "Once you have done this you can login to your Heroku Dashboard, go to your app, and then navigate to the Deploy tab. In this tab, adjacent to *Deployment method* select the GitHub option. This will bring up a new 'Connect to GitHub' section where you can search for 'Tabbycat' to find the copy of the repository you made earlier and connect it." +msgstr "" + +#: ../../guide/upgrading.rst:29 +msgid "Once connected a new *Manual deploy* section will appear. Make sure you select the *master* branch (not develop) and then click *Deploy Branch*. This will then show the app deploying and notify you when it has finished; which may take several minutes." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/index.po b/docs/locale/vi/LC_MESSAGES/index.po new file mode 100644 index 00000000000..5ae5edbad64 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/index.po @@ -0,0 +1,48 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: vi_VN\n" + +#: ../../index.rst:18 +msgid "Installation" +msgstr "" + +#: ../../index.rst:32 +msgid "Using Tabbycat" +msgstr "" + +#: ../../index.rst:41 +msgid "Tabbing Guide" +msgstr "" + +#: ../../index.rst:52 +msgid "Feature notes" +msgstr "" + +#: ../../index.rst:75 +msgid "About" +msgstr "" + +#: ../../index.rst:8 +msgid "Tabbycat User Guide" +msgstr "" + +#: ../../index.rst:10 +msgid "Tabbycat is a draw tabulation system for parliamentary debate tournaments. It supports two-team formats such as Australs, World Schools, Asians, Australian Easters and all New Zealand formats, as well as British Parliamentary (WUDC). It is also highly configurable, supporting many custom variations of the above formats too. If you're looking for a general overview of the software, check out our `README on Github `_." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/docker.po b/docs/locale/vi/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..9b58bc9b47e --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/docker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: vi_VN\n" + +#: ../../install/docker.rst:5 +msgid "Installing Locally using Docker" +msgstr "" + +#: ../../install/docker.rst:7 +msgid "Is this the best install method for you?" +msgstr "" + +#: ../../install/docker.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/docker.rst:12 +#, python-format +msgid "If you need an offline copy of Tabbycat, installing using Docker should be simpler and quicker than using the \"Install Locally on…\" instructions for your operating system. However if a Docker installation doesn't work as outlined below, it's harder to address what isn't working. If you encounter any problems with Docker, we recommend using the \"Install Locally on…\" option as a fallback, but if you need to do so, `please also report the issue you're having on GitHub `_ or :ref:`contact the developers `." +msgstr "" + +#: ../../install/docker.rst:14 +msgid "Docker is an application that makes it very easy to load and run a specific collection of software. It allows us to bundle everything necessary to run Tabbycat into a single package rather than have users install everything needed step-by-step. Once set up, Docker will allow you to start and stop a webserver (that in turn runs Tabbycat) on your computer whenever you want and without the need for internet access." +msgstr "" + +#: ../../install/docker.rst:18 +msgid "1. Download Tabbycat" +msgstr "" + +#: ../../install/docker.rst:20 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/docker.rst:22 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/docker.rst:24 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/docker.rst:28 +msgid "2. Install Docker" +msgstr "" + +#: ../../install/docker.rst:31 +msgid "If using macOS or Linux" +msgstr "" + +#: ../../install/docker.rst:33 +msgid "Install the **Docker Community Edition (stable)** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:36 +msgid "If using Windows 10 Pro, Enterprise, or Education Edition" +msgstr "" + +#: ../../install/docker.rst:40 +msgid "Install the ****Docker Community Edition (stable)*** from the `Docker store page `_." +msgstr "" + +#: ../../install/docker.rst:41 +msgid "Before or shortly after installing it, Docker may ask you to enable hypervisor and restart your PC. If it asks you this follow the prompts and restart as asked." +msgstr "" + +#: ../../install/docker.rst:42 +msgid "Once Docker has finished installing, open up the newly-installed Docker application, then right-click the app's icon (the whale) in the Taskbar." +msgstr "" + +#: ../../install/docker.rst:43 +msgid "From there, hit *Settings* in the menu and *Shared Drives* in the sidebar. Tick the checkbox next to your hardrive and then click *Apply*. After that has applied exit and reopen the docker app (ie right-click the taskbar icon and hit exit) and verify that the checkbox is still there." +msgstr "" + +#: ../../install/docker.rst:49 +msgid "If using Windows 7, Windows 8, or Windows 10 Home Edition" +msgstr "" + +#: ../../install/docker.rst:51 +msgid "Install the **Docker Toolbox** from the `Docker Toolbox downloads page `_." +msgstr "" + +#: ../../install/docker.rst:53 +msgid "Not sure which edition of Windows you have? Click Start, search for \"System\", and open the Control Panel item \"System\"." +msgstr "" + +#: ../../install/docker.rst:57 +msgid "3. Run Tabbycat in Docker" +msgstr "" + +#: ../../install/docker.rst:60 +msgid "If using the Docker App" +msgstr "" + +#: ../../install/docker.rst:62 +msgid "*These instructions apply if you installed the Docker App, i.e., if you are using macOS, Linux or Windows Pro/Enterprise/Education.*" +msgstr "" + +#: ../../install/docker.rst:66 +msgid "Ensure that Docker application is open (there should be a whale icon in your menu/task bar) and that it says that Docker is running." +msgstr "" + +#: ../../install/docker.rst:68 +msgid "Browse to the location where you extracted Tabbycat to. Open up the **bin** folder there. Within that folder:" +msgstr "" + +#: ../../install/docker.rst:70 +msgid "If you're on macOS, press the Control key, click the icon for **osx_docker_start.command**, then choose Open from the shortcut menu." +msgstr "" + +#: ../../install/docker.rst:71 +msgid "If you're on Windows, open **windows_docker_start.bat**." +msgstr "" + +#: ../../install/docker.rst:72 +msgid "If you're on Linux, open up a terminal in the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:74 +msgid "A terminal window should popup and bunch of text scroll by. If this is your first time running Docker it may take a while (30 minutes or more) to download the virtual machine. When the text has stopped scrolling by you should see a `Finished building Tabbycat!` message." +msgstr "" + +#: ../../install/docker.rst:76 +msgid "Open up http://localhost:8000/ (Windows) or http://0.0.0.0:8000 (OSX/Linux) in a browser of your choice!" +msgstr "" + +#: ../../install/docker.rst:78 ../../install/docker.rst:100 +msgid "If you want to reopen Tabbycat at a later time (say after restarting) repeat steps 1 through 4 here." +msgstr "" + +#: ../../install/docker.rst:81 +msgid "If using the Docker Toolbox" +msgstr "" + +#: ../../install/docker.rst:83 +msgid "*These instructions apply if you installed the Docker Toolbox, i.e., if you are using Windows 7, Windows 8 or Windows 10 Home.*" +msgstr "" + +#: ../../install/docker.rst:87 +msgid "Start the **Docker Quickstart Terminal**." +msgstr "" + +#: ../../install/docker.rst:89 +msgid "Run the command ``docker-machine ip``. Take note of the IP address it shows, for example::" +msgstr "" + +#: ../../install/docker.rst:94 +msgid "Navigate to the Tabbycat folder (*i.e.* the folder containing ``README.md``) and run ``docker-compose up``." +msgstr "" + +#: ../../install/docker.rst:96 +msgid "Open a browser and go to http://192.168.99.100:8000/, replacing \"192.168.99.100\" with whatever IP address was shown in step 2." +msgstr "" + +#: ../../install/docker.rst:98 +msgid "Once you're done and want to stop the Tabbycat server, press Ctrl+C, wait until the next prompt appears, and then run ``docker-machine stop``." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/heroku.po b/docs/locale/vi/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..c13646ea604 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/heroku.po @@ -0,0 +1,445 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: vi_VN\n" + +#: ../../install/heroku.rst:5 +msgid "Installing on Heroku" +msgstr "" + +#: ../../install/heroku.rst:7 +msgid "When running Tabbycat on the internet, we set it up on `Heroku `_. The project is set up to be good to go on Heroku, and it works well for us, so if you'd like to run it online, we recommend that you do the same. Naturally, this requires you to have a Heroku account." +msgstr "" + +#: ../../install/heroku.rst:9 +msgid "There are two ways to do this: a **short way** and a **long way**. Most people should use the short way. The long way requires some familiarity with command-line interfaces and Git, and requires a :ref:`local installation ` as a prerequisite, but makes it easier to :ref:`upgrade versions ` later on and (unlike the short way) allows you to import data from CSV files." +msgstr "" + +#: ../../install/heroku.rst:12 +msgid "The short way" +msgstr "" + +#: ../../install/heroku.rst:13 +msgid "Click this button:" +msgstr "" + +#: ../../install/heroku.rst:18 +msgid "This is the easiest way to deploy an instance of Tabbycat online. It requires no technical background." +msgstr "" + +#: ../../install/heroku.rst:20 +msgid "If you don't already have a Heroku account, it'll prompt you to create one. Once you're logged in to Heroku, choose a name for your installation, then scroll down and click **Deploy**. Once it's finished, click **View** and follow the prompts. Once finished, open the site and from there you can easily set up a demo data set (if you just want to learn Tabbycat) or use the data importer to set up a real tournament." +msgstr "" + +#: ../../install/heroku.rst:22 +msgid "During the setup process, Heroku will ask you to verify your account by adding a credit card. A standard Tabbycat site *will not charge* your card — charges only accrue if you deliberately add a paid service in the Heroku dashboard." +msgstr "" + +#: ../../install/heroku.rst:24 +msgid "If you can't access a credit card, you can instead install a limited version, which we call \"Tabbykitten\". However, Tabbykitten cannot send any e-mails or handle as much public traffic. We therefore strongly recommend it only as a last resort, and even then only for small tournaments. `Use this link to set up a Tabbykitten site `_." +msgstr "" + +#: ../../install/heroku.rst:27 +msgid "The long way" +msgstr "" + +#: ../../install/heroku.rst:28 +msgid "The long way sets you up with more control over your environment. Because you'll clone `our GitHub repository`_, it'll be easier for you to :ref:`upgrade your app ` when a new version is released. You'll also have the flexibility to make and contribute updates to the source code. We recommend it if you have experience with Git. It's also easier with this method to import CSV files using the command-line importer, so if you have a very large tournament, this might make importing initial data easier." +msgstr "" + +#: ../../install/heroku.rst:30 +msgid "We've tested these instructions successfully on Windows, Linux and macOS." +msgstr "" + +#: ../../install/heroku.rst:33 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/heroku.rst:35 +msgid "You need to have at least a passing familiarity with command-line interfaces to get through the longer traditional method. We'll talk you through the rest." +msgstr "" + +#: ../../install/heroku.rst:37 +msgid "When we say \"command shell\", on Windows we mean **Command Prompt**, and on Linux and macOS we mean **Terminal** (or your favourite command shell)." +msgstr "" + +#: ../../install/heroku.rst:39 ../../install/heroku.rst:100 +msgid "Advanced users" +msgstr "" + +#: ../../install/heroku.rst:42 +msgid "Tabbycat is a `Django `_ project. As such, it can be installed on any web platform that supports Django, using any SQL system that Django supports. Just be aware that we haven't tried any other platform." +msgstr "" + +#: ../../install/heroku.rst:45 +msgid "Short version of the long way" +msgstr "" + +#: ../../install/heroku.rst:47 +msgid "We provide a \"short version\" for experienced users. Don't just copy and paste these commands before you understand what they do! If things aren't set up perfectly they can fail, so it's important to supervise them the first time you do them. If this is all new to you, read the long version of the instructions below." +msgstr "" + +#: ../../install/heroku.rst:56 +msgid "If you want to :ref:`import tournament data ` from CSV files, :ref:`install Tabbycat locally `, put your CSV files in ``data/yourtournamentname``, then::" +msgstr "" + +#: ../../install/heroku.rst:68 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/heroku.rst:70 +msgid "Install the `Heroku Command Line Interface (CLI) `_, then log in with the command ``heroku login``." +msgstr "" + +#: ../../install/heroku.rst:72 +msgid "If you don't already have **Git**, follow the `instructions on the GitHub website `_ to set up Git." +msgstr "" + +#: ../../install/heroku.rst:75 +msgid "2. Set up a local installation" +msgstr "" + +#: ../../install/heroku.rst:77 +msgid "If you don't already have a local installation, follow the instructions on the page for your operating system, listed below, to set up a local installation." +msgstr "" + +#: ../../install/heroku.rst:79 +msgid "When downloading the source code, you **must** take the option involving cloning the GitHub repository using Git. In the macOS and Windows instructions, this means the option described in the \"Advanced users\" box. To do so, use these commands:" +msgstr "" + +#: ../../install/heroku.rst:86 +msgid "Do not download the .tar.gz or .zip file and extract it." +msgstr "" + +#: ../../install/heroku.rst:88 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/heroku.rst:89 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/heroku.rst:90 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/heroku.rst:91 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/heroku.rst:93 +msgid "If you do already have a local installation, update to the latest version using:" +msgstr "" + +#: ../../install/heroku.rst:103 +msgid "It's not *strictly* necessary to have a fully functional local installation if you don't want to import data from CSV files. But it certainly helps." +msgstr "" + +#: ../../install/heroku.rst:106 +msgid "3. Deploy to Heroku" +msgstr "" + +#: ../../install/heroku.rst:110 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/heroku.rst:114 +msgid "Run the script to deploy the app to Heroku. Replace ``yourappname`` with your preferred URL. Your website will be at ``yourappname.herokuapp.com``." +msgstr "" + +#: ../../install/heroku.rst:120 +msgid "This script has other options that you might find useful. Run ``python deploy_heroku.py --help`` for details." +msgstr "" + +#: ../../install/heroku.rst:122 +msgid "When this script finishes, it will open the app in your browser. It should look something like this:" +msgstr "" + +#: ../../install/heroku.rst:127 +msgid "4. Import tournament data locally" +msgstr "" + +#: ../../install/heroku.rst:129 +msgid "Steps 4 and 5 are optional; there are other methods of :ref:`importing data `. However the following method is most useful for large tournaments where manual entry would be tedious." +msgstr "" + +#: ../../install/heroku.rst:131 +msgid "Step 4 is the same as the process described in :ref:`importtournament-command`." +msgstr "" + +#: ../../install/heroku.rst:135 +msgid "Place your CSV files in ``data/yourtournamentname``, as described in :ref:`importing-initial-data`." +msgstr "" + +#: ../../install/heroku.rst:137 +msgid "Create a new, blank local database::" +msgstr "" + +#: ../../install/heroku.rst:141 +msgid "It's normally easiest to name your local database after your app name, so that if you have multiple sites, you know which one relates to which." +msgstr "" + +#: ../../install/heroku.rst:143 +msgid "Reconfigure ``DATABASES`` in your settings_local.py file to point to this new database." +msgstr "" + +#: ../../install/heroku.rst:145 +msgid "Activate your virtual environment::" +msgstr "" + +#: ../../install/heroku.rst:149 +msgid "Run initial migrations on your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:154 +msgid "Import your tournament data into your blank local database::" +msgstr "" + +#: ../../install/heroku.rst:158 +msgid "If your data's not clean, it might take a few attempts to get this right. We recommend either destroying and recreating the database (``dropdb``, ``createdb``), or wiping it using ``dj flush``, before retrying." +msgstr "" + +#: ../../install/heroku.rst:160 +msgid "Check it looks like how you expect it to look, by starting your local installation::" +msgstr "" + +#: ../../install/heroku.rst:165 +msgid "5. Push the local database to Heroku" +msgstr "" + +#: ../../install/heroku.rst:167 +msgid "Once you're happy with how your local import went, you can push the local database to Heroku." +msgstr "" + +#: ../../install/heroku.rst:169 +msgid "This step wipes the Heroku database clean, and replaces it with the contents of your local database. If you have any data on the Heroku site that isn't also in your local database, **that data will be lost** and will not be recoverable." +msgstr "" + +#: ../../install/heroku.rst:171 +msgid "If you have multiple Heroku sites, you may find that the ``heroku`` commands refuse to run, prompting you to specify an app. If so, add ``--app yourappname`` to each ``heroku`` command." +msgstr "" + +#: ../../install/heroku.rst:173 +msgid "Enable maintenance mode. This takes the site offline, to ensure that no-one can possibly create or change any data on the site while you're pushing a new database up::" +msgstr "" + +#: ../../install/heroku.rst:177 +msgid "Reset the database. (Caution: This permanently deletes all information on your Heroku database!)" +msgstr "" + +#: ../../install/heroku.rst:183 +msgid "Push your local database to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:187 +msgid "You might need to specify your local PostgreSQL credentials by adding ``PGUSER=yourusername PGPASSWORD=******** PGHOST=localhost`` to the *beginning* of that command. (This sets environment variables to those values for the duration of that one command.)" +msgstr "" + +#: ../../install/heroku.rst:189 +msgid "Disable maintenance mode::" +msgstr "" + +#: ../../install/heroku.rst:195 +msgid "Heroku options you may want to change" +msgstr "" + +#: ../../install/heroku.rst:197 +msgid "If you have a large tournament, you may want to customize your Heroku app. This section provides some guidance on upgrades and settings you may wish to consider. Some of these configurations require you to have the `Heroku Command Line Interface (CLI) `_ installed." +msgstr "" + +#: ../../install/heroku.rst:202 +msgid "Upgrading your database size" +msgstr "" + +#: ../../install/heroku.rst:204 +msgid "The free plan of `Heroku Postgres `_, \"Hobby Dev\", should work for most small tournaments. For large tournaments, however, you may find that you exceed the 10,000-row limit of this plan. It's difficult to give general guidance on how many rows you're likely to use, because it depends on which features of Tabbycat you use (*e.g.*, if you use adjudicator feedback). But to give some idea:" +msgstr "" + +#: ../../install/heroku.rst:206 +msgid "Australs 2016, which had 74 teams, 8 preliminary rounds and heavily used adjudicator feedback, ended up at around 30,000 rows." +msgstr "" + +#: ../../install/heroku.rst:207 +#, python-format +msgid "The Asia BP championships 2017 had 100 teams, 6 preliminary rounds, and mandatory feedback (i.e. 100% return rates) used 15,000 rows." +msgstr "" + +#: ../../install/heroku.rst:208 +msgid "A 3 vs 3 tournament with 54 teams, 5 preliminary rounds, and which only lightly used adjudicator feedback ended up using around 4,500 rows" +msgstr "" + +#: ../../install/heroku.rst:210 +msgid "If you need more than 10,000 rows, you'll need to upgrade to a paid Heroku Postgres Plan. The 10,000,000 rows allowed in the lowest paid plan, \"Hobby Basic\", should certainly be more than sufficient." +msgstr "" + +#: ../../install/heroku.rst:212 +msgid "If you're not sure, you can always start at Hobby Dev—just be prepared to `upgrade `_ during the tournament if you run close to capacity." +msgstr "" + +#: ../../install/heroku.rst:215 +msgid "Custom domain names" +msgstr "" + +#: ../../install/heroku.rst:217 +msgid "Your Heroku app will be available at ``yourappname.herokuapp.com``. You may want it to be a subdomain of your tournament's website, like ``tab.australasians2015.org``. If so, you'll need to configure your custom domain and SSL. Instructions for both are in the Heroku Dev Center:" +msgstr "" + +#: ../../install/heroku.rst:219 +msgid "`Custom Domain Names for Apps `_" +msgstr "" + +#: ../../install/heroku.rst:220 +msgid "`Heroku SSL `_" +msgstr "" + +#: ../../install/heroku.rst:222 +msgid "The custom domain name basically requires two things: a DNS ``CNAME`` entry on your website targeting ``yourappname.herokuapp.com``, and the custom domain configured on Heroku using ``heroku domains:add tab.yourwebsite.com``. You'll also need to provide an SSL certificate for your custom domain and add it using the ``heroku certs:add`` command." +msgstr "" + +#: ../../install/heroku.rst:225 +msgid "HTTPS" +msgstr "" + +#: ../../install/heroku.rst:227 +msgid "All Tabbycat sites deployed to Heroku redirect all traffic to HTTPS by default." +msgstr "" + +#: ../../install/heroku.rst:229 +msgid "For a myriad of reasons, we strongly advise against disabling this. But if for some reason you need to run on plain HTTP, you can do this by setting the ``DISABLE_HTTPS_REDIRECTS`` config variable in Heroku to ``disable`` (see `Heroku documentation on config vars `_). The value of the config var must be ``disable``; if it's anything else, HTTPS redirects will remain in place." +msgstr "" + +#: ../../install/heroku.rst:231 +msgid "Most modern browsers, after having been redirected by a site to HTTPS once, remember that that site requires HTTPS and go there for all subsequent visits even if the user typed in a plain http\\:// address. It may do this because it cached the HTTP 301 permanent redirect, stored an HSTS entry and/or tagged its session cookie to require HTTPS. If, after disabling HTTPS on your Tabbycat site, you find that you're still being redirected to HTTPS, first try a browser or computer that *hasn't* visited the site before. If that works, then remove the relevant entry from your (original) browser's cache, HSTS set and cookies, and try again." +msgstr "" + +#: ../../install/heroku.rst:234 +msgid "Time zone" +msgstr "" + +#: ../../install/heroku.rst:236 +msgid "If you want to change the time zone you nominated during deployment, you can do so by going to the `Heroku Dashboard `_, clicking on your app, going to the **Settings** tab, clicking **Reveal Config Vars** and changing the value of the ``TIME_ZONE`` variable. This value must be one of the names in the IANA tz database, *e.g.* ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``. You can find a `list of these on Wikipedia `_ in the 'TZ\\*' column." +msgstr "" + +#: ../../install/heroku.rst:239 +msgid "SendGrid account details" +msgstr "" + +#: ../../install/heroku.rst:241 +msgid "By default, Heroku will automatically create a SendGrid account for you. For small tournaments, this should work fine. For larger ones, though, SendGrid typically doesn't allow new accounts to send so many emails without additional vetting. This vetting is separate to the verification you did for your Heroku account, and as far as we're aware, it can't be done until you send your first email, by which time it's probably too late." +msgstr "" + +#: ../../install/heroku.rst:243 +msgid "If you're running a large tournament, you may wish to use your own SendGrid account instead. The free tier probably won't suffice after the trial period, but the Essentials tier should be more than adequate. If you're a student and have the `GitHub Education Pack `_, you might find the SendGrid plan here useful." +msgstr "" + +#: ../../install/heroku.rst:245 +msgid "If you set up and use your own SendGrid account, you can remove the SendGrid add-on from your Heroku app. The SendGrid add-on is only necessary if you wish to use Heroku's auto-created SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:247 +msgid "To set up your app to use your own SendGrid account:" +msgstr "" + +#: ../../install/heroku.rst:251 +msgid "`Sign up for a SendGrid account `_, if you don't already have one." +msgstr "" + +#: ../../install/heroku.rst:253 +msgid "`Create an API key `_ in your SendGrid account." +msgstr "" + +#: ../../install/heroku.rst:255 +msgid "There are `instructions for how to do this in the SendGrid documentation `_. The only permission that is needed is the \"Mail Send\" permission, so you can turn off all others if you want to be safe." +msgstr "" + +#: ../../install/heroku.rst:257 +msgid "Set the following config vars in Heroku Dashboard (or using the Heroku CLI, if you have it):" +msgstr "" + +#: ../../install/heroku.rst:259 +msgid "``SENDGRID_USERNAME`` should be set to ``apikey`` (not your username)." +msgstr "" + +#: ../../install/heroku.rst:260 +msgid "``SENDGRID_PASSWORD`` should be set to your API key, which will start with ``SG*******``." +msgstr "" + +#: ../../install/heroku.rst:262 +msgid "The `Heroku SendGrid instructions `_ to do something with ``SENDGRID_API_KEY`` are **incorrect**. We figured this out by contacting SendGrid support staff. Use the above config vars instead." +msgstr "" + +#: ../../install/heroku.rst:268 +msgid "Upgrading an existing Heroku app" +msgstr "" + +#: ../../install/heroku.rst:270 +msgid "For most users, we recommend starting a new site for every tournament, when you set up the tab for that tournament. There's generally not a pressing need to upgrade Tabbycat after a tournament is concluded, and every time you deploy a new site, you'll be using the latest version at the time of deployment." +msgstr "" + +#: ../../install/heroku.rst:272 +msgid "To upgrade an existing Heroku-based Tabbycat app to the latest version, you need to *deploy* the current version of Tabbycat to your Heroku app. There are several ways to do this. We list one below, primarily targeted at users with some background in Git." +msgstr "" + +#: ../../install/heroku.rst:274 +msgid "The essence of it is that you need to `create a Git remote `_ for your Heroku app (if you don't already have one), then `push to it `_." +msgstr "" + +#: ../../install/heroku.rst:276 +msgid "You should **always** :ref:`back up your database ` before upgrading Tabbycat." +msgstr "" + +#: ../../install/heroku.rst:278 +msgid "You'll need both Git and the Heroku CLI, and you'll need to be logged in to the Heroku CLI already." +msgstr "" + +#: ../../install/heroku.rst:280 +msgid "Take a backup of your database::" +msgstr "" + +#: ../../install/heroku.rst:284 +msgid "If you haven't already, clone our Git repository and check out the master branch::" +msgstr "" + +#: ../../install/heroku.rst:289 +msgid "If you've already cloned our Git repository, don't forget to pull so you're up to date::" +msgstr "" + +#: ../../install/heroku.rst:294 +msgid "Check to see if you have a Git remote already in place::" +msgstr "" + +#: ../../install/heroku.rst:300 +msgid "If you do, the name of the remote will be on the left (``heroku`` in the above example), and the URL of your Git repository will be on the right. In the example above, our Tabbycat site URL would be ``mytournament2018.herokuapp.com``; the Git remote URL is then ``https://git.heroku.com/mytournament2018.git``." +msgstr "" + +#: ../../install/heroku.rst:302 +msgid "If a Git remote URL for your Tabbycat site *doesn't* appear, then create one::" +msgstr "" + +#: ../../install/heroku.rst:307 +msgid "If you tab many tournaments, it'll probably be helpful to use a name other than ``heroku`` (say, ``mytournament2018``), so that you can manage multiple tournaments." +msgstr "" + +#: ../../install/heroku.rst:309 +msgid "Push to Heroku::" +msgstr "" + +#: ../../install/heroku.rst:313 +msgid "This will take a while to complete." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/linux.po b/docs/locale/vi/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..4b6d5132dff --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/linux.po @@ -0,0 +1,249 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: vi_VN\n" + +#: ../../install/linux.rst:5 +msgid "Installing Locally on Linux" +msgstr "" + +#: ../../install/linux.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/linux.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/linux.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Linux, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/linux.rst:14 +msgid "The instructions apply to both Linux, and :ref:`Linux on Windows `." +msgstr "" + +#: ../../install/linux.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/linux.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/linux.rst:21 ../../install/linux.rst:56 +#: ../../install/linux.rst:130 +msgid "Advanced users" +msgstr "" + +#: ../../install/linux.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/linux.rst:27 +msgid "Short version" +msgstr "" + +#: ../../install/linux.rst:38 +msgid "Then create **settings/local.py** as described :ref:`below `, then::" +msgstr "" + +#: ../../install/linux.rst:53 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/linux.rst:54 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/linux.rst:59 +msgid "These instructions are for Ubuntu, and are targeted at Ubuntu 18.04. If you have another distribution of Linux, we trust you'll know how to navigate the package manager for your distribution to install the dependencies." +msgstr "" + +#: ../../install/linux.rst:64 +msgid "1(a). Python" +msgstr "" + +#: ../../install/linux.rst:65 +msgid "Tabbycat requires Python 3.6 or later. You probably already have Python 3.6, but you'll also need the development package in order to install Psycopg2 later. The ``venv`` module will come in handy too. Install::" +msgstr "" + +#: ../../install/linux.rst:69 +msgid "Check the version::" +msgstr "" + +#: ../../install/linux.rst:74 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/linux.rst:77 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/linux.rst:78 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/linux.rst:80 +msgid "Install PostgreSQL using the `PostgreSQL installation instructions here `_." +msgstr "" + +#: ../../install/linux.rst:82 +msgid "Normally, installing the latest stable version should be best, but if you're having issues, install the same version as the current `default version on Heroku `_, as that will be what is currently most commonly used with Tabbycat. If you're planning on pushing data between your local installation and a Heroku site, it's best to match the Heroku's current default version." +msgstr "" + +#: ../../install/linux.rst:84 +msgid "You'll also need the ``libpq-dev`` package in order to install Psycopg2 later::" +msgstr "" + +#: ../../install/linux.rst:91 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/linux.rst:92 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/linux.rst:94 +msgid "Tabbycat requires Node and its package manager to compile front-end dependencies. Install using:" +msgstr "" + +#: ../../install/linux.rst:104 +msgid "1(d). Other development tools" +msgstr "" + +#: ../../install/linux.rst:105 +msgid "Some of the Python packages require GCC, G++ and Make in order to install::" +msgstr "" + +#: ../../install/linux.rst:112 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/linux.rst:114 +msgid "Choose either of the following two methods." +msgstr "" + +#: ../../install/linux.rst:117 +msgid "Method 1 (Git clone)" +msgstr "" + +#: ../../install/linux.rst:119 +msgid "If you have Git, life will be easier if you clone `our GitHub repository`_:" +msgstr "" + +#: ../../install/linux.rst:126 +msgid "(You can find out if you have Git using ``git --version``. If you don't, you can install it using ``sudo apt install git``.)" +msgstr "" + +#: ../../install/linux.rst:128 +msgid "The default branch is ``develop``, so you need to explicitly change the branch to ``master``, which is what the ``git checkout master`` line does." +msgstr "" + +#: ../../install/linux.rst:133 +msgid "You might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/linux.rst:136 +msgid "Method 2 (tarball)" +msgstr "" + +#: ../../install/linux.rst:138 +msgid "If you don't want to use Git, simply download and extract:" +msgstr "" + +#: ../../install/linux.rst:147 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/linux.rst:149 +msgid "You can skip step 1 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/linux.rst:151 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``. Grant this user the ability to create databases, since this'll make it easier to spin up new instances of Tabbycat in the future." +msgstr "" + +#: ../../install/linux.rst:157 +msgid "If you'll be running multiple instances of Tabbycat, developing, or diving into the database yourself, you might find it convenient to set up client authentication so that you don't need to do all manual operations from ``sudo -u postgres``. See the `PostgreSQL documentation on client authentication `_ for more information. For example, you could add a ``local all myusername md5`` line to the *pg_hba.conf* file, or you could define a mapping in *pg_ident.conf* and append the ``map=`` option to the ``local all all peer`` line in *pg_hba.conf*." +msgstr "" + +#: ../../install/linux.rst:159 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/linux.rst:167 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/linux.rst:168 +msgid "Almost there!" +msgstr "" + +#: ../../install/linux.rst:170 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/linux.rst:176 +msgid "Start a new virtual environment. We suggest the name ``venv``, though it can be any name you like:" +msgstr "" + +#: ../../install/linux.rst:182 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/linux.rst:186 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/linux.rst:192 +msgid "Navigate to the **tabbycat/settings** sub folder and copy **local.example** to **local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/linux.rst:207 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/linux.rst:211 +msgid "Navigate to the **tabbycat** sub-directory, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/linux.rst:219 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/linux.rst:225 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/linux.rst:229 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/linux.rst:234 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/linux.rst:237 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/linux.rst:238 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/local.po b/docs/locale/vi/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..2e4c00d6b62 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/local.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: vi_VN\n" + +#: ../../install/local.rst:5 +msgid "Local Installations" +msgstr "" + +#: ../../install/local.rst:8 +msgid "What is a local installation?" +msgstr "" + +#: ../../install/local.rst:10 +msgid "Tabbycat is a web-based system: it's designed to run as a web site. However, instead of installing it on a web server, you can install it on your computer, serving web pages to yourself. This is called a local installation." +msgstr "" + +#: ../../install/local.rst:12 +msgid "Then, when you open your browser, you can use Tabbycat like any other web site. The only difference is that this one is on **your** computer, not some computer in a data centre in a far-away land. In effect, you are getting your computer to behave like a web server." +msgstr "" + +#: ../../install/local.rst:17 +msgid "Should I use a local installation?" +msgstr "" + +#: ../../install/local.rst:19 +msgid "In most cases, you should make an online Tabbycat installation by :ref:`setting up an instance on Heroku `. This has a number of major advantages:" +msgstr "" + +#: ../../install/local.rst:21 +msgid "The installation process is easier." +msgstr "" + +#: ../../install/local.rst:22 +msgid "You can enter ballots and manage your tournament from multiple computers." +msgstr "" + +#: ../../install/local.rst:23 +msgid "Participants can access the draw, motions, results and more online." +msgstr "" + +#: ../../install/local.rst:24 +msgid "Heroku's data centers are less likely to fail than your computer is." +msgstr "" + +#: ../../install/local.rst:25 +msgid "Heroku e-mails Tabbycat's developers error reports to help us fix bugs." +msgstr "" + +#: ../../install/local.rst:27 +msgid "In some cases, you might have a good reason to use a local installation. We can think of just one such reason: If you won't have access to the internet at your tournament, or if internet access will be flaky, then you should use a local installation." +msgstr "" + +#: ../../install/local.rst:32 +msgid "You'll need internet access to download dependencies during the local installation process. So if you're not expecting to have reliable internet access at your tournament, be sure to have Tabbycat installed *before* you get there!" +msgstr "" + +#: ../../install/local.rst:37 +msgid "Advanced users" +msgstr "" + +#: ../../install/local.rst:40 +msgid "Tabbycat is a `Django `_ project, so if you have your own preferred method of running Django projects, you can also do that. Just be aware that we haven't tried it." +msgstr "" + +#: ../../install/local.rst:45 +msgid "Okay, so how do I do it?" +msgstr "" + +#: ../../install/local.rst:47 +msgid "The easiest option is to :ref:`install Tabbycat using Docker `. This method should work across all operating systems and is by far the easiest way to get a local copy running." +msgstr "" + +#: ../../install/local.rst:49 +msgid "If installing using Docker does not work, or if you want to be able to modify Tabbycat's code we also have a number of instructions for manually setting up a copy of Tabbycat. There instructions are here:" +msgstr "" + +#: ../../install/local.rst:51 +msgid ":ref:`install-linux`" +msgstr "" + +#: ../../install/local.rst:52 +msgid ":ref:`install-osx`" +msgstr "" + +#: ../../install/local.rst:53 +msgid ":ref:`install-wsl`" +msgstr "" + +#: ../../install/local.rst:54 +msgid ":ref:`install-windows`" +msgstr "" + +#: ../../install/local.rst:57 +msgid "Advanced uses" +msgstr "" + +#: ../../install/local.rst:60 +msgid "Can others access my local install?" +msgstr "" + +#: ../../install/local.rst:62 +msgid "Local installations can also take advantage of multiple-computer site access, including data entry---it's just takes more work than a Heroku installation to set up." +msgstr "" + +#: ../../install/local.rst:64 +msgid "Since a local installation is just having your computer run a web server, it can serve other computers too. You can make this work even if you don't have internet access: all you need is a router that you can use to connect a few computers together. Then other computers on your local network can access the Tabbycat site hosted on your computer. We did this at Victoria Australs 2012." +msgstr "" + +#: ../../install/local.rst:66 +msgid "We don't provide detailed instructions for this; we leave it for advanced users to set up themselves. As a rough guide:" +msgstr "" + +#: ../../install/local.rst:68 +msgid "You need to pass in your computer's IP address and port to the `runserver` command, for example, if your computer (the one acting as a server) is 196.168.0.2 and you want to run it on port 8000: ``dj runserver 192.168.0.2:8000``" +msgstr "" + +#: ../../install/local.rst:69 +msgid "You need to configure your firewall settings to allow incoming connections on the IP address and port you specified in that command." +msgstr "" + +#: ../../install/local.rst:70 +msgid "Be aware that local installs use the Django development server, whose **security is not tested**. Therefore, it's a good idea to make sure your firewall **only lets in computers on your local network** (or, if you're really paranoid, isolate the network from the internet completely)." +msgstr "" + +#: ../../install/local.rst:73 +msgid "Can I run an internet-accessible website from a local installation?" +msgstr "" + +#: ../../install/local.rst:75 +msgid "Probably not. Even if you disable your firewall, chances are your home router (or university router) will block any connections from the outside world to you. Even if you can though, **you really shouldn't**. The local installation uses the *Django development server*, which is a lightweight server designed for developers. Specifically, Django **does not test the security of its development server** in the way that proper web servers do. That is: It's a security risk to run a local installation as an internet-accessible site. Don't do it. `Install Tabbycat on Heroku `_ instead." +msgstr "" + +#: ../../install/local.rst:77 +msgid "Alternatively, if you have a background in web development, you might choose to install Tabbycat on your own production server. It's a Django project, so any means of supporting Django projects should work fine." +msgstr "" + +#: ../../install/local.rst:79 +msgid "It's safe to run on a small, isolated network (see above) with your firewall correctly configured because you presumably trust everyone you let on the network!" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/osx.po b/docs/locale/vi/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..535b24bc3c6 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/osx.po @@ -0,0 +1,216 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: vi_VN\n" + +#: ../../install/osx.rst:5 +msgid "Installing Locally on macOS" +msgstr "" + +#: ../../install/osx.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/osx.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/osx.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on macOS, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/osx.rst:15 +msgid "Requisite technical knowledge" +msgstr "" + +#: ../../install/osx.rst:17 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/osx.rst:19 +msgid "Every line in the instructions that begins with ``$`` is a command that you need to run in a **Terminal**, but without the ``$``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/osx.rst:21 ../../install/osx.rst:42 ../../install/osx.rst:68 +msgid "Advanced users" +msgstr "" + +#: ../../install/osx.rst:24 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/osx.rst:27 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/osx.rst:29 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/osx.rst:32 +msgid "1(a). Python" +msgstr "" + +#: ../../install/osx.rst:33 +msgid "Tabbycat requires Python 3.6 or later. macOS only comes with Python 2.7, so you'll need to install this. You can download the latest version from the `Python website `_." +msgstr "" + +#: ../../install/osx.rst:35 +msgid "The executable will probably be called ``python3``, rather than ``python``. Check::" +msgstr "" + +#: ../../install/osx.rst:40 +msgid "Tabbycat does not support Python 2. You must use Python 3.6 or later." +msgstr "" + +#: ../../install/osx.rst:45 +msgid "These instructions will use the ``venv`` module. If you prefer, you can use `Virtualenv `_ instead." +msgstr "" + +#: ../../install/osx.rst:48 +msgid "1(b). Postgres.app" +msgstr "" + +#: ../../install/osx.rst:50 +msgid "Download `Postgres.app `_, move it to your Applications folder, and open it. This should place an icon in your menu bar, showing that the postgres database is running. Whenever you are running Tabbycat you'll need to have this app running." +msgstr "" + +#: ../../install/osx.rst:52 +msgid "You'll need to use the PostgreSQL command-line tools, so run the command that the Postgres.app suggests in its `installation instructions `_ for adding them to your ``$PATH``. As of February 2018, it was::" +msgstr "" + +#: ../../install/osx.rst:57 +msgid "1(c). Node.js/NPM" +msgstr "" + +#: ../../install/osx.rst:59 +msgid "Download and run the `node.js 8 macOS Installer (.pkg) `_" +msgstr "" + +#: ../../install/osx.rst:62 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/osx.rst:64 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/osx.rst:65 +msgid "Download the zip or tar.gz file." +msgstr "" + +#: ../../install/osx.rst:66 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/osx.rst:71 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/osx.rst:73 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/osx.rst:76 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/osx.rst:78 +msgid "You can skip steps 1--3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/osx.rst:80 +msgid "Open up a copy of the Terminal app, then copy/paste or type in::" +msgstr "" + +#: ../../install/osx.rst:84 +msgid "Hit enter then quit and reopen the Terminal app." +msgstr "" + +#: ../../install/osx.rst:86 +msgid "Create a new user account with a password, replacing ``myusername`` with whatever name you prefer. If you don't know what username to pick, use ``tabbycat``." +msgstr "" + +#: ../../install/osx.rst:92 +msgid "Create a new database, replacing ``mydatabasename`` with whatever name you prefer, probably the name of the tournament you're running::" +msgstr "" + +#: ../../install/osx.rst:96 +msgid "In terminal type in::" +msgstr "" + +#: ../../install/osx.rst:101 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/osx.rst:102 +msgid "Almost there!" +msgstr "" + +#: ../../install/osx.rst:104 +msgid "Navigate to your Tabbycat directory::" +msgstr "" + +#: ../../install/osx.rst:108 +msgid "Copy **settings/local.example** to **settings/local.py**. Find this part in your new **local.py**, and fill in the blanks as indicated:" +msgstr "" + +#: ../../install/osx.rst:123 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/osx.rst:127 +msgid "Ensure you are in the main Tabbycat directory (not the config folder where **settings_local.py** is and start a new virtual environment. We suggest the name ``venv``, though it can be any name you like::" +msgstr "" + +#: ../../install/osx.rst:131 +msgid "Run the ``activate`` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/osx.rst:135 +msgid "Install Tabbycat's requirements into your virtual environment::" +msgstr "" + +#: ../../install/osx.rst:141 +msgid "Navigate to the **tabbycat** sub folder, initialize the database, compile the assets, and create a user account for yourself::" +msgstr "" + +#: ../../install/osx.rst:149 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/osx.rst:155 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/osx.rst:159 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000.) It should look something like the screenshot below. If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/osx.rst:164 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/osx.rst:167 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/osx.rst:168 +msgid "To start your Tabbycat instance up again next time you use your computer::" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/windows.po b/docs/locale/vi/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..b455240dde0 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/windows.po @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: vi_VN\n" + +#: ../../install/windows.rst:5 +msgid "Installing Locally on Windows" +msgstr "" + +#: ../../install/windows.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/windows.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/windows.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/windows.rst:14 +msgid "If you have Windows 10 and any experience with Linux, we recommend installing it on :ref:`Linux on Windows (WSL) ` instead, which is much easier than the process below." +msgstr "" + +#: ../../install/windows.rst:17 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/windows.rst:19 +msgid "You need to be familiar with command-line interfaces to get through this comfortably. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest. You just need to be prepared to bear with us. It'll take a while the first time, but it gets easier after that." +msgstr "" + +#: ../../install/windows.rst:21 +msgid "In these instructions, we'll use **Windows PowerShell**, a command-line interface that comes with every installation of Windows (since XP). The easiest way to find it (on Windows 7 and later) is to search for it in your Start Menu. Every line in the instructions that begins with ``>`` is a command that you need to run in PowerShell, but without the ``>``: that sign is a convention used in instructions to make it clear that it is a command you need to run." +msgstr "" + +#: ../../install/windows.rst:23 ../../install/windows.rst:81 +#: ../../install/windows.rst:104 +msgid "Advanced users" +msgstr "" + +#: ../../install/windows.rst:26 +msgid "If you wish to use an SQL engine other that PostgreSQL, most of Tabbycat should work, but a few features rely on SQL functions that aren't supported by all engines. To configure Tabbycat to use a different engine, set the ``DATABASES`` `Django setting `_ accordingly." +msgstr "" + +#: ../../install/windows.rst:29 +msgid "1. Install dependencies" +msgstr "" + +#: ../../install/windows.rst:31 +msgid "First, you need to install all of the software on which Tabbycat depends, if you don't already have it installed." +msgstr "" + +#: ../../install/windows.rst:36 +msgid "1(a). Python" +msgstr "" + +#: ../../install/windows.rst:37 +msgid "*Python is a popular programming language, and the language in which the core of Tabbycat is coded.*" +msgstr "" + +#: ../../install/windows.rst:39 +msgid "Download and install the latest version of Python 3.6 from the `Python website `_. In the installer, check the box to add Python to your PATH (see box below)." +msgstr "" + +#: ../../install/windows.rst:42 +msgid "Which file should I download?" +msgstr "" + +#: ../../install/windows.rst:44 +msgid "Regardless of if you have 64-bit or 32-bit Windows, choose the \"Windows x86 executable installer\"." +msgstr "" + +#: ../../install/windows.rst:46 +msgid "**Please take note:** Just after you open the installer, **check the \"Add Python 3.6 to PATH\" box**:" +msgstr "" + +#: ../../install/windows.rst:51 +msgid "To check that Python is installed correctly, open Windows PowerShell, type ``python`` and press Enter. It should look something like this. If you installed the 32-bit version, it will say ``32 bit`` instead of ``64 bit``." +msgstr "" + +#: ../../install/windows.rst:55 +msgid "(To exit Python, type ``exit()`` then press Enter.)" +msgstr "" + +#: ../../install/windows.rst:57 +msgid "**If you already have Python**, great! Some things to double-check:" +msgstr "" + +#: ../../install/windows.rst:59 +msgid "You must have at least Python 3.6 (Python 2 is not supported.)" +msgstr "" + +#: ../../install/windows.rst:60 +msgid "Your installation path must not have any spaces in it." +msgstr "" + +#: ../../install/windows.rst:61 +msgid "If that doesn't work, note that the following must be part of your ``PATH`` environment variable: ``C:\\Python36;C:\\Python36\\Scripts`` (or as appropriate for your installation directory). Follow `the instructions here `_ to add this to your path." +msgstr "" + +#: ../../install/windows.rst:66 +msgid "1(b). PostgreSQL" +msgstr "" + +#: ../../install/windows.rst:67 +msgid "*PostgreSQL is a database management system.*" +msgstr "" + +#: ../../install/windows.rst:69 +msgid "Go to the `PostgreSQL downloads page `_, then follow the link through to EnterpriseDB to download and install the latest version of PostgreSQL." +msgstr "" + +#: ../../install/windows.rst:71 +msgid "Once PostgreSQL is installed, the PostgreSQL service will run on your computer whenever you are using it. You might prefer to configure it so that it only runs when you want to run Tabbycat. To do this, open \"Services\" in your Control Panel on Windows, find the PostgreSQL service, and change its startup type to \"Manual\". This will tell it not to start whenever you log in. Then, if you want to run the server (so you can use Tabbycat), you can do so from \"Services\" by selecting the PostgreSQL service and clicking \"Start the service\"." +msgstr "" + +#: ../../install/windows.rst:74 +msgid "1(c). Git" +msgstr "" + +#: ../../install/windows.rst:75 +msgid "*Git is a version control system.*" +msgstr "" + +#: ../../install/windows.rst:77 +msgid "We won't use Git directly, but Node.js (which we install in the next step) requires Git to work. So, install the latest version for Windows from the `Git website `_." +msgstr "" + +#: ../../install/windows.rst:84 +msgid "If you already have `GitHub Desktop `_ installed, you might think that this would be good enough. Unfortunately, it's not---GitHub Desktop installs a portable version of Git. Node.js, on the other hand, requires the ``git`` to be in the ``PATH``, so it can call it directly. The easiest (but not only) way to do this is just to install Git from the link above." +msgstr "" + +#: ../../install/windows.rst:92 +msgid "1(d). Node.js/NPM" +msgstr "" + +#: ../../install/windows.rst:93 +msgid "*Node.js is a JavaScript runtime.*" +msgstr "" + +#: ../../install/windows.rst:95 +msgid "Download and run the node.js 8 Installer (.msi) for either `x64 versions `_ of Windows or `x86 versions `_." +msgstr "" + +#: ../../install/windows.rst:98 +msgid "2. Get the source code" +msgstr "" + +#: ../../install/windows.rst:100 +msgid "`Go to the page for our latest release `_." +msgstr "" + +#: ../../install/windows.rst:101 +msgid "Download the zip file." +msgstr "" + +#: ../../install/windows.rst:102 +msgid "Extract all files in it to a folder of your choice." +msgstr "" + +#: ../../install/windows.rst:107 +msgid "If you've used Git before, you might prefer to clone `our GitHub repository`_ instead. Don't forget to check out the |vrelease| tag or the master branch." +msgstr "" + +#: ../../install/windows.rst:109 +msgid "Even better, you might like to fork the repository first, to give yourself a little more freedom to make code changes on the fly (and potentially :ref:`contribute ` them to the project)." +msgstr "" + +#: ../../install/windows.rst:114 +msgid "3. Set up a new database" +msgstr "" + +#: ../../install/windows.rst:116 +msgid "You can skip steps 2 and 3 if this is not your first installation. Every Tabbycat installation requires its own database, but they can use the same login role if you like." +msgstr "" + +#: ../../install/windows.rst:118 +msgid "Open the **pgAdmin** tool, which you installed as part of installing PostgreSQL. In the object browser on the left, double-click the server marked \"(localhost:5432)\". Log in using the password you set during installation." +msgstr "" + +#: ../../install/windows.rst:120 +msgid "Right-click Login Roles, and click \"New Login Role…\"" +msgstr "" + +#: ../../install/windows.rst:124 +msgid "Fill in the New Login Role box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:126 +msgid "In the **Properties** tab, in **Role Name**, choose a user account name. (If you don't know what to pick, we suggest \"tabbycat\".)" +msgstr "" + +#: ../../install/windows.rst:127 +msgid "In the **Definition** tab, choose a **Password** and type it in **Password (again)**." +msgstr "" + +#: ../../install/windows.rst:129 +msgid "Then click OK. (Remember this user name and password, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:131 +msgid "Right-click Databases, and click \"New Database…\"" +msgstr "" + +#: ../../install/windows.rst:135 +msgid "Fill in the New Database box as follows (everything not listed below can be left as-is):" +msgstr "" + +#: ../../install/windows.rst:137 +msgid "In the **Properties** tab, in **Name**, choose a database name (with no spaces in it)." +msgstr "" + +#: ../../install/windows.rst:138 +msgid "In the **Properties** tab, in **Owner**, type the name of the login role you just created." +msgstr "" + +#: ../../install/windows.rst:140 +msgid "Then click OK. (Remember the database name, you'll need it later.)" +msgstr "" + +#: ../../install/windows.rst:143 +msgid "4. Install Tabbycat" +msgstr "" + +#: ../../install/windows.rst:145 +msgid "Almost there!" +msgstr "" + +#: ../../install/windows.rst:147 +msgid "Open a Windows PowerShell. Navigate to the folder where you cloned/extracted Tabbycat. For example, if you installed it in ``C:\\Users\\myusername\\Documents\\GitHub\\tabbycat``, then run::" +msgstr "" + +#: ../../install/windows.rst:151 +msgid "Make a copy of **settings\\\\local.example** and rename it to **settings\\\\local.py**. Open your new **local.py** file. Find this part, and fill in the blanks (the empty quotation marks) as indicated:" +msgstr "" + +#: ../../install/windows.rst:166 +msgid "Optionally, replace the value in this line in the same file with your own time zone, as defined in the `IANA time zone database `_ (*e.g.*, ``Pacific/Auckland``, ``America/Mexico_City``, ``Asia/Kuala_Lumpur``)::" +msgstr "" + +#: ../../install/windows.rst:170 +msgid "Start a new virtual environment. We suggest the name `venv`, though it can be any name you like::" +msgstr "" + +#: ../../install/windows.rst:174 +msgid "Run the `Activate.ps1` script. This puts you \"into\" the virtual environment::" +msgstr "" + +#: ../../install/windows.rst:178 +msgid "If you get an error message saying that the script isn't digitally signed, open a PowerShell with administrator privileges by right-clicking PowerShell in the Start meny and clicking \"Run as administrator\". Then run this command::" +msgstr "" + +#: ../../install/windows.rst:182 +msgid "Read the warning message, then type ``y`` to confirm. By default, the execution policy on Windows is ``Restricted``, which does not permit scripts like ``activate`` to be run. Changing it to ``RemoteSigned`` relaxes it to allow local scripts to be run without checking the signature." +msgstr "" + +#: ../../install/windows.rst:184 +msgid "Install Tabbycat's requirements." +msgstr "" + +#: ../../install/windows.rst:186 +msgid "If you installed **32-bit Python**::" +msgstr "" + +#: ../../install/windows.rst:192 +msgid "You might be wondering: I thought I already installed the requirements. Why am I installing more? And the answer is: Before, you were installing the requirements to create a Python virtual environment for Tabbycat to live in. Now, you're *in* the virtual environment, and you're installing everything required for *Tabbycat* to operate." +msgstr "" + +#: ../../install/windows.rst:194 +msgid "Initialize the database and create a user account for yourself::" +msgstr "" + +#: ../../install/windows.rst:202 +msgid "Start Tabbycat!" +msgstr "" + +#: ../../install/windows.rst:208 +msgid "It should show something like this::" +msgstr "" + +#: ../../install/windows.rst:212 +msgid "Open your browser and go to the URL printed above. (In the above example, it's http://127.0.0.1:8000/). It should look something like this:" +msgstr "" + +#: ../../install/windows.rst:216 +msgid "If it does, great! You've successfully installed Tabbycat." +msgstr "" + +#: ../../install/windows.rst:218 +msgid "Naturally, your database is currently empty, so proceed to :ref:`importing initial data `." +msgstr "" + +#: ../../install/windows.rst:221 +msgid "Starting up an existing Tabbycat instance" +msgstr "" + +#: ../../install/windows.rst:223 +msgid "To start your Tabbycat instance up again next time you use your computer, open a PowerShell and::" +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/install/wsl.po b/docs/locale/vi/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..fca38d19294 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/install/wsl.po @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: vi_VN\n" + +#: ../../install/wsl.rst:5 +msgid "Installing Locally on Linux on Windows (WSL)" +msgstr "" + +#: ../../install/wsl.rst:7 +msgid "Is this the best installation method for you?" +msgstr "" + +#: ../../install/wsl.rst:10 +msgid "In most cases, we recommend doing an :ref:`internet-based installation on Heroku ` instead. If you decide to do a local installation, be sure to read our page on :ref:`local installations ` to help you understand what's going on, particularly this section: :ref:`install-decision`" +msgstr "" + +#: ../../install/wsl.rst:12 +msgid "If you just want to quickly set up a copy of Tabbycat to run locally on Windows, consider :ref:`installing using Docker`, which is a shorter process than the one below." +msgstr "" + +#: ../../install/wsl.rst:14 +msgid "Windows Subsystem for Linux is only available on Windows 10. If you have an older version of Windows, :ref:`install Tabbycat locally on Windows ` instead." +msgstr "" + +#: ../../install/wsl.rst:18 +msgid "Windows Subsystem for Linux (WSL) was taken out of beta in the `Windows 10 Fall Creators Update `_, which was released in October 2017. On Windows 10 computers, we now recommend this local installation method over :ref:`installing it directly on Windows `." +msgstr "" + +#: ../../install/wsl.rst:21 +msgid "Requisite technical background" +msgstr "" + +#: ../../install/wsl.rst:23 +msgid "It will help a lot if you have some experience with Linux, but mainly you need to be familiar with command-line interfaces, and you should be willing to install and work with the `Windows Subsystem for Linux `_. You might need to be prepared to familiarise yourself with aspects of WSL not covered in these instructions. While a background in the specific tools Tabbycat uses (Python, PostgreSQL, *etc.*) will make things easier, it's not necessary: we'll talk you through the rest." +msgstr "" + +#: ../../install/wsl.rst:27 +msgid "A. Install Ubuntu on Windows" +msgstr "" + +#: ../../install/wsl.rst:29 +msgid "*If you already have a Linux distribution installed on your PC, skip to* :ref:`part B `." +msgstr "" + +#: ../../install/wsl.rst:31 +msgid "First, `check that you have the Fall Creators Update (build 1709) `_. If you don't, update Windows." +msgstr "" + +#: ../../install/wsl.rst:33 +msgid "Then, install the Windows Subsystem for Linux. For most people, this involves the following:" +msgstr "" + +#: ../../install/wsl.rst:35 +msgid "Enable the Windows Subsystem for Linux feature, by finding **Turn Windows features on or off** on the Start Menu, then checking the box for **Windows Subsystem for Linux** and clicking **OK**. You'll be prompted to restart your computer to make the changes take effect." +msgstr "" + +#: ../../install/wsl.rst:39 +msgid "Install Ubuntu by finding it on the Microsoft Store. For your convenience, `here's a direct link to Ubuntu on the Microsoft Store `_." +msgstr "" + +#: ../../install/wsl.rst:41 +msgid "Launch Ubuntu and follow the instructions. You'll be prompted to create a user account for your Ubuntu system." +msgstr "" + +#: ../../install/wsl.rst:43 +msgid "Some more detailed instructions, including some troubleshooting, are `available on Microsoft's website `_." +msgstr "" + +#: ../../install/wsl.rst:45 +msgid "Advanced users" +msgstr "" + +#: ../../install/wsl.rst:48 +msgid "You can, of course, use any Linux distribution that Windows supports. We just suggest Ubuntu because it's the most well-known (and the one that we use)." +msgstr "" + +#: ../../install/wsl.rst:53 +msgid "B. Install Tabbycat" +msgstr "" + +#: ../../install/wsl.rst:55 +msgid "You now have a Linux subsystem running on your computer, so head over to the :ref:`instructions to install Tabbycat locally on Linux ` and follow those (in full)." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/vi/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..07f26c7d636 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/use/finishing-a-tournament.po @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: vi_VN\n" + +#: ../../use/finishing-a-tournament.rst:5 +msgid "Finishing a Tournament" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:7 +msgid "This page outlines some final steps to take after the conclusion of outrounds." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:10 +msgid "Tab Release" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:12 +msgid "Tabs can be released using the *Tab released* option under **Setup** > **Configuration**. Tabbycat offers the following system tabs:" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:14 +msgid "Team Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:15 +msgid "Speakers Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:16 +msgid "Replies Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:17 +msgid "Motions Tab" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:19 +msgid "You can configure the team, speakers and replies tab to display only a certain number of speakers, *e.g.*, to show only a \"Top 10 Speakers\" tab." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:21 +msgid "If you defined any speaker categories (for example, Novice, ESL or EFL), a tab for each category marked \"public\" can also be released using the **Release speaker category tabs to public**. You can similarly limit each of these tabs to display just the top few speakers, in the definition of the speaker categories. The speaker categories not marked public are *not* released by this option." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:23 +msgid "You can also redact individual speaker's identifying details (name, team, and institution) from the public individual tabs. You can do so by going into the **Edit Database** area, going to *Participants > Speakers*, finding the speaker and clicking the **Anonymous** box (and saving)." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:25 +msgid "Public tab pages are cached for performance reasons. This means that any changes that affect a tab page (say redacting a speaker or changing a speaker score) may not show up on the public site for up to an hour." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:28 +msgid "Wrapping Up" +msgstr "" + +#: ../../use/finishing-a-tournament.rst:30 +msgid "You probably want to turn off the *Public ballots*, *Public feedback*, *Feedback progress*, and *Public draw* features under **Configuration** at this stage as they no longer have any use." +msgstr "" + +#: ../../use/finishing-a-tournament.rst:32 +msgid "You also want to go into the **Edit Database** area, find the tournament and hit \"release all\" so that the results for the final round can be released." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/use/importing-data.po b/docs/locale/vi/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..d2b39c003ed --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/use/importing-data.po @@ -0,0 +1,236 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: vi_VN\n" + +#: ../../use/importing-data.rst:5 +msgid "Importing Initial Data" +msgstr "" + +#: ../../use/importing-data.rst:7 +msgid "Once you've got Tabbycat installed, the next step is to import data for the tournament: that is, import details of teams, speakers, adjudicators and rounds. There are a few ways to do this, each with their advantages and disadvantages." +msgstr "" + +#: ../../use/importing-data.rst:9 +msgid "To help you decide which to choose, here's a summary:" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Method" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Best for" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawcard" +msgstr "" + +#: ../../use/importing-data.rst:12 +msgid "Drawback" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "**Demonstration data**" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Trying out Tabbycat" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Loads sample data in one click" +msgstr "" + +#: ../../use/importing-data.rst:14 +msgid "Not for use with real tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "**Simple importer**" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Small and medium-sized tournaments" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Easy to use" +msgstr "" + +#: ../../use/importing-data.rst:18 +msgid "Only deals with basic data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "**Edit database**" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding data not handled by the simple importer or editing existing data" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Can handle all types of information" +msgstr "" + +#: ../../use/importing-data.rst:22 +msgid "Adding large amounts of data is time consuming" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "``importtournament`` **command**" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Large tournaments" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Easier to repeat, can handle most formats of information" +msgstr "" + +#: ../../use/importing-data.rst:28 +msgid "Requires basic knowledge of how to use a command line interface" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "**Developing your own importer**" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Large tournaments with custom needs" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Easier to repeat, will take information in whatever format it is already in" +msgstr "" + +#: ../../use/importing-data.rst:33 +msgid "Requires background in Python and and learning about the importer classes" +msgstr "" + +#: ../../use/importing-data.rst:41 +msgid "Demonstration data" +msgstr "" + +#: ../../use/importing-data.rst:42 +msgid "If you're just learning or experimenting with Tabbycat, there are two demonstration datasets available, each with a sample set of teams, adjudicators, *etc.*, so that you can immediately start running rounds. Just be aware that these probably won't relate to anyone at your real-life tournament." +msgstr "" + +#: ../../use/importing-data.rst:44 +msgid "To load a demonstration dataset, click **New Tournament** link on the home page (once logged in as admin). You'll see a page titled \"Create New Tournament\". Scroll to the bottom of this page and click on one of the links at the bottom." +msgstr "" + +#: ../../use/importing-data.rst:47 +msgid "Simple importer" +msgstr "" + +#: ../../use/importing-data.rst:48 +msgid "The simple importer is the easiest way to get a tournament going, and we recommend it for small- and medium-sized tournaments. It allows you to add institutions, teams, adjudicators, venues, venue categories and venue constraints. (If you need to add anything else, use the :ref:`Edit Database area ` instead.)" +msgstr "" + +#: ../../use/importing-data.rst:50 +msgid "To get started, create a new tournament using the **New Tournament** link on the home page (once logged in as admin). It'll ask you for a few basic pieces of information." +msgstr "" + +#: ../../use/importing-data.rst:54 +msgid "Then, once you're in your tournament, click **Setup** in the left-hand menu, then **Import Data**, to open the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:58 +msgid "You first need to add institutions. Once institutions are added, you can then add teams and adjudicators in the relevant sections. Each of these is a two-step process:" +msgstr "" + +#: ../../use/importing-data.rst:60 +msgid "For **institutions** and **venues**, it will first ask you to copy-paste a list of names and properties in a comma-separated table format. The second step is to confirm individual fiels." +msgstr "" + +#: ../../use/importing-data.rst:61 +msgid "For **teams** and **adjudicators**, it will first ask you how many teams/adjudicators to add for each institution (or who lack an institutional affiliation). The second step is to fill in their details, for example, names." +msgstr "" + +#: ../../use/importing-data.rst:69 +msgid "Finally, if you would like to use venue categories and/or :ref:`venue constraints `, you can do so using the two last sections of the simple importer." +msgstr "" + +#: ../../use/importing-data.rst:71 +msgid "If copying and pasting from a spreadsheet, an easy way to make a comma-separated table is to save a spreadsheet with the relevant information as a \\*.csv file, then open this file in a plain text editor (such as Notepad or TextEdit), and copying it from there." +msgstr "" + +#: ../../use/importing-data.rst:76 +msgid "Editing the database" +msgstr "" + +#: ../../use/importing-data.rst:77 +msgid "Sometimes, the simple importer just isn't enough---whether because you need more customization than the simple importer handles (*e.g.* adjudicator feedback questions), or because some participants changed their details after you imported the inital data. In this case, the easiest thing to do is to edit the database via the Django administrative interface (under Setup > Edit Database)." +msgstr "" + +#: ../../use/importing-data.rst:79 +msgid "The general pattern goes like this: Go to **Setup > Edit Database**, find the type of object you wish to add/change, and click \"Add\" or \"Change\". Then, fill in what you need to and save the object." +msgstr "" + +#: ../../use/importing-data.rst:81 +msgid "The Edit Database area is very powerful, and naturally if you mess things up, you can insert potentially catastrophic inconsistencies into the database. For participant information this is hard to do, but it's worth keeping in mind." +msgstr "" + +#: ../../use/importing-data.rst:86 +msgid "The ``importtournament`` command on local installations" +msgstr "" + +#: ../../use/importing-data.rst:88 +msgid "We've written a management command called ``importtournament`` to help automate the tournament set-up. The script, however, is neither foolproof nor comprehensive, so you might find you need to modify things slightly if your tournament structure is different from ours. Be prepared to try this a few times to get it to work. Nonetheless, this is probably the fastest way to set up a tournament." +msgstr "" + +#: ../../use/importing-data.rst:90 +msgid "Copy and rename the ``data/demo`` folder" +msgstr "" + +#: ../../use/importing-data.rst:91 +msgid "See the CSV files in the new folder, and add/replace the data as per your tournament. Note that the institutions (*i.e.* first column) in the ``speakers.csv`` and ``adjudicators.csv`` files must match the institutions in the second column of the ``institutions.csv`` file. And that all CSV files must end with a blank line." +msgstr "" + +#: ../../use/importing-data.rst:92 +msgid "Use this command, replacing ``YOUR_DATA_DIR`` with your new folder's name. (Square brackets indicate optional arguments; if you use them, omit the square brackets. All of them relate to the name of your tournament.)" +msgstr "" + +#: ../../use/importing-data.rst:98 +msgid "This script has a number of options. They're worth taking a look at before you run the script. For details, see::" +msgstr "" + +#: ../../use/importing-data.rst:102 +msgid "Assuming the command completes successfully without errors, you should double check the data in the Django interface, as described above in :ref:`import-edit-database`. In particular you should check that the *Rounds* have the correct draw types and that silent rounds have been marked correctly." +msgstr "" + +#: ../../use/importing-data.rst:105 +msgid "``importtournament`` on Heroku installs" +msgstr "" + +#: ../../use/importing-data.rst:107 +msgid "Instructions for using the ``importtournament`` command on Heroku installations are in steps 4 and 5 of :ref:`install-heroku`. The recommended procedure is first to import the tournament into a local installation, :ref:`as described above `, and then to push the local database to Heroku using the ``heroku pg:push`` command." +msgstr "" + +#: ../../use/importing-data.rst:110 +msgid "Developing your own importer" +msgstr "" + +#: ../../use/importing-data.rst:112 +msgid "If our suggested file formats cause you headaches, it might be easier to write your own importer. We have a generic importer framework that should make this easier, so for some tournaments it might (very conceivably) be faster to write your own importer to conform to your data, than it is to make your data conform to our importer. You need a background in Python in order to do this. For more details, see :ref:`tournament-data-importers`." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/vi/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..c48aa928c46 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/use/running-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-12-22 03:12\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: vi_VN\n" + +#: ../../use/running-a-tournament.rst:5 +msgid "Running a Tournament" +msgstr "" + +#: ../../use/running-a-tournament.rst:7 +msgid "Once you've finished the steps in :ref:`starting-a-tournament`, you're ready to go! This page outlines what you would do for each round during the tournament. After the tournament, proceed to :ref:`finishing-a-tournament`." +msgstr "" + +#: ../../use/running-a-tournament.rst:9 +msgid "This is all done from the admin area (*i.e.*, by the tab director or adjudication core member). In the admin area, tournament-wide pages (feedback, standings, and break) are at the top of the left-hand menu, while round-specific pages (availability, draw, display, motions, and results) are in dropdown's organised by each round's abbreviation." +msgstr "" + +#: ../../use/running-a-tournament.rst:11 +msgid "The basic workflow for each round is:" +msgstr "" + +#: ../../use/running-a-tournament.rst:13 +msgid ":ref:`Mark the teams, adjudicators, and venues present as available `" +msgstr "" + +#: ../../use/running-a-tournament.rst:14 +msgid ":ref:`Generate the draw ` and allocate the adjudicators" +msgstr "" + +#: ../../use/running-a-tournament.rst:15 +msgid ":ref:`Show/release the draw `" +msgstr "" + +#: ../../use/running-a-tournament.rst:16 +msgid ":ref:`Release/enter ` the motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:17 +msgid "Have the debates" +msgstr "" + +#: ../../use/running-a-tournament.rst:18 +msgid ":ref:`Enter results `" +msgstr "" + +#: ../../use/running-a-tournament.rst:19 +msgid ":ref:`Advance to the next round `" +msgstr "" + +#: ../../use/running-a-tournament.rst:24 +msgid "Availability" +msgstr "Tính khả dụng" + +#: ../../use/running-a-tournament.rst:26 +msgid "**Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds." +msgstr "" + +#: ../../use/running-a-tournament.rst:28 +msgid "To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance." +msgstr "" + +#: ../../use/running-a-tournament.rst:34 +msgid "You can set availabilities in advance of the current round — ie if you know the venue/adjudicator schedules their availabilities can be set ahead of time." +msgstr "" + +#: ../../use/running-a-tournament.rst:37 +msgid "Generating the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:39 +msgid "**Confirm the draft draw**. After advancing from availability section you will first be shown a draft draw that details how the draw was formulated, pointing out pull-ups and conflict swaps and the like." +msgstr "" + +#: ../../use/running-a-tournament.rst:43 +msgid "The draft draw is for you to double-check. While there are some basic tests on the draw algorithm, it never hurts to sanity-check it again." +msgstr "" + +#: ../../use/running-a-tournament.rst:45 +msgid "If you *do* find something wrong with a draft draw, you can edit the match-ups, but please also let us know what the problem was! You can find our contact details in the :ref:`authors` section." +msgstr "" + +#: ../../use/running-a-tournament.rst:47 +msgid "Once on the confirmed draw page you can click **Edit Adjudicators**." +msgstr "" + +#: ../../use/running-a-tournament.rst:51 +msgid "**Allocate the adjudicators**. Changes here will auto-save; feel free to return to the **Draw** when needed. See :ref:`adjudicator allocation ` for more details about the allocation process." +msgstr "" + +#: ../../use/running-a-tournament.rst:55 +msgid "If you are using venue constraints the **Draw** page may prompt you to Auto Allocate the venues used to satisfy those constraints; see :ref:`venue-constraints ` for more details. Regardless of whether you are using venue constraints or not you can change the Venues per-debate in the **Edit Venues** area." +msgstr "" + +#: ../../use/running-a-tournament.rst:60 +msgid "Releasing the draw" +msgstr "" + +#: ../../use/running-a-tournament.rst:62 +msgid "Once you're happy with your adjudicator allocation, you're ready to start the round." +msgstr "" + +#: ../../use/running-a-tournament.rst:64 +msgid "**Release to general assembly.** From the *Display* page for that round, go to **Show by Venue** or **Show by Team** (whichever you prefer). Then put it up on the projector. There are automatic scroll buttons and buttons for changing text sizing." +msgstr "" + +#: ../../use/running-a-tournament.rst:68 +msgid "**Release to public.** If you're using the public draw function (where the draw is posted publicly to your Tabbycat website) use the **Release to Public** button to allow the page to display." +msgstr "" + +#: ../../use/running-a-tournament.rst:72 +msgid "To avoid the site from being overloaded by anxious refreshers, we recommend that large tournaments not release the draw to the public until after it's been seen by general assembly. That said, note that due to caching there can be a delay of up to 1 minute between when a draw is released and when it first shows up on the public site." +msgstr "" + +#: ../../use/running-a-tournament.rst:73 +msgid "Tabbycat can be set to send emails once the draw is released to adjudicators informing them of their assignments for convenience." +msgstr "" + +#: ../../use/running-a-tournament.rst:78 +msgid "Entering and Releasing Motions" +msgstr "" + +#: ../../use/running-a-tournament.rst:80 +msgid "Tabbycat is agnostic as to whether you enter motions into Tabbycat before or after they are shown publicly. However, they must be entered *at some point* before ballots are entered." +msgstr "" + +#: ../../use/running-a-tournament.rst:82 +msgid "**Enter the motion text.** Either before or after their public release motions can be entered in the **Motions** section for that round." +msgstr "" + +#: ../../use/running-a-tournament.rst:84 +msgid "**Release to general assembly.** If you are entering motions *before* they are publicly revealed note that there is a *Display Motions* button in the **Display** area that allows you to do a Power Point style motion release." +msgstr "" + +#: ../../use/running-a-tournament.rst:86 +msgid "**Release to public.** As with draws, if you have the *enable public view of motions* setting configured your Tabbycat website will display a running list of motions from the tournament. When this is on, using the **Release Motions to Public** button on the **Motions** page will mark the current set of motions as able to be displayed on this page." +msgstr "" + +#: ../../use/running-a-tournament.rst:91 +msgid "Entering Results" +msgstr "" + +#: ../../use/running-a-tournament.rst:93 +msgid "Enter debate results and feedback as they come in (and/or allow online entry of results and feedback)." +msgstr "" + +#: ../../use/running-a-tournament.rst:95 +msgid "Both results and feedback entered in the tab room or online need to be confirmed before the results are counted. To confirm a debate ballot and the debate as a whole, the confirmed checkbox under *Ballot Status* should be ticket in addition to the *Debate Status* being set to Confirmed." +msgstr "" + +#: ../../use/running-a-tournament.rst:97 +msgid "Note that you can track data entry progress from the **Overview** page for the tournament." +msgstr "" + +#: ../../use/running-a-tournament.rst:99 +msgid "See :ref:`data-entry` for more details about the data entry process." +msgstr "" + +#: ../../use/running-a-tournament.rst:101 +msgid "We strongly recommend entering all data using the assistant area, not the admin area. This is because the admin area (intentionally) does not enforce the data confirmation procedure." +msgstr "" + +#: ../../use/running-a-tournament.rst:106 +msgid "Advancing to the next round" +msgstr "" + +#: ../../use/running-a-tournament.rst:108 +msgid "Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button." +msgstr "" + +#: ../../use/running-a-tournament.rst:112 +msgid "When you advance to the next round, if you've enabled public results, the results for the current round (which is now the previous round) will be released to the public **unless** the round is marked as \"silent\" in the database. So if you're careful about when results should be released, don't change the current round until you're ready to release those results." +msgstr "" + +#: ../../use/running-a-tournament.rst:114 +msgid "There is a design assumption that you will always want to release results for non-silent rounds before you start working on the draw for the next round. If this isn't true for you, please get in touch with us so that we know. The workaround is to make all rounds silent, then unsilent them when you're ready to release results." +msgstr "" + +#: ../../use/running-a-tournament.rst:116 +msgid "Emails can be sent to speakers informing them of their team's win/loss/points record before advancing rounds. This is independent from whether the whole round's results are released to the public." +msgstr "" + diff --git a/docs/locale/vi/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/vi/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..e76cc26abb7 --- /dev/null +++ b/docs/locale/vi/LC_MESSAGES/use/starting-a-tournament.po @@ -0,0 +1,196 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-31 10:38-0400\n" +"PO-Revision-Date: 2022-11-20 17:42\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: vi_VN\n" + +#: ../../use/starting-a-tournament.rst:5 +msgid "Starting a Tournament" +msgstr "" + +#: ../../use/starting-a-tournament.rst:7 +msgid "This page outlines a few things you should do at the start of a tournament, after you've :ref:`imported the initial data `. Once you've done these, proceed to :ref:`running a tournament `." +msgstr "" + +#: ../../use/starting-a-tournament.rst:9 +msgid "Tabbycat is developed for — and tested on — modern web browsers. If you are using **Internet Explorer versions 8, 7, or 6** the interface may look odd or not function properly. Switch to a newer browser if possible." +msgstr "" + +#: ../../use/starting-a-tournament.rst:13 +msgid "Tournament configuration" +msgstr "" + +#: ../../use/starting-a-tournament.rst:15 +msgid "After importing all your data you can log into the site as an administrator by loading up the homepage and then using the **Login** button in the lower-right. From there you should go to the administration section of your tournament, and then go to the tournament configuration page by clicking **Setup** then **Configuration** in the menu." +msgstr "" + +#: ../../use/starting-a-tournament.rst:17 +msgid "Here you can adjust the debate rules and interface options to your liking then hit **Save** when finished. We also offer a number of presets that apply particular rule sets (such as the Australs rules) or feature sets (such as displaying information normally released during briefs on the website)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:20 +msgid "Special data types and options" +msgstr "" + +#: ../../use/starting-a-tournament.rst:22 +msgid "There are a few optional fields that are not covered in the initial data templates, in the visual importer, or that may only be relevant in particular scenarios. It's worth going over these quickly to see if they are needed for your tournament. You can view and edit these fields in the **Edit Database** area (link is in the menu under **Setup**)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "Adjudicator Feedback > Adj Feedback Questions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:25 +msgid "As described in :ref:`adjudicator-feedback`, the types of questions that can be posed for adjudicator feedback are able to be heavily customised. If you are customising your feedback form it should be done here, and before the tournament starts." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "Authentication and Authorisation > Users" +msgstr "" + +#: ../../use/starting-a-tournament.rst:28 +msgid "Here you can add new admin users (those with full access) as well as new assistant users those (who can only do common data-entry tasks but not edit or view the full tab interface). See :ref:`user-accounts` for information on how to do this." +msgstr "" + +#: ../../use/starting-a-tournament.rst:30 +msgid "The people you're adding accounts for should be physically present when you do this, so that they can enter their password." +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Participants > Regions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:33 +msgid "Optionally, each institution may belong to a *Region*. An institution's region is used within the adjudicator allocation process to visually identify teams and adjudicators for the purposes of highlighting diversity issues. These have traditionally been used for geographic regions (such as Oceania), although could be repurposed as arbitrary markers of information — for example they could be used to denote teams from a particular State, institutional size, or circuit." +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Participants > Adjudicators" +msgstr "" + +#: ../../use/starting-a-tournament.rst:36 +msgid "An adjudicators *Base Score* represents their relative ability to judge important rooms, where adjudicators with higher numbers will, relative to the other adjudicators, be placed in better roles (ie as Chairs) and in the rooms you deem most important in each round. If you are running a small tournament, and plan to do your allocations manually, you can set everyone's number to the same amount." +msgstr "" + +#: ../../use/starting-a-tournament.rst:37 +msgid "For larger tournaments, particularly those that collect feedback, see the :ref:`adjudicator-feedback` section for more information on how base scores and other variables influence the automated allocation process." +msgstr "" + +#: ../../use/starting-a-tournament.rst:38 +msgid "Regardless of how you score the adjs, if you have changed the minimimum chairing score in settings, you'll want to make sure there are enough adjudicators that meet this minimum threshold or the automated allocator may not function effectively." +msgstr "" + +#: ../../use/starting-a-tournament.rst:39 +msgid "All types of conflicts are assigned to the relevant adjudicator. Adjudicator's can be conflicted against particular teams, particular institutions, and other adjudicators. Each of these is a located in a tab at the top of the page." +msgstr "" + +#: ../../use/starting-a-tournament.rst:40 +msgid "Each adjudicator's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:41 +msgid "Each adjudicator's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "Participants > Teams" +msgstr "" + +#: ../../use/starting-a-tournament.rst:44 +msgid "Note the distinction here between full name and short name. The latter is used on pages where space is tight, such as the draw displays or the adjudicator allocation interface." +msgstr "" + +#: ../../use/starting-a-tournament.rst:45 +msgid "Note that \"Uses institutional prefix\" option. With this option on, a team from the 'MUDS' insttution named '1' or 'Gold' would be displayed as 'MUDS 1' or 'MUDS Gold'." +msgstr "" + +#: ../../use/starting-a-tournament.rst:46 +msgid "At present, setting a team's type to Bye, Swing, or Composite only affects very particular circumstances, and should be considered unnecessary." +msgstr "" + +#: ../../use/starting-a-tournament.rst:47 +msgid "If you do have composite teams, and wish to have them be conflicted by adjudicators from each respective instutution, you'll need to add a new team conflict to each adjudicator from each institution." +msgstr "" + +#: ../../use/starting-a-tournament.rst:48 +msgid "If you do have swing teams, or teams that are otherwise ineligible for breaking, this is typically handled through the breaks interface in the main site" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Participants > Speakers" +msgstr "" + +#: ../../use/starting-a-tournament.rst:51 +msgid "Each speaker's gender is optional and is not displayed publicly; it is only shown in the adjudicator allocation interface" +msgstr "" + +#: ../../use/starting-a-tournament.rst:52 +msgid "Each speaker's pronoun is optional, and is only displayed if you use tabbycat to print the ballots and feedback sheets for each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "Tournaments > Divisions" +msgstr "" + +#: ../../use/starting-a-tournament.rst:55 +msgid "At the moment divisions are only useful for running tournaments that use round-robin style draws. Here, each division represents a draw pool within a round. Division support here is under development and not tested in many scenarios." +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Tournaments > Tournaments" +msgstr "" + +#: ../../use/starting-a-tournament.rst:58 +msgid "Note that tournaments can have a welcome message (useful for displaying maps and other information on the homepage)." +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "Venues > Venues" +msgstr "" + +#: ../../use/starting-a-tournament.rst:61 +msgid "A venue's priority determines its priority in being allocated. If there are 20 debates, and 30 rooms, the 20 rooms with the highest priorities will be chosen. Furthermore, if particular debates are marked as important during the draw process, those debates will receive the rooms with the highest priorities. In this way you can give close rooms to members of the adj core, or give larger rooms to debates that will draw a large audience." +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venues > Venue Categories" +msgstr "" + +#: ../../use/starting-a-tournament.rst:64 +msgid "Venue categories are not needed for most kinds of tournaments. Their purpose is to classify particular venues, such as venues all within one building or venues that are accessible. Once assigned these categories can display in the venue's name — ie \"Red 01.01\" or be used to assign Venue Constraints that match particular teams, institutions, or adjudicators to particular types of venues." +msgstr "" + +#: ../../use/starting-a-tournament.rst:67 +msgid "Information for the briefing" +msgstr "" + +#: ../../use/starting-a-tournament.rst:69 +msgid "If you're using the online submissions feature, some things you should probably mention in the briefing:" +msgstr "" + +#: ../../use/starting-a-tournament.rst:71 +msgid "Adjudicators must fill out ballots completely, including motions and venues—they are entered into the system." +msgstr "" + +#: ../../use/starting-a-tournament.rst:72 +msgid "There is a static URL for each person's ballots and feedback forms. It can be bookmarked, or the page can refreshed after each round." +msgstr "" + +#: ../../use/starting-a-tournament.rst:73 +msgid "If people submit a result or feedback online, they should indicate that they have done so on the paper copy of their ballot." +msgstr "" + diff --git a/docs/use/images/checkins-page.png b/docs/use/images/availability-page.png similarity index 100% rename from docs/use/images/checkins-page.png rename to docs/use/images/availability-page.png diff --git a/docs/use/images/create-tournament.png b/docs/use/images/create-tournament.png index 98128642b64..afb10474218 100644 Binary files a/docs/use/images/create-tournament.png and b/docs/use/images/create-tournament.png differ diff --git a/docs/use/images/draw-page.png b/docs/use/images/draw-page.png deleted file mode 100644 index 923ad9192bd..00000000000 Binary files a/docs/use/images/draw-page.png and /dev/null differ diff --git a/docs/use/running-a-tournament.rst b/docs/use/running-a-tournament.rst index 75b6af450d1..4b98d142ca5 100644 --- a/docs/use/running-a-tournament.rst +++ b/docs/use/running-a-tournament.rst @@ -25,9 +25,9 @@ Availability **Set availability.** For each round, you need to set the venue, team and adjudicator availability. If any of those are not marked as available they will not be used within the draw; so this feature is mostly useful for when adjudicators or venues are only available for certain rounds. -To do this, click the round in the menu, then click **Check-Ins**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance. +To do this, click the round in the menu, then click **Availability**. Here you can then go to the availability pages for venue, teams, and adjudicators, or check in everything at once. When you've set everything appropriately use the **Generate Draw** button in the top right to advance. - .. image:: images/checkins-page.png + .. image:: images/availability-page.png .. _generating-the-draw: @@ -105,7 +105,7 @@ See :ref:`data-entry` for more details about the data entry process. Advancing to the next round =========================== -Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Advance to Next Round** button. +Once you've got all the results entered and confirmed, you're ready to progress to the next round. This can be done by going to the **Results** area, and then using the **Complete Round** button. .. image:: images/results-page.png diff --git a/package-lock.json b/package-lock.json index 788288c5345..8833c838470 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "name": "tabbycat", "version": "3.18.1", - "license": "UNLICENSED", + "license": "AGPL-3.0-only", "dependencies": { "@babel/cli": "^7.16.0", "@babel/core": "^7.16.0", @@ -24,7 +24,7 @@ "core-js": "^3.19.2", "cpx": "1.5.x", "d3": "^6.3.1", - "django-channels": "1.1.8", + "django-channels": "^2.1.3", "feather-icons": "^4.28.0", "inter-ui": "^3.15.0", "jquery": "^3.6.0", @@ -45,10 +45,6 @@ }, "devDependencies": { "eslint-plugin-html": "^6.2.0" - }, - "engines": { - "node": "16.15.x", - "npm": "8.11.x" } }, "node_modules/@achrinza/node-ipc": { @@ -6270,14 +6266,13 @@ } }, "node_modules/django-channels": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/django-channels/-/django-channels-1.1.8.tgz", - "integrity": "sha1-Fg1H7fu9cbjzheQuEcC3d10reI0=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/django-channels/-/django-channels-2.1.3.tgz", + "integrity": "sha512-H0jzdw3XvBR3HC4FqMqhoM0M4iUlOJ1TCRpyL51r//8LX2KGAK7lA1+4JeTxvnlaq8xBvZ3mMTf55eaRoDcgKA==", "dependencies": { - "reconnecting-websocket": "^3.0.3" - }, - "engines": { - "npm": ">=5" + "@babel/runtime": "^7.5.5", + "event-target-shim": "^5.0.1", + "reconnecting-websocket": "^4.1.10" } }, "node_modules/dns-equal": { @@ -6689,6 +6684,14 @@ "node": ">=4.0.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -11162,9 +11165,9 @@ } }, "node_modules/reconnecting-websocket": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-3.2.2.tgz", - "integrity": "sha512-SWSfoXiaHVOqXuPWFgGWeUxKnb5HIY7I/Fh5C/hy4wUOgeOh7YIMXEiv5/eHBlNs4tNzCrO5YDR9AH62NWle0Q==" + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -18702,11 +18705,13 @@ } }, "django-channels": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/django-channels/-/django-channels-1.1.8.tgz", - "integrity": "sha1-Fg1H7fu9cbjzheQuEcC3d10reI0=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/django-channels/-/django-channels-2.1.3.tgz", + "integrity": "sha512-H0jzdw3XvBR3HC4FqMqhoM0M4iUlOJ1TCRpyL51r//8LX2KGAK7lA1+4JeTxvnlaq8xBvZ3mMTf55eaRoDcgKA==", "requires": { - "reconnecting-websocket": "^3.0.3" + "@babel/runtime": "^7.5.5", + "event-target-shim": "^5.0.1", + "reconnecting-websocket": "^4.1.10" } }, "dns-equal": { @@ -19031,6 +19036,11 @@ "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -22327,9 +22337,9 @@ } }, "reconnecting-websocket": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-3.2.2.tgz", - "integrity": "sha512-SWSfoXiaHVOqXuPWFgGWeUxKnb5HIY7I/Fh5C/hy4wUOgeOh7YIMXEiv5/eHBlNs4tNzCrO5YDR9AH62NWle0Q==" + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" }, "regenerate": { "version": "1.4.2", diff --git a/package.json b/package.json index 1fc8a656984..bd4bd1b081b 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "core-js": "^3.19.2", "cpx": "1.5.x", "d3": "^6.3.1", - "django-channels": "1.1.8", + "django-channels": "^2.1.3", "feather-icons": "^4.28.0", "inter-ui": "^3.15.0", "jquery": "^3.6.0", @@ -64,11 +64,7 @@ "last 1 version", "not dead" ], - "engines": { - "node": "16.15.x", - "npm": "8.11.x" - }, - "license": "UNLICENSED", + "license": "AGPL-3.0-only", "repository": "https://github.com/TabbycatDebate/tabbycat", "version": "3.18.1", "devDependencies": { diff --git a/tabbycat/actionlog/locale/ar/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ar/LC_MESSAGES/django.po index db9327ddc31..7d31365e99d 100644 --- a/tabbycat/actionlog/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "سجل التحديثات" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "حذف النتيجة" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "إدخال النتيجة" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "إنشاء استمارة التحكيم" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "تعديل النتيجة" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "تأكيد النتيجة" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "تقديم النتيجة من النموذج العام" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "تقديم التغذية الراجعة من النموذج العام" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "حفظ التغذية الراجعة" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "وضع ملاحظات محكم" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "قام بحفظ تعيين محكم" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "التعيين التلقائي للمحكمين" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "قام بالتعيين التلقائي لقاعات المناظرة" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "قام بتعديل فئات قاعات المناظرة" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "تعديل محددات إختيار القاعات" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "قام بإنشاء قرعة" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "قام بتأكيد القرعة" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "قام بإعادة تعيين القرعة" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "قام بإعلان القرعة" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "قام برفع القرعة" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "قام بتعديل توزيع قاعة يدويا" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "حفظ توزيع موالاة/معلرضة " -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "حفظ التقسيمات " -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "قام بإضافة/تعديل نص قضية" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "القضايا المعلنة" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "قضايا غير معلنة بعد" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "قام بتعديل أهمية المناظرة" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "تغيير حالة الحكم " -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "تعديل حالة الحكم " -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "تعديل الفئات المتأهلة " -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "جميع الفرق و فئات التأهل" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "تعديل درجات الفرق و تحديثها " -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "تعديل درجات الفريق المتأهل و تحديثها " -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "تعديل درجات الفريق المتأهل" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "تحديد وقت البداية" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "تقديم الجولة الحالية " -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "قام بتعديل الفرق المتوفرة" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "قام بتعديل تواجد المحكمين" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "قام بتعديل قاعات المناظرة المتوفرة" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "قام بتعديل إعدادات البطولة" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "قام بتعديل استحقاق المتحدثين حسب الفئات" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "قام بتعديل فئات المتحدثين" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "نوع" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "الزمن " -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "مستخدم" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "عنوان ال IP" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "بطولة" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "جولة" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "نوع المحتوى" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "Object ID" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "سجل التحديثات" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "مدخلات سجل التحديثات" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "كافة مدخلات السجل تحتاج مستخدم و IP واحد كحد أدنى" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "مستخدم مجهول" diff --git a/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..768171f7754 Binary files /dev/null and b/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..3aced27b6ba --- /dev/null +++ b/tabbycat/actionlog/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,323 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" + +#: actionlog/apps.py +msgid "Action Log" +msgstr "Регистър на действия" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "Предадена обратна връзка от публичния формуляр" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "Запазена обратна връзка" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "Автоматично разпределени стаи" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "Редактирани категории за стаи" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created draw" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Regenerated draw" +msgstr "" + +#: actionlog/models.py +msgid "Released draw" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased draw" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Added/edited motion" +msgstr "" + +#: actionlog/models.py +msgid "Released motions" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased motions" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated all team breaks" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated this team break" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament options" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel importance" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators to preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "type" +msgstr "" + +#: actionlog/models.py +msgid "timestamp" +msgstr "" + +#: actionlog/models.py +msgid "user" +msgstr "" + +#: actionlog/models.py +msgid "IP address" +msgstr "" + +#: actionlog/models.py +msgid "tournament" +msgstr "" + +#: actionlog/models.py +msgid "round" +msgstr "" + +#: actionlog/models.py +msgid "content type" +msgstr "" + +#: actionlog/models.py +msgid "object ID" +msgstr "" + +#: actionlog/models.py +msgid "action log" +msgstr "" + +#: actionlog/models.py +msgid "action log entries" +msgstr "" + +#: actionlog/models.py +msgid "All log entries require at least one of a user and an IP address." +msgstr "" + +#: actionlog/models.py +msgid "anonymous" +msgstr "" + diff --git a/tabbycat/actionlog/locale/bn/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/bn/LC_MESSAGES/django.po index 72a9941cbea..43e3aea3080 100644 --- a/tabbycat/actionlog/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-06-16 23:15\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "কর্ম লগ" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "প্রত্যাখ্যাত‌ ভোটপত্র সেট" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "নির্মিত ভোটপত্র সেট" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "সংশোধিত ভোটপত্র‌ সেট" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "নিশ্চিত ভোটপত্র সেট" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "সাধারণ আবেদনপত্র হতে জমাকৃত ব্যালট সেট" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "সাধারণ আবেদনপত্র হতে জমাকৃত ব্যালট সেট" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "সংরক্ষিত প্রতিক্রিয়া/ ফিডব্যাক" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "বিচারকের সম্পাদিত ভিত্তি স্কোর" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "বিচারক নোট সেট করুন" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "সংরক্ষিত বিচারক এ্যলোকেশন" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "অটো বন্টনকৃত বিচারক" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "সংরক্ষিত কক্ষের ম্যানুয়াল সংশোধন" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "অটো বন্টনকৃত কক্ষ" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "সংশোধিত কক্ষ বিভাগ" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "সংশোধিত কক্ষ সীমাবদ্ধতা" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "নির্মিত অঙ্কন" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "নিশ্চিত অঙ্কন" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "পুনঃ উৎপন্ন অঙ্কন" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "মুক্ত অঙ্কন" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "অপ্রকাশিত অঙ্কন" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "সংরক্ষিত ম্যাচআপ ম্যানুয়াল সংশোধন" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "ম্যাচআপের সাইড স্ট্যাটাস সংরক্ষণ করা হয়েছে" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "সংযুক্ত/ সংশোধিত মোশন" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "মুক্ত মোশন" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "অপ্রকাশিত মোশন" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "স্বয়ংক্রিয় অগ্রাধিকারের বির্তক গুরুত্ব" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "সংশোধিত বির্তক গুরুত্ব" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "পরিবর্তিত বিচারকের ব্রেকিং স্ট্যাটাস" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "সংশোধিত ব্রেক পারদর্শিতা / যোগ্যতা" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "সংশোধিত ব্রেক বিভাগ" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "উৎপন্ন কৃত দলীয় ব্রেক সকল বিভাগের জন্য" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "সংশোধিত ব্রেকিং দলের মন্তব্য এবং আপডেটেড সকল দলের ব্রেক" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "সংশোধনকৃত ব্রেকিং দলের মন্তব্য সমূহ এবং আপডেটেড এই দলীয় ব্রেক" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "সংশোধিত ব্রেকিং দলের মন্তব্য" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "সেট শুরুর সময়" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "অ্যাডভানচ্ড‌ কারেন্ট রাউন্ড টু" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "পর্ব শেষ হিসেবে চিহ্নিত করা হয়েছে" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "সংশোধিত দলীয় উপস্থিতি" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "সংশোধিত বিচারক উপস্থিতি" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "সংশোধিত কক্ষ উপস্থিতি" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "সংশোধিত প্রতিযোগিতার অপশন" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "সংশোধিত বক্তার বিভাগীয় যোগ্যতা" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "সংশোধিত বক্তার বিভাগ সমূহ" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "আমদানিকৃত প্রতিষ্ঠান সাধারণ আমদানিকারক ব্যবহার করছে" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "আমদানিকৃত কক্ষ সমূহ সাধারণ আমদানিকারক ব্যবহার করছে" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "আমদানিকৃত দল সমূহ সাধারণ আমদানিকারক ব্যবহার করছে" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "আমদানিকৃত বিচারকগণ সাধারণ আমদানিকারক ব্যবহার করছে" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "আপডেটেড বিচারকের স্কোর স্তূপের মধ্যে" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "সংশোধিত বিচারকের দলীয় দ্বন্দ্ব সমূহ" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "সংশোধিত বিচারক-বিচারক দ্বন্দ্ব সমূহ" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "সংশোধিত বিচারক-প্রতিষ্ঠান দ্বন্দ্ব সমূহ" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "সংশোধিত দল-প্রতিষ্ঠান দ্বন্দ্ব সমূহ" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "জেনারেটেড চেক‌ইন‌ শনাক্তকারী বক্তাদের জন্য" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "জেনারেটরের চেক ইন শনাক্তকারী বিচারক মন্ডলীর জন্য" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "জেনারেটেড চেক‌ইন‌ শনাক্তকারী কক্ষের জন্য" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "নির্মিত সম্পাদনকৃত প্যানেল সমূহ" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "অটো অগ্রাধিকারের সম্পাদিত প্যানেল সমূহ" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "সংশোধিত সম্পাদনকৃত প্যানেল প্রয়োজনীয়তা" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "স্বয়ংক্রিয়ভাবে বন্টনকৃত বিচারক মন্ডলী হতে সম্পাদিত প্যানেল সমূহ" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "সংশোধিত সম্পাদিত প্যানেল বিচারক" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "স্বয়ংক্রিয় ভাবে বন্টনকৃত সম্পাদিত প্যানেল সমূহ হতে বিতর্ক" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "ধরন / ছাপার অক্ষর" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "টাইমস্ট্যাম্প" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "ব্যবহারকারী" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "প্রতিযোগিতা" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "পর্ব" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "বিষয় / সূচি টাইপ" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "বিষয় আইডি" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "কর্ম লগ" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "কর্ম লগ প্রবেশ সমূহ" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "সকল প্রকার লগ প্রবেশ সমূহ কমপক্ষে একজন ব্যবহারকারী এবং একটি আইপি ঠিকানা/অ্যাডরেস দাবি করে." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "নামবিহীন" diff --git a/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..2832b73482e Binary files /dev/null and b/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..d1894530c44 --- /dev/null +++ b/tabbycat/actionlog/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,323 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-02 20:38\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" + +#: actionlog/apps.py +msgid "Action Log" +msgstr "" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created draw" +msgstr "Emparellament creat" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "Emparellament confirmat" + +#: actionlog/models.py +msgid "Regenerated draw" +msgstr "Emparellament regenerat" + +#: actionlog/models.py +msgid "Released draw" +msgstr "Emparellament publicat" + +#: actionlog/models.py +msgid "Unreleased draw" +msgstr "Emparellament sense publicar" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Added/edited motion" +msgstr "" + +#: actionlog/models.py +msgid "Released motions" +msgstr "Mocions publicades" + +#: actionlog/models.py +msgid "Unreleased motions" +msgstr "Mocions sense publicar" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated all team breaks" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated this team break" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "Establir hora d'inici" + +#: actionlog/models.py +msgid "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "Va marcar ronda com a completada" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament options" +msgstr "Va editar opcions del torneig" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel importance" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators to preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "type" +msgstr "" + +#: actionlog/models.py +msgid "timestamp" +msgstr "" + +#: actionlog/models.py +msgid "user" +msgstr "" + +#: actionlog/models.py +msgid "IP address" +msgstr "" + +#: actionlog/models.py +msgid "tournament" +msgstr "" + +#: actionlog/models.py +msgid "round" +msgstr "" + +#: actionlog/models.py +msgid "content type" +msgstr "" + +#: actionlog/models.py +msgid "object ID" +msgstr "" + +#: actionlog/models.py +msgid "action log" +msgstr "" + +#: actionlog/models.py +msgid "action log entries" +msgstr "" + +#: actionlog/models.py +msgid "All log entries require at least one of a user and an IP address." +msgstr "" + +#: actionlog/models.py +msgid "anonymous" +msgstr "" + diff --git a/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..62734f7441f Binary files /dev/null and b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..61217abc9a7 --- /dev/null +++ b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,323 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" + +#: actionlog/apps.py +msgid "Action Log" +msgstr "" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created draw" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Regenerated draw" +msgstr "" + +#: actionlog/models.py +msgid "Released draw" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased draw" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Added/edited motion" +msgstr "" + +#: actionlog/models.py +msgid "Released motions" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased motions" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated all team breaks" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated this team break" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament options" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel importance" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators to preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "type" +msgstr "" + +#: actionlog/models.py +msgid "timestamp" +msgstr "" + +#: actionlog/models.py +msgid "user" +msgstr "" + +#: actionlog/models.py +msgid "IP address" +msgstr "" + +#: actionlog/models.py +msgid "tournament" +msgstr "turnaje" + +#: actionlog/models.py +msgid "round" +msgstr "" + +#: actionlog/models.py +msgid "content type" +msgstr "" + +#: actionlog/models.py +msgid "object ID" +msgstr "" + +#: actionlog/models.py +msgid "action log" +msgstr "" + +#: actionlog/models.py +msgid "action log entries" +msgstr "" + +#: actionlog/models.py +msgid "All log entries require at least one of a user and an IP address." +msgstr "" + +#: actionlog/models.py +msgid "anonymous" +msgstr "" + diff --git a/tabbycat/actionlog/locale/de/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/de/LC_MESSAGES/django.po index 44f04695c2d..467cbfb2e5c 100644 --- a/tabbycat/actionlog/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,310 +12,312 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "typ" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "Turnier" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "runde" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po index b92702ec5cd..33d7130c83b 100644 --- a/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/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: 2020-05-24 04:15-0300\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,306 +17,306 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/es/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/es/LC_MESSAGES/django.po index b5a7f749771..7c03015a86c 100644 --- a/tabbycat/actionlog/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Historial de cambios" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Ha descartado un conjunto de ballots" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Ha revisado un conjunto de ballots" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Ha creado un conjunto de ballots" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Ha editado un conjunto de ballots" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Ha confirmado un conjunto de ballots" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Ha entregado balotas desde el formulario publico" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Ha entregado feedback desde el formulario publico" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Ha guardado feedback" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "Ha puesto un puntaje al juez" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Asignación de jueces guardada" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Ha asignado a los jueces automáticamente" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Ha guardado la edición manual de una sala" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Ha asignado las salas automáticamente" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Ha editado las categorías de sala" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Editar las restricciones de sala" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Ha creado el cuadro" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Ha confirmado el cuadro" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Ha regenerado el cuadro" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Ha publicado el cuadro" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Ha despublicado el cuadro" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "Ha guardado la edición manual de un enfrentamiento" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "Ha guardado el estatus de los lados de un enfrentamiento" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "Ha guardado las divisiones" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "Ha añadido/editado la moción" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "Ha publicado las mociones" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "Ha despublicado las mociones" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "Importancia del debate priorizada automáticamente" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "Ha editado la importancia del debate" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "Ha cambiado el estatus de break del juez" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "Ha editado la elegibilidad para el break" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "Ha editados las categorías del break" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "Ha generado el break de equipos para todas las categorías" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "Ha editado los comentarios del equipo que pasa el break y ha actualizado el break de todos los equipos" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "Ha editado los comentarios del equipo que pasa el break y ha actualizado el break de este equipo" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "Ha editado los comentarios del equipo que pasa el break" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "Ha configurado el tiempo de inicio" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "Ha avanzado la ronda presente a" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "Ha editado la disponibilidad de los equipos" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "Ha editado la disponibilidad de los jueces" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "Ha editado la disponibilidad de salas" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "Ha editado las opciones del torneo" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "Ha editado la elegibilidad para las categorías de orador" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "Ha editado las categorías de orador" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "Importar las instituciones usando el importador simple" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "Importar salas usando el importador simple" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "Importar equipos usando el importador simple" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "Importar jueces usando el importador simple" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "Actualizar la calificación de jueces en masa" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "Editar los conflictos juez-equipo" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "Editar conflictos juez-juez" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "Editar conflictos juez-institución" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "Generar identificaciones para el check-in de los oradores" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "Generar identificaciones para el check-in de los jueces" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "Generar identificaciones para el check-in de las salas" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "tipo" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "marca de tiempo" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "usuario" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "dirección IP" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "torneo" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "ronda" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "tipo de contenido" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "ID del objeto" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "historial de cambios" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "entradas en el historial de cambios" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "Todos los registros requieren al menos uno de un usuario y una dirección IP." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "anónimo" diff --git a/tabbycat/actionlog/locale/fr/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/fr/LC_MESSAGES/django.po index 1d4b0ec3f47..4ac30d4821f 100644 --- a/tabbycat/actionlog/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Journal des actions" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Rejeté un ensemble de feuilles de jugement" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Enregistré la présence d'un ensemble de feuilles de jugement" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Créé un ensemble de feuilles de jugement" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Modifié un ensemble de feuilles de jugement" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Confirmé un ensemble de feuilles de jugement" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Saisi un ensemble de feuilles de jugement du formulaire publique" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Saisi un évaluation du formulaire publique" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Sauvegardé un évaluation" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "Modifié la note de base pour un juge" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "Fixé la note pour un juge" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Enregistré l'attribution des juges" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Attribué automatiquement les juges" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Enregistré une modification manuelle d'une salle" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Attribué automatiquement les salles" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Modifié les catégories de salles" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Modifié les contraintes de salle" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Créé un tirage" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Confirmé un tirage" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Régénéré un tirage" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Publié un tirage" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Rétracté un tirage" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "Enregistré une modification manuelle d'un appariement" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "Enregistré le statut des côtés d'un appariement" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "Enregistré les divisions" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "Ajouté/Modifié une motion" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "Publié les motions" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "Rétracté les motions" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "Priorisé automatiquement l’importance d'un débat" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "Modifié l'importance d'un débat" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "Changé le statut de qualification d'un(e) juge" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "Modifié l’admissibilité pour la qualification" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "Modifié les catégories de qualification" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "Généré la qualification des équipes pour toutes les catégories" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "Modifié les remarques d'une équipe qualifiant et mit à jour toutes les qualifications des équipes" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "Modifié les remarques d'une équipe qualifiant et mit à jour cette qualification des équipes" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "Modifié les remarques d'une équipe qualifiant" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "Fixé l’heure de début" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "Avancé la joute actuelle à" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "Marqué la joute comme achevée" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "Modifié la disponibilité des équipes" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "Modifié la disponibilité des juges" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "Modifié la disponibilité des salles" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "Modifié les options du tournoi" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "Modifié l’admissibilité pour les catégories d'orateur" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "Modifié les catégories d'orateur" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "Importé les institutions avec l’importateur simple" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "Importé les salles avec l’importateur simple" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "Importé les équipes avec l’importateur simple" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "Importé les juges avec l’importateur simple" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "Mis à jour les notes de juge en masse" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "Modifié les conflits juge-équipe" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "Modifié les conflits juge-juge" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "Modifié des conflits juge-institution" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "Modifié des conflits équipe-institution" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "Généré des identifiants d’enregistrement pour les orateurs" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "Généré des identifiants d’enregistrement pour les juges" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "Généré des identifiants d’enregistrement pour les salles" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "Créé des jurys préformés" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "Classé automatiquement les jurys préformés" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "Modifié l'importance d'un jury préformé" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "Attribué automatiquement les juges aux jurys préformés" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "Modifié un juge de jury préformé" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "Attribué automatiquement des jurys préformés aux débats" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "type" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "horodatage" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "utilisateur" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "adresse IP" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "tournoi" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "joute" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "type de contenu" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "identifiant d'objet" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "journal des actions" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "entrées du journal des actions" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "Toutes les entrées de journal nécessitent au moins un utilisateur ou une adresse IP." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "anonyme" diff --git a/tabbycat/actionlog/locale/he/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/he/LC_MESSAGES/django.po index e5594fb488d..896393ab03d 100644 --- a/tabbycat/actionlog/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,310 +12,312 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "טורניר" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "סיבוב" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/hi/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/hi/LC_MESSAGES/django.po index d3517073e91..cb739d1535d 100644 --- a/tabbycat/actionlog/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,310 +12,312 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/id/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/id/LC_MESSAGES/django.po index 9593714a2a8..38b394874f4 100644 --- a/tabbycat/actionlog/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-29 04:55\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Catatan Tindakan" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Membuang balot" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Melakukan check-in balot" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Membuat balot" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Menyunting balot" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Mengkonfirmasi balot" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Memasukkan balot melalui form publik" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Memasukkan penilaian juri melalui form publik" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Menyimpan penilaian juri" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "Menyunting nilai awal juri" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "Menyimpan catatan juri" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Simpan alokasi juri" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Mengalokasikan juri secara otomatis" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Menyimpan suntingan ruangan secara manual" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Mengalokasikan ruangan secara otomatis" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Menyunting kategori ruangan" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Menyunting pembatasan ruangan" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Menciptakan draw" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Mengkonfirmasi draw" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Menciptakan ulang draw" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Mempublikasikan draw" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Menarik publikasi draw" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "Menyimpan suntingan matchup manual" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "Menyimpan status posisi sebuah matchup" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "Menambahkan/menyunting mosi" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "Mempublikasikan mosi" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "Menarik publikasi mosi" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "Melakukan prioritasiasi tingkat kepentingan debat secara otomatis" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "Menyunting prioritasiasi tingkat kepentingan debat" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "Mengubah status kelolosan (breaking) juri" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "Menyunting eligibilitas break" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "Menyunting kategori break" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "Membuat team break untuk semua kategori" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "Menyunting situasi breaking team dan memperbarui seluruh team break" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "Menyunting situasi breaking team dan memperbarui team break ini saja" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "Menyunting situasi breaking team" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "Mengatur waktu mulai" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "Melanjutkan ronde ini menuju" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "Menandai ronde telah tuntas" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "Menyunting kehadiran tim" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "Menyunting kehadiran juri" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "Menyunting ketersediaan ruangan" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "Menyunting opsi turnamen" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "Menyunting eligibilitas kategori pendebat" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "Menyunting kategori pembicara" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "Mengimpor institusi dengan importir sederhana" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "Mengimpor ruangan dengan importir sederhana" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "Mengimpor tim dengan importir sederhana" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "Mengimpor juri dengan importir sederhana" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "Memperbarui nilai juri secara masal" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "Menyunting konflik juri dengan tim" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "Menyunting konflik juri dengan juri" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "Menyunting konflik juri dengan institusi" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "Menyunting konflik tim dengan institusi" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "Membuat kode check-in unik untuk pendebat" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "Membuat kode check-in unik untuk juri" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "Membuat kode check-in unik untuk ruangan" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "Membuat rancangan panel" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "Prioritasisasi rancangan panel secara otomatis" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "Menyunting tingkat kepentingan rancangan panel" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "Alokasi juri ke rancangan panel secara otomatis" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "Menyunting juri dalam rancangan panel" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "Mengalokasikan rancangan panel kepada debat secara otomatis" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "tipe" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "waktu" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "pengguna" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "turnamen" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "ronde" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "tipe konten" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "object ID" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "catatan tindakan" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "entri catatan tindakan" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "Seluruh catatan tindakan mengharuskan setidaknya satu pengguna dan sebuah alamat IP." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "anonim" diff --git a/tabbycat/actionlog/locale/it/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..c0461fb0856 Binary files /dev/null and b/tabbycat/actionlog/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/it/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/it/LC_MESSAGES/django.po index 7e02c2e0597..2acf315f533 100644 --- a/tabbycat/actionlog/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2021-06-25 17:17\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/ja/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ja/LC_MESSAGES/django.po index b57615b8b4a..fd2f9d111ee 100644 --- a/tabbycat/actionlog/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "動作履歴" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "破棄されたバロット一覧" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "確定済みバロット一覧" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "生成済みバロット一覧" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "編集済みバロット一覧" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "確定済みバロット一覧" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "パブリックフォームから提出されたバロット一覧" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "パブリックフォームから提出されたフィードバック一覧
" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "保存済みフィードバック" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "編集済みのジャッジの基礎スコア" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "ジャッジについてNoteを設定" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "保存済みジャッジアロケーション" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "自動配置済みジャッジ" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "会場のマニュアル編集を保存しました" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "自動配置済みのラウンド部屋" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "編集済みのラウンド部屋カテゴリー" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "会場の各種制約を編集しました" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "作成済み対戦表
" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "確定済み対戦表" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "再生成されたドロー" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "公開済み対戦表" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "未公開の対戦表" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "マッチアップのマニュアル編集を保存しました" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "マッチアップのサイドを保存しました" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "追加済み/編集済みの論題" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "公開済みの論題" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "未公開の論題" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "ディベートの重要度に自動で優先順を設定する" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "ディベートの重要度を編集する" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "ジャッジのブレイク状況を変更" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "ブレイク資格を編集" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "編集済ブレイクカテゴリー" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "作成済みの全カテゴリーにおけるチームブレイク" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "ブレイクチームの情報を編集し、全てのチームブレイクを更新しました" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "ブレイクチームの情報を編集し、このチームブレイクを更新しました" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "ブレイクチームの情報を編集しました" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "試合開始時刻の設定" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "現在のラウンドへ進む
" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "ラウンドを完了したとして記録しました" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "チームの有効/非有効を編集" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "ジャッジの有効/非有効を編集" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "会場の有効/非有効を編集" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "保存済みの大会各種設定" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "スピーカーカテゴリーのブレイク資格を編集" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "編集済みスピーカーカテゴリー" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "簡易入力機能を用いて大学・機関の情報をインポートしました" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "簡易入力機能を用いて会場情報をインポートしました" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "簡易入力機能を用いてチーム情報をインポートしました" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "簡易入力機能を用いてジャッジ情報の情報をインポートしました" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "ジャッジスコアを一括で更新しました" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "ジャッジ・チーム間コンフリクトを修正する" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "ジャッジ間コンフリクトを修正する" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "ジャッジ・大学間のコンフリクト" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "チーム・インスティチューション間のコンフリクトを編集" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "スピーカーの識別コードの照合を生成" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "ジャッジの識別コードの照合を生成" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "会場の識別コードの照合を生成" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "パネルを事前生成しました" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "事前作成されたパネルに優先度を自動設定しました" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "事前作成されたパネルの重要度を編集しました" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "事前作成されたパネルにジャッジを自動配置しました" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "事前作成されたパネルジャッジを編集しました" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "事前作成されたパネルをディベートに自動配置しました" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "タイプ" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "タイムスタンプ" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "ユーザー" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "IPアドレス" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "トーナメント" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "ラウンド" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "コンテンツタイプ" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "オブジェクトID" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "動作履歴" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "アクションログ エントリー" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "全てのログエントリーには、最低でもユーザーとIPアドレスの少なくとも1つが必要です。" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "匿名" diff --git a/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..68290f2bb16 Binary files /dev/null and b/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..5482183e7e8 --- /dev/null +++ b/tabbycat/actionlog/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,323 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-27 09:25\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" + +#: actionlog/apps.py +msgid "Action Log" +msgstr "Әрекеттер тізімі" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "Дайындалған төрешілер парағы" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "Өзгертілген төрешілер парағы" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "Бекітілген төрешілер парағы" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "Сақталған кері байланыс" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created draw" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Regenerated draw" +msgstr "" + +#: actionlog/models.py +msgid "Released draw" +msgstr "Жарияланған кесте" + +#: actionlog/models.py +msgid "Unreleased draw" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Added/edited motion" +msgstr "Дайын/өзгертілген қарарлар" + +#: actionlog/models.py +msgid "Released motions" +msgstr "Жарияланған қарарлар" + +#: actionlog/models.py +msgid "Unreleased motions" +msgstr "Жарияланбаған қарарлар" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated all team breaks" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated this team break" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament options" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel importance" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators to preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "type" +msgstr "" + +#: actionlog/models.py +msgid "timestamp" +msgstr "" + +#: actionlog/models.py +msgid "user" +msgstr "қолданушы" + +#: actionlog/models.py +msgid "IP address" +msgstr "" + +#: actionlog/models.py +msgid "tournament" +msgstr "турнир" + +#: actionlog/models.py +msgid "round" +msgstr "ойын" + +#: actionlog/models.py +msgid "content type" +msgstr "" + +#: actionlog/models.py +msgid "object ID" +msgstr "" + +#: actionlog/models.py +msgid "action log" +msgstr "" + +#: actionlog/models.py +msgid "action log entries" +msgstr "" + +#: actionlog/models.py +msgid "All log entries require at least one of a user and an IP address." +msgstr "" + +#: actionlog/models.py +msgid "anonymous" +msgstr "жасырын түрде" + diff --git a/tabbycat/actionlog/locale/ms/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ms/LC_MESSAGES/django.po index dd49ea01433..389d8054067 100644 --- a/tabbycat/actionlog/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Log tindakan" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Set kertas undi terbuang" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Set undian didaftar masuk" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Set undian diwujudkan" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Set undian diedit" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Set undian disahkan" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Set undian dihantar daripada borang awam" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Maklum balas dihantar melalui borang awam" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Maklum balas disimpan" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "Skor asas hakim diedit" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Penetapan hakim disimpan" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Hakim ditetap secara auto" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Bilik yang diubah secara manual disimpan" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Bilik ditetap secara auto" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Kategori bilik diedit" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Kekangan bilik telah diubah" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Match-up telah dibuat" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Match-up telah disahkan" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Match-up telah dijana semula" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Match-up telah disiarkan" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Siaran match-up ditarik balik" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "Match-up yang diubah secara manual disimpan" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "Status belah pasukan match-up telah disimpan" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "Usul ditambah/diubah" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "Usul disiarkan" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "Siaran usul ditarik balik" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "Kepentingan perdebatan diberi keutamaan secara auto" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "Kepentingan perdebatan diubah" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "Status hakim 'break' telah diubah" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "Kelayakan 'break' diubah" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "Kategori 'break' diubah" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "Senarai pasukan yang 'break' telah dijana" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "Catatan pasukan 'break' diubah dan semua 'break' pasukan dikemaskini" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "Catatan pasukan 'break' diubah dan 'break' pasukan ini dikemaskini" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "Catatan pasukan 'break' diubah" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "Masa bermula ditetapkan" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "Pusingan kini mara ke" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "Pusingan ditanda sebagai selesai" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "Keberadaan pasukan diubah" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "Keberadaan hakim diubah" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "Keberadaan bilik diubah" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "Kelayakan kategori pembahas diedit" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "Kategori pembahas diubah" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "Institusi telah diimport menggunakan pengimport mudah" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "Bilik telah diimport menggunakan pengimport mudah" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "Pasukan telah diimport menggunakan pengimport mudah" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "Hakim telah diimport menggunakan pengimport mudah" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "Markah hakim dikemas kini secara banyak" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "Konflik hakim-pasukan diedit" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "Konflik hakim-hakim diedit" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "Konflik hakim-institusi diedit" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "Konflik pasukan-institusi diedit" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "Pengenal pasti untuk pendaftaran pembahas dijana" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "Pengenal pasti untuk pendaftaran hakim dijana" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "Pengenal pasti untuk pendaftaran bilik dijana" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "Panel hakim tetap diwujudkan" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "Panel hakim tetap diberi keutamaan" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "Kepentingan panel hakim tetap diedit" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "Berjaya menetap secara auto hakim ke panel hakim tetap" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "Panel hakim tetap diedit" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "Panel hakim tetap ditetap secara auto perdebatan" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "jenis" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "cap masa" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "pengguna" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "alamat IP" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "pertandingan" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "pusingan" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "jenis kandungan" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "ID objek" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "log tindakan" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "entri log tindakan" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "Setiap entri log memerlukan sekurang-kurangnya satu pengguna dan alamat IP." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/pt/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/pt/LC_MESSAGES/django.po index 8f5c2501fdf..a4edbc480ba 100644 --- a/tabbycat/actionlog/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Log de ação" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Conjunto de cédulas descartado" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Conjunto de cédulas inserido" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Conjunto de cédulas criado" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Conjunto de cédulas editado" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Conjunto de cédulas confirmado" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Conjunto de cédulas submetido a partir do formulário público" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Feedback submetido a partir do formulário público" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Feedback salvo" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "Definir nota do juiz" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Alocação dos juízes salva" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Juízes alocados automaticamente" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Edição manual de local salva" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Locais alocados automaticamente" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Categorias de locais editadas" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Restrições de locais editadas" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Sorteio criado" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Sorteio confirmado" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Novo sorteio gerado" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Sorteio liberado" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Sorteio não liberado" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "tipo" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "marca de tempo" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "usuário" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "torneio" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "rodada" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "anônimo" diff --git a/tabbycat/actionlog/locale/ro/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ro/LC_MESSAGES/django.po index d45e24b9b3d..adad6887aaa 100644 --- a/tabbycat/actionlog/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,310 +12,312 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "" diff --git a/tabbycat/actionlog/locale/ru/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/ru/LC_MESSAGES/django.po index 27a76cbd311..35f3734d46b 100644 --- a/tabbycat/actionlog/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "Журнал Действий" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "Отвергнутый набор бэллотов" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "Зарегистрированный набор бэллотов" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "Создан набор бэллотов" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "Отредактирован набор бэллотов" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "Подтвержден набор бэллотов" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "Предоставлен набор бэллотов из публичной формы" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "Представлена форма обратной связи из публичной формы" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "Сохраненная обратная связь" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "Исходный рейтинг судьи отредактирован" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "Установить примечание для судьи" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "Сохраненная расстановка судей" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "Автоматическая расстановка судей" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "Сохраненное ручное редактирование аудиторий" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "Автоматически распределенные аудитории" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "Редактированы категории аудиторий" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "Редактированы ограничения аудиторий" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "Созданная сетка" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "Подтвержденная сетка" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "Заново сгенерирированная сетка" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "Опубликованная сетка" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "Не опубликованная сетка" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "Сохраненное ручное редактирование сочетаний команд" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "Сохранить статус сторон в сочетании команд" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "Добавленная/отредактированная тема" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "Опубликованные темы" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "Не опубликованные темы" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "Важность дебатов автоматически приоритезирована" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "Отредактирована важность дебатов" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "Изменен брейковый статус судьи" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "Отредактирована доступность для брейка" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "Отредактированные категории брейка" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "Создан командный брейк для всех категорий" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "Изменены отметки брейкающихся команд, обновлены все командные брейки" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "Изменены отметки брейкающихся команд, обновлен этот командный брейк" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "Изменены отметки брейкающихся команд" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "Установить время начала" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "Текущий раунд продвинут к" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "Отметить раунд как завершенный" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "Отредактирована доступность команд" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "Отредактирована доступность судей" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "Отредактирована доступность аудиторий" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "Отредактированы опции турнира" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "Отредактирована доступность категорий спикеров" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "Отредактирована категории спикеров" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "Клубы импортированы с помощью простого импортера" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "Аудитории импортированы с помощью простого импортера" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "Команды импортированы с помощью простого импортера" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "Судьи импортированы с помощью простого импортера" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "Судейские баллы обновлены в массовом порядке" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "Отредактированы конфликты команд и судей" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "Отредактированы конфликты между судьями" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "Отредактированы конфликты между судьями и клубами" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "Отредактированы конфликты между командами и клубами" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "Сгенерированна проверка идентификаторов спикеров" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "Сгенерированна проверка идентификаторов судей" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "Сгенерированна проверка идентификаторов аудиторий" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "Коллегии созданы" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "Вес коллегий выставлен" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "Важность коллегии изменена" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "Судьи распределены по коллегиям" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "Судья коллегии изменен (а)" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "Коллегии распределены" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "тип" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "отметка времени" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "пользователь" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "IP-адрес" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "турнир" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "раунд" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "тип контента" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "iD объекта" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "журнал действий" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "записи журнала действий" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "Все записи журнала требуют хотя бы одного из пользователей и IP-адреса." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "анонимно" diff --git a/tabbycat/actionlog/locale/tr/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/tr/LC_MESSAGES/django.po index fbc9abe9b2a..aff11648c65 100644 --- a/tabbycat/actionlog/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,310 +12,312 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" -msgstr "" +msgstr "Eylem Günlüğü" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" -msgstr "" +msgstr "Ballot grubu ıskarta edildi" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" -msgstr "" +msgstr "Ballot grubu teslim edildi" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" -msgstr "" +msgstr "Ballot grubu oluşturuldu" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" -msgstr "" +msgstr "Ballot grubu düzenlendi" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" -msgstr "" +msgstr "Ballot grubu onaylandı" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" -msgstr "" +msgstr "Seyirci formundan ballot grubu gönderildi" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" -msgstr "" +msgstr "Seyirci formundan geri bildirim gönderildi" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" -msgstr "" +msgstr "Geri bildirim kaydedildi" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" -msgstr "" +msgstr "Jüri temel puanı düzelendi" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" -msgstr "" +msgstr "Jüri notu ayarlandı" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" -msgstr "" +msgstr "Jüri tahsisi kaydedildi" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" -msgstr "" +msgstr "Jüriler otomatik atandı" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" -msgstr "" +msgstr "Manuel düzenlemiş oda kaydedildi" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" -msgstr "" +msgstr "Odalar otomatik atıldı" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" -msgstr "" +msgstr "Oda kategorileri düzenlendi" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" -msgstr "" +msgstr "Oda kısıtlamaları düzenlendi" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" -msgstr "" +msgstr "Kura oluşturuldu" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" -msgstr "" +msgstr "Kura onaylandı" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" -msgstr "" +msgstr "Kura yenilendi" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" -msgstr "" +msgstr "Kura yayınlandı" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" -msgstr "" +msgstr "Kura yayından çekildi" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" -msgstr "" +msgstr "Manuel eşleşme kaydedildi" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" -msgstr "" +msgstr "Eşleşmenin tarafları kaydedildi" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" -msgstr "" +msgstr "Önerge eklendi/düzenlendi" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" -msgstr "" +msgstr "Önergeler yayınlandı" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" -msgstr "" +msgstr "Önergeler yayından çekildi" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" -msgstr "" +msgstr "Maç önemi otomatik belirlendi" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" -msgstr "" +msgstr "Maç önemi düzenlendi" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" -msgstr "" +msgstr "Jüri break olma durumu değiştirildi" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" -msgstr "" +msgstr "Break uygunluğu değiştirildi" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" -msgstr "" +msgstr "Break kategorileri düzenlendi" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" -msgstr "" +msgstr "Tüm kategoriler için takım breaki oluşturuldu" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" -msgstr "" +msgstr "Break olan takım açıklamaları düzenlendi ve tüm takım breakleri güncellendi" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" -msgstr "" +msgstr "Break olan takım açıklamaları düzenlendi ve bu takım breaki güncellendi" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" -msgstr "" +msgstr "Break olan takımların açıkmaları düzenlendi" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" -msgstr "" +msgstr "Başlangıç zamanını ayarlandı" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" -msgstr "" +msgstr "Mevcut tur belirtilen tura ilerletildi:" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" -msgstr "" +msgstr "Tur tamamlandı olarak işaretledi" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" -msgstr "" +msgstr "Ekiplerin kullanılabilirliği düzenlendi" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" -msgstr "" +msgstr "Jürilerin kullanılabilirliği düzenlendi" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" -msgstr "" +msgstr "Oda müsaitliği düzenlendi" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" -msgstr "" +msgstr "Turnuva seçenekleri düzenlendi" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" -msgstr "" +msgstr "Konuşmacı kategorisi uygunluğu düzenlendi" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" -msgstr "" +msgstr "Konuşmacı kategorileri düzenlendi" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" -msgstr "" +msgstr "Basit aktarma ile kurumlar içe aktarıldı" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" -msgstr "" +msgstr "Basit aktarma kullanılarak odalar içe aktarıldı" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" -msgstr "" +msgstr "Basit aktarma kullanılarak takımlar içe aktarıldı" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" -msgstr "" +msgstr "Basit aktarma kullanılarak jüriler içe aktarıldı" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" -msgstr "" +msgstr "Jüri puanları toplu güncellendi" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" -msgstr "" +msgstr "Jüri-takım conflictleri düzenlendi" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" -msgstr "" +msgstr "Jüri-jüri conflictleri düzenlendi" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" -msgstr "" +msgstr "Jüri-kurum conflictleri düzenlendi" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" -msgstr "" +msgstr "Takım-kurum conflictleri düzenlendi" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" -msgstr "" +msgstr "Konuşmacılar için giriş kimlikleri oluşturuldu" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" -msgstr "" +msgstr "Jüriler için giriş kimlikleri oluşturuldu" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" -msgstr "" +msgstr "Odalar için giriş kimlikleri oluşturuldu" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" -msgstr "" +msgstr "Önceden kurulmuş paneller oluşturuldu" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" -msgstr "" +msgstr "Önceden kurulmuş paneller otomatik önceliklendirildi" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" -msgstr "" +msgstr "Önceden kurulmuş panel önemi düzenlendi" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" -msgstr "" +msgstr "Önceden kurulmuş panellere otomatik jüriler atandı" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" -msgstr "" +msgstr "Önceden kurulmuş panel jürileri düzenlendi" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" -msgstr "" +msgstr "Önceden kurulmuş paneller maçlara otomatik atandı" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" -msgstr "" +msgstr "tür" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" -msgstr "" +msgstr "Zaman damgası" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "kullanıcı" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "turnuva" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "tur" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" -msgstr "" +msgstr "içerik türü" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" -msgstr "" +msgstr "nesne kimliği" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" -msgstr "" +msgstr "eylem günlüğü" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" -msgstr "" +msgstr "eylem günlüğü girişleri" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." -msgstr "" +msgstr "Tüm günlük girişleri en az bir kullanıcı ve bir IP adresi gerektirir." -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" -msgstr "" +msgstr "anonim" diff --git a/tabbycat/actionlog/locale/tzl/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/tzl/LC_MESSAGES/django.po index 4840f30d70a..3ca32ce5c58 100644 --- a/tabbycat/actionlog/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-11-18 21:01\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "crwdns29056:0crwdne29056:0" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "crwdns29058:0crwdne29058:0" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "crwdns29060:0crwdne29060:0" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "crwdns29062:0crwdne29062:0" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "crwdns29064:0crwdne29064:0" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "crwdns29066:0crwdne29066:0" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "crwdns29068:0crwdne29068:0" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "crwdns29070:0crwdne29070:0" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "crwdns29072:0crwdne29072:0" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "crwdns35552:0crwdne35552:0" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "crwdns29076:0crwdne29076:0" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "crwdns29078:0crwdne29078:0" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "crwdns29080:0crwdne29080:0" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "crwdns51038:0crwdne51038:0" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "crwdns51040:0crwdne51040:0" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "crwdns51042:0crwdne51042:0" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "crwdns51044:0crwdne51044:0" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "crwdns29090:0crwdne29090:0" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "crwdns29092:0crwdne29092:0" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "crwdns29094:0crwdne29094:0" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "crwdns29096:0crwdne29096:0" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "crwdns29098:0crwdne29098:0" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "crwdns29100:0crwdne29100:0" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "crwdns29102:0crwdne29102:0" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "crwdns29104:0crwdne29104:0" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "crwdns29106:0crwdne29106:0" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "crwdns29108:0crwdne29108:0" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "crwdns29110:0crwdne29110:0" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "crwdns33800:0crwdne33800:0" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "crwdns29112:0crwdne29112:0" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "crwdns29114:0crwdne29114:0" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "crwdns29116:0crwdne29116:0" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "crwdns29118:0crwdne29118:0" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "crwdns29120:0crwdne29120:0" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "crwdns29122:0crwdne29122:0" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "crwdns29124:0crwdne29124:0" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "crwdns29126:0crwdne29126:0" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "crwdns29128:0crwdne29128:0" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "crwdns29130:0crwdne29130:0" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "crwdns33802:0crwdne33802:0" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "crwdns29132:0crwdne29132:0" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "crwdns29134:0crwdne29134:0" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "crwdns51046:0crwdne51046:0" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "crwdns29138:0crwdne29138:0" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "crwdns29140:0crwdne29140:0" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "crwdns29142:0crwdne29142:0" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "crwdns29144:0crwdne29144:0" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "crwdns51048:0crwdne51048:0" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "crwdns29148:0crwdne29148:0" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "crwdns29150:0crwdne29150:0" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "crwdns29152:0crwdne29152:0" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "crwdns29154:0crwdne29154:0" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "crwdns29156:0crwdne29156:0" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "crwdns29158:0crwdne29158:0" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "crwdns33804:0crwdne33804:0" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "crwdns29160:0crwdne29160:0" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "crwdns29162:0crwdne29162:0" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "crwdns51050:0crwdne51050:0" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "crwdns33806:0crwdne33806:0" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "crwdns33808:0crwdne33808:0" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "crwdns33810:0crwdne33810:0" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "crwdns33812:0crwdne33812:0" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "crwdns33814:0crwdne33814:0" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "crwdns33816:0crwdne33816:0" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "crwdns29166:0crwdne29166:0" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "crwdns29168:0crwdne29168:0" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "crwdns29170:0crwdne29170:0" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "crwdns29172:0crwdne29172:0" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "crwdns29174:0crwdne29174:0" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "crwdns29176:0crwdne29176:0" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "crwdns29178:0crwdne29178:0" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "crwdns29180:0crwdne29180:0" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "crwdns29182:0crwdne29182:0" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "crwdns29184:0crwdne29184:0" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "crwdns29186:0crwdne29186:0" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "crwdns29188:0crwdne29188:0" diff --git a/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.mo b/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..e80054f5293 Binary files /dev/null and b/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..53094a14bc8 --- /dev/null +++ b/tabbycat/actionlog/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,323 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 920\n" + +#: actionlog/apps.py +msgid "Action Log" +msgstr "" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created draw" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Regenerated draw" +msgstr "" + +#: actionlog/models.py +msgid "Released draw" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased draw" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Added/edited motion" +msgstr "" + +#: actionlog/models.py +msgid "Released motions" +msgstr "" + +#: actionlog/models.py +msgid "Unreleased motions" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated all team breaks" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks and updated this team break" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament options" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel importance" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators to preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Edited preformed panel adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "type" +msgstr "" + +#: actionlog/models.py +msgid "timestamp" +msgstr "" + +#: actionlog/models.py +msgid "user" +msgstr "" + +#: actionlog/models.py +msgid "IP address" +msgstr "" + +#: actionlog/models.py +msgid "tournament" +msgstr "" + +#: actionlog/models.py +msgid "round" +msgstr "" + +#: actionlog/models.py +msgid "content type" +msgstr "" + +#: actionlog/models.py +msgid "object ID" +msgstr "" + +#: actionlog/models.py +msgid "action log" +msgstr "" + +#: actionlog/models.py +msgid "action log entries" +msgstr "" + +#: actionlog/models.py +msgid "All log entries require at least one of a user and an IP address." +msgstr "" + +#: actionlog/models.py +msgid "anonymous" +msgstr "" + diff --git a/tabbycat/actionlog/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/zh_Hans/LC_MESSAGES/django.po index 6ae8aa58498..6f27dcb1938 100644 --- a/tabbycat/actionlog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,307 +17,307 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/actionlog/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 920\n" -#: actionlog/apps.py:7 +#: actionlog/apps.py msgid "Action Log" msgstr "" -#: actionlog/models.py:89 +#: actionlog/models.py msgid "Discarded ballot set" msgstr "" -#: actionlog/models.py:90 +#: actionlog/models.py msgid "Checked in ballot set" msgstr "" -#: actionlog/models.py:91 +#: actionlog/models.py msgid "Created ballot set" msgstr "" -#: actionlog/models.py:92 +#: actionlog/models.py msgid "Edited ballot set" msgstr "" -#: actionlog/models.py:93 +#: actionlog/models.py msgid "Confirmed ballot set" msgstr "" -#: actionlog/models.py:94 +#: actionlog/models.py msgid "Submitted ballot set from the public form" msgstr "" -#: actionlog/models.py:95 +#: actionlog/models.py msgid "Submitted feedback from the public form" msgstr "" -#: actionlog/models.py:96 +#: actionlog/models.py msgid "Saved feedback" msgstr "" -#: actionlog/models.py:97 +#: actionlog/models.py msgid "Edited adjudicator base score" msgstr "" -#: actionlog/models.py:98 +#: actionlog/models.py msgid "Set adjudicator note" msgstr "" -#: actionlog/models.py:99 +#: actionlog/models.py msgid "Saved adjudicator allocation" msgstr "" -#: actionlog/models.py:100 +#: actionlog/models.py msgid "Auto-allocated adjudicators" msgstr "" -#: actionlog/models.py:101 +#: actionlog/models.py msgid "Saved a room manual edit" msgstr "" -#: actionlog/models.py:102 +#: actionlog/models.py msgid "Auto-allocated rooms" msgstr "" -#: actionlog/models.py:103 +#: actionlog/models.py msgid "Edited room categories" msgstr "" -#: actionlog/models.py:104 +#: actionlog/models.py msgid "Edited room constraints" msgstr "" -#: actionlog/models.py:105 +#: actionlog/models.py msgid "Created draw" msgstr "" -#: actionlog/models.py:106 +#: actionlog/models.py msgid "Confirmed draw" msgstr "" -#: actionlog/models.py:107 +#: actionlog/models.py msgid "Regenerated draw" msgstr "" -#: actionlog/models.py:108 +#: actionlog/models.py msgid "Released draw" msgstr "" -#: actionlog/models.py:109 +#: actionlog/models.py msgid "Unreleased draw" msgstr "" -#: actionlog/models.py:110 +#: actionlog/models.py msgid "Saved a matchup manual edit" msgstr "" -#: actionlog/models.py:111 +#: actionlog/models.py msgid "Saved the sides status of a matchup" msgstr "" -#: actionlog/models.py:112 +#: actionlog/models.py msgid "Saved divisions" msgstr "" -#: actionlog/models.py:113 +#: actionlog/models.py msgid "Added/edited motion" msgstr "" -#: actionlog/models.py:114 +#: actionlog/models.py msgid "Released motions" msgstr "" -#: actionlog/models.py:115 +#: actionlog/models.py msgid "Unreleased motions" msgstr "" -#: actionlog/models.py:116 +#: actionlog/models.py msgid "Auto-prioritized debate importance" msgstr "" -#: actionlog/models.py:117 +#: actionlog/models.py msgid "Edited debate importance" msgstr "" -#: actionlog/models.py:118 +#: actionlog/models.py msgid "Changed adjudicator breaking status" msgstr "" -#: actionlog/models.py:119 +#: actionlog/models.py msgid "Edited break eligibility" msgstr "" -#: actionlog/models.py:120 +#: actionlog/models.py msgid "Edited break categories" msgstr "" -#: actionlog/models.py:121 +#: actionlog/models.py msgid "Generated the team break for all categories" msgstr "" -#: actionlog/models.py:122 +#: actionlog/models.py msgid "Edited breaking team remarks and updated all team breaks" msgstr "" -#: actionlog/models.py:123 +#: actionlog/models.py msgid "Edited breaking team remarks and updated this team break" msgstr "" -#: actionlog/models.py:124 +#: actionlog/models.py msgid "Edited breaking team remarks" msgstr "" -#: actionlog/models.py:125 +#: actionlog/models.py msgid "Set start time" msgstr "" -#: actionlog/models.py:126 +#: actionlog/models.py msgid "Advanced the current round to" msgstr "" -#: actionlog/models.py:127 +#: actionlog/models.py msgid "Marked round as completed" msgstr "" -#: actionlog/models.py:128 +#: actionlog/models.py msgid "Edited teams availability" msgstr "" -#: actionlog/models.py:129 +#: actionlog/models.py msgid "Edited adjudicators availability" msgstr "" -#: actionlog/models.py:130 +#: actionlog/models.py msgid "Edited room availability" msgstr "" -#: actionlog/models.py:131 +#: actionlog/models.py msgid "Edited tournament options" msgstr "" -#: actionlog/models.py:132 +#: actionlog/models.py msgid "Edited speaker category eligibility" msgstr "" -#: actionlog/models.py:133 +#: actionlog/models.py msgid "Edited speaker categories" msgstr "" -#: actionlog/models.py:134 +#: actionlog/models.py msgid "Imported institutions using the simple importer" msgstr "" -#: actionlog/models.py:135 +#: actionlog/models.py msgid "Imported rooms using the simple importer" msgstr "" -#: actionlog/models.py:136 +#: actionlog/models.py msgid "Imported teams using the simple importer" msgstr "" -#: actionlog/models.py:137 +#: actionlog/models.py msgid "Imported adjudicators using the simple importer" msgstr "" -#: actionlog/models.py:138 +#: actionlog/models.py msgid "Updated adjudicator scores in bulk" msgstr "" -#: actionlog/models.py:139 +#: actionlog/models.py msgid "Edited adjudicator-team conflicts" msgstr "" -#: actionlog/models.py:140 +#: actionlog/models.py msgid "Edited adjudicator-adjudicator conflicts" msgstr "" -#: actionlog/models.py:141 +#: actionlog/models.py msgid "Edited adjudicator-institution conflicts" msgstr "" -#: actionlog/models.py:142 +#: actionlog/models.py msgid "Edited team-institution conflicts" msgstr "" -#: actionlog/models.py:143 +#: actionlog/models.py msgid "Generated check in identifiers for speakers" msgstr "" -#: actionlog/models.py:144 +#: actionlog/models.py msgid "Generated check in identifiers for adjudicators" msgstr "" -#: actionlog/models.py:145 +#: actionlog/models.py msgid "Generated check in identifiers for rooms" msgstr "" -#: actionlog/models.py:146 +#: actionlog/models.py msgid "Created preformed panels" msgstr "" -#: actionlog/models.py:147 +#: actionlog/models.py msgid "Auto-prioritized preformed panels" msgstr "" -#: actionlog/models.py:148 +#: actionlog/models.py msgid "Edited preformed panel importance" msgstr "" -#: actionlog/models.py:149 +#: actionlog/models.py msgid "Auto-allocated adjudicators to preformed panels" msgstr "" -#: actionlog/models.py:150 +#: actionlog/models.py msgid "Edited preformed panel adjudicator" msgstr "" -#: actionlog/models.py:151 +#: actionlog/models.py msgid "Auto-allocated preformed panels to debates" msgstr "" -#: actionlog/models.py:155 +#: actionlog/models.py msgid "type" msgstr "" -#: actionlog/models.py:157 +#: actionlog/models.py msgid "timestamp" msgstr "时间戳" -#: actionlog/models.py:160 +#: actionlog/models.py msgid "user" msgstr "用户" -#: actionlog/models.py:162 +#: actionlog/models.py msgid "IP address" msgstr "IP地址" -#: actionlog/models.py:166 +#: actionlog/models.py msgid "tournament" msgstr "比赛" -#: actionlog/models.py:168 +#: actionlog/models.py msgid "round" msgstr "赛" -#: actionlog/models.py:172 +#: actionlog/models.py msgid "content type" msgstr "" -#: actionlog/models.py:174 +#: actionlog/models.py msgid "object ID" msgstr "" -#: actionlog/models.py:180 +#: actionlog/models.py msgid "action log" msgstr "" -#: actionlog/models.py:181 +#: actionlog/models.py msgid "action log entries" msgstr "" -#: actionlog/models.py:189 +#: actionlog/models.py msgid "All log entries require at least one of a user and an IP address." msgstr "" -#: actionlog/models.py:228 +#: actionlog/models.py msgid "anonymous" msgstr "匿名" diff --git a/tabbycat/actionlog/models.py b/tabbycat/actionlog/models.py index 0c5ef56d453..7e8932340ff 100644 --- a/tabbycat/actionlog/models.py +++ b/tabbycat/actionlog/models.py @@ -84,6 +84,7 @@ class ActionLogEntry(models.Model): ACTION_TYPE_PREFORMED_PANELS_ADJUDICATOR_AUTO = 'pp.aj.auto' ACTION_TYPE_PREFORMED_PANELS_ADJUDICATOR_EDIT = 'pp.aj.auto' ACTION_TYPE_PREFORMED_PANELS_DEBATES_AUTO = 'pp.db.auto' + ACTION_TYPE_USER_INVITE = 'ur.inv' ACTION_TYPE_CHOICES = ( (ACTION_TYPE_BALLOT_DISCARD , _("Discarded ballot set")), @@ -149,6 +150,7 @@ class ActionLogEntry(models.Model): (ACTION_TYPE_PREFORMED_PANELS_ADJUDICATOR_AUTO, _("Auto-allocated adjudicators to preformed panels")), (ACTION_TYPE_PREFORMED_PANELS_ADJUDICATOR_EDIT, _("Edited preformed panel adjudicator")), (ACTION_TYPE_PREFORMED_PANELS_DEBATES_AUTO , _("Auto-allocated preformed panels to debates")), + (ACTION_TYPE_USER_INVITE , _("Invited user to the instance")), ) type = models.CharField(max_length=10, choices=ACTION_TYPE_CHOICES, diff --git a/tabbycat/adjallocation/conflicts.py b/tabbycat/adjallocation/conflicts.py index d6f10f41a7e..b93bad985bc 100644 --- a/tabbycat/adjallocation/conflicts.py +++ b/tabbycat/adjallocation/conflicts.py @@ -2,6 +2,7 @@ participants.""" import logging from itertools import combinations, product +from typing import Dict, List, Tuple, TypedDict from adjallocation.models import (AdjudicatorAdjudicatorConflict, AdjudicatorInstitutionConflict, AdjudicatorTeamConflict, TeamInstitutionConflict) @@ -11,6 +12,18 @@ logger = logging.getLogger(__name__) +class AdjudicatorConflicts(TypedDict): + class Conflict(TypedDict): + ago: int + id: int + + team: List[Conflict] + adjudicator: List[Conflict] + + +TeamConflicts = AdjudicatorConflicts + + class ConflictsInfo: """Manages information about conflicts between participants. @@ -235,7 +248,7 @@ def seen_adj_adj(self, adj1, adj2): covered by this object.""" return (adj1.id, adj2.id) in self.adjadjhistories - def serialized_by_participant(self): + def serialized_by_participant(self) -> Tuple[Dict[int, TeamConflicts], Dict[int, AdjudicatorConflicts]]: """Returns a tuple of two dicts, mapping primary keys of teams and adjudicators respectively to a two-key dict {'team': [], 'adjudicator': []} @@ -260,9 +273,8 @@ def serialized_by_participant(self): history = adjudicators.setdefault(adj1_id, {'team': [], 'adjudicator': []}) history['adjudicator'].extend([{'id': adj2_id, 'ago': now - r} for r in rseqs]) - # Need to reverse the order so the second adj also has a record - for (adj2_id, adj1_id), rseqs in self.adjadjhistories.items(): - history = adjudicators.setdefault(adj1_id, {'team': [], 'adjudicator': []}) - history['adjudicator'].extend([{'id': adj2_id, 'ago': now - r} for r in rseqs]) + # Need to reverse the order so the second adj also has a record + history = adjudicators.setdefault(adj2_id, {'team': [], 'adjudicator': []}) + history['adjudicator'].extend([{'id': adj1_id, 'ago': now - r} for r in rseqs]) return teams, adjudicators diff --git a/tabbycat/adjallocation/consumers.py b/tabbycat/adjallocation/consumers.py index 0dbcb19e857..332a936753d 100644 --- a/tabbycat/adjallocation/consumers.py +++ b/tabbycat/adjallocation/consumers.py @@ -55,11 +55,11 @@ def allocate_debate_adjs(self, event): round = Round.objects.get(pk=event['extra']['round_id']) self._apply_allocation_settings(round, event['extra']['settings']) - if round.draw_status == round.STATUS_RELEASED: + if round.draw_status == round.Status.RELEASED: self.return_error(event['extra']['group_name'], _("Draw is already released, unrelease draw to redo auto-allocations.")) return - if round.draw_status != round.STATUS_CONFIRMED: + if round.draw_status != round.Status.CONFIRMED: self.return_error(event['extra']['group_name'], _("Draw is not confirmed, confirm draw to run auto-allocations.")) return diff --git a/tabbycat/adjallocation/locale/ar/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ar/LC_MESSAGES/django.po index 727d8ae674c..96937c33e66 100644 --- a/tabbycat/adjallocation/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." @@ -32,7 +32,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." @@ -43,50 +43,50 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "تعيين المحكمين" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "تم إعلان القرعة مسبقا، قم برفعها لإعادة التوزيع التلقائي " -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "لم يتم تأكيد القرعة بعد، قم بتأكيدها لإجراء التوزيع التلقائي " -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" @@ -97,15 +97,15 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" @@ -116,261 +116,260 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "رئيس الجلسة" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "أعضاء لجنة التحكيم" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr " محكم متدرب" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "مناظرة" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "محكم" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "نوع" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "متوفر ؟" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "محكم المناظرة" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "محكمو المناظرة" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "فريق" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "تعارض محكم-فريق" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "تعارضات (محكم-فريق)" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "محكم-1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "محكم-2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "تعارض محكم-محكم" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "تعارضات (محكم-محكم)" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "مؤسسة" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "تعارض محكم-مؤسسة" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "تعارضات (محكم-مؤسسة)" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "جولة" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "أهمية" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "مستوى القاعة" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "مجهول " -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "تعارضات (محكم-فريق)" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "حفظ تعارضات (مجكم-فريق)" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." @@ -381,7 +380,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." @@ -392,19 +391,19 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "لم يتم تغيير لتعارضات (محكم-فريق)" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." @@ -415,7 +414,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." @@ -426,19 +425,19 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." @@ -449,7 +448,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." @@ -460,19 +459,19 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." @@ -483,7 +482,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." @@ -494,7 +493,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..d070f3616ed Binary files /dev/null and b/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..cb9be48515b --- /dev/null +++ b/tabbycat/adjallocation/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,451 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" + +#: adjallocation/allocators/base.py +msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." +msgstr "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no debates for this round. Maybe you haven't created a draw yet?" +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." +msgstr "" + +#: adjallocation/apps.py +msgid "Adjudicator Allocation" +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is already released, unrelease draw to redo auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is not confirmed, confirm draw to run auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "There are no preformed panels available to allocate." +msgstr "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated preformed panels to debates." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "There aren't any panels to fill. Create panels first." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so debate importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so panel importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully created new preformed panels for this round." +msgstr "" + +#: adjallocation/models.py +msgid "chair" +msgstr "" + +#: adjallocation/models.py +msgid "panellist" +msgstr "" + +#: adjallocation/models.py +msgid "trainee" +msgstr "" + +#: adjallocation/models.py +msgid "debate" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator" +msgstr "" + +#: adjallocation/models.py +msgid "type" +msgstr "" + +#: adjallocation/models.py +msgid "available?" +msgstr "" + +#: adjallocation/models.py +msgid "debate adjudicator" +msgstr "" + +#: adjallocation/models.py +msgid "debate adjudicators" +msgstr "" + +#: adjallocation/models.py +msgid "team" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-team conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-team conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator 1" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator 2" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "institution" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-institution conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-institution conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "team-institution conflict" +msgstr "" + +#: adjallocation/models.py +msgid "team-institution conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "round" +msgstr "" + +#: adjallocation/models.py +msgid "importance" +msgstr "" + +#: adjallocation/models.py +msgid "minimum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the lowest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "maximum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the highest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "room rank" +msgstr "" + +#: adjallocation/models.py +msgid "Sequential number of panel, not used in any algorithms" +msgstr "" + +#: adjallocation/models.py +msgid "liveness" +msgstr "" + +#: adjallocation/models.py +msgid "Number of categories this room is expected to be live for" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panels" +msgstr "" + +#: adjallocation/models.py +msgid "panel" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel adjudicator" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel adjudicators" +msgstr "" + +#: adjallocation/preformed/base.py +msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." +msgstr "" + +#: adjallocation/templates/preformed_index.html adjallocation/views.py +msgid "Preformed Panels" +msgstr "" + +#: adjallocation/templates/preformed_index.html +msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." +msgstr "" + +#: adjallocation/templates/preformed_index.html +msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." +msgstr "" + +#: adjallocation/templates/preformed_index.html +#, python-format +msgid "Edit Preformed Panels for %(round)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" +msgstr "" + +#: adjallocation/views.py +msgid "Male" +msgstr "" + +#: adjallocation/views.py +msgid "Female" +msgstr "" + +#: adjallocation/views.py +msgid "Other" +msgstr "" + +#: adjallocation/views.py +msgid "Unknown" +msgstr "" + +#: adjallocation/views.py +msgid "Edit Allocation" +msgstr "" + +#: adjallocation/views.py +msgid "Edit Panels" +msgstr "" + +#: adjallocation/views.py +msgid "Return to Panels Overview" +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Team Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Team Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-team conflict." +msgid_plural "Saved %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-team conflict." +msgid_plural "Deleted %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-team conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-adjudicator conflict." +msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-adjudicator conflict." +msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-adjudicator conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-institution conflict." +msgid_plural "Saved %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-institution conflict." +msgid_plural "Deleted %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-institution conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d team-institution conflict." +msgid_plural "Saved %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d team-institution conflict." +msgid_plural "Deleted %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to team-institution conflicts." +msgstr "" + diff --git a/tabbycat/adjallocation/locale/bn/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/bn/LC_MESSAGES/django.po index d0c69fc6978..e7b1ad2dda8 100644 --- a/tabbycat/adjallocation/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-06-16 23:14\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "কোনো বিচারকের উপস্থিতি নিশ্চিত করা হয়নি। স্বয়ংক্রিয় বিচারক সংস্থানের আগে যথেষ্ট বিচারকের উপস্থিতি নিশ্চিত করুন." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s আপনার জমা দেয়া স্কোরটি সর্বোচ্চ বিচারক স্কোর (%(score).1f) অপেক্ষা বড়." msgstr[1] "%(count)s জমাকৃত স্কোরটি নির্ধারিত সর্বোচ্চ বিচারক স্কোর (%(score).1f) অপেক্ষা বেশি." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s আপনার জমা দেয়া স্কোরটি সর্বোচ্চ বিচারক স্কোর (%(score).1f) অপেক্ষা বড়." msgstr[1] "%(count)s আপনার জমা দেয়া স্কোরটি সর্বোচ্চ বিচারক স্কোর (%(score).1f) অপেক্ষা বড়." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "চেয়ার অথবা প্যানেলিস্ট হওয়ার যোগ্য বিচারক নেই। \"চেয়ার বা প্যানেলিস্ট হওয়ার সর্বনিম্ন মূল্যায়ন স্কোর\" পরিবর্তন করে বিচারকদের বর্তমান স্কোরের নিচে নির্ধারণ করুন।." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "এই রাউন্ডের জন্য কোনো বিতর্ক নেই। সম্ভবত আপনি ড্র তৈরী করেন নি এখনো?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "%(debate_count)s টি বিতর্ক আছে কিন্তু মাত্র %(adj_count)s জন ভোট করার মতো বিচারক আছেন।" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "%(panel_debates)s টি প্যানেল বিতর্ক আছে কিন্তু মাত্র %(panellists)s জন প্যানেলিস্ট আছেন ( %(needed)s এর তুলনায় কম)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "%(debates_count)s টি বিতর্ক আছে কিন্তু মাত্র %(voting_count)s জন ভোট করার মতো বিচারক আছেন।" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "বিচারক নির্ধারণ" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "ড্র ইতোমধ্যে প্রকাশিত হয়েছে, পুণরায় স্বয়ংক্রিয় বিচারক বন্টনের জন্য সেটি বন্ধ করুন।." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "ড্র নিশ্চিত করা হয়নি, স্বয়ংক্রিয় বিচারক বন্টনের জন্য ড্র নিশ্চিত করুন।." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "কোনো পূর্বগঠিত প্যানেল নেই।" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "সফলভাবে পূর্বগঠিত প্যানেল অনুযায়ী স্বয়ংক্রিয়ভাবে বিচারক নির্ধারিত হয়েছে।" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "বিতর্কের বিচারক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়েছে। তবে, একটি সতর্কবানী ছিলোঃ" msgstr[1] "পূর্বগঠিতপ্যানেল অনুযায়ী সফলভাবে বিতর্কের বিচারক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়েছে। তবে, %(count)d টি সতর্কবানী ছিলোঃ" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "সফলভাবে বিতর্কের বিচারকদের স্বয়ংক্রিয়ভাবে নির্ধারণ করা হয়েছে।" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "কোনো পূর্বগঠিত প্যানেল নেই। প্রথমে প্যানেল তৈরী করুন।" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "পূর্বগঠিত প্যানেল অনুযায়ী সফলভাবে বিতর্কের বিচারক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়েছে। তবে, একটি সতর্কবানী ছিলোঃ" msgstr[1] "পূর্বগঠিত প্যানেল অনুযায়ী সফলভাবে বিতর্কের বিচারক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়েছে। তবে, %(count)d টি সতর্কবানী ছিলোঃ" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "স্বয়ংক্রিয়ভাবে বিচারকগণের পূর্বগঠিত প্যানেল নির্ধারিত হয়েছে।" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "কোনো ব্রেক বিভাগকে \"সাধারণ\" হিসেবে চিহ্নিত করা না হওয়ায় বিতর্কের গুরুত্ব হিসাব করা যায় নি।" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "স্বয়ংক্রিয়ভাবে বিতর্কের গুরুত্ব নির্ধারিত হয়েছে। " -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "কোনো ব্রেক বিভাগকে \"সাধারণ\" হিসেবে চিহ্নিত করা না হওয়ায় প্যানেলের গুরুত্ব হিসাব করা যায় নি।" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "স্বয়ংক্রিয়ভাবে পূর্বনির্ধারিত প্যানেলের গুরুত্ব নির্ধারিত হয়েছে।" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "যেহেতু এটি প্রথম পর্ব, তাই পূর্বগঠিত প্যানেলগুলির সাথে ব্র্যাকেট এবং সম্ভাব্যতার তথ্য দেখানো যায় নি।" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "আগের পর্বের ড্র এখনো করা হয়নি, তাই পূর্বগঠিত প্যানেলকে ব্র্যাকেট এবং সম্ভাব্যতার সাথে দেখানো যায় নি।" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "এই পর্বের জন্য পূর্বগঠিত প্যানেল সফলভাবে তৈরী হয়েছে।" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "স্পিকার" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "প্যানেলিস্ট" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "নবিশ বিচারক" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "বিতর্ক" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "বিচারক" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "ধরণ" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "উপস্থিত?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "বিতর্কের বিচারক" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "বিতর্কের বিচারকগণ" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "দল" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "বিচারক-দল দ্বন্দ্ব" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "বিচারক-দল দ্বন্দ্বসমূহ" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "বিচারক ১" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "বিচারক ২" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "বিচারক-বিচারক দ্বন্দ্ব" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "বিচারক-বিচারক দ্বন্দ্বসমূহ" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "প্রতিষ্ঠান" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "বিচারক-প্রতিষ্ঠান দ্বন্দ্ব" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "বিচারক-প্রতিষ্ঠান দ্বন্দ্বসমূহ" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "দল-প্রতিষ্ঠান দ্বন্দ্ব" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "দল-প্রতিষ্ঠান দ্বন্দ্বসমূহ" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "পর্ব" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "গুরুত্ব" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "সর্বনিম্ন ব্র্যাকেট" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "সর্বনিম্ন যে ব্র্যাকেটে এই প্যানেল বিচারকার্য করতে পারে" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "সর্বোচ্চ ব্র্যাকেট" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "সর্বোচ্চ যে ব্র্যাকেটে এই প্যানেল বিচারকার্য করতে পারে" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "কক্ষের র‍্যাংক " -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "কোনো এলগোরিদমে ব্যবহৃত হয়নি এমন প্যানেলের ক্রমিক নাম্বার" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "সম্ভাব্যতা" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "যে কয়টি বিভাগের জন্য এই কক্ষটি সম্ভাব্য" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "পূর্বগঠিত প্যানেল" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "পূর্বগঠিত প্যানেল" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "প্যানেল" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "পূর্বগঠিত প্যানেলের বিচারক" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "পূর্বগঠিত প্যানেলের বিচারকগণ" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "প্যানেল পূর্বগঠিত আছে। এ পর্বের জন্যে কি আপনি পূর্বগঠিত প্যানেল নির্ধারণ করেছেন? না করে থাকে স্বয়ংক্রিয়ভাবে বিচারক নির্ধারণ করে দেখুন?" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "পূর্বগঠিত প্যানেল" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "একটি পূর্বগঠিত প্যানেল একটি নির্ধারিত বিচারকের সমষ্টি যেটি কোনো পর্বের ড্র তৈরীর পূর্বেই নির্ধারণ করা থাকে। তারপর আপনি স্বয়ংক্রিয়ভাবে অথবা নিজে নিজে এই প্যানেলগুলি স্বাভাবিক বিচারক নির্ধারণ প্রক্রিয়ার মাধ্যমে কোনো কক্ষে নির্দিষ্ট করতে পারেন। এটি আপনার বিচারক নির্ধারণ প্রক্রিয়াকে দ্রুত করবে।" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "উল্লেখ্য যে, শুধু যেসব বিচারকের উপস্থিত হিসেবে চিহ্নিত করা হয়েছে এই পর্বের জন্য, তারাই এই পর্বে বিভিন্ন বিতর্কের জন্য নির্ধারিত হবেন। তাই আগেই তাদের উপস্থিতি নিশ্চিত করুন।" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "%(round)s এর জন্য পূর্বগঠিত প্যানেল পরিবর্তন করুন" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "দ্বন্দ্বঃ %(adjudicator)s & %(team)s (personal)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "দ্বন্দ্বঃ %(adjudicator)s & %(team)s প্রতিষ্ঠানের দ্বারা %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "দ্বন্দ্বঃ %(adjudicator1)s & %(adjudicator2)s (personal)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "দ্বন্দ্বঃ %(adjudicator1)s & %(adjudicator2)s প্রতিষ্ঠানের দ্বারা %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "পুরুষ" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "নারী" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "অন্যান্য" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "অজ্ঞাত" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "নির্ধারিত বিচারক পরিবর্তন করুন" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "প্যানেল পরিবর্তন করুন" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "প্যানেলের সার্বিক চিত্রে ফিরে যান" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "বিচারক-দল দ্বন্দ্বসমূহ" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "বিচারক-দল দ্বন্দ্বসমূহ সেভ করুন" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d বিচারক-দল দ্বন্দ্ব সেভ করা হয়েছে" msgstr[1] "%(count)d বিচারক-দল দ্বন্দ্বগুলি সেভ করা হয়েছে" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d বিচারক-দল দ্বন্দ্ব মুছে ফেলা হয়েছে।" msgstr[1] "%(count)d বিচারক-দল দ্বন্দ্ব মুছে ফেলা হয়েছে।" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "বিচারক-দল দ্বন্দ্বসমূহের কোনো পরিবর্তন করা হয়নি" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "বিচারক-বিচারক দ্বন্দ্বসমূহ" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "বিচারক-বিচারক দ্বন্দ্বসমূহ সেভ করুন" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d বিচারক-বিচারক দ্বন্দ্ব সেভ করা হয়েছে।" msgstr[1] "%(count)d বিচারক-বিচারক দ্বন্দ্ব সেভ করা হয়েছে।" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d বিচারক-বিচারক দ্বন্দ্ব সেভ করা হয়েছে।" msgstr[1] "%(count)d বিচারক-বিচারক দ্বন্দ্ব সেভ করা হয়েছে।" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "বিচারক-বিচারক দ্বন্দ্বের কোনো পরিবর্তন হয়নি" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "বিচারক-প্রতিষ্ঠান দ্বন্দ্ব" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "বিচারক-প্রতিষ্ঠান দ্বন্দ্ব সেভ করুন" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d বিচারক-প্রতিষ্ঠান দ্বন্দ্ব সেভ করা হয়েছে।" msgstr[1] "%(count)d বিচারক-বিচারক দ্বন্দ্ব সেভ করা হয়েছে।" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d বিচারক-প্রতিষ্ঠান দ্বন্দ্ব মুছে ফেলা হয়েছে।" msgstr[1] "%(count)d বিচারক-প্রতিষ্ঠান দ্বন্দ্ব সেভ করা হয়েছে।" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "বিচারক-প্রতিষ্ঠান দ্বন্দ্বের কোনো পরিবর্তন হয়নি" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "দল-প্রতিষ্ঠান দ্বন্দ্বসমূহ" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "দল-প্রতিষ্ঠান দ্বন্দ্বসমূহ সেভ করুন" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "%(count)d দল-প্রতিষ্ঠান দ্বন্দ্ব সেভ করা হয়েছে।" msgstr[1] "%(count)d দল-প্রতিষ্ঠান দ্বন্দ্ব সেভ করা হয়েছে।" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "%(count)d দল-প্রতিষ্ঠান দ্বন্দ্ব মুছে ফেলা হয়েছে।" msgstr[1] "%(count)d দল-প্রতিষ্ঠান দ্বন্দ্ব মুছে ফেলা হয়েছে।" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "দল-প্রতিষ্ঠান দ্বন্দ্বের কোনো পরিবর্তন হয়নি" diff --git a/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..60015d66f66 Binary files /dev/null and b/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..25780e3228d --- /dev/null +++ b/tabbycat/adjallocation/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,451 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-06-22 12:35\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" + +#: adjallocation/allocators/base.py +msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." +msgstr "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no debates for this round. Maybe you haven't created a draw yet?" +msgstr "No hi ha debats per aquesta ronda. Potser no has creat l'emparellament encara?" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." +msgstr "" + +#: adjallocation/apps.py +msgid "Adjudicator Allocation" +msgstr "Assignació de Jutges" + +#: adjallocation/consumers.py +msgid "Draw is already released, unrelease draw to redo auto-allocations." +msgstr "Els empajeraments han estat revelats, oculta els aparellaments per refer autocol·locacions." + +#: adjallocation/consumers.py +msgid "Draw is not confirmed, confirm draw to run auto-allocations." +msgstr "Els empajeraments no han estat confirmats, confirma els aparellaments per executar autoaparellaments." + +#: adjallocation/consumers.py +msgid "There are no preformed panels available to allocate." +msgstr "No hi ha Grups de Jutges preformats disponibles per col·locar." + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated preformed panels to debates." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "There aren't any panels to fill. Create panels first." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so debate importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so panel importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully created new preformed panels for this round." +msgstr "" + +#: adjallocation/models.py +msgid "chair" +msgstr "principal" + +#: adjallocation/models.py +msgid "panellist" +msgstr "panelista" + +#: adjallocation/models.py +msgid "trainee" +msgstr "jutge aprenent" + +#: adjallocation/models.py +msgid "debate" +msgstr "debat" + +#: adjallocation/models.py +msgid "adjudicator" +msgstr "jutges" + +#: adjallocation/models.py +msgid "type" +msgstr "mena" + +#: adjallocation/models.py +msgid "available?" +msgstr "disponible?" + +#: adjallocation/models.py +msgid "debate adjudicator" +msgstr "jutge del debat" + +#: adjallocation/models.py +msgid "debate adjudicators" +msgstr "jutges del debat" + +#: adjallocation/models.py +msgid "team" +msgstr "equip" + +#: adjallocation/models.py +msgid "adjudicator-team conflict" +msgstr "Incompatibilitat Jutge-Equip" + +#: adjallocation/models.py +msgid "adjudicator-team conflicts" +msgstr "Incompatibilitats Jutge-Equip" + +#: adjallocation/models.py +msgid "adjudicator 1" +msgstr "Primer Jutge" + +#: adjallocation/models.py +msgid "adjudicator 2" +msgstr "Segon Jutge" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflict" +msgstr "Incompatibilitat Jutge-Jutge" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflicts" +msgstr "Incompatibilitats Jutge-Jutge" + +#: adjallocation/models.py +msgid "institution" +msgstr "Institució" + +#: adjallocation/models.py +msgid "adjudicator-institution conflict" +msgstr "Incompatibilitat Jutge-Institució" + +#: adjallocation/models.py +msgid "adjudicator-institution conflicts" +msgstr "Incompatibilitats Jutge-Institució" + +#: adjallocation/models.py +msgid "team-institution conflict" +msgstr "Incompatibilitat Equip-Institució" + +#: adjallocation/models.py +msgid "team-institution conflicts" +msgstr "Incompatibilitats Equip-Institució" + +#: adjallocation/models.py +msgid "round" +msgstr "ronda" + +#: adjallocation/models.py +msgid "importance" +msgstr "importància" + +#: adjallocation/models.py +msgid "minimum bracket" +msgstr "Grup inferior" + +#: adjallocation/models.py +msgid "Estimate of the lowest bracket for which this panel might be" +msgstr "Estimació del grup inferior en què aquests jutges podrien estar" + +#: adjallocation/models.py +msgid "maximum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the highest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "room rank" +msgstr "rang de sala" + +#: adjallocation/models.py +msgid "Sequential number of panel, not used in any algorithms" +msgstr "" + +#: adjallocation/models.py +msgid "liveness" +msgstr "" + +#: adjallocation/models.py +msgid "Number of categories this room is expected to be live for" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel" +msgstr "Grup de Jutges format amb antelació" + +#: adjallocation/models.py +msgid "preformed panels" +msgstr "Grups de Jutges formats amb antelació" + +#: adjallocation/models.py +msgid "panel" +msgstr "Grup de Jutges" + +#: adjallocation/models.py +msgid "preformed panel adjudicator" +msgstr "Jutge d'un Grup de Jutges format amb antelació" + +#: adjallocation/models.py +msgid "preformed panel adjudicators" +msgstr "Jutges d'un Grup de Jutges format amb antelació" + +#: adjallocation/preformed/base.py +msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." +msgstr "No hi ha cap Grup de Jutges format amb antelació per utilitzar. Has col·locat Grup de Jutges format amb antelació per aquesta ronda? Si no has fet, tan sols mira d'autocol·locar-ne." + +#: adjallocation/templates/preformed_index.html adjallocation/views.py +msgid "Preformed Panels" +msgstr "Grups de Jutges formats amb antelació" + +#: adjallocation/templates/preformed_index.html +msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." +msgstr "Un Grup de Jutges format amb antelació és un grup definit de Jutges que és escollit per una ronda abans que el seu emparellament hagi estat generat. Llavors, pots col·locar aquests Grups de Jutges durant el procés usual de col·locació de Jutges de forma automàtica o manual. Això pot fer que les col·locacions siguin més ràpides o et pot permetre crear Grups de Jutges amb més contemplació." + +#: adjallocation/templates/preformed_index.html +msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." +msgstr "Adona-te'n que tan sols els Jutges que apareixen marcats com \"disponible\" per aquesta ronda estaran disponibles per ser col·locats, doncs tu podràs necessitar marcar la seva disponibilitat amb anterioritat. " + +#: adjallocation/templates/preformed_index.html +#, python-format +msgid "Edit Preformed Panels for %(round)s" +msgstr "Editar Grups de Jutges formats amb antelació per %(round)s" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s (personal)" +msgstr "Incompatibilitat: %(adjudicator)s i %(team)s (personal)" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" +msgstr "Incompatibilitat: %(adjudicator)s i %(team)s degut a Institució %(institution)s" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" +msgstr "Incompatibilitat: %(adjudicator1)s i %(adjudicator2)s (personal)" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" +msgstr "Incompatibilitat: %(adjudicator1)s i %(adjudicator2)s degut a Institució %(institution)s" + +#: adjallocation/views.py +msgid "Male" +msgstr "Home" + +#: adjallocation/views.py +msgid "Female" +msgstr "Dona" + +#: adjallocation/views.py +msgid "Other" +msgstr "Altre" + +#: adjallocation/views.py +msgid "Unknown" +msgstr "Desconegut" + +#: adjallocation/views.py +msgid "Edit Allocation" +msgstr "Edita Localització" + +#: adjallocation/views.py +msgid "Edit Panels" +msgstr "Edita Grup de Jutges" + +#: adjallocation/views.py +msgid "Return to Panels Overview" +msgstr "Retorna a la supervisió dels Grups de Jutges" + +#: adjallocation/views.py +msgid "Adjudicator-Team Conflicts" +msgstr "Incompatibilitats Jutge-Equip" + +#: adjallocation/views.py +msgid "Save Adjudicator-Team Conflicts" +msgstr "Guardar Incompatibilitats Jutge-Equip" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-team conflict." +msgid_plural "Saved %(count)d adjudicator-team conflicts." +msgstr[0] " %(count)d Incompatibilitat Jutge-Equip guardada." +msgstr[1] " %(count)d Incompatibilitats Jutge-Equip guardades." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-team conflict." +msgid_plural "Deleted %(count)d adjudicator-team conflicts." +msgstr[0] "%(count)d Incompatibilitat Jutge-Equip esborrada." +msgstr[1] "%(count)d Incompatibilitats Jutge-Equip esborrades." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-team conflicts." +msgstr "No s'han fet canvis a les Incompatibilitats Jutge-Equip." + +#: adjallocation/views.py +msgid "Adjudicator-Adjudicator Conflicts" +msgstr "Incompatibilitats Jutge-Jutge" + +#: adjallocation/views.py +msgid "Save Adjudicator-Adjudicator Conflicts" +msgstr "Guardar Incompatibilitats Jutge-Jutge" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-adjudicator conflict." +msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "%(count)d Incompatibilitat Jutge-Jutge guardada." +msgstr[1] "%(count)d Incompatibilitats Jutge-Jutge guardades." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-adjudicator conflict." +msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "%(count)d Incompatibilitat Jutge-Jutge esborrada." +msgstr[1] "%(count)d Incompatibilitats Jutge-Jutge esborrades." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-adjudicator conflicts." +msgstr "No s'han fet canvis a les Incompatibilitats Jutge-Jutge." + +#: adjallocation/views.py +msgid "Adjudicator-Institution Conflicts" +msgstr "Incompatibilitats Jutge-Institució" + +#: adjallocation/views.py +msgid "Save Adjudicator-Institution Conflicts" +msgstr "Guardar Incompatibilitats Jutge-Institució" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-institution conflict." +msgid_plural "Saved %(count)d adjudicator-institution conflicts." +msgstr[0] "%(count)d Incompatibilitat Jutge-Institució guardada." +msgstr[1] "%(count)d Incompatibilitats Jutge-Institució guardades." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-institution conflict." +msgid_plural "Deleted %(count)d adjudicator-institution conflicts." +msgstr[0] "%(count)d Incompatibilitat Jutge-Institució esborrada." +msgstr[1] "%(count)d Incompatibilitats Jutge-Institució esborrades." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-institution conflicts." +msgstr "No s'han fet canvis a les Incompatibilitats Jutge-Institució." + +#: adjallocation/views.py +msgid "Team-Institution Conflicts" +msgstr "Incompatibilitats Equip-Institució" + +#: adjallocation/views.py +msgid "Save Team-Institution Conflicts" +msgstr "Guardar Incompatibilitats Equip-Institució" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d team-institution conflict." +msgid_plural "Saved %(count)d team-institution conflicts." +msgstr[0] "%(count)d Incompatibilitat Equip-Institució guardada." +msgstr[1] "%(count)d Incompatibilitats Equip-Institució guardades." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d team-institution conflict." +msgid_plural "Deleted %(count)d team-institution conflicts." +msgstr[0] "%(count)d Incompatibilitat Equip-Institució esborrada." +msgstr[1] "%(count)d Incompatibilitats Equip-Institució esborrades." + +#: adjallocation/views.py +msgid "No changes were made to team-institution conflicts." +msgstr "No s'han fet canvis a les Incompatibilitats Equip-Institució." + diff --git a/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..202d29a29e2 Binary files /dev/null and b/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..4b78d291436 --- /dev/null +++ b/tabbycat/adjallocation/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,475 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" + +#: adjallocation/allocators/base.py +msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." +msgstr "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no debates for this round. Maybe you haven't created a draw yet?" +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." +msgstr "" + +#: adjallocation/apps.py +msgid "Adjudicator Allocation" +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is already released, unrelease draw to redo auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is not confirmed, confirm draw to run auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "There are no preformed panels available to allocate." +msgstr "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated preformed panels to debates." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "There aren't any panels to fill. Create panels first." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so debate importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so panel importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully created new preformed panels for this round." +msgstr "" + +#: adjallocation/models.py +msgid "chair" +msgstr "" + +#: adjallocation/models.py +msgid "panellist" +msgstr "" + +#: adjallocation/models.py +msgid "trainee" +msgstr "" + +#: adjallocation/models.py +msgid "debate" +msgstr "debata" + +#: adjallocation/models.py +msgid "adjudicator" +msgstr "rozhodčí" + +#: adjallocation/models.py +msgid "type" +msgstr "" + +#: adjallocation/models.py +msgid "available?" +msgstr "" + +#: adjallocation/models.py +msgid "debate adjudicator" +msgstr "" + +#: adjallocation/models.py +msgid "debate adjudicators" +msgstr "" + +#: adjallocation/models.py +msgid "team" +msgstr "tým" + +#: adjallocation/models.py +msgid "adjudicator-team conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-team conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator 1" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator 2" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "institution" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-institution conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-institution conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "team-institution conflict" +msgstr "" + +#: adjallocation/models.py +msgid "team-institution conflicts" +msgstr "" + +#: adjallocation/models.py +msgid "round" +msgstr "" + +#: adjallocation/models.py +msgid "importance" +msgstr "" + +#: adjallocation/models.py +msgid "minimum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the lowest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "maximum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the highest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "room rank" +msgstr "" + +#: adjallocation/models.py +msgid "Sequential number of panel, not used in any algorithms" +msgstr "" + +#: adjallocation/models.py +msgid "liveness" +msgstr "" + +#: adjallocation/models.py +msgid "Number of categories this room is expected to be live for" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panels" +msgstr "" + +#: adjallocation/models.py +msgid "panel" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel adjudicator" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel adjudicators" +msgstr "" + +#: adjallocation/preformed/base.py +msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." +msgstr "" + +#: adjallocation/templates/preformed_index.html adjallocation/views.py +msgid "Preformed Panels" +msgstr "" + +#: adjallocation/templates/preformed_index.html +msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." +msgstr "" + +#: adjallocation/templates/preformed_index.html +msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." +msgstr "" + +#: adjallocation/templates/preformed_index.html +#, python-format +msgid "Edit Preformed Panels for %(round)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" +msgstr "" + +#: adjallocation/views.py +msgid "Male" +msgstr "" + +#: adjallocation/views.py +msgid "Female" +msgstr "" + +#: adjallocation/views.py +msgid "Other" +msgstr "" + +#: adjallocation/views.py +msgid "Unknown" +msgstr "" + +#: adjallocation/views.py +msgid "Edit Allocation" +msgstr "" + +#: adjallocation/views.py +msgid "Edit Panels" +msgstr "" + +#: adjallocation/views.py +msgid "Return to Panels Overview" +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Team Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Team Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-team conflict." +msgid_plural "Saved %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-team conflict." +msgid_plural "Deleted %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-team conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-adjudicator conflict." +msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-adjudicator conflict." +msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-adjudicator conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-institution conflict." +msgid_plural "Saved %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-institution conflict." +msgid_plural "Deleted %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-institution conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d team-institution conflict." +msgid_plural "Saved %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d team-institution conflict." +msgid_plural "Deleted %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjallocation/views.py +msgid "No changes were made to team-institution conflicts." +msgstr "" + diff --git a/tabbycat/adjallocation/locale/de/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/de/LC_MESSAGES/django.po index 08b58152713..879c7261b49 100644 --- a/tabbycat/adjallocation/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,439 +12,440 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" -msgstr "HauptjurorIn" +msgstr "Hauptjuror" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" -msgstr "Jurierlehrling" +msgstr "Trainee" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "Debatte" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "Juror" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "typ" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "Team" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "Juror 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "Juror 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "runde" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "Jury" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Männlich" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Weiblich" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Andere" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po index 15b2b087d11..1bf7d064ec2 100644 --- a/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/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: 2020-05-24 04:15-0300\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,435 +17,434 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po index 7fa6fc735bb..d3e8366fef1 100644 --- a/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "No hay jueces disponibles. Asegúrese de que haya jueces que se hayan marcado como disponibles para esta ronda antes de la asignación automática." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "No hay debates para esta ronda. Tal vez aún no haz creado el enfrentamiento de equipos aún." -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Asignación de Jueces" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "El cuadro ya fue publicado, despubliquelo para rehacer la asignación automática." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "El cuadro no ha sido confirmado, confirma el cuadro para hacer la asignación automática." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "principal" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "panelista" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "sombra" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "juez" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "tipo" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "disponible?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "juez del debate" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "jueces de los debates" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "equipo" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "conflicto juez-equipo" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "conflictos juez-equipo" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "juez 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "juez 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "conflicto juez-juez" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "conflictos juez-juez" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "institución" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "conflicto juez-institución" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "conflictos juez-institución" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "ronda" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "importancia" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "ranking de sala" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Incompatibilidad juez-equipo" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Guardar incompatibilidad juez-equipo" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "Se guardó %(count)dincompatibilidad juez-equipo." msgstr[1] "Se guardaron %(count)dincompatibilidades juez-equipo" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "Se eliminó %(count)d incompatibilidad juez-equipo." msgstr[1] "Se eliminaron %(count)dincompatibilidades juez-equipo." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "No se hicieron cambios en las incompatibilidades juez-equipo." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Incompatibilidades Juez-Juez" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Guardar incompatibilidades Juez-Juez" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Se guardó %(count)d incompatibilidad juez-juez." msgstr[1] "Se guardaron %(count)d incompatibilidades juez-juez." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Se eliminó %(count)d incompatibilidad juez-juez." msgstr[1] "Se eliminaron %(count)d incompatibilidades juez-juez." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "No se hicieron cambios en las incompatibilidades juez-juez." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Incompatibilidades Juez-Institución" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Guardar incompatibilidades Juez-Institución " -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "Guardar %(count)d incompatibilidad juez-institución." msgstr[1] "Guardar %(count)d incompatibilidades juez-institución" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "Eliminar %(count)dincompatibilidad juez-institución" msgstr[1] "Eliminar %(count)dincompatibilidades juez-institución" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "No se hizo ningún cambio en las incompatibilidades juez-institución" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/fr/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/fr/LC_MESSAGES/django.po index a2b7ae55d63..9915fc8702b 100644 --- a/tabbycat/adjallocation/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Aucun juge n’est disponible. Assurez-vous qu’il y a des juges marqués comme disponibles pour cette joute avant de commencer l’allocation automatisée." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s note est supérieure à la note maximale (%(score).1f)." msgstr[1] "%(count)s notes sont supérieures à la note maximale (%(score).1f)." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s note est inférieure à la note minimale (%(score).1f)." msgstr[1] "%(count)s notes sont inférieures à la note minimale (%(score).1f)." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "Il n'y a pas de juge éligible pour être ni président ni panelliste. Veuillez réduire la valeur du paramètre « Score minimum pour être président ou panelliste » pour être moins que les scores actuels et réessayez." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "Il n’y a aucun débat dans cette joute. N’aurez-vous pas encore fait un tirage ?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "Il y a %(debate_count)s débats mais juste %(adj_count)s juges votants." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "Il y a %(panel_debates)s débats avec jury mais seulement %(panellists)s panellistes disponibles (moins que %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "Il y a %(debates_count)s débats mais seulement %(voting_count)s juges votants." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Allocation des juges" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "Le tirage est déjà publié; il faut le retirer pour pouvoir refaire la répartition automatique." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "Le tirage n'est pas encore confirmé; il faut le confirmer pour pouvoir faire la répartition automatique." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "Il n'y a pas de jury préformé disponible à allouer." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "Les jurys préformés ont été attribués aux débats avec succès." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "Les jurys préformés ont été attribués aux débats avec succès. Par contre, il y avait un avertissement :" msgstr[1] "Les jurys préformés ont été attribués aux débats avec succès. Par contre, il y avait %(count)d avertissements :" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "Les juges ont été repartis aux débats avec succès." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "Il n'y a pas de jury à remplir. En créez avant." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "Les juges ont été repartis aux débats avec succès. Par contre, il y avait un avertissement :" msgstr[1] "Les juges ont été repartis aux débats avec succès. Par contre, il y avait %(count)d avertissements :" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "Les juges ont été repartis aux jurys préformés avec succès." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "Vous n'avez aucun qualification marqué comme « général » donc les importances des débats ne peuvent pas être calculées." -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "Débats priorisés automatiquement avec succès." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "Vous n'avez aucun qualification marqué comme « général » donc les importances des jurys ne peuvent pas être calculées." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "Jurys préformés priorisés automatiquement avec succès." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "Puisque c'est la première joute, les jurys préformés ne sont pas annotés avec les tranches ni vivacité." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "Le tirage de la dernière joute n'existe pas, donc les jurys préformés ne peuvent pas être annoté avec les tranches et vivacité." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "Jurys préformés pour cette joute créés avec succès." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "président" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "panelliste" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "stagiaire" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "débat" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "juge" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "type" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "disponible ?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "débat-adjudicateur" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "débat-adjudicateurs" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "équipe" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "conflit entre juge et équipe" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "conflits entre juge et équipe" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "juge 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "juge 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "conflit entre juge et juge" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "conflits entre juge et juge" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "institution " -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "conflit entre juge et institution" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "conflits entre juge et institution" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "conflit entre équipe et institution" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "conflits entre équipe et institution" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "joute" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "importance" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "tranche minimale" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "Estimé de la tranche la plus basse que ce jury pourrait être" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "tranche maximale" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "Estimé de la tranche la plus haute que ce jury pourrait être" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "rang de salle" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "Nombre séquentielle de jury, pas utilisé dans les algorithmes" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "vivacité" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "Nombre de catégories pour laquelle cette salle est attendu d’être vive" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "jury préformé" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "jurys préformés" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "jury" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "juge de jury préformé" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "juges de jurys préformés" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "Il n’y a pas de jurys préformés à utiliser. Avez-vous alloué des jurys préformés pour cette joute ? Si non, essayez de les attribuer automatiquement à la place." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "Jurys préformés" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "Un jury préformé est une groupe défini de juges spécifié pour une joute avant sont tirage a été généré. Vous pouvez ensuite les repartir manuellement ou automatiquement durant la répartition ordinaire. Ceci peut rendre les attributions plus rapides ou permettre d'y considerer plus les jurys créés." -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "Notez que seulement les juges marqués comme disponibles pour la joute peuvent être alloués pour cette joute, donc vous pourriez devoir fixer leur disponibilité en avance." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "Modifier jurys préformés pour %(round)s" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "Conflit: %(adjudicator)s & %(team)s (personnelle)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "Conflict: %(adjudicator)s & %(team)s par institution %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "Conflit: %(adjudicator1)s & %(adjudicator2)s (personnelle)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "Conflict: %(adjudicator1)s & %(adjudicator2)s par institution %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Homme" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Femme" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Autre" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "Inconnu" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "Modifier Allocation" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "Modifier Jurys" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "Retour au vue d’ensemble des jurys" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Conflits juge-équipe" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Enregistrer conflits juge-équipe" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "Enregistré %(count)d conflit juge-équipe." msgstr[1] "Enregistré %(count)d conflits juge-équipe." -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "Supprimé %(count)d conflit juge-équipe." msgstr[1] "Supprimé %(count)d conflits juge-équipe." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "Aucun changement n’a été fait aux conflits juge-équipe." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Conflits juge-juge" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Enregistrer les conflits juge-juge" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Enregistré %(count)d conflit juge-juge." msgstr[1] "Enregistré %(count)d conflits juge-juge." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Supprimé %(count)d conflit juge-juge." msgstr[1] "Supprimé %(count)d conflits juge-juge." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "Aucun changement n’a été fait aux conflits juge-juge." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Conflits juge-institution" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Enregistrer les conflits juge-institution" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "Enregistré %(count)d conflit juge-institution." msgstr[1] "Enregistré %(count)d conflits juge-institution." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "Supprimé %(count)d conflit juge-institution." msgstr[1] "Supprimé %(count)d conflits juge-institution." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "Aucun changement n’a été fait aux conflits juge-institution." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "Conflits équipe-institution" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "Enregistrer les conflits équipe-institution" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "Enregistré %(count)d conflit équipe-institution." msgstr[1] "Enregistré %(count)d conflits équipe-institution." -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "Supprimé %(count)d conflit équipe-institution." msgstr[1] "Supprimé %(count)d conflits équipe-institution." -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "Aucun changement n’a été fait aux conflits équipe-institution." diff --git a/tabbycat/adjallocation/locale/he/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/he/LC_MESSAGES/django.po index 6d2da5ea204..cbec08be8d9 100644 --- a/tabbycat/adjallocation/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,75 +12,77 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." -msgstr "" +msgstr "אין שופטים זמינים. וודאו כי סימנתם שופטים כ\"זמינים\" עבור סיבוב זה לפני הפעלת שיבוץ אוטומטי." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." -msgstr[0] "" +msgstr[0] "הניקוד %(count)s גבוה יותר מניקוד השופט המירבי שהותר (%(score).1f)." msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." -msgstr[0] "" +msgstr[0] "%(count)s הניקוד נמוך מניקוד השופט המזערי שהותר (%(score).1f)." msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." -msgstr "" +msgstr "אין שופטים המתאימים להיות יו\"ר או חבר ועד. נסו לשנות את השדה \"ניקוד משוב מינימלי נדרש לשיבוץ כיו\"ר או חבר ועד\" לערך נמוך יותר מכמה שופטים, ונסו שנית." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" -msgstr "" +msgstr "אין דיבייטים בסיבוב זה. האם יצרת כבר שיבוץ?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" @@ -89,15 +91,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" @@ -106,261 +108,260 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "קבוצה" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "סיבוב" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." @@ -369,7 +370,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." @@ -378,19 +379,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." @@ -399,7 +400,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." @@ -408,19 +409,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." @@ -429,7 +430,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." @@ -438,19 +439,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." @@ -459,7 +460,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." @@ -468,7 +469,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/hi/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/hi/LC_MESSAGES/django.po index 30e50416792..f1c5f077041 100644 --- a/tabbycat/adjallocation/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,439 +12,440 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/id/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/id/LC_MESSAGES/django.po index f20f5515878..8f9a6adf50d 100644 --- a/tabbycat/adjallocation/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2021-11-04 06:15\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,424 +17,423 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Tidak ada juri yang tersedia. Pastikan bahwa ada juri yang telah ditandai kehadirannya untuk menjuri ronde ini sebelum melakukan alokasi otomatis." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s nilai yang diberikan melewati batas maksimum skor juri yang diizinkan (%(score).1f)." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)s nilai yang diberikan lebih kecil dibanding minimum skor juri yang diijinkan (%(score).1f)." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "Tidak ada juri yang memiliki nilai yang cukup untuk dapat menjadi ketua panel atau panelis. Coba ubah \"nilai minimum untuk dialokasikan menjadi ketua panel atau panelis\" menjadi lebih rendah dari skor beberapa juri, dan coba lagi." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "Tidak ada debat untuk ronde ini. Mungkin anda belum membuat draw?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "Ada %(debate_count)s debat yang terjadi namun hanya %(adj_count)s yang dapat menjadi ketua panel/panelis." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "Ada %(panel_debates)s debat berpanel namun hanya %(panellists)s panelis yang tersedia (kurang dari %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "Ada %(debates_count)s debat yang terjadi namun hanya %(voting_count)s yang dapat menjadi ketua panel/panelis." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Alokasi juri" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "Draw telah dirilis. Batalkan rilis untuk melakukan alokasi otomatis kembali." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "Draw belum dikonfirmasi. Konfirmasi draw untuk melakukan alokasi otomatis." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "Tidak ada rancangan panel yang tersedia untuk dialokasikan." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "Sukses melakukan alokasi rancangan panel otomatis kepada debat." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "Sukses melakukan alokasi juri secara otomatis. Namun, ada %(count)d peringatan:" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "Sukses melakukan alokasi juri otomatis kepada debat." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "Tidak ada panel untuk mengisi. Buat panel terlebih dahulu." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "Sukses melakukan alokasi juri kepada rancangan panel. Namun, ada %(count)d peringatan:" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "Sukses melakukan alokasi juri otomatis kepada rancangan panel." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "Anda tidak memiliki kategori break yang diset sebagai \"umum\" sehinga tingkat kepentingan debat tidak dapat dikalkulasi" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "Sukses melakukan prioritasisasi debat secara otomatis." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "Anda tidak memiliki kategori break yang diset sebagai \"umum\" sehinga tingkat kepentingan panel tidak dapat dikalkulasi." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "Sukses melakukan prioritasisasi rancangan panel secara otomatis." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "Karena ini ronde pertama, rancangan panel tidak dilabeli dengan bracket dan liveness." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "Draw ronde sebelumnya tidak ada, maka rancangan panel tidak dapat dilabeli dengan bracket dan liveness." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "Sukses membuat rancangan panel baru untuk ronde ini." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "ketua panel" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "panelis" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "trainee" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "debat" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "juri debat" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "tipe" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "hadir?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "juri debat" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "juri debat" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "tim" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "konflik juri dengan tim" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "konflik juri dengan tim" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "juri 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "juri 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "konflik juri dengan juri" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "konflik juri dengan juri" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "institusi" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "konflik juri dengan institusi" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "konflik juri dengan institusi" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "konflik tim dengan institusi" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "konflik tim dengan institusi" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "ronde" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "tingkat kepentingan" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "bracket minimum" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "Estimasi bracket terendah panel ini akan berada" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "bracket maksimum" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "Estimasi bracket tertinggi panel ini akan berada" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "peringkat ruangan" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "Angka terurut panel, tidak digunakan dalam algoritma manapun" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "liveness" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "Jumlah kategori ruangan ini diperkirakan masih live" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "rancangan panel" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "rancangan panel" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "panel" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "juri dalam rancangan panel" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "juri dalam rancangan panel" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "Tidak ada rancangan panel untuk digunakan. Apakah anda telah menciptakan rancangan panel untuk ronde ini? Apabila belum, coba melakukan alokasi juri otomatis." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "Rancangan Panel" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "Rancangan panel adalah sekumpulan juri yang telah dikhususkan untuk sebuah ronde sebelum draw dibuat. Anda dapat secara manual atau otomatis menggunakan kumpulan panel tersebut dalam proses alokasi juri seperti biasa. Ini dapat mempercepat proses alokasi atau menciptakan panel juri dengan pertimbangan tertentu." -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "Perhatikan bahwa hanya juri yang telah ditandai sebagai 'hadir' untuk sebuah ronde yang dapat dialokasikan terhadap ronde tersebut, sehingga anda mungkin ingin mencentang kehadiran mereka sebelum ronde." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "Sunting Rancangan Panel untuk %(round)s" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "Konflik: %(adjudicator)s & %(team)s (personal)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "Konflik: %(adjudicator)s & %(team)s via institusi %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "Konflik: %(adjudicator1)s & %(adjudicator2)s (personal)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "Konflik: %(adjudicator1)s & %(adjudicator2)s via institusi %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Pria" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Wanita" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Lainnya" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "Tak diketahui" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "Sunting Alokasi" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "Sunting Panel" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "Kembali ke Tinjauan Panel" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Konflik Juri dengan Tim" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Simpan Konflik Juri dengan Tim" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "Menyimpan %(count)d konflik juri dengan tim." -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "Menghapus %(count)d konflik juri dengan tim." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "Tidak ada suntingan yang dibuat terhadap konflik juri dengan tim." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Konflik Juri dengan Juri" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Menyimpan Konflik Juri dengan Juri" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Menyimpan %(count)d konflik juri dengan juri." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Menghapus %(count)d konflik juri dengan juri." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "Tidak ada suntingan yang dibuat terhadap konflik juri dengan juri." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Konflik Juri dengan Institusi" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Menyimpan Konflik Juri dengan Institusi" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "Menyimpan %(count)d konflik juri dengan institusi." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "Menghapus %(count)d konflik juri dengan institusi." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "Tidak ada suntingan yang dibuat terhadap konflik juri dengan institusi." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "Konflik Tim dengan Institusi" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "Menyimpan Konflik Tim dengan Institusi" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "Menyimpan %(count)d konflik tim dengan institusi." -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "Menyimpan %(count)d konflik tim dengan institusi." -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "Tidak ada suntingan yang dibuat terhadap konflik tim dengan institusi." diff --git a/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..60db05a2317 Binary files /dev/null and b/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.po index 1ef9c395196..417a399f7ed 100644 --- a/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2022-04-16 19:46\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Non ci sono giudici disponibili. Assicurati che ci siano giudici che sono stati contrassegnati come disponibili per questo round prima dell'auto-assegnazione." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "Il punteggio %(count)s è più grande del punteggio massimo di giudizio consentito (%(score).1f)." msgstr[1] "I punteggi %(count)s sono più grandi del punteggio massimo di giudizio consentito (%(score).1f)." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "Il punteggio %(count)s è più piccolo del punteggio minimo di giudizio consentito (%(score).1f)." msgstr[1] "I punteggi %(count)s sono più piccoli del punteggio minimo di giudizio consentito (%(score).1f)." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "Non ci sono giudici idonei a essere presidente o membro del panel. Prova a modificare l'impostazione \"Punteggio minimo di feedback richiesto per essere assegnato come presidente o membro del panel\" almeno ad un punteggio inferiore a quello di alcuni giudici e riprova." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "Non ci sono dibattiti in questo round. Forse non hai ancora creato un sorteggio?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "Ci sono %(debate_count)s dibattiti ma solo %(adj_count)s giudici votanti." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "Ci sono %(panel_debates)s giurie di dibattiti ma solo %(panellists)s giudici disponibili (meno di %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "Ci sono %(debates_count)s dibattiti ma solo %(voting_count)s giudici votanti." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Assegnazione del giudice" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "Il sorteggio è già stato rilasciato, annullare il sorteggio per rifare le allocazioni automatice." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "Il sorteggio non è confermato, conferma il sorteggio per eseguire allocazioni automatice." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "Non è disponibile nessuna giuria preformata da assegnare." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "Giurie preformate auto-assegnate con successo ai dibattiti." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "Giudici auto-assegnati ai dibattiti con successo. Comunque, c'è un avviso:" msgstr[1] "Giudici auto-assegnati ai dibattiti con successo. Comunque, ci sono %(count)d avvisi:" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "Giurie preformate auto-assegnate con successo ai dibattiti." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "Non ci sono giurie da riempire. Crea prima delle giurie." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "Giudici auto-assegnati ai dibattiti con successo. Comunque, c'è un avviso:" msgstr[1] "Giudici auto-assegnati ai dibattiti con successo. Comunque, ci sono %(count)d avvisi:" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "Giudici auto-assegnati con successo alle giurie preformate." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "Non hai nessuna categoria di interruzione impostata come 'è generale', quindi le importanze del dibattito non possono essere calcolate." -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "Dibattiti prioritarizzati in automatico con successo." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "Non hai nessuna categoria di interruzione impostata come 'è generale', quindi le importanze del dibattito non possono essere calcolate." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "Giurie preformate prioritarizzate in automatico con successo." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "Poiché questo è il primo round, i pannelli preformati non sono annotati con gruppi e partecipazione." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "Il sorteggio del round precedente non esiste, quindi i pannelli preformati non possono essere annotati da gruppi e partecipazione." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "Create con successo nuove giurie preformate per questo round." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "arbitro" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "giudice" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "coach" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "dibattito" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "giudice" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "tipo" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "disponibile?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "giudice del dibattito" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "giudici del dibattito" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "squadra" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "giudice-squadra conflitto" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "giudice-squadra conflitti" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "giudice 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "giudice 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "giudice-giudice conflitto" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "giudice-giudice conflitti" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "istituzione" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "giudice-istituzione conflitto" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "giudice-istituzione conflitti" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "squadra-istituzione conflitto" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "squadra-istituzione conflitti" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "round" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "importanza" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "raggruppamento minimo" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "Stima del raggruppamento più basso nella quale dovrebbe trovarsi questa giuria" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "raggruppamento massimo" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "Stima del raggruppamento più alto nella quale dovrebbe trovarsi questa giuria" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "grado stanza" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "Numero sequenziale della giuria, non viene usato in nessun algoritmo" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "attività" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "Numero di categorie per cui questa stanza dovrebbe essere usata" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "giuria preformata" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "giurie preformate" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "giuria" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "giudice della giuria preformata" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "giudici della giuria preformata" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "Non ci sono giurie preformate da usare. Hai assegnato delle giurie preformate per questo round? In caso contrario, prova ad allocare solo i giudici automatici." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "Giurie preformate" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "Una giuria preformata è un gruppo definito di giudici che è specificato per un round prima che venga generato il sorteggio. È quindi possibile applicare manualmente o automaticamente questi pannelli durante il normale processo di assegnazione giudici. Questo può rendere le assegnazioni più veloci oppure consente di creare insiemi di giudici più ragionevoli." -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "Si noti che solo i giudici che sono stati contrassegnati come 'disponibili' per quel round potranno essere assegnati nel round, quindi potrebbe essere necessario impostare prima la loro disponibilità." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "Modifica le giurie preformate per %(round)s" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "Conflitto: %(adjudicator)s & %(team)s (personale)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "Conflitto: %(adjudicator)s & %(team)s per istituzione %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "Conflitto: %(adjudicator1)s & %(adjudicator2)s (personale)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "Conflitto: %(adjudicator1)s & %(adjudicator2)s per istituzione %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Uomo" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Donna" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Altro" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "Sconosciuto" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "Modifica assegnazione" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "Modifica giurie" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "Ritorna alla panormaica giurie" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Conflitti Giudice-Squadra" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Salva i conflitti Giudice-Squadra" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "Salvato %(count)d conflitto giudice-squadra." msgstr[1] "Salvati %(count)d conflitti giudice-squadra." -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "Cancellato %(count)d conflitto giudice-squadra." msgstr[1] "Cancellati %(count)d conflitti giudice-squadra." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "Non sono state apportate modifiche ai conflitti giudici-squadre." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Conflitti Giudice-Giudice" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Salva conflitti Giudice-Giudice" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Salvato %(count)d conflitto giudice-giudice." msgstr[1] "Salvati %(count)d conflitti giudice-giudice." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "Cancellato %(count)d conflitto giudice-giudice." msgstr[1] "Cancellati %(count)d conflitti giudice-giudice." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "Non sono state apportate modifiche ai conflitti giudici-giudici." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Conflitti giudice-istituto" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Salva conflitti giudice-istituzione" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "Salvato %(count)d conflitto giudice-istituzione." msgstr[1] "Salvati %(count)d conflitti giudice-istituzione." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "Eliminato %(count)d conflitto giudice-istituzione." msgstr[1] "Eliminati %(count)d conflitti giudice-istituzione." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "Non sono state apportate modifiche ai conflitti giudici-istituzioni." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "Conflitti squadra-istituzione" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "Salva conflitti team-istituto" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "Salvato %(count)d conflitto team-istituzione." msgstr[1] "Salvati %(count)d conflitti team-istituzione." -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "Cancellato %(count)d conflitto team-istituzione." msgstr[1] "Cancellati %(count)d conflitti team-istituzione." -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "Non sono state apportate modifiche ai conflitti giudici-istituzioni." diff --git a/tabbycat/adjallocation/locale/ja/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ja/LC_MESSAGES/django.po index d8f8c19c693..8cd618fbda9 100644 --- a/tabbycat/adjallocation/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-10-23 08:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-02 13:44\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,425 +17,424 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." -msgstr "使えるジャッジがいません。このラウンドの自動配置をする前に配配置可能なジャッジがいることを確認してください!" +msgstr "ジャッジ可能な人がいません。自動アロケーションをする前に、ジャッジ可能とマークされている人がいることを確認してください。" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)sスコアがジャッジにつけられる最高点を超えています(%(score).1f)" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "%(count)sスコアがジャッジにつけられる最低点を超えています(%(score).1f)" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "チェア又はパネルに割り当てられるジャッジがいません。\n" "設定から「チェア又はパネルに配置するのに必要なスコアの最低値」を引き下げ、現在のジャッジのスコアより最低限下回るように変更してから、もう一度お試しください。" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" -msgstr "このラウンドにはディベーターがいません。ひょっとしたら、対戦表をまだ作っていないかもしれません!" +msgstr "このラウンドにはディベーターがいません。まだ対戦表を作っていませんか?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." -msgstr "ディベート部屋が %(debate_count)s つありますが、 %(adj_count)s 人のジャッジしか投票できません。" +msgstr "%(debate_count)s 試合ありますが、 投票可能なジャッジが%(adj_count)s人しかいません。" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "%(panel_debates)s つのパネル部屋がありますが、 %(panellists)s 人のパネル( %(needed)s 以下)しかいません。" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "%(debates_count)s 人のディベーターがいますが、%(voting_count)s 人のジャッジしか投票できません。" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "ジャッジ配置" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "対戦表が既に公開されてしまっています。ジャッジの自動配置を再度行う場合は一度対戦表を非公開に戻してください。" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "対戦表が確定されていません。ジャッジの自動配置を行うために対戦表を確定させてください。" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "配置できるジャッジが用意されていません。" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "事前に用意されたパネルジャッジをディベートに自動で配置することに成功しました。" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "ディベートにジャッジを自動で割り当てることに成功しました。以下の警告があります( %(count)d 個)。" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "ジャッジを自動で配置することに成功しました。" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "パネルがいません。まずパネルを作成してください。" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "事前設定したパネルににジャッジを自動で割り当てることに成功しました。以下の警告があります( %(count)d 個)。" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "ジャッジを自動で事前に用意されたパネルの枠に配置することに成功しました。" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "「一般」として設定されたブレイクカテゴリーがないため、ディベートの重要度を計算できません。" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "ディベートの優先度の自動設定に成功しました。" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "「一般」として設定されたブレイクカテゴリーがないため、パネルの重要度を計算できません。" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "用意されたパネル枠の優先度の自動設定に成功しました。" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "これが初戦のため、用意されたパネル枠には勝ち点や生存度で注釈をつけることができません。" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "1つ前の試合は対戦表がまだないため、用意されたパネル枠には勝ち点や生存度で注釈をつけることができません。" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "このラウンドに新しくパネル枠を作ることに成功しました。" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "チェア" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "パネル" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "トレイニー" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "ディベート" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "ジャッジ" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "タイプ" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "有効ですか?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "ディベートのジャッジ" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "ディベートのジャッジ" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "チーム" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "ジャッジ・チーム間コンフリクト" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "ジャッジ・チーム間コンフリクト" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "ジャッジ1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "ジャッジ2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "ジャッジ間コンフリクト" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "ジャッジ間コンフリクト" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "インスティチューション" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "ジャッジ・インスティチューション間のコンフリクト" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "ジャッジ・インスティチューション間のコンフリクト" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "チーム・大学(または団体)間のコンフリクト" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "チーム・大学(または団体)間のコンフリクト" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "ラウンド" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "重要度" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "勝ち点が同数のグループの最低数" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "このパネルが割り当てられると想定されるブラケットの最低値" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "勝ち点が同数のグループの最大数" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "このパネルが割り当てられると想定されるブラケットの最高値" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "部屋の順位" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "どのアルゴリズムでも使用されていないパネルの通し番号" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "生存度" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "この部屋で生存が予想されるカテゴリー数" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "事前設定されたパネル" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "事前設定されたパネル" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" -msgstr "パネルジャッジ" +msgstr "パネル" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "事前設定されたパネルジャッジ" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "事前設定されたパネルジャッジ" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "使用できる事前設定されたパネルはいません。このラウンドに事前設定したパネルを配置済みですか?もし配置が済んでいなければ、代わりにジャッジの自動配置をお試しください。" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "事前設定されたパネル" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "「事前設定されたパネル」はドロー生成前にラウンドに割り当てられたジャッジグループと定義されています。これらのパネルは通常のジャッジアロケーション作業の間に、自動もしくは手動で適用できます。より早くアロケーションを行うことができ、または配慮の行き届いたパネル配置を実現できます。" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "「参加可能」と表示されているジャッジのみがそのラウンドに割り当てられているか確認してください。 事前にジャッジの参加可否を設定する必要がある場合があります。" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "%(round)sの事前設定されたパネルを編集する" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "コンフリクト:%(adjudicator)s%(team)s間(個人)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "コンフリクト:%(adjudicator)s%(team)s%(institution)s・大学/団体)" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "コンフリクト:%(adjudicator1)s%(adjudicator2)s(個人)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "コンフリクト:%(adjudicator1)s%(adjudicator2)s%(institution)s・大学/団体)" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "男性" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "女性" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "その他" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "不明" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "アロケーションを編集する" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "パネルを編集する" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "パネルの概要に戻る" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "ジャッジ・チーム間コンフリクト" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "ジャッジ・チーム間のコンフリクトを保存する" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d件のジャッジ・チーム間コンフリクトが保存されました。" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d件のジャッジ・チーム間コンフリクトが削除されました。" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "ジャッジ・チーム間のコンフリクトに変更された点はありません。" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "ジャッジ間コンフリクト" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "ジャッジ間コンフリクトを保存する" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d件のジャッジ間コンフリクトを保存されました。" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d件のジャッジ間コンフリクトを削除されました。" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "ジャッジ間コンフリクトに変更された点はありません。" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "ジャッジ・インスティチューション間のコンフリクト" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "ジャッジ・インスティチューション間のコンフリクトを保存する" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d件のジャッジ・インスティチューション間のコンフリクトが保存されました。" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d件のジャッジ・インスティチューション間のコンフリクトが削除されました。" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "ジャッジ・インスティチューション間のコンフリクトに変更された点はありません。" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "チーム・大学(または団体)間のコンフリクト" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "チーム・大学(または団体)間のコンフリクトを保存する" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "%(count)d個のチーム・大学(または団体)間のコンフリクトを保存しました。" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "%(count)d個のチーム・大学(または団体)間のコンフリクトを削除しました。" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "チーム・大学(または団体)間のコンフリクトに変更はありません。" diff --git a/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..5b26dd71607 Binary files /dev/null and b/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..aa0653a6f2d --- /dev/null +++ b/tabbycat/adjallocation/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,451 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" + +#: adjallocation/allocators/base.py +msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." +msgstr "" + +#: adjallocation/allocators/hungarian.py +msgid "There are no debates for this round. Maybe you haven't created a draw yet?" +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." +msgstr "" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." +msgstr "" + +#: adjallocation/apps.py +msgid "Adjudicator Allocation" +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is already released, unrelease draw to redo auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "Draw is not confirmed, confirm draw to run auto-allocations." +msgstr "" + +#: adjallocation/consumers.py +msgid "There are no preformed panels available to allocate." +msgstr "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated preformed panels to debates." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "There aren't any panels to fill. Create panels first." +msgstr "" + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so debate importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised debates." +msgstr "" + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so panel importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised preformed panels." +msgstr "" + +#: adjallocation/consumers.py +msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully created new preformed panels for this round." +msgstr "" + +#: adjallocation/models.py +msgid "chair" +msgstr "ойынның бас төрешісі" + +#: adjallocation/models.py +msgid "panellist" +msgstr "қосымша төреші" + +#: adjallocation/models.py +msgid "trainee" +msgstr "үйренуші" + +#: adjallocation/models.py +msgid "debate" +msgstr "пікірсайыс" + +#: adjallocation/models.py +msgid "adjudicator" +msgstr "төреші" + +#: adjallocation/models.py +msgid "type" +msgstr "түрі" + +#: adjallocation/models.py +msgid "available?" +msgstr "қолжетімді ме?" + +#: adjallocation/models.py +msgid "debate adjudicator" +msgstr "ойын төрешісі" + +#: adjallocation/models.py +msgid "debate adjudicators" +msgstr "ойын төрешілері" + +#: adjallocation/models.py +msgid "team" +msgstr "топ" + +#: adjallocation/models.py +msgid "adjudicator-team conflict" +msgstr "" + +#: adjallocation/models.py +msgid "adjudicator-team conflicts" +msgstr "төреші мен ойыншылар арасындағы шектеу" + +#: adjallocation/models.py +msgid "adjudicator 1" +msgstr "1-төреші" + +#: adjallocation/models.py +msgid "adjudicator 2" +msgstr "2-төреші" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflict" +msgstr "төреші мен төреші арасындағы шектеу" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflicts" +msgstr "төреші мен ойыншылар арасындағы шектеулер" + +#: adjallocation/models.py +msgid "institution" +msgstr "қауымдастық" + +#: adjallocation/models.py +msgid "adjudicator-institution conflict" +msgstr "төреші мен қауымдастық арасындағы шектеу" + +#: adjallocation/models.py +msgid "adjudicator-institution conflicts" +msgstr "төреші мен қауымдастық арасындағы шектеулер" + +#: adjallocation/models.py +msgid "team-institution conflict" +msgstr "ойыншылар мен қауымдастық арасындағы шектеу" + +#: adjallocation/models.py +msgid "team-institution conflicts" +msgstr "ойыншылар мен қауымдастық арасындағы шектеулер" + +#: adjallocation/models.py +msgid "round" +msgstr "ойын" + +#: adjallocation/models.py +msgid "importance" +msgstr "маңызы" + +#: adjallocation/models.py +msgid "minimum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the lowest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "maximum bracket" +msgstr "" + +#: adjallocation/models.py +msgid "Estimate of the highest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "room rank" +msgstr "ойын деңгейі" + +#: adjallocation/models.py +msgid "Sequential number of panel, not used in any algorithms" +msgstr "" + +#: adjallocation/models.py +msgid "liveness" +msgstr "" + +#: adjallocation/models.py +msgid "Number of categories this room is expected to be live for" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panels" +msgstr "" + +#: adjallocation/models.py +msgid "panel" +msgstr "құрам" + +#: adjallocation/models.py +msgid "preformed panel adjudicator" +msgstr "алдын-ала бекітілген төреші" + +#: adjallocation/models.py +msgid "preformed panel adjudicators" +msgstr "алдын-ала бекітілген төрешілік құрам" + +#: adjallocation/preformed/base.py +msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." +msgstr "" + +#: adjallocation/templates/preformed_index.html adjallocation/views.py +msgid "Preformed Panels" +msgstr "Алдын-ала бекітілген құрам" + +#: adjallocation/templates/preformed_index.html +msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." +msgstr "" + +#: adjallocation/templates/preformed_index.html +msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." +msgstr "" + +#: adjallocation/templates/preformed_index.html +#, python-format +msgid "Edit Preformed Panels for %(round)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" +msgstr "" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" +msgstr "" + +#: adjallocation/views.py +msgid "Male" +msgstr "Ер адам" + +#: adjallocation/views.py +msgid "Female" +msgstr "Әйел адам" + +#: adjallocation/views.py +msgid "Other" +msgstr "Басқа" + +#: adjallocation/views.py +msgid "Unknown" +msgstr "Белгісіз" + +#: adjallocation/views.py +msgid "Edit Allocation" +msgstr "" + +#: adjallocation/views.py +msgid "Edit Panels" +msgstr "Төрешілік құрамды өзгерту" + +#: adjallocation/views.py +msgid "Return to Panels Overview" +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Team Conflicts" +msgstr "Төреші мен ойыншылар арасындағы шектеулер" + +#: adjallocation/views.py +msgid "Save Adjudicator-Team Conflicts" +msgstr "Төреші мен ойыншылар арасындағы шектеулер сақтау" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-team conflict." +msgid_plural "Saved %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-team conflict." +msgid_plural "Deleted %(count)d adjudicator-team conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-team conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-adjudicator conflict." +msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-adjudicator conflict." +msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-adjudicator conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Adjudicator-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-institution conflict." +msgid_plural "Saved %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-institution conflict." +msgid_plural "Deleted %(count)d adjudicator-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-institution conflicts." +msgstr "" + +#: adjallocation/views.py +msgid "Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +msgid "Save Team-Institution Conflicts" +msgstr "" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d team-institution conflict." +msgid_plural "Saved %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d team-institution conflict." +msgid_plural "Deleted %(count)d team-institution conflicts." +msgstr[0] "" +msgstr[1] "" + +#: adjallocation/views.py +msgid "No changes were made to team-institution conflicts." +msgstr "" + diff --git a/tabbycat/adjallocation/locale/ms/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ms/LC_MESSAGES/django.po index b086ba15867..0805669bfc0 100644 --- a/tabbycat/adjallocation/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-10-12 07:20\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,424 +17,423 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Tiada hakim yang berkelapangan. Pastikan terdapat hakim yang ditanda 'ada' untuk pusingan ini sebelum ditetap secara auto." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "Markah %(count)s lebih besar daripada markah maksima yang dibenarkan (%(score).1f)." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "Markah %(count)s lebih kecil daripada markah minimum yang dibenarkan (%(score).1f)." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "Tiada hakim yang layak untuk menjadi Yang Di-Pertua Dewan dan ahli panel. Cuba ubah seting \"Markah minimum maklum balas hakim diperlukan untuk ditetapkan sebagai Yang Di-Pertuan Agung\" ke markah yang lebih rendah daripada markah para hakim terkini, dan cuba lagi." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "Tiada perdebatan untuk pusingan ini. Munkin match up belum dibuat?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "Terdapat %(debate_count)s perdebatan, tetapi hanya %(adj_count)s hakim yang boleh undi." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "Terdapat %(panel_debates)s panel hakim tetapi terdapat hanya %(panellists)s yang ada (kurang daripada %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "Terdapat %(debates_count)s perdebatan, namun hanya %(voting_count)s hakim yang boleh undi." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Penetapan hakim" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "Match-up telah disiarkan, tarik balik siaran untuk jana semula penetapan auto." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "Match-up belum disahkan, sahkan match-up untuk laksanakan penjanaan auto." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "Tidak ada panel hakim tetap ada untuk ditetapkan." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "Berjaya menetap secara auto panel hakim tetap ke perdebatan." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "Berjaya tetapkan hakim ke perdebatan secara auto. Tetapi, terdapat %(count)d amaran: " -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "Berjaya menetap secara auto panel hakim tetap ke perdebatan." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "Tiada kekosongan panel untuk diisi. Cipta panel dahulu." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "Berjaya tetapkan hakim ke panel hakim tetap secara auto. Tetapi, terdapat %(count)d amaran: " -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "Berjaya menetap secara auto ke panel hakim tetap." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "Awak tiada tetapkan kateogri break sebagai 'umum', jadi kepentingan perdebatan tidak dapat dikira." -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "Berjaya memberi perdebatan keutamaan secara auto." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "Awak tiada tetapkan kateogri break sebagai 'umum', jadi kepentingan panel tidak dapat dikira." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "Berjaya memberi panel hakim tetap keutamaan secara auto." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "Memandangkan ini pusingan pertama, panel hakim tetap tidak dianotasi dengan 'bracket' dan 'liveness'." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "Match-up pusingan sebelum tidak wujud, panel hakim tetap tidak dianotasi dengan 'bracket' dan 'liveness'." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "Berjaya mewujudkan panel hakim tetap untuk pusingan ini." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "Yang Di-Pertua Dewan" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "ahli panel" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "trainee" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "debat" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "hakim" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "jenis" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "tersedia?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "hakim debat" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "hakim debat" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "pasukan" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "konflik hakim-pasukan" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "Konflik hakim-pasukan" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "hakim 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "hakim 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "Konflik hakim-hakim" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "konflik hakim-hakim" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "institusi" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "konflik hakim-institusi" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "konflik hakim-institusi" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "konflik pasukan-hakim" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "konflik pasukan-hakim" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "pusingan" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "kepentingan" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "braket minimum" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "Anggaran braket terendah untuk hakim ini" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "braket maximum" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "Anggaran braket tertinggi untuk hakim ini" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "kedudukan bilik" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "Bilangan panel berjujukan, tidak digunakan dalam algoritma" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "layak break" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "Bilangan kategori break yang masih boleh break" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "panel hakim tetap" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "panel hakim tetap" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "panel" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "panel hakim tetap" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "panel hakim tetap" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "Tiada panel hakim tetap yang boleh digunakan. Adakah panel hakim tetap telah ditetapkan untuk pusingan ini? Jika tidak, cuba tetapkan hakim secara auto." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "Panel hakim tetap" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "Hanya hakim yang ditanda sebagai 'ada' untuk pusingan itu boleh ditetapkan untukp pusingan itu, jadi anda perlu tetapkan keberadaan hakim terlebih dahulu." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "Konflik:%(adjudicator1)s & %(adjudicator2)s kerana institusi %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Lelaki" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Perempuan" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Lain-lain" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "Tidak diketahui" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "Edit penetapan" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "Edit panel" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "Kembali ke Gambaran Keseluruhan Panel" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Konflik hakim-pasukan" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Simpan konflik hakim-pasukan" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d konflik hakim-pasukan disimpan." -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "%(count)d konflik hakim-pasukan dibuang." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "Tiada perubahan dibuat untuk konflik hakim-pasukan." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Konflik hakim-hakim" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Simpan konflik hakim-hakim" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d konflik hakim-hakim disimpan." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "%(count)d konflik hakim-hakim dibuang." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "Tiada perubahan dibuat untuk konflik hakim-hakim." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Konflik hakim-institusi" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Simpan konflik hakim-institusi" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d konflik hakim-institusi disimpan." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "%(count)d konflik hakim-institusi dibuang." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "Tiada perubahan dibuat untuk konflik hakim-institusi." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "Konflik pasukan-institusi" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/pt/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/pt/LC_MESSAGES/django.po index f33d5de3e76..45f223a23c9 100644 --- a/tabbycat/adjallocation/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Não há juízes disponíveis. Certifique-se de que há juízes que foram marcados como estão disponíveis para esta rodada antes de serem atribuídos automaticamente." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" msgstr[1] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Alocação dos juízes" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" msgstr[1] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "presidente" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "juiz auxiliar" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "aprendiz" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "debate" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "juiz" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "tipo" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "disponível?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "juiz do debate" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "juízes do debate" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "dupla" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "conflito entre juiz e dupla" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "conflitos entre juiz e dupla" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "juiz 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "juiz 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "conflito entre juízes" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "conflitos entre juízes" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "instituição" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "rodada" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" msgstr[1] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/ro/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ro/LC_MESSAGES/django.po index e9d826b0164..80b8d49a6cc 100644 --- a/tabbycat/adjallocation/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,14 +12,16 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." @@ -27,7 +29,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." @@ -35,50 +37,50 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" @@ -86,15 +88,15 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" @@ -102,261 +104,260 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." @@ -364,7 +365,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." @@ -372,19 +373,19 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." @@ -392,7 +393,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." @@ -400,19 +401,19 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." @@ -420,7 +421,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." @@ -428,19 +429,19 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." @@ -448,7 +449,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." @@ -456,7 +457,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/locale/ru/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/ru/LC_MESSAGES/django.po index 5c8c56ee4b0..b022e796e72 100644 --- a/tabbycat/adjallocation/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,11 +17,11 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "Нет доступных судей. Убедитесь, что есть судьи, которые были отмечены как доступные, перед автоматическим распределением судей." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." @@ -30,7 +30,7 @@ msgstr[1] "Рейтинг %(count)s судей выше, чем максимал msgstr[2] "Рейтинг %(count)s судей выше, чем максимальный допустимый рейтинг судьи (%(score).1f)." msgstr[3] "Рейтинг %(count)s судей выше, чем максимальный допустимый рейтинг судьи (%(score).1f)." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." @@ -39,50 +39,50 @@ msgstr[1] "Рейтинг %(count)s судей ниже, чем минималь msgstr[2] "Рейтинг %(count)s судей ниже, чем минимальный допустимый рейтинг судьи (%(score).1f)." msgstr[3] "Рейтинг %(count)s судей ниже, чем минимальный допустимый рейтинг судьи (%(score).1f)." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "Нет судей, имеющих право быть чэйром или вингом. Попробуйте изменить \"минимальные баллы по обратной связи, необходимые для того, чтобы быть чэйром или вингом\" на более низкие, чем текущие баллы кого-то из судей и попробуйте снова." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "Нет дебатов для этого раунда. Возможно, вы еще не создали сетку?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "Есть %(debate_count)s дебатов, но только %(adj_count)s голосующих судей." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "Есть %(panel_debates)s дебатов, но только %(panellists)s доступных вингов (меньше чем %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "Есть %(debates_count)s дебатов, но только %(voting_count)s голосующих судей." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "Расстановка судей" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "Сетка уже опубликована, отмените публикацию для того, чтобы внести изменения в автоматическое распределение." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "Сетка не подтверждена, подтвердите сетку для автоматической расстановки судей." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "Нет заранее сформированных коллегий, которые можно распределить." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "Коллегии распределены." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" @@ -91,15 +91,15 @@ msgstr[1] "Судьи успешно распределены по дебата msgstr[2] "Судьи успешно распределены по дебатам. Внимание! Предупреждения (%(count)d):" msgstr[3] "Судьи успешно распределены по дебатам. Внимание! Предупреждения (%(count)d):" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "Судьи распределены." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "Нет коллегий для заполнения. Сначала создайте коллегии." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" @@ -108,261 +108,260 @@ msgstr[1] "Судьи распределены по коллегиям. Вним msgstr[2] "Судьи распределены по коллегиям. Внимание! %(count)d предупреждений:" msgstr[3] "Судьи распределены по коллегиям. Внимание! %(count)d предупреждений:" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "Судьи распределены по коллегиям." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "У вас нет брейковой категории, установленной как \"основная\", так что важность дебатов невозможно подсчитать." -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "Приоритет комнат выставлен автоматически." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "У вас нет брейковой категории, установленной как \"основная\", так что важность коллегий невозможно подсчитать." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "Приоритет коллегий выставлен." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "Так как это первый раунд, распределение коллегий не связано с количеством баллов команд и брейковостью румов." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "Сетки на предыдущий раунд нет, поэтому невозможно распределить коллегии исходя из количества баллов команд и брейковости румов." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "Созданы новые коллегии на этот раунд." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "чэйр" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "винг" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "винг без права голоса" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "дебаты" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "судья" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "тип" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "доступно?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "судья дебатов" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "судьи дебатов" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "команда" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "конфликт команд и судей" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "конфликты команд и судей" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "судья 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "судья 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "конфликт между судьями" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "конфликты между судьями" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "клуб" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "конфликт между судьей и клубом" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "конфликты между судьями и клубами" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "конфликт между командой и клубом" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "конфликты между командами и клубами" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "раунд" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "значение" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "минимальное значение баллов команд" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "Установить минимальное значение баллов команд, при котором может судить эта коллегия" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "максимальное значение баллов команд" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "Установить максимальное значение баллов команд, при котором может судить эта коллегия" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "ранг комнаты" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "Порядковый номер коллегии, не используемый в алгоритмах" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "брейковость" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "Количество категорий, для которых этот рум может быть брейковым" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "заранее сформированная коллегия" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "заранее сформированные коллегии" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "коллегия" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "судья коллегии" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "судьи коллегии" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "Предварительно сформированных коллегий нет. Вы распределяли коллегии для этого раунда? Если нет, попробуйте вместо этого использовать автораспределение судей." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "Заранее сформированные коллегии" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "Заранее сформированная коллегия — это группа судей, которая задана для раунда до создания сетки. Вы можете вручную или автоматически распределить эти коллегии по комнатам при распределения судей. Это может ускорить распределение судей или позволить вам создать более сбалансированные коллегии." -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "Обратите внимание, что только судьи, которые были отмечены как \"доступные\" для этого раунда, смогут быть распределены на это раунд, поэтому вам может потребоваться заранее отметить их как \"доступных\"." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "Редактировать коллегии для %(round)s" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "Конфликт: %(adjudicator)s & %(team)s (личный)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "Конфликт: %(adjudicator)s & %(team)s с клубом %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "Конфликт: %(adjudicator1)s & %(adjudicator2)s (личный)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "Конфликт: %(adjudicator1)s & %(adjudicator2)s с клубом %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Мужской" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "Женский" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Другой" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "Неизвестный" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "Редактировать распределение" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "Редактировать коллегии судей" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "Вернуться к обзору коллегий" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "Конфликты команд и судей" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "Сохранить конфликты команд и судей" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." @@ -371,7 +370,7 @@ msgstr[1] "Сохранены %(count)d конфликты между судья msgstr[2] "Сохранены %(count)d конфликты между судьями и командами." msgstr[3] "Сохранены %(count)d конфликты между судьями и командами." -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." @@ -380,19 +379,19 @@ msgstr[1] "Удалены %(count)d конфликты между судьями msgstr[2] "Удалены %(count)d конфликты между судьями и командами." msgstr[3] "Удалены %(count)d конфликты между судьями и командами." -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "Не было внесено никаких изменений в конфликты между судьями и командами." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "Конфликты между судьями" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "Сохранить конфликты между судьями" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." @@ -401,7 +400,7 @@ msgstr[1] "Сохранены %(count)d конфликты между судья msgstr[2] "Сохранены %(count)d конфликты между судьями." msgstr[3] "Сохранены %(count)d конфликты между судьями." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." @@ -410,19 +409,19 @@ msgstr[1] "Удалены %(count)d конфликты между судьями msgstr[2] "Удалены %(count)d конфликты между судьями." msgstr[3] "Удалены %(count)d конфликты между судьями." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "Не было внесено никаких изменений в конфликты между судьями." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "Конфликты между судьями и клубами" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "Сохранить конфликты между судьями и клубами" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." @@ -431,7 +430,7 @@ msgstr[1] "Сохранено конфликтов между судьями и msgstr[2] "Сохранено конфликтов между судьями и клубами: %(count)d." msgstr[3] "Сохранено конфликтов между судьями и клубами: %(count)d." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." @@ -440,19 +439,19 @@ msgstr[1] "Удалено конфликтов между судьями и кл msgstr[2] "Удалено конфликтов между судьями и клубами: %(count)d." msgstr[3] "Удалено конфликтов между судьями и клубами: %(count)d." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "Не было внесено никаких изменений в конфликты между судьями и клубами." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "Конфликты между командами и клубами" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "Сохранить конфликты между командами и клубами" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." @@ -461,7 +460,7 @@ msgstr[1] "Сохранено конфликтов между командами msgstr[2] "Сохранено конфликтов между командами и клубами: %(count)d." msgstr[3] "Сохранено конфликтов между командами и клубами: %(count)d." -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." @@ -470,7 +469,7 @@ msgstr[1] "Удалено конфликтов между командами и msgstr[2] "Удалено конфликтов между командами и клубами: %(count)d." msgstr[3] "Удалено конфликтов между командами и клубами: %(count)d." -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "Не было внесено никаких изменений в конфликты между командами и клубами." diff --git a/tabbycat/adjallocation/locale/tr/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/tr/LC_MESSAGES/django.po index d9bc8edff97..687f8ef63e0 100644 --- a/tabbycat/adjallocation/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,439 +12,440 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." -msgstr "" +msgstr "Uygun jüri bulunmamaktadır. Otomatik atamadan önce bu tur için uygun olarak işaretlenmiş jüriler olduğundan emin olun." -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)'un puanı, izin verilen maksimum jüri puanından (%(score).1f) büyük." +msgstr[1] "%(count)'un puanları, izin verilen maksimum jüri puanından (%(score).1f) büyük." -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)'un puanı, izin verilen minimum jüri puanından (%(score).1f) küçük." +msgstr[1] "%(count)'un puanları, izin verilen minimum jüri puanından (%(score).1f) küçük." -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." -msgstr "" +msgstr "Başkan veya panelist olmaya uygun jüri yok. \"Başkan veya panelist olmak için minimum geri bildirim puanı\" ayarını, bazı jürilerin mevcut puanlarından daha düşük bir değerle değiştirin ve yeniden deneyin." -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" -msgstr "" +msgstr "Bu tur için herhangi bir maç yok. Belki de henüz bir kura oluşturmadınız?" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." -msgstr "" +msgstr "%(debate_count) maç var, ancak sadece %(adj_count) oy veren jüri var." -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." -msgstr "" +msgstr "%(panel_debates) panel maçı var, ancak yalnızca %(panellists) mevcut panelistleri vardır (less than %(needed)s)." -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." -msgstr "" +msgstr "%(debate_count) maç var, ancak sadece %(voting_count) oy veren jüri var." -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" -msgstr "" +msgstr "Jüri Tahsisi" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." -msgstr "" +msgstr "Kura zaten yayınlanmıştır, otomatik tahsisleri yeniden yapmak için kurayı yayından kaldırın." -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." -msgstr "" +msgstr "Kura onaylanmadı, otomatik tahsisleri çalıştırmak için kurayı onaylayın." -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." -msgstr "" +msgstr "Tahsis edilebilecek önceden kurulmuş panel yok." -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." -msgstr "" +msgstr "Önceden kurulmuş paneller maçlara başarıyla otomatik olarak tahsis edildi." -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Jüriler maçlara başarıyla otomatik olarak tahsis edildi. Ancak, bir uyarı var:" +msgstr[1] "Jüriler maçlara başarıyla otomatik olarak tahsis edildi. Ancak, %(count)d uyarı var:" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." -msgstr "" +msgstr "Jüriler maçlara başarıyla otomatik olarak tahsis edildi." -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." -msgstr "" +msgstr "Doldurulacak panel yok. Önce panel oluşturun." -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Jüriler panellere başarıyla otomatik olarak tahsis edildi. Ancak, bir uyarı var:" +msgstr[1] "Jüriler panellere başarıyla otomatik olarak tahsis edildi. Ancak, %(count)d uyarı var:" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." -msgstr "" +msgstr "Jüriler panellere başarıyla otomatik olarak tahsis edildi." -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." -msgstr "" +msgstr "'Genel' olarak ayarlanmış bir break kategoriniz olmadığından maç önemleri hesaplanamıyor." -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." -msgstr "" +msgstr "Maçlar otomatik önceliklendirildi." -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." -msgstr "" +msgstr "'Genel' olarak ayarlanmış bir break kategoriniz olmadığından panel önemleri hesaplanamıyor." -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." -msgstr "" +msgstr "Önceden kurulmuş paneller otomatik önceliklendirildi." -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." -msgstr "" +msgstr "Bu ilk tur olduğundan, önceden kurulmuş panellerin aşama ve break ihtimali gösterilmiyor." -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." -msgstr "" +msgstr "Önceki turun kurası yok, bu nedenle önceden kurulmuş panellerin aşama ve break ihtimali gösterilemiyor." -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." -msgstr "" +msgstr "Bu tur için yeni önceden kurulmuş paneller oluşturuldu." -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "başkan" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" -msgstr "" +msgstr "panelist" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" -msgstr "" +msgstr "acemi" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "maç" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "jüri" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" -msgstr "" +msgstr "tür" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" -msgstr "" +msgstr "uygun mu?" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" -msgstr "" +msgstr "Maç jürisi" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" -msgstr "" +msgstr "Maç jürileri" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "takım" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" -msgstr "" +msgstr "jüri-takım conflicti" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" -msgstr "" +msgstr "jüri-takım conflictleri" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "jüri 1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "jüri 2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" -msgstr "" +msgstr "jüri-jüri conflicti" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" -msgstr "" +msgstr "jüri-jüri conflictleri" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" -msgstr "" +msgstr "kurum" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" -msgstr "" +msgstr "jüri-kurum conflicti" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" -msgstr "" +msgstr "jüri-kurum conflictileri" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" -msgstr "" +msgstr "takım-kurum conflicti" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" -msgstr "" +msgstr "takım-kurum conflictileri" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "tur" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" -msgstr "" +msgstr "önem" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" -msgstr "" +msgstr "minimum aşama" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" -msgstr "" +msgstr "Bu panelin mümkün en düşük aşamasının tahmini" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" -msgstr "" +msgstr "maksimum aşama" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" -msgstr "" +msgstr "Bu panelin mümkün en yüksek aşamasının tahmini" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" -msgstr "" +msgstr "oda sıralaması" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" -msgstr "" +msgstr "Sıralı panel sayısı, hiçbir algoritmada kullanılmaz" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" -msgstr "" +msgstr "break ihtimali" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" -msgstr "" +msgstr "Bu odanın break ihtimali olması beklenen kategori sayısı" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" -msgstr "" +msgstr "önceden kurulmuş panel" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" -msgstr "" +msgstr "önceden kurulmuş paneller" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "panel" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" -msgstr "" +msgstr "önceden kurulmuş panel jürisi" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" -msgstr "" +msgstr "önceden kurulmuş panel jürileri" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." -msgstr "" +msgstr "Kullanılacak önceden kurulmuş panel yok. Bu tur için önceden kurulmuş panel tahsis ettiniz mi? Etmediyseniz, bunun yerine yalnızca otomatik jüri tahsis etmeyi deneyin." -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" -msgstr "" +msgstr "Önceden kurulmuş paneller" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." -msgstr "" +msgstr "Önceden kurulmuş panel, kura oluşturulmadan önce bir tur için belirtilen tanımlanmış bir jüri grubudur. Daha sonra normal jüri tahsis işlemi sırasında bu panelleri manuel veya otomatik olarak kullanabilirsiniz. Bu, tahsisleri daha hızlı hale getirebilir veya daha iyi hazırlanmış hakem panelleri oluşturmanıza olanak tanır." -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." -msgstr "" +msgstr "Yalnızca o tur için \"kullanılabilir\" olarak işaretlenmiş jürilerin bir tur için tahsis edilebileceğini unutmayın, bu nedenle müsaitlik durumlarını önceden ayarlamanız gerekebilir." -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" -msgstr "" +msgstr "%(round)s için önceden kurulmuş panelleri düzenle" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" -msgstr "" +msgstr "Conflict: %(adjudicator)s & %(team)s (personal)" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" -msgstr "" +msgstr "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" -msgstr "" +msgstr "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" -msgstr "" +msgstr "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "Erkek" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" -msgstr "Fişi" +msgstr "Kadın" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "Diğer" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" -msgstr "" +msgstr "Bilinmeyen" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" -msgstr "" +msgstr "Tahsisi Düzenle" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" -msgstr "" +msgstr "Panelleri Düzenle" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" -msgstr "" +msgstr "Panellere Genel Bakış sayfasına geri dön" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" -msgstr "" +msgstr "jüri-takım conflictleri" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" -msgstr "" +msgstr "jüri-takım conflictlerini kaydet" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-takım conflicti kaydedildi" +msgstr[1] "%(count)d jüri-takım conflictleri kaydedildi" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-takım conflicti silindi" +msgstr[1] "%(count)d jüri-takım conflictleri silindi" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." -msgstr "" +msgstr "Jüri-takım conflictlerinde herhangi bir değişiklik yapılmamıştır." -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" -msgstr "" +msgstr "jüri-jüri conflictleri" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" -msgstr "" +msgstr "jüri-jüri conflictlerini kaydet" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-jüri conflicti kaydedildi." +msgstr[1] "%(count)d jüri-jüri conflictleri kaydedildi." -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-jüri conflicti silindi." +msgstr[1] "%(count)d jüri-jüri conflictileri silindi." -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." -msgstr "" +msgstr "Jüri-jüri conflictlerinde herhangi bir değişiklik yapılmamıştır." -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" -msgstr "" +msgstr "jüri-kurum conflictileri" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" -msgstr "" +msgstr "jüri-kurum conflictilerini kaydet" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-kurum conflicti kaydedildi." +msgstr[1] "%(count)d jüri-kurum conflictleri kaydedildi." -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jüri-kurum conflicti silindi." +msgstr[1] "%(count)d jüri-kurum conflictleri silindi." -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." -msgstr "" +msgstr "jüri-kurum conflictlerinde herhangi bir değişiklik yapılmamıştır." -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" -msgstr "" +msgstr "takım-kurum conflictileri" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" -msgstr "" +msgstr "takım-kurum conflictileri Kaydetme" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d takım-kurum conflicti kaydedildi." +msgstr[1] "%(count)d takım-kurum conflictleri kaydedildi." -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d takım-kurum conflicti silindi." +msgstr[1] "%(count)d takım-kurum conflictleri silindi." -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." -msgstr "" +msgstr "ekip-kurum conflictlerinde herhangi bir değişiklik yapılmamıştır." diff --git a/tabbycat/adjallocation/locale/tzl/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/tzl/LC_MESSAGES/django.po index 1ca031ff8bc..84ef1599dd7 100644 --- a/tabbycat/adjallocation/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-11-18 21:01\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,436 +17,435 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "crwdns29190:0crwdne29190:0" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "crwdns35336:1%(count)scrwdnd35336:1%(score)crwdne35336:1" msgstr[1] "crwdns35336:5%(count)scrwdnd35336:5%(score)crwdne35336:5" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "crwdns35338:1%(count)scrwdnd35338:1%(score)crwdne35338:1" msgstr[1] "crwdns35338:5%(count)scrwdnd35338:5%(score)crwdne35338:5" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "crwdns33822:0crwdne33822:0" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "crwdns29196:0crwdne29196:0" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "crwdns33824:0%(debate_count)scrwdnd33824:0%(adj_count)scrwdne33824:0" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "crwdns33826:0%(panel_debates)scrwdnd33826:0%(panellists)scrwdnd33826:0%(needed)scrwdne33826:0" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "crwdns33828:0%(debates_count)scrwdnd33828:0%(voting_count)scrwdne33828:0" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "crwdns29192:0crwdne29192:0" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "crwdns29238:0crwdne29238:0" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "crwdns29240:0crwdne29240:0" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "crwdns33830:0crwdne33830:0" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "crwdns35340:0crwdne35340:0" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "crwdns35342:1crwdne35342:1" msgstr[1] "crwdns35342:5%(count)dcrwdne35342:5" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "crwdns35344:0crwdne35344:0" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "crwdns33838:0crwdne33838:0" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "crwdns35346:1crwdne35346:1" msgstr[1] "crwdns35346:5%(count)dcrwdne35346:5" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "crwdns35348:0crwdne35348:0" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "crwdns33844:0crwdne33844:0" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "crwdns33846:0crwdne33846:0" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "crwdns33848:0crwdne33848:0" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "crwdns33850:0crwdne33850:0" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "crwdns33852:0crwdne33852:0" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "crwdns33854:0crwdne33854:0" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "crwdns33856:0crwdne33856:0" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "crwdns29198:0crwdne29198:0" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "crwdns29200:0crwdne29200:0" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "crwdns29202:0crwdne29202:0" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "crwdns29204:0crwdne29204:0" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "crwdns29206:0crwdne29206:0" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "crwdns29208:0crwdne29208:0" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "crwdns29210:0crwdne29210:0" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "crwdns29212:0crwdne29212:0" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "crwdns29214:0crwdne29214:0" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "crwdns29216:0crwdne29216:0" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "crwdns29218:0crwdne29218:0" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "crwdns29220:0crwdne29220:0" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "crwdns29222:0crwdne29222:0" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "crwdns29224:0crwdne29224:0" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "crwdns29226:0crwdne29226:0" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "crwdns29228:0crwdne29228:0" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "crwdns29230:0crwdne29230:0" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "crwdns29232:0crwdne29232:0" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "crwdns29234:0crwdne29234:0" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "crwdns33858:0crwdne33858:0" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "crwdns33860:0crwdne33860:0" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "crwdns33862:0crwdne33862:0" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "crwdns33864:0crwdne33864:0" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "crwdns33866:0crwdne33866:0" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "crwdns33868:0crwdne33868:0" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "crwdns33870:0crwdne33870:0" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "crwdns33872:0crwdne33872:0" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "crwdns33874:0crwdne33874:0" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "crwdns33876:0crwdne33876:0" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "crwdns33878:0crwdne33878:0" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "crwdns33880:0crwdne33880:0" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "crwdns33882:0crwdne33882:0" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "crwdns33884:0crwdne33884:0" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "crwdns33886:0crwdne33886:0" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "crwdns33888:0crwdne33888:0" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "crwdns33890:0crwdne33890:0" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "crwdns33892:0crwdne33892:0" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "crwdns33894:0crwdne33894:0" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "crwdns33896:0crwdne33896:0" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "crwdns33898:0crwdne33898:0" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "crwdns51052:0%(round)scrwdne51052:0" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "crwdns51054:0%(adjudicator)scrwdnd51054:0%(team)scrwdne51054:0" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "crwdns51056:0%(adjudicator)scrwdnd51056:0%(team)scrwdnd51056:0%(institution)scrwdne51056:0" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "crwdns51058:0%(adjudicator1)scrwdnd51058:0%(adjudicator2)scrwdne51058:0" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "crwdns51060:0%(adjudicator1)scrwdnd51060:0%(adjudicator2)scrwdnd51060:0%(institution)scrwdne51060:0" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "crwdns33910:0crwdne33910:0" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "crwdns33912:0crwdne33912:0" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "crwdns33914:0crwdne33914:0" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "crwdns33916:0crwdne33916:0" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "crwdns33918:0crwdne33918:0" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "crwdns33920:0crwdne33920:0" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "crwdns33922:0crwdne33922:0" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "crwdns29244:0crwdne29244:0" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "crwdns29246:0crwdne29246:0" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "crwdns29248:1%(count)dcrwdne29248:1" msgstr[1] "crwdns29248:5%(count)dcrwdne29248:5" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "crwdns29250:1%(count)dcrwdne29250:1" msgstr[1] "crwdns29250:5%(count)dcrwdne29250:5" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "crwdns29252:0crwdne29252:0" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "crwdns29254:0crwdne29254:0" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "crwdns29256:0crwdne29256:0" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "crwdns29258:1%(count)dcrwdne29258:1" msgstr[1] "crwdns29258:5%(count)dcrwdne29258:5" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "crwdns29260:1%(count)dcrwdne29260:1" msgstr[1] "crwdns29260:5%(count)dcrwdne29260:5" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "crwdns29262:0crwdne29262:0" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "crwdns29264:0crwdne29264:0" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "crwdns29266:0crwdne29266:0" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "crwdns29268:1%(count)dcrwdne29268:1" msgstr[1] "crwdns29268:5%(count)dcrwdne29268:5" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "crwdns29270:1%(count)dcrwdne29270:1" msgstr[1] "crwdns29270:5%(count)dcrwdne29270:5" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "crwdns29272:0crwdne29272:0" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "crwdns33924:0crwdne33924:0" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "crwdns33926:0crwdne33926:0" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "crwdns33928:1%(count)dcrwdne33928:1" msgstr[1] "crwdns33928:5%(count)dcrwdne33928:5" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "crwdns33930:1%(count)dcrwdne33930:1" msgstr[1] "crwdns33930:5%(count)dcrwdne33930:5" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "crwdns33932:0crwdne33932:0" diff --git a/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.mo b/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..6366a4fc2cd Binary files /dev/null and b/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..d8fd2fd507b --- /dev/null +++ b/tabbycat/adjallocation/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,439 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 922\n" + +#: adjallocation/allocators/base.py +msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." +msgstr "Hiện tại không có giám khảo nào sẵn sàng. Hãy chắc chắn rằng có giám khảo được đánh dấu sẵn sàng trong vòng này trước khi phân bổ tự động." + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." +msgstr[0] "%(count)s điểm lớn hớn điểm cho phép của giám khảo (%(score).1f)." + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." +msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." +msgstr[0] "%(count)s điểm nhỏ hơn điểm cho phép của giám khảo (%(score).1f)." + +#: adjallocation/allocators/hungarian.py +msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." +msgstr "Không có giám khảo nào hợp lệ để làm giám khảo chính hay giám khảo phụ. Hãy thử chỉnh \"điểm phản hồi thấp nhất để được phân bổ làm giám khảo chính hoặc giám khảo phụ\" xuống thấp hơn điểm của một số giám khảo hiện tại, rồi quay lại." + +#: adjallocation/allocators/hungarian.py +msgid "There are no debates for this round. Maybe you haven't created a draw yet?" +msgstr "Hiện tại chưa có trận debate nào trong vòng này. Có thể tại vì bạn chưa tạo bảng đấu?" + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." +msgstr "Có %(debate_count)s trận tranh biện nhưng chỉ có %(adj_count)s giám khảo có khả năng bầu." + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." +msgstr "Hiện tại có %(panel_debates)s bàn giám khảo nhưng chỉ có %(panellists)s giám khảo phụ sẵn sàng (ít hơn %(needed)s)." + +#: adjallocation/allocators/hungarian.py +#, python-format +msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." +msgstr "Có %(debates_count)s trận tranh biện nhưng chỉ có %(voting_count)s giám khảo có khả năng bầu." + +#: adjallocation/apps.py +msgid "Adjudicator Allocation" +msgstr "Phân bổ giám khảo" + +#: adjallocation/consumers.py +msgid "Draw is already released, unrelease draw to redo auto-allocations." +msgstr "Bảng đấu đã được công bố, hủy công bố bảng đấu để tự động phân bổ lại." + +#: adjallocation/consumers.py +msgid "Draw is not confirmed, confirm draw to run auto-allocations." +msgstr "Bảng đấu chưa được xác nhận, xác nhận bảng đấu để tự động phân bổ." + +#: adjallocation/consumers.py +msgid "There are no preformed panels available to allocate." +msgstr "Hiện tại không có bàn giám khảo được chỉ định trước nào sẵn sàng để phân bổ." + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated preformed panels to debates." +msgstr "Đã tự động phân bổ thành công bàn giám khảo cho các trận tranh biện." + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" +msgstr[0] "Tự động phân bổ các giám khảo cho các trận tranh biện thành công. Tuy nhiên, có %(count)d cảnh báo:" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to debates." +msgstr "Tự động phân bổ các giám khảo cho các trận tranh biện thành công." + +#: adjallocation/consumers.py +msgid "There aren't any panels to fill. Create panels first." +msgstr "Hiện tại không có bàn giám khảo nào để điền. Tạo các bàn giám khảo trước." + +#: adjallocation/consumers.py +#, python-format +msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" +msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" +msgstr[0] "Đã tự động phân bổ các giám khảo cho các trận tranh biện thành công. Tuy nhiên, có %(count)d cảnh báo:" + +#: adjallocation/consumers.py +msgid "Successfully auto-allocated adjudicators to preformed panels." +msgstr "Đã tự động phân bổ giám khảo cho các bàn giám khảo thành công." + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so debate importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised debates." +msgstr "Đã tự động ưu tiên các trận tranh biện thành công." + +#: adjallocation/consumers.py +msgid "You have no break category set as 'is general' so panel importances can't be calculated." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully auto-prioritised preformed panels." +msgstr "Đã tự động ưu tiên các bàn giám khảo thành công." + +#: adjallocation/consumers.py +msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." +msgstr "" + +#: adjallocation/consumers.py +msgid "Succesfully created new preformed panels for this round." +msgstr "Đã tạo thành công bàn giám khảo cho vòng này." + +#: adjallocation/models.py +msgid "chair" +msgstr "giám khảo chính" + +#: adjallocation/models.py +msgid "panellist" +msgstr "giám khảo phụ" + +#: adjallocation/models.py +msgid "trainee" +msgstr "giám khảo thực tập" + +#: adjallocation/models.py +msgid "debate" +msgstr "trận tranh biện" + +#: adjallocation/models.py +msgid "adjudicator" +msgstr "giám khảo" + +#: adjallocation/models.py +msgid "type" +msgstr "loại" + +#: adjallocation/models.py +msgid "available?" +msgstr "sẵn sàng?" + +#: adjallocation/models.py +msgid "debate adjudicator" +msgstr "giám khảo tranh biện" + +#: adjallocation/models.py +msgid "debate adjudicators" +msgstr "các giám khảo tranh biện" + +#: adjallocation/models.py +msgid "team" +msgstr "đội" + +#: adjallocation/models.py +msgid "adjudicator-team conflict" +msgstr "xung đột giữa giám khảo và đội" + +#: adjallocation/models.py +msgid "adjudicator-team conflicts" +msgstr "xung đột giữa giám khảo và đội" + +#: adjallocation/models.py +msgid "adjudicator 1" +msgstr "giám khảo 1" + +#: adjallocation/models.py +msgid "adjudicator 2" +msgstr "giám khảo 2" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflict" +msgstr "xung đột giữa các giám khảo" + +#: adjallocation/models.py +msgid "adjudicator-adjudicator conflicts" +msgstr "xung đột giữa các giám khảo" + +#: adjallocation/models.py +msgid "institution" +msgstr "tổ chức" + +#: adjallocation/models.py +msgid "adjudicator-institution conflict" +msgstr "xung đột giữa giám khảo và tổ chức" + +#: adjallocation/models.py +msgid "adjudicator-institution conflicts" +msgstr "xung đột giữa giám khảo và tổ chức" + +#: adjallocation/models.py +msgid "team-institution conflict" +msgstr "xung đột giữa đội và tổ chức" + +#: adjallocation/models.py +msgid "team-institution conflicts" +msgstr "xung đột giữa đội và tổ chức" + +#: adjallocation/models.py +msgid "round" +msgstr "vòng" + +#: adjallocation/models.py +msgid "importance" +msgstr "mức độ quan trọng" + +#: adjallocation/models.py +msgid "minimum bracket" +msgstr "bảng dưới" + +#: adjallocation/models.py +msgid "Estimate of the lowest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "maximum bracket" +msgstr "bảng trên" + +#: adjallocation/models.py +msgid "Estimate of the highest bracket for which this panel might be" +msgstr "" + +#: adjallocation/models.py +msgid "room rank" +msgstr "xếp hạng phòng" + +#: adjallocation/models.py +msgid "Sequential number of panel, not used in any algorithms" +msgstr "Số thứ tự của bàn giám khảo không được dùng trong bất cứ thuật toán nào" + +#: adjallocation/models.py +msgid "liveness" +msgstr "khả năng bước tiếp" + +#: adjallocation/models.py +msgid "Number of categories this room is expected to be live for" +msgstr "" + +#: adjallocation/models.py +msgid "preformed panel" +msgstr "bàn giám khảo chỉ định" + +#: adjallocation/models.py +msgid "preformed panels" +msgstr "bàn giám khảo được chỉ định trước" + +#: adjallocation/models.py +msgid "panel" +msgstr "bàn giám khảo" + +#: adjallocation/models.py +msgid "preformed panel adjudicator" +msgstr "giám khảo của bàn giám khảo được chỉ định trước" + +#: adjallocation/models.py +msgid "preformed panel adjudicators" +msgstr "giám khảo của bàn giám khảo được chỉ định trước" + +#: adjallocation/preformed/base.py +msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." +msgstr "Hiện tại không có bàn giám khảo nào được chỉ định trước để dùng. Bạn đã phân bổ bàn giám khảo đươc chỉ định trước cho vòng này chưa? Nếu chưa, hãy thử phân bổ giám khảo tự động." + +#: adjallocation/templates/preformed_index.html adjallocation/views.py +msgid "Preformed Panels" +msgstr "Bàn giám khảo chỉ định" + +#: adjallocation/templates/preformed_index.html +msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." +msgstr "Một bàn giám khảo được chỉ định trước là một nhóm các giám khảo được chỉ định chấm một vòng trước khi bảng đấu được tạo. Bạn có thể chọn bàn giám khảo bằng tay hoặc tự động trong quá trình phân bố giám khảo. Việc này có thể khiến việc phân bổ nhanh hơn hoặc khiến bạn cân nhắc hơn trong việc phân bổ giám khảo." + +#: adjallocation/templates/preformed_index.html +msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." +msgstr "Chú ý rằng chỉ có những giám khảo đã được đánh dấu 'sẵn sàng' cho vòng đó mới có thể được phân bổ cho vòng đó, nên bạn cần phải đánh dấu trước." + +#: adjallocation/templates/preformed_index.html +#, python-format +msgid "Edit Preformed Panels for %(round)s" +msgstr "Chỉnh sửa bàn giám khảo cho vòng %(round)s" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s (personal)" +msgstr "Xung đột: %(adjudicator)s & %(team)s (cá nhân)" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" +msgstr "Xung đột: %(adjudicator)s & %(team)s với tổ chức %(institution)s" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" +msgstr "Xung đột: %(adjudicator1)s & %(adjudicator2)s (cá nhân)" + +#: adjallocation/utils.py +#, python-format +msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" +msgstr "Xung đột: %(adjudicator1)s & %(adjudicator2)s với tổ chức %(institution)s" + +#: adjallocation/views.py +msgid "Male" +msgstr "Nam" + +#: adjallocation/views.py +msgid "Female" +msgstr "Nữ" + +#: adjallocation/views.py +msgid "Other" +msgstr "Khác" + +#: adjallocation/views.py +msgid "Unknown" +msgstr "Không xác định" + +#: adjallocation/views.py +msgid "Edit Allocation" +msgstr "Chỉnh sửa phân bổ" + +#: adjallocation/views.py +msgid "Edit Panels" +msgstr "Chỉnh sửa bàn giám khảo" + +#: adjallocation/views.py +msgid "Return to Panels Overview" +msgstr "Quay trở lại tổng quan bảng giám khảo" + +#: adjallocation/views.py +msgid "Adjudicator-Team Conflicts" +msgstr "Xung đột giữa giám khảo và đội" + +#: adjallocation/views.py +msgid "Save Adjudicator-Team Conflicts" +msgstr "Lưu xung đột giữa giám khảo và đội" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-team conflict." +msgid_plural "Saved %(count)d adjudicator-team conflicts." +msgstr[0] "Đã lưu %(count)d xung đột giữa giám khảo và đội." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-team conflict." +msgid_plural "Deleted %(count)d adjudicator-team conflicts." +msgstr[0] "Đã xóa %(count)d xung đột giữa giám khảo và đội." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-team conflicts." +msgstr "Không có thay đổi nào được thực hiện với xung đột giữa giám khảo và đội." + +#: adjallocation/views.py +msgid "Adjudicator-Adjudicator Conflicts" +msgstr "Xung đột giữa các giám khảo" + +#: adjallocation/views.py +msgid "Save Adjudicator-Adjudicator Conflicts" +msgstr "Lưu xung đột giữa các giám khảo" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-adjudicator conflict." +msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "Đã lưu %(count)d xung đột giữa các giám khảo." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-adjudicator conflict." +msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." +msgstr[0] "Đã xóa %(count)d xung đột giữa các giám khảo." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-adjudicator conflicts." +msgstr "Không có thay đổi nào được thực hiện với xung đột giữa các giám khảo." + +#: adjallocation/views.py +msgid "Adjudicator-Institution Conflicts" +msgstr "Xung đột giữa giám khảo và tổ chức" + +#: adjallocation/views.py +msgid "Save Adjudicator-Institution Conflicts" +msgstr "Lưu xung đột giữa giám khảo và tổ chức" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d adjudicator-institution conflict." +msgid_plural "Saved %(count)d adjudicator-institution conflicts." +msgstr[0] "Đã lưu %(count)d xung đột giữa giám khảo và tổ chức." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d adjudicator-institution conflict." +msgid_plural "Deleted %(count)d adjudicator-institution conflicts." +msgstr[0] "Đã xóa %(count)d xung đột giữa giám khảo và tổ chức." + +#: adjallocation/views.py +msgid "No changes were made to adjudicator-institution conflicts." +msgstr "Không có thay đổi nào được thực hiện với xung đột giữa giám khảo và tổ chức." + +#: adjallocation/views.py +msgid "Team-Institution Conflicts" +msgstr "Xung đột giữa đội và tổ chức" + +#: adjallocation/views.py +msgid "Save Team-Institution Conflicts" +msgstr "Lưu xung đột giữa đội và tổ chức" + +#: adjallocation/views.py +#, python-format +msgid "Saved %(count)d team-institution conflict." +msgid_plural "Saved %(count)d team-institution conflicts." +msgstr[0] "Đã lưu %(count)d xung đột giữa đội và tổ chức." + +#: adjallocation/views.py +#, python-format +msgid "Deleted %(count)d team-institution conflict." +msgid_plural "Deleted %(count)d team-institution conflicts." +msgstr[0] "Đã xóa %(count)d xung đột giữa đội và tổ chức." + +#: adjallocation/views.py +msgid "No changes were made to team-institution conflicts." +msgstr "Không có thay đổi nào được thực hiện với xung đột giữa đội và tổ chức." + diff --git a/tabbycat/adjallocation/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/zh_Hans/LC_MESSAGES/django.po index a918a103fb7..4cb2a0e71cd 100644 --- a/tabbycat/adjallocation/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2021-05-19 06:45\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,424 +17,423 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjallocation/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 922\n" -#: adjallocation/allocators/base.py:34 +#: adjallocation/allocators/base.py msgid "There are no available adjudicators. Ensure there are adjudicators who have been marked as available for this round before auto-allocating." msgstr "当前没有可用裁判。请确保在本回合自动分配前已有裁判可用。" -#: adjallocation/allocators/hungarian.py:50 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is larger than the maximum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are larger than the maximum permitted adjudicator score (%(score).1f)." msgstr[0] "" -#: adjallocation/allocators/hungarian.py:59 +#: adjallocation/allocators/hungarian.py #, python-format msgid "%(count)s score is smaller than the minimum permitted adjudicator score (%(score).1f)." msgid_plural "%(count)s scores are smaller than the minimum permitted adjudicator score (%(score).1f)." msgstr[0] "" -#: adjallocation/allocators/hungarian.py:111 +#: adjallocation/allocators/hungarian.py msgid "There are no adjudicators eligible to be a chair or panellist. Try changing the \"Minimum feedback score required to be allocated as chair or panellist\" setting to something lower than at least some adjudicators' current scores, and try again." msgstr "" -#: adjallocation/allocators/hungarian.py:119 +#: adjallocation/allocators/hungarian.py msgid "There are no debates for this round. Maybe you haven't created a draw yet?" msgstr "" -#: adjallocation/allocators/hungarian.py:166 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." msgstr "" -#: adjallocation/allocators/hungarian.py:172 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(panel_debates)s panel debates but only %(panellists)s available panellists (less than %(needed)s)." msgstr "" -#: adjallocation/allocators/hungarian.py:282 +#: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." msgstr "" -#: adjallocation/apps.py:7 +#: adjallocation/apps.py msgid "Adjudicator Allocation" msgstr "" -#: adjallocation/consumers.py:59 +#: adjallocation/consumers.py msgid "Draw is already released, unrelease draw to redo auto-allocations." msgstr "" -#: adjallocation/consumers.py:63 +#: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." msgstr "" -#: adjallocation/consumers.py:69 +#: adjallocation/consumers.py msgid "There are no preformed panels available to allocate." msgstr "" -#: adjallocation/consumers.py:83 +#: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." msgstr "" -#: adjallocation/consumers.py:109 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to debates. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to debates. However, there were %(count)d warnings:" msgstr[0] "" -#: adjallocation/consumers.py:115 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." msgstr "" -#: adjallocation/consumers.py:131 +#: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." msgstr "" -#: adjallocation/consumers.py:155 +#: adjallocation/consumers.py #, python-format msgid "Successfully auto-allocated adjudicators to preformed panels. However, there was a warning:" msgid_plural "Successfully auto-allocated adjudicators to preformed panels. However, there were %(count)d warnings:" msgstr[0] "" -#: adjallocation/consumers.py:161 +#: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." msgstr "" -#: adjallocation/consumers.py:207 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:215 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." msgstr "" -#: adjallocation/consumers.py:237 +#: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." msgstr "" -#: adjallocation/consumers.py:246 +#: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." msgstr "" -#: adjallocation/consumers.py:264 +#: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:267 +#: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." msgstr "" -#: adjallocation/consumers.py:270 +#: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." msgstr "" -#: adjallocation/models.py:18 +#: adjallocation/models.py msgid "chair" msgstr "主席" -#: adjallocation/models.py:19 +#: adjallocation/models.py msgid "panellist" msgstr "成员" -#: adjallocation/models.py:20 +#: adjallocation/models.py msgid "trainee" msgstr "实习生" -#: adjallocation/models.py:26 +#: adjallocation/models.py msgid "debate" msgstr "辩论" -#: adjallocation/models.py:28 adjallocation/models.py:48 -#: adjallocation/models.py:80 adjallocation/models.py:169 +#: adjallocation/models.py msgid "adjudicator" msgstr "裁判" -#: adjallocation/models.py:30 adjallocation/models.py:171 +#: adjallocation/models.py msgid "type" msgstr "职务" -#: adjallocation/models.py:31 +#: adjallocation/models.py msgid "available?" msgstr "" -#: adjallocation/models.py:34 +#: adjallocation/models.py msgid "debate adjudicator" msgstr "" -#: adjallocation/models.py:35 +#: adjallocation/models.py msgid "debate adjudicators" msgstr "" -#: adjallocation/models.py:50 adjallocation/models.py:95 +#: adjallocation/models.py msgid "team" msgstr "队伍" -#: adjallocation/models.py:53 +#: adjallocation/models.py msgid "adjudicator-team conflict" msgstr "" -#: adjallocation/models.py:54 +#: adjallocation/models.py msgid "adjudicator-team conflicts" msgstr "" -#: adjallocation/models.py:64 +#: adjallocation/models.py msgid "adjudicator 1" msgstr "裁判1" -#: adjallocation/models.py:67 +#: adjallocation/models.py msgid "adjudicator 2" msgstr "裁判2" -#: adjallocation/models.py:70 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflict" msgstr "" -#: adjallocation/models.py:71 +#: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" msgstr "" -#: adjallocation/models.py:82 adjallocation/models.py:97 +#: adjallocation/models.py msgid "institution" msgstr "" -#: adjallocation/models.py:85 +#: adjallocation/models.py msgid "adjudicator-institution conflict" msgstr "" -#: adjallocation/models.py:86 +#: adjallocation/models.py msgid "adjudicator-institution conflicts" msgstr "" -#: adjallocation/models.py:100 +#: adjallocation/models.py msgid "team-institution conflict" msgstr "" -#: adjallocation/models.py:101 +#: adjallocation/models.py msgid "team-institution conflicts" msgstr "" -#: adjallocation/models.py:114 +#: adjallocation/models.py msgid "round" msgstr "赛" -#: adjallocation/models.py:116 +#: adjallocation/models.py msgid "importance" msgstr "" -#: adjallocation/models.py:119 +#: adjallocation/models.py msgid "minimum bracket" msgstr "" -#: adjallocation/models.py:120 +#: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:122 +#: adjallocation/models.py msgid "maximum bracket" msgstr "" -#: adjallocation/models.py:123 +#: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" msgstr "" -#: adjallocation/models.py:125 +#: adjallocation/models.py msgid "room rank" msgstr "" -#: adjallocation/models.py:126 +#: adjallocation/models.py msgid "Sequential number of panel, not used in any algorithms" msgstr "" -#: adjallocation/models.py:128 +#: adjallocation/models.py msgid "liveness" msgstr "" -#: adjallocation/models.py:129 +#: adjallocation/models.py msgid "Number of categories this room is expected to be live for" msgstr "" -#: adjallocation/models.py:132 +#: adjallocation/models.py msgid "preformed panel" msgstr "" -#: adjallocation/models.py:133 +#: adjallocation/models.py msgid "preformed panels" msgstr "" -#: adjallocation/models.py:167 +#: adjallocation/models.py msgid "panel" msgstr "裁判组" -#: adjallocation/models.py:174 +#: adjallocation/models.py msgid "preformed panel adjudicator" msgstr "" -#: adjallocation/models.py:175 +#: adjallocation/models.py msgid "preformed panel adjudicators" msgstr "" -#: adjallocation/preformed/base.py:41 +#: adjallocation/preformed/base.py msgid "There are no preformed panels to use. Have you allocated preformed panels for this round? If not, try just auto-allocating adjudicators instead." msgstr "" -#: adjallocation/templates/preformed_index.html:5 adjallocation/views.py:128 +#: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" msgstr "" -#: adjallocation/templates/preformed_index.html:10 +#: adjallocation/templates/preformed_index.html msgid "A preformed panel is a defined group of adjudicators that is specified for a round before its draw has been generated. You can then manually or automatically apply these panels during the normal adjudicator allocation process. This can make allocations faster or allow you to create more considered panels of adjudicators." msgstr "" -#: adjallocation/templates/preformed_index.html:16 +#: adjallocation/templates/preformed_index.html msgid "Note that only adjudicators who have been marked as 'available' for that round will be able to be allocated for that round, so you may need to set their availability in advance." msgstr "" -#: adjallocation/templates/preformed_index.html:37 +#: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" msgstr "" -#: adjallocation/utils.py:28 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s (personal)" msgstr "" -#: adjallocation/utils.py:34 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" msgstr "" -#: adjallocation/utils.py:46 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s (personal)" msgstr "" -#: adjallocation/utils.py:52 +#: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" msgstr "" -#: adjallocation/views.py:35 +#: adjallocation/views.py msgid "Male" msgstr "男性" -#: adjallocation/views.py:36 +#: adjallocation/views.py msgid "Female" msgstr "女性" -#: adjallocation/views.py:37 +#: adjallocation/views.py msgid "Other" msgstr "" -#: adjallocation/views.py:38 +#: adjallocation/views.py msgid "Unknown" msgstr "未知" -#: adjallocation/views.py:90 +#: adjallocation/views.py msgid "Edit Allocation" msgstr "" -#: adjallocation/views.py:105 +#: adjallocation/views.py msgid "Edit Panels" msgstr "" -#: adjallocation/views.py:111 +#: adjallocation/views.py msgid "Return to Panels Overview" msgstr "" -#: adjallocation/views.py:172 +#: adjallocation/views.py msgid "Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:173 +#: adjallocation/views.py msgid "Save Adjudicator-Team Conflicts" msgstr "" -#: adjallocation/views.py:198 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-team conflict." msgid_plural "Saved %(count)d adjudicator-team conflicts." msgstr[0] "" -#: adjallocation/views.py:204 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-team conflict." msgid_plural "Deleted %(count)d adjudicator-team conflicts." msgstr[0] "" -#: adjallocation/views.py:209 +#: adjallocation/views.py msgid "No changes were made to adjudicator-team conflicts." msgstr "" -#: adjallocation/views.py:216 +#: adjallocation/views.py msgid "Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:217 +#: adjallocation/views.py msgid "Save Adjudicator-Adjudicator Conflicts" msgstr "" -#: adjallocation/views.py:238 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-adjudicator conflict." msgid_plural "Saved %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" -#: adjallocation/views.py:244 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-adjudicator conflict." msgid_plural "Deleted %(count)d adjudicator-adjudicator conflicts." msgstr[0] "" -#: adjallocation/views.py:249 +#: adjallocation/views.py msgid "No changes were made to adjudicator-adjudicator conflicts." msgstr "" -#: adjallocation/views.py:256 +#: adjallocation/views.py msgid "Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:257 +#: adjallocation/views.py msgid "Save Adjudicator-Institution Conflicts" msgstr "" -#: adjallocation/views.py:277 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d adjudicator-institution conflict." msgid_plural "Saved %(count)d adjudicator-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:283 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d adjudicator-institution conflict." msgid_plural "Deleted %(count)d adjudicator-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:288 +#: adjallocation/views.py msgid "No changes were made to adjudicator-institution conflicts." msgstr "" -#: adjallocation/views.py:295 +#: adjallocation/views.py msgid "Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:296 +#: adjallocation/views.py msgid "Save Team-Institution Conflicts" msgstr "" -#: adjallocation/views.py:319 +#: adjallocation/views.py #, python-format msgid "Saved %(count)d team-institution conflict." msgid_plural "Saved %(count)d team-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:325 +#: adjallocation/views.py #, python-format msgid "Deleted %(count)d team-institution conflict." msgid_plural "Deleted %(count)d team-institution conflicts." msgstr[0] "" -#: adjallocation/views.py:330 +#: adjallocation/views.py msgid "No changes were made to team-institution conflicts." msgstr "" diff --git a/tabbycat/adjallocation/management/commands/allocateadjudicators.py b/tabbycat/adjallocation/management/commands/allocateadjudicators.py index 2002c5171a9..a6426f973b2 100644 --- a/tabbycat/adjallocation/management/commands/allocateadjudicators.py +++ b/tabbycat/adjallocation/management/commands/allocateadjudicators.py @@ -29,7 +29,7 @@ def add_arguments(self, parser): def handle_round(self, round, **options): if (not options["preformed"] and not options["force"] and - round.draw_status != Round.STATUS_CONFIRMED): + round.draw_status != Round.Status.CONFIRMED): raise CommandError("Draw status isn't confirmed (it's {}), use " "--force to run anyway".format(round.get_draw_status_display().lower())) diff --git a/tabbycat/adjallocation/migrations/0005_populate_teaminstitutionconflict.py b/tabbycat/adjallocation/migrations/0005_populate_teaminstitutionconflict.py index eba32ea526d..5ecea02d1aa 100644 --- a/tabbycat/adjallocation/migrations/0005_populate_teaminstitutionconflict.py +++ b/tabbycat/adjallocation/migrations/0005_populate_teaminstitutionconflict.py @@ -3,16 +3,6 @@ from django.db import migrations -def populate_teaminstitutionconflict(apps, schema_editor): - - TeamInstitutionConflict = apps.get_model('adjallocation', 'TeamInstitutionConflict') # noqa: N806 - Team = apps.get_model('participants', 'Team') # noqa: N806 - - for team in Team.objects.all(): - if team.institution_id is not None: - TeamInstitutionConflict.objects.get_or_create(team=team, institution_id=team.institution_id) - - class Migration(migrations.Migration): dependencies = [ @@ -20,7 +10,9 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(populate_teaminstitutionconflict, - migrations.RunPython.noop, - elidable=True) + migrations.RunSQL( + "INSERT INTO adjallocation_teaminstitutionconflict (team_id, institution_id) SELECT id, institution_id FROM participants_team WHERE institution_id IS NOT NULL ON CONFLICT DO NOTHING;", + migrations.RunSQL.noop, + elidable=True, + ), ] diff --git a/tabbycat/adjallocation/serializers.py b/tabbycat/adjallocation/serializers.py index ff540f1e8f2..65c54acca8c 100644 --- a/tabbycat/adjallocation/serializers.py +++ b/tabbycat/adjallocation/serializers.py @@ -1,3 +1,4 @@ +from django.utils.html import escape from rest_framework import serializers from participants.serializers import AdjudicatorSerializer @@ -9,6 +10,10 @@ class EditPanelOrDebateAdjSerializer(AdjudicatorSerializer, VueDraggableItemMixin): """ Returns adjudicators for use in views where they are allocated """ score = serializers.SerializerMethodField(read_only=True) + name = serializers.SerializerMethodField(read_only=True) + + def get_name(self, obj): + return escape(obj.name) def get_score(self, obj): return obj.weighted_score(self.context['feedback_weight']) @@ -39,7 +44,7 @@ class Meta: 'bracket_min', 'bracket_max', 'room_rank', 'liveness') # Below classes serialise only a specified field (i.e. allocated adjudicators); -# i.e. they act as a a lightweight data update to be broadcast back over the +# i.e. they act as a lightweight data update to be broadcast back over the # websocket in response to websocket actions or updates rather than needing to # construct a complete representation of the debate or panelfrom scratch diff --git a/tabbycat/adjallocation/templates/EditEitherAdjudicatorsSharedMixin.vue b/tabbycat/adjallocation/templates/EditEitherAdjudicatorsSharedMixin.vue index cca95eabb36..1c4f969935d 100644 --- a/tabbycat/adjallocation/templates/EditEitherAdjudicatorsSharedMixin.vue +++ b/tabbycat/adjallocation/templates/EditEitherAdjudicatorsSharedMixin.vue @@ -75,39 +75,45 @@ export default { } const allocationChanges = [] const adjudicatorsSetModified = [dragData.item] - let fromAllocation = this.getAllocation(dragData.assignment) + let fromAllocation = dragData.assignment === undefined + ? this.getAllocation(dragData.panel) : this.getAllocation(dragData.assignment) let toAllocation = this.getAllocation(dropData.assignment) if (dragData.assignment === dropData.assignment) { toAllocation = fromAllocation // If repositioning we don't want two distinct allocations } - // Re-form the assignments - if (fromAllocation !== null) { // Not moving FROM Unused - fromAllocation = this.removeFromAllocation(fromAllocation, dragData.item, dragData.position) - } - if (toAllocation !== null) { // Not moving TO Unused - toAllocation = this.addToAllocation(toAllocation, dragData.item, dropData.position) - // If the adj was moved to a chair position there are now two; need to move or swap - if (toAllocation.C.length > 1) { - const existingChair = toAllocation.C[0] - adjudicatorsSetModified.push(existingChair) - toAllocation = this.removeFromAllocation(toAllocation, existingChair, 'C') - if (dragData.assignment !== null) { - // Dragging from a chair to chair; thus move existing chair to chair in original debate - fromAllocation = this.addToAllocation(fromAllocation, existingChair, dragData.position) + if (dragData.panel) { + // Delete panel + allocationChanges.push({ id: dragData.panel, adjudicators: { C: [], P: [], T: [] } }) + } else { + // Re-form the assignments + if (fromAllocation !== null) { // Not moving FROM Unused + fromAllocation = this.removeFromAllocation(fromAllocation, dragData.item, dragData.position) + } + if (toAllocation !== null) { // Not moving TO Unused + toAllocation = this.addToAllocation(toAllocation, dragData.item, dropData.position) + // If the adj was moved to a chair position there are now two; need to move or swap + if (toAllocation.C.length > 1) { + const existingChair = toAllocation.C[0] + adjudicatorsSetModified.push(existingChair) + toAllocation = this.removeFromAllocation(toAllocation, existingChair, 'C') + if (dragData.assignment !== null) { + // Dragging from a chair to chair; thus move existing chair to chair in original debate + fromAllocation = this.addToAllocation(fromAllocation, existingChair, dragData.position) + } } } - } - // Send results - if (fromAllocation !== null) { - allocationChanges.push({ id: dragData.assignment, adjudicators: fromAllocation }) - } - if (toAllocation !== null && dragData.assignment !== dropData.assignment) { - allocationChanges.push({ id: dropData.assignment, adjudicators: toAllocation }) + // Send results + if (fromAllocation !== null) { + allocationChanges.push({ id: dragData.assignment ?? dragData.panel, adjudicators: fromAllocation }) + } + if (toAllocation !== null && dragData.assignment !== dropData.assignment) { + allocationChanges.push({ id: dropData.assignment, adjudicators: toAllocation }) + } } this.$store.dispatch('updateDebatesOrPanelsAttribute', { adjudicators: allocationChanges }) - this.$store.dispatch('updateAllocableItemModified', adjudicatorsSetModified) + this.$store.dispatch('updateAllocatableItemModified', adjudicatorsSetModified) }, showShard: function () { $('#confirmShardModal').modal('show') diff --git a/tabbycat/adjallocation/templates/preformed_index.html b/tabbycat/adjallocation/templates/preformed_index.html index a395dcb7d7b..333f71c5762 100644 --- a/tabbycat/adjallocation/templates/preformed_index.html +++ b/tabbycat/adjallocation/templates/preformed_index.html @@ -38,7 +38,7 @@ Edit Preformed Panels for {{ round }} {% endblocktrans %} {% roundurl 'edit-panel-adjudicators' r as url %} - {% if r.draw_status == r.STATUS_CONFIRMED %} + {% if r.draw_status == r.Status.CONFIRMED %} {% include "components/item-action.html" with type="dark" %} {% else %} {% include "components/item-action.html" with type="primary" %} diff --git a/tabbycat/adjfeedback/admin.py b/tabbycat/adjfeedback/admin.py index d830e6a856f..0333db710fb 100644 --- a/tabbycat/adjfeedback/admin.py +++ b/tabbycat/adjfeedback/admin.py @@ -1,8 +1,7 @@ from django import forms from django.contrib import admin, messages from django.db.models import Prefetch -from django.utils.translation import gettext, ngettext -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _, ngettext from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin from draw.models import DebateTeam @@ -76,9 +75,11 @@ class AdjudicatorFeedbackAnswerAdmin(ModelAdmin): ) raw_id_fields = ('feedback',) + @admin.display(description=_("Target")) def get_target(self, obj): return obj.feedback.adjudicator.name + @admin.display(description=_("Source")) def get_source(self, obj): if obj.feedback.source_team and obj.feedback.source_adjudicator: return "" @@ -87,16 +88,13 @@ def get_source(self, obj): elif obj.feedback.source_adjudicator: return obj.feedback.source_adjudicator.adjudicator.name + @admin.display(description=_("Feedback timestamp and version")) def get_feedback_description(self, obj): return gettext("%(timestamp)s (version %(version)s)") % { 'timestamp': obj.feedback.timestamp.isoformat(), 'version': obj.feedback.version, } - get_target.short_description = _("Target") - get_source.short_description = _("Source") - get_feedback_description.short_description = _("Feedback timestamp and version") - class BaseAdjudicatorFeedbackAnswerInline(admin.TabularInline): model = None # Must be set by subclasses @@ -154,12 +152,12 @@ def get_queryset(self, request): Prefetch('source_adjudicator__debate__debateteam_set', queryset=DebateTeam.objects.select_related('team')), ) + @admin.display(description=_("Source")) def get_source(self, obj): if obj.source_team and obj.source_adjudicator: return "" else: return obj.source_team or obj.source_adjudicator - get_source.short_description = _("Source") # Dynamically generate inline tables for different answer types inlines = [] diff --git a/tabbycat/adjfeedback/dbutils.py b/tabbycat/adjfeedback/dbutils.py index 8261f47b6e3..1fedf3f2bd2 100644 --- a/tabbycat/adjfeedback/dbutils.py +++ b/tabbycat/adjfeedback/dbutils.py @@ -115,7 +115,7 @@ def add_feedback(debate, submitter_type, user, probability=1.0, discarded=False, continue fb = fm.AdjudicatorFeedback(submitter_type=submitter_type) - if submitter_type == fm.AdjudicatorFeedback.SUBMITTER_TABROOM: + if submitter_type == fm.AdjudicatorFeedback.Submitter.TABROOM: fb.submitter = user fb.adjudicator = adj diff --git a/tabbycat/adjfeedback/forms.py b/tabbycat/adjfeedback/forms.py index 4eaa12aea2e..bedf8f3295c 100644 --- a/tabbycat/adjfeedback/forms.py +++ b/tabbycat/adjfeedback/forms.py @@ -88,7 +88,7 @@ def clean(self, value): # Feedback Fields # ============================================================================== -class BlockChecboxWidget(forms.CheckboxSelectMultiple): +class BlockCheckboxWidget(forms.CheckboxSelectMultiple): template_name = 'spaced_choice_widget.html' @@ -145,7 +145,7 @@ def _make_question_field(self, question): elif question.answer_type == question.ANSWER_TYPE_SINGLE_SELECT: field = OptionalChoiceField(choices=question.choices_for_field) elif question.answer_type == question.ANSWER_TYPE_MULTIPLE_SELECT: - field = forms.MultipleChoiceField(choices=question.choices_for_field, widget=BlockChecboxWidget()) + field = forms.MultipleChoiceField(choices=question.choices_for_field, widget=BlockCheckboxWidget()) field.label = question.text # Required checkbox fields don't really make sense; so override the behaviour? @@ -227,7 +227,7 @@ def adj_choice(adj, debate, pos): # Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" display = _("Submitted - ") if adj.submitted else "" display += _("%(name)s (%(adjpos)s)") % {'name': adj.get_public_name(tournament), 'adjpos': ADJUDICATOR_POSITION_NAMES[pos]} - return (value, display) + return value, display adjfeedback_query = AdjudicatorFeedback.objects.filter( source_adjudicator__adjudicator=source, source_adjudicator__debate=OuterRef('debate'), @@ -236,7 +236,7 @@ def adj_choice(adj, debate, pos): debateadjs = DebateAdjudicator.objects.filter( debate__round__tournament=tournament, adjudicator=source, debate__round__seq__lte=tournament.current_round.seq, - debate__round__stage=Round.STAGE_PRELIMINARY, + debate__round__stage=Round.Stage.PRELIMINARY, ).order_by('-debate__round__seq').select_related('debate__round').prefetch_related( Prefetch( 'debate__debateadjudicator_set', @@ -245,9 +245,9 @@ def adj_choice(adj, debate, pos): ) if include_unreleased_draws: - debateadjs = debateadjs.filter(debate__round__draw_status__in=[Round.STATUS_CONFIRMED, Round.STATUS_RELEASED]) + debateadjs = debateadjs.filter(debate__round__draw_status__in=[Round.Status.CONFIRMED, Round.Status.RELEASED]) else: - debateadjs = debateadjs.filter(debate__round__draw_status=Round.STATUS_RELEASED) + debateadjs = debateadjs.filter(debate__round__draw_status=Round.Status.RELEASED) choices = [(None, _("-- Adjudicators --"))] for debateadj in debateadjs: @@ -301,13 +301,13 @@ def adj_choice(adj, debate, pos): display += _("%(name)s (panellist gave oral as chair rolled)") display %= {'name': adj.get_public_name(tournament), 'adjpos': ADJUDICATOR_POSITION_NAMES[pos]} - return (value, display) + return value, display # Only include non-silent rounds for teams. debates = Debate.objects.filter( debateteam__team=source, round__silent=False, round__seq__lte=tournament.current_round.seq, - round__stage=Round.STAGE_PRELIMINARY, + round__stage=Round.Stage.PRELIMINARY, ).order_by('-round__seq').prefetch_related(Prefetch( 'debateadjudicator_set', queryset=DebateAdjudicator.objects.all().select_related('adjudicator').annotate(submitted=Exists( @@ -319,9 +319,9 @@ def adj_choice(adj, debate, pos): )) if include_unreleased_draws: - debates = debates.filter(round__draw_status__in=[Round.STATUS_CONFIRMED, Round.STATUS_RELEASED]) + debates = debates.filter(round__draw_status__in=[Round.Status.CONFIRMED, Round.Status.RELEASED]) else: - debates = debates.filter(round__draw_status=Round.STATUS_RELEASED) + debates = debates.filter(round__draw_status=Round.Status.RELEASED) choices = [(None, _("-- Adjudicators --"))] for debate in debates: diff --git a/tabbycat/adjfeedback/locale/ar/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ar/LC_MESSAGES/django.po index 24d8f358ee0..7c508eaa18b 100644 --- a/tabbycat/adjfeedback/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:51\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,40 +17,40 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "الدرجات " -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." @@ -61,7 +61,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." @@ -72,7 +72,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." @@ -83,7 +83,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." @@ -94,7 +94,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." @@ -105,399 +105,398 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "التعذية الراجعة من المحكم " -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "رئيس الجلسة" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "فردي " -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "محكم" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "محكم متدرب " #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "نعم " #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "لا" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "هذه الخانة مطلوبة " -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "مجموع الدرجات ( %(min)d= سيء ; %(max)d = أفضل )*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- المحكمين --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "راي الحكم حول التغذية الراجعة " -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "محكم " -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "جولة" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "درجة " -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "الزمن " -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "سؤال " -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "تغذية راجعة " -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "جواب " -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "اجابة الحكم العامة حول التغذية الراجعة" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "اجابة الحكم العامة حول التغذية الراجعة " -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "اجابة الحكم حول التغذية الراجعة " -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "صندوق الاختيارات " -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "نعم/لا" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "عام " -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "نص" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "نص طويل " -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "اختيار واحد" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "اختيار متعدد " -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "دوري" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "الرقم المتسلسل " -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "السؤال المعروض على المشاركين، على سبيل المثال، \"هل توافق على القرار؟\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "اسم " -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "سؤال قصير على سبيل المثال \" موافق على القرار \" " -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "مرجع " -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "من الحكم " -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "سؤال حكم عن الاخر" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "من الفريق " -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "سؤال الفريق " -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "نوع الجواب " -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "مطلوب " -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "أقل قيمة" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "الحد الأدنى للقيمة المسموح بها للحقول الرقمية" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "أعلى قيمة" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "الحد الأعلى للقيمة المسموح بها للحقول الرقمية" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "أختيارات " -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "سؤال المحكم في التغذية الراجعة" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "جواب للتغذية الراجعة من المحكم " -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "التعذية الراجعة من المحكم " -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "التغذيات الراجعة من المحكم " -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "الحكم لم يشاهد هذه المناظرة " -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" @@ -508,220 +507,218 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "أدخل التغذية الراجعة" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "أضف تغذية راجعة من %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "أضف تغذية راجعة " -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "هناك بعض المشاكل في التغذية الراجعة يرجى مراجعتهم " -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "عند إرسال هذا النموذج سيتم تخزين عنوان IP الخاص بك لأغراض التسجيل." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." @@ -732,7 +729,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." @@ -743,29 +740,29 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "تجربة" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "تغذية راجعة " -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "مجال الدرجات " -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." @@ -776,7 +773,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." @@ -787,7 +784,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" @@ -798,11 +795,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "ويتم تخصيص جميع المحكمين الذين يحصلون على درجة عالية بما فيه الكفاية للتصويت، " -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" @@ -813,12 +810,12 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" @@ -829,77 +826,76 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" @@ -910,90 +906,90 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "فريق" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "فريق" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "مؤسسة" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "محكم" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "محكم " -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" @@ -1004,24 +1000,24 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "مؤكد" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..e0d453fd1c1 Binary files /dev/null and b/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..02452917406 --- /dev/null +++ b/tabbycat/adjfeedback/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,966 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" + +#: adjfeedback/admin.py +msgid "Integer scales must have a minimum and maximum" +msgstr "" + +#: adjfeedback/admin.py +msgid "target" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source adjudicator" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source team" +msgstr "" + +#: adjfeedback/admin.py +msgid "Target" +msgstr "" + +#: adjfeedback/admin.py +msgid "Source" +msgstr "" + +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." +msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now ignored." +msgid_plural "%(count)d feedback submissions are now ignored." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now recognized." +msgid_plural "%(count)d feedback submissions are now recognized." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/apps.py +msgid "Adjudicator Feedback" +msgstr "" + +#: adjfeedback/forms.py +msgid "chair" +msgstr "" + +#: adjfeedback/forms.py +msgid "solo" +msgstr "" + +#: adjfeedback/forms.py +msgid "panellist" +msgstr "" + +#: adjfeedback/forms.py +msgid "trainee" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "This field is required." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "Overall score (%(min)d=worst; %(max)d=best)*" +msgstr "" + +#: adjfeedback/forms.py +msgid "Ignored" +msgstr "" + +#. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" +#: adjfeedback/forms.py +msgid "Submitted - " +msgstr "" + +#. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (%(adjpos)s)" +msgstr "" + +#: adjfeedback/forms.py +msgid "-- Adjudicators --" +msgstr "" + +#: adjfeedback/forms.py +msgid "Adjudicator this feedback is about" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (chair gave oral)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (panellist gave oral as chair rolled)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) didn't have a score" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) had too many columns" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" +msgstr "" + +#: adjfeedback/forms.py +msgid "There were no scores to import." +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator" +msgstr "" + +#: adjfeedback/models.py +msgid "round" +msgstr "" + +#: adjfeedback/models.py +msgid "score" +msgstr "" + +#: adjfeedback/models.py +msgid "timestamp" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score history" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score histories" +msgstr "" + +#: adjfeedback/models.py +msgid "question" +msgstr "" + +#: adjfeedback/models.py +msgid "feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py +msgid "checkbox" +msgstr "" + +#: adjfeedback/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer (textbox)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer scale" +msgstr "" + +#: adjfeedback/models.py +msgid "float" +msgstr "" + +#: adjfeedback/models.py +msgid "text" +msgstr "" + +#: adjfeedback/models.py +msgid "long text" +msgstr "" + +#: adjfeedback/models.py +msgid "select one" +msgstr "" + +#: adjfeedback/models.py +msgid "select multiple" +msgstr "" + +#: adjfeedback/models.py +msgid "tournament" +msgstr "" + +#: adjfeedback/models.py +msgid "sequence number" +msgstr "" + +#: adjfeedback/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: adjfeedback/models.py +msgid "name" +msgstr "" + +#: adjfeedback/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "reference" +msgstr "" + +#: adjfeedback/models.py +msgid "Code-compatible reference, e.g., \"agree_with_decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "from adjudicator" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicators should be asked this question (about other adjudicators)" +msgstr "" + +#: adjfeedback/models.py +msgid "from team" +msgstr "" + +#: adjfeedback/models.py +msgid "Teams should be asked this question" +msgstr "" + +#: adjfeedback/models.py +msgid "answer type" +msgstr "" + +#: adjfeedback/models.py +msgid "required" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: adjfeedback/models.py +msgid "minimum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "maximum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "choices" +msgstr "" + +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback question" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback questions" +msgstr "" + +#: adjfeedback/models.py adjfeedback/views.py +msgid "ignored" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether the feedback should affect the adjudicator's score" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedbacks" +msgstr "" + +#: adjfeedback/models.py +msgid "Either the source adjudicator or source team wasn't specified." +msgstr "" + +#: adjfeedback/models.py +msgid "There was both a source adjudicator and a source team." +msgstr "" + +#: adjfeedback/models.py +msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicator did not see this debate." +msgstr "" + +#: adjfeedback/tables.py +msgid "Whether the adj is marked as breaking (click to mark)" +msgstr "" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py +msgid "Current weighted score" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's current rating." +msgstr "" + +#: adjfeedback/tables.py +msgid "Base score result" +msgstr "" + +#: adjfeedback/tables.py +msgid "Click to edit base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "Assigned base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The current difference between an adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The difference between this adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores" +msgstr "" + +#: adjfeedback/tables.py +msgid "Feedback Per Round" +msgstr "" + +#: adjfeedback/tables.py +msgid "Hover over the data points to show the average score received in that round" +msgstr "" + +#: adjfeedback/tables.py +#, python-format +msgid "View %(count)s
feedback" +msgid_plural "View %(count)s
feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/tables.py +msgid "Unsubmitted feedback ballots" +msgstr "" + +#: adjfeedback/tables.py +msgid "View Missing Feedback" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +msgid "Who is the feedback from?" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html +msgid "Enter Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html +#, python-format +msgid "Add Feedback from %(name)s" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html +msgid "Add Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are some problems with this feedback submission. Please review and correct them." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Overview" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Latest" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Unsubmitted" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Important" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Comments" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Source" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Target" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Bulk Update Scores" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "Feedback %(source_type)s %(source_name)s" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't submitted any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't received any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The score given in this piece of feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(round)s %(score)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "On %(adjudicator)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Received as %(as_type)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Base %(base)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (their %(relationship)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (%(relationship)s from %(side)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "From unknown" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(time)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-ignore" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignore" +msgstr "" + +#: adjfeedback/templates/feedback_cards_list.html +msgid "No feedback has been submitted yet" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "%(c_breaking)s marked as breaking" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Base" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Feedback" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Score Ratio" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." +msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." +msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_chairs)s chair" +msgid_plural "%(c_chairs)s chairs" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_panellists)s panellist" +msgid_plural "%(c_panellists)s panellists" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_trainees)s trainee" +msgid_plural "%(c_trainees)s trainees" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Change Base Score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Base score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Save Base Score" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "Who are you?" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "click your name or your team on this list" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgctxt "page title" +msgid "Update Adjudicator Scores" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +#, python-format +msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "The adjudicators' names must match their names in the tab system exactly." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Submit" +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Overview" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback on Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(count)d feedback" +msgid_plural "%(count)d feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +msgid "Feedbacks" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "From Teams" +msgstr "" + +#: adjfeedback/views.py +msgid "From Adjudicators" +msgstr "" + +#: adjfeedback/views.py +msgid "Latest Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(30 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Only Comments" +msgstr "" + +#: adjfeedback/views.py +msgid "(250 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Important Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(rating was much higher/lower than expected)" +msgstr "" + +#: adjfeedback/views.py +msgid "A Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Institution" +msgstr "" + +#: adjfeedback/views.py +msgid "An Adjudicator" +msgstr "" + +#: adjfeedback/views.py +msgid "Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback from %(source)s on %(target)s added." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" +msgstr "" + +#: adjfeedback/views.py +msgid "Whoops! The value isn't a valid base score." +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Progress" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" +msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." +msgstr "" + +#: adjfeedback/views.py +msgid "confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-ignored" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Updated base score for %(count)d adjudicator." +msgid_plural "Updated base scores for %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/adjfeedback/locale/bn/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/bn/LC_MESSAGES/django.po index b17989bd3bc..43af6bbdc72 100644 --- a/tabbycat/adjfeedback/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:49\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,40 +17,40 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "পূর্ণসংখ্যার স্কেলের অবশ্যই একটি সর্বোচ্চ এবং সর্বনিম্ন মান থাকবে" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "লক্ষ্য" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "সূত্র/ উৎস বিচারক" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "সূত্র দল" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "লক্ষ্য" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "সূত্র/উৎস" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." @@ -58,911 +58,907 @@ msgstr[0] "1 প্রতিক্রিয়া উপস্হাপন স "মনে রাখবেন যে ইহা অন্যান্য উপস্হাপন সমূহের অনিশ্চিত আকারে চিহ্নিত হওয়ার কারণ হিসেবে দাড়িয়েছিল." msgstr[1] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" msgstr[1] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "বিচারক প্রতিক্রিয়া" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "চেয়ার" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "একক" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "প্যানেলিস্ট" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "নবিশ বিচারক" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "সর্বোপরি স্কোর (%(min)d=worst;%(max)d=best)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "উপেক্ষিত" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "উপস্থাপিত - " #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "বিচারক মন্ডলী" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "বিচারক এই প্রতিক্রিয়া সর্ম্পকে" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s ( চেয়ার দেওয়া হয়েছে মৌখিক ভাবে)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "%(name)s (প্যানেলিস্ট দেওয়া হয়েছে মৌখিক হিসেবে চেয়ার ঘূর্নিত হওয়ার পর)" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "এই লাইন ( %(adjudicator)s) কোনো স্কোর ছিল না" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "এই লাইনটি (জন্য %(adjudicator)s) অনেক বেশি তালিকা ছিল" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "বিভিন্ন বিচারক মন্ডলী রয়েছে \"%(adjudicator)s\" নামক, সুতরাং আপনি তাদের ফলাফল হালনাগাদ এর ক্ষেত্রে স্তূপ আমদানিকারক ব্যবহার করতে পারবেন না. অনুগ্রহ করে প্রতিক্রিয়ার ক্ষেত্রে ইহাই করুন পরিদর্শন/ ওভারভিউ পেজের পরিবর্তে." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "এই প্রতিযোগিতায় কোন বিচারক নেই \"%(adjudicator)s\" নামের সাথে" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "ফলাফলের জন্য %(adjudicator)s, \"%(score)s\", কোন সংখ্যা নয়" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "আমদানির জন্য কোন ফলাফল ছিল না." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "বিচারক" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "পর্ব" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "স্কোর/ফলাফল" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "টাইমস্ট্যাম্প" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "বিচারক ভিত্তিক ফলাফল ইতিবৃত্ত" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "বিচারক ভিত্তিক ফলাফল ইতিবৃত্ত সমূহ" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "প্রশ্ন" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "প্রতিক্রিয়া" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "উত্তর" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "বিচারক প্রতিক্রিয়া বুলিয়ান উত্তর" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "বিচারক প্রতিক্রিয়া বুলিয়ান উত্তর সমূহ" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "বিচারক প্রতিক্রিয়া পূর্ণসংখ্যক উত্তর" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "বিচারক প্রতিক্রিয়া পূর্ণসংখ্যক উত্তর সমূহ" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "বিচারক প্রতিক্রিয়া ভাসমান উত্তর" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "বিচারক প্রতিক্রিয়া ভাসমান উত্তর সমূহ" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "বিচারক প্রতিক্রিয়া স্ট্রিং উত্তর" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "বিচারক প্রতিক্রিয়া স্ট্রিং উত্তর সমূহ" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "চেকবক্স" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "হ্যাঁ/না (নামানো)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "পূর্ণসংখ্যা (টেক্সট বক্স)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "পূর্ণসংখ্যা মাত্রা" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "ডুবন্ত/ ভাসা" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "মূলপাঠ/পাঠ্য" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "দীর্ঘ পাঠ্য" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "একটি বাছাই করুন" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "বহু বাছাই করুন" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "প্রতিযোগিতা" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "ক্রম সংখ্যা" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "অংশগ্রহণকারীদের কাছে উক্ত প্রশ্নটি উত্থাপিত হয়েছে, e.g.,\"আপনি কি সিদ্ধান্তটির সাথে একমত পোষণ করেছেন?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "নাম" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "একটি সংক্ষিপ্ত নাম উক্ত প্রশ্নটির জন্য, e.g.,\"সিদ্ধান্তের সাথে একমত পোষণ করুন\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "উল্লেখ/ প্রসঙ্গ" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "কোড সামঞ্জস্ কৃত উল্লেখ, e.g., \" সিদ্ধান্তের সাথে একমত পোষণ করুন\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "বিচারক হতে" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "বিচারক মন্ডলীকে উক্ত প্রশ্নটি জিগ্গাসা করা হইবে (অন্যান্য বিচারক সম্পর্কে)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "দল হতে" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "দল সমূহকে উক্ত প্রশ্নটি জিগ্গাসা করা উচিত" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "উত্তর ধরন" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "অপরিহার্য" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "নুন্যতম দাম" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "সংখ্যাযুক্ত ক্ষেত্রগুলির জন্য সর্বনিম্ন অনুমোদিত মান (পাঠ্য বা বুলিয়ান ক্ষেত্রগুলির জন্য উপেক্ষা করা)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "সর্বোচ্চ মান" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "সংখ্যাযুক্ত ক্ষেত্রগুলির জন্য সর্বোচ্চ অনুমোদিত মান (পাঠ্য বা বুলিয়ান ক্ষেত্রগুলির জন্য উপেক্ষা করা)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "মূল" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "প্রতিক্রিয়া" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "মূল স্কোর" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "দল" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "প্রতিষ্ঠান" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "বিচারক" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..7494ef44007 Binary files /dev/null and b/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..78048e685f1 --- /dev/null +++ b/tabbycat/adjfeedback/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,966 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" + +#: adjfeedback/admin.py +msgid "Integer scales must have a minimum and maximum" +msgstr "" + +#: adjfeedback/admin.py +msgid "target" +msgstr "objectiu" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source adjudicator" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source team" +msgstr "" + +#: adjfeedback/admin.py +msgid "Target" +msgstr "Objectiu" + +#: adjfeedback/admin.py +msgid "Source" +msgstr "Font" + +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s (versió %(version)s)" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." +msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now ignored." +msgid_plural "%(count)d feedback submissions are now ignored." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now recognized." +msgid_plural "%(count)d feedback submissions are now recognized." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/apps.py +msgid "Adjudicator Feedback" +msgstr "" + +#: adjfeedback/forms.py +msgid "chair" +msgstr "principal" + +#: adjfeedback/forms.py +msgid "solo" +msgstr "" + +#: adjfeedback/forms.py +msgid "panellist" +msgstr "panelista" + +#: adjfeedback/forms.py +msgid "trainee" +msgstr "jutge aprenent" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "This field is required." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "Overall score (%(min)d=worst; %(max)d=best)*" +msgstr "" + +#: adjfeedback/forms.py +msgid "Ignored" +msgstr "Ignorat" + +#. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" +#: adjfeedback/forms.py +msgid "Submitted - " +msgstr "Presentat " + +#. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (%(adjpos)s)" +msgstr "%(name)s (%(adjpos)s)" + +#: adjfeedback/forms.py +msgid "-- Adjudicators --" +msgstr "-- Grup de Jutges --" + +#: adjfeedback/forms.py +msgid "Adjudicator this feedback is about" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (chair gave oral)" +msgstr "%(name)s (principal va donar retroalimentació)" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (panellist gave oral as chair rolled)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) didn't have a score" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) had too many columns" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" +msgstr "" + +#: adjfeedback/forms.py +msgid "There were no scores to import." +msgstr "No hi va haver puntuacions per importar." + +#: adjfeedback/models.py +msgid "adjudicator" +msgstr "jutges" + +#: adjfeedback/models.py +msgid "round" +msgstr "" + +#: adjfeedback/models.py +msgid "score" +msgstr "puntuació" + +#: adjfeedback/models.py +msgid "timestamp" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score history" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score histories" +msgstr "" + +#: adjfeedback/models.py +msgid "question" +msgstr "pregunta" + +#: adjfeedback/models.py +msgid "feedback" +msgstr "retroalimentació" + +#: adjfeedback/models.py +msgid "answer" +msgstr "resposta" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py +msgid "checkbox" +msgstr "" + +#: adjfeedback/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer (textbox)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer scale" +msgstr "" + +#: adjfeedback/models.py +msgid "float" +msgstr "" + +#: adjfeedback/models.py +msgid "text" +msgstr "text" + +#: adjfeedback/models.py +msgid "long text" +msgstr "text llarg" + +#: adjfeedback/models.py +msgid "select one" +msgstr "selecciona una" + +#: adjfeedback/models.py +msgid "select multiple" +msgstr "esculli diversos" + +#: adjfeedback/models.py +msgid "tournament" +msgstr "torneig" + +#: adjfeedback/models.py +msgid "sequence number" +msgstr "número de seqüència" + +#: adjfeedback/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: adjfeedback/models.py +msgid "name" +msgstr "nom" + +#: adjfeedback/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "reference" +msgstr "referència" + +#: adjfeedback/models.py +msgid "Code-compatible reference, e.g., \"agree_with_decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "from adjudicator" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicators should be asked this question (about other adjudicators)" +msgstr "" + +#: adjfeedback/models.py +msgid "from team" +msgstr "" + +#: adjfeedback/models.py +msgid "Teams should be asked this question" +msgstr "" + +#: adjfeedback/models.py +msgid "answer type" +msgstr "tipus de resposta" + +#: adjfeedback/models.py +msgid "required" +msgstr "necessari" + +#: adjfeedback/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: adjfeedback/models.py +msgid "minimum value" +msgstr "valor mínim" + +#: adjfeedback/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "maximum value" +msgstr "valor màxim" + +#: adjfeedback/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "choices" +msgstr "opcions" + +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback question" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback questions" +msgstr "" + +#: adjfeedback/models.py adjfeedback/views.py +msgid "ignored" +msgstr "ignorat" + +#: adjfeedback/models.py +msgid "Whether the feedback should affect the adjudicator's score" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback" +msgstr "retroalimentació del jutge" + +#: adjfeedback/models.py +msgid "adjudicator feedbacks" +msgstr "retroalimentacions del jutge" + +#: adjfeedback/models.py +msgid "Either the source adjudicator or source team wasn't specified." +msgstr "" + +#: adjfeedback/models.py +msgid "There was both a source adjudicator and a source team." +msgstr "" + +#: adjfeedback/models.py +msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicator did not see this debate." +msgstr "" + +#: adjfeedback/tables.py +msgid "Whether the adj is marked as breaking (click to mark)" +msgstr "" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "N/D" + +#: adjfeedback/tables.py +msgid "Current weighted score" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's current rating." +msgstr "" + +#: adjfeedback/tables.py +msgid "Base score result" +msgstr "" + +#: adjfeedback/tables.py +msgid "Click to edit base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "Assigned base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The current difference between an adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The difference between this adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores" +msgstr "" + +#: adjfeedback/tables.py +msgid "Feedback Per Round" +msgstr "" + +#: adjfeedback/tables.py +msgid "Hover over the data points to show the average score received in that round" +msgstr "" + +#: adjfeedback/tables.py +#, python-format +msgid "View %(count)s
feedback" +msgid_plural "View %(count)s
feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/tables.py +msgid "Unsubmitted feedback ballots" +msgstr "" + +#: adjfeedback/tables.py +msgid "View Missing Feedback" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +msgid "Who is the feedback from?" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html +msgid "Enter Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html +#, python-format +msgid "Add Feedback from %(name)s" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html +msgid "Add Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are some problems with this feedback submission. Please review and correct them." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Overview" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Latest" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Unsubmitted" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Important" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Comments" +msgstr "Comentaris" + +#: adjfeedback/templates/feedback_base.html +msgid "By Source" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Target" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Bulk Update Scores" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "Feedback %(source_type)s %(source_name)s" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't submitted any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't received any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The score given in this piece of feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(round)s %(score)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "On %(adjudicator)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Received as %(as_type)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Base %(base)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (their %(relationship)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (%(relationship)s from %(side)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "From unknown" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(time)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-ignore" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignore" +msgstr "" + +#: adjfeedback/templates/feedback_cards_list.html +msgid "No feedback has been submitted yet" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "%(c_breaking)s marked as breaking" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Base" +msgstr "Base" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Feedback" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Score Ratio" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." +msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." +msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_chairs)s chair" +msgid_plural "%(c_chairs)s chairs" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_panellists)s panellist" +msgid_plural "%(c_panellists)s panellists" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_trainees)s trainee" +msgid_plural "%(c_trainees)s trainees" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Change Base Score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Base score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Save Base Score" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "Who are you?" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "click your name or your team on this list" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgctxt "page title" +msgid "Update Adjudicator Scores" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +#, python-format +msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "The adjudicators' names must match their names in the tab system exactly." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Submit" +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Overview" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback on Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(count)d feedback" +msgid_plural "%(count)d feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +msgid "Feedbacks" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "From Teams" +msgstr "" + +#: adjfeedback/views.py +msgid "From Adjudicators" +msgstr "" + +#: adjfeedback/views.py +msgid "Latest Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(30 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Only Comments" +msgstr "" + +#: adjfeedback/views.py +msgid "(250 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Important Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(rating was much higher/lower than expected)" +msgstr "" + +#: adjfeedback/views.py +msgid "A Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Team" +msgstr "Equip" + +#: adjfeedback/views.py +msgid "Institution" +msgstr "" + +#: adjfeedback/views.py +msgid "An Adjudicator" +msgstr "" + +#: adjfeedback/views.py +msgid "Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback from %(source)s on %(target)s added." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" +msgstr "" + +#: adjfeedback/views.py +msgid "Whoops! The value isn't a valid base score." +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Progress" +msgstr "Progrés en les retroalimentacions" + +#: adjfeedback/views.py +#, python-format +msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" +msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." +msgstr "" + +#: adjfeedback/views.py +msgid "confirmed" +msgstr "confirmat" + +#: adjfeedback/views.py +msgid "un-confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-ignored" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Updated base score for %(count)d adjudicator." +msgid_plural "Updated base scores for %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..0831e2eadd0 Binary files /dev/null and b/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..fdcafbf3ff5 --- /dev/null +++ b/tabbycat/adjfeedback/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,998 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" + +#: adjfeedback/admin.py +msgid "Integer scales must have a minimum and maximum" +msgstr "" + +#: adjfeedback/admin.py +msgid "target" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source adjudicator" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source team" +msgstr "" + +#: adjfeedback/admin.py +msgid "Target" +msgstr "" + +#: adjfeedback/admin.py +msgid "Source" +msgstr "" + +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." +msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now ignored." +msgid_plural "%(count)d feedback submissions are now ignored." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now recognized." +msgid_plural "%(count)d feedback submissions are now recognized." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/apps.py +msgid "Adjudicator Feedback" +msgstr "" + +#: adjfeedback/forms.py +msgid "chair" +msgstr "" + +#: adjfeedback/forms.py +msgid "solo" +msgstr "" + +#: adjfeedback/forms.py +msgid "panellist" +msgstr "" + +#: adjfeedback/forms.py +msgid "trainee" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "This field is required." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "Overall score (%(min)d=worst; %(max)d=best)*" +msgstr "" + +#: adjfeedback/forms.py +msgid "Ignored" +msgstr "" + +#. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" +#: adjfeedback/forms.py +msgid "Submitted - " +msgstr "" + +#. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (%(adjpos)s)" +msgstr "" + +#: adjfeedback/forms.py +msgid "-- Adjudicators --" +msgstr "" + +#: adjfeedback/forms.py +msgid "Adjudicator this feedback is about" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (chair gave oral)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (panellist gave oral as chair rolled)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) didn't have a score" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) had too many columns" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" +msgstr "" + +#: adjfeedback/forms.py +msgid "There were no scores to import." +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator" +msgstr "rozhodčí" + +#: adjfeedback/models.py +msgid "round" +msgstr "" + +#: adjfeedback/models.py +msgid "score" +msgstr "" + +#: adjfeedback/models.py +msgid "timestamp" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score history" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score histories" +msgstr "" + +#: adjfeedback/models.py +msgid "question" +msgstr "" + +#: adjfeedback/models.py +msgid "feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py +msgid "checkbox" +msgstr "" + +#: adjfeedback/models.py +msgid "yes/no (dropdown)" +msgstr "ano/ne (dolů)" + +#: adjfeedback/models.py +msgid "integer (textbox)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer scale" +msgstr "" + +#: adjfeedback/models.py +msgid "float" +msgstr "" + +#: adjfeedback/models.py +msgid "text" +msgstr "" + +#: adjfeedback/models.py +msgid "long text" +msgstr "" + +#: adjfeedback/models.py +msgid "select one" +msgstr "" + +#: adjfeedback/models.py +msgid "select multiple" +msgstr "" + +#: adjfeedback/models.py +msgid "tournament" +msgstr "turnaje" + +#: adjfeedback/models.py +msgid "sequence number" +msgstr "" + +#: adjfeedback/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: adjfeedback/models.py +msgid "name" +msgstr "" + +#: adjfeedback/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "reference" +msgstr "" + +#: adjfeedback/models.py +msgid "Code-compatible reference, e.g., \"agree_with_decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "from adjudicator" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicators should be asked this question (about other adjudicators)" +msgstr "" + +#: adjfeedback/models.py +msgid "from team" +msgstr "" + +#: adjfeedback/models.py +msgid "Teams should be asked this question" +msgstr "" + +#: adjfeedback/models.py +msgid "answer type" +msgstr "" + +#: adjfeedback/models.py +msgid "required" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: adjfeedback/models.py +msgid "minimum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "maximum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "choices" +msgstr "" + +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback question" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback questions" +msgstr "" + +#: adjfeedback/models.py adjfeedback/views.py +msgid "ignored" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether the feedback should affect the adjudicator's score" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedbacks" +msgstr "" + +#: adjfeedback/models.py +msgid "Either the source adjudicator or source team wasn't specified." +msgstr "" + +#: adjfeedback/models.py +msgid "There was both a source adjudicator and a source team." +msgstr "" + +#: adjfeedback/models.py +msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicator did not see this debate." +msgstr "" + +#: adjfeedback/tables.py +msgid "Whether the adj is marked as breaking (click to mark)" +msgstr "" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py +msgid "Current weighted score" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's current rating." +msgstr "" + +#: adjfeedback/tables.py +msgid "Base score result" +msgstr "" + +#: adjfeedback/tables.py +msgid "Click to edit base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "Assigned base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The current difference between an adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The difference between this adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores" +msgstr "" + +#: adjfeedback/tables.py +msgid "Feedback Per Round" +msgstr "" + +#: adjfeedback/tables.py +msgid "Hover over the data points to show the average score received in that round" +msgstr "" + +#: adjfeedback/tables.py +#, python-format +msgid "View %(count)s
feedback" +msgid_plural "View %(count)s
feedbacks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/tables.py +msgid "Unsubmitted feedback ballots" +msgstr "" + +#: adjfeedback/tables.py +msgid "View Missing Feedback" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +msgid "Who is the feedback from?" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html +msgid "Enter Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html +#, python-format +msgid "Add Feedback from %(name)s" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html +msgid "Add Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are some problems with this feedback submission. Please review and correct them." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Overview" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Latest" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Unsubmitted" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Important" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Comments" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Source" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Target" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Bulk Update Scores" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "Feedback %(source_type)s %(source_name)s" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't submitted any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't received any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The score given in this piece of feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(round)s %(score)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "On %(adjudicator)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Received as %(as_type)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Base %(base)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (their %(relationship)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (%(relationship)s from %(side)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "From unknown" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(time)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-ignore" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignore" +msgstr "" + +#: adjfeedback/templates/feedback_cards_list.html +msgid "No feedback has been submitted yet" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "%(c_breaking)s marked as breaking" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Base" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Feedback" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Score Ratio" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." +msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." +msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_chairs)s chair" +msgid_plural "%(c_chairs)s chairs" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_panellists)s panellist" +msgid_plural "%(c_panellists)s panellists" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_trainees)s trainee" +msgid_plural "%(c_trainees)s trainees" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Change Base Score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Base score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Save Base Score" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "Who are you?" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "click your name or your team on this list" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgctxt "page title" +msgid "Update Adjudicator Scores" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +#, python-format +msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "The adjudicators' names must match their names in the tab system exactly." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Submit" +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Overview" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback on Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(count)d feedback" +msgid_plural "%(count)d feedbacks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/views.py +msgid "Feedbacks" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "From Teams" +msgstr "" + +#: adjfeedback/views.py +msgid "From Adjudicators" +msgstr "" + +#: adjfeedback/views.py +msgid "Latest Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(30 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Only Comments" +msgstr "" + +#: adjfeedback/views.py +msgid "(250 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Important Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(rating was much higher/lower than expected)" +msgstr "" + +#: adjfeedback/views.py +msgid "A Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Team" +msgstr "Tým" + +#: adjfeedback/views.py +msgid "Institution" +msgstr "" + +#: adjfeedback/views.py +msgid "An Adjudicator" +msgstr "" + +#: adjfeedback/views.py +msgid "Adjudicator" +msgstr "Rozhodčí" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback from %(source)s on %(target)s added." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" +msgstr "" + +#: adjfeedback/views.py +msgid "Whoops! The value isn't a valid base score." +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Progress" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" +msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." +msgstr "" + +#: adjfeedback/views.py +msgid "confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-ignored" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Updated base score for %(count)d adjudicator." +msgid_plural "Updated base scores for %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + diff --git a/tabbycat/adjfeedback/locale/de/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/de/LC_MESSAGES/django.po index 996b36f5550..ac03b21c284 100644 --- a/tabbycat/adjfeedback/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,934 +12,952 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:43 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:68 adjfeedback/admin.py:126 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:69 adjfeedback/admin.py:127 adjfeedback/models.py:220 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:70 adjfeedback/admin.py:128 adjfeedback/models.py:222 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:84 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:85 adjfeedback/admin.py:149 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:167 +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:179 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:202 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:212 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" msgstr[1] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" -msgstr "JurorIn-Feedback" +msgstr "Jurorenfeedback" -#: adjfeedback/forms.py:25 +#: adjfeedback/forms.py msgid "chair" msgstr "Hauptjuror" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "panellist" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "trainee" -msgstr "Jurierlehrling" +msgstr "Trainee" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:56 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:58 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:73 adjfeedback/forms.py:82 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:173 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:185 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:244 adjfeedback/forms.py:307 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:245 adjfeedback/forms.py:312 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:268 adjfeedback/forms.py:342 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Juroren --" -#: adjfeedback/forms.py:285 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:309 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:315 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:317 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:408 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:413 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:426 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:432 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:440 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:455 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:12 adjfeedback/models.py:215 +#: adjfeedback/models.py msgid "adjudicator" msgstr "Juror" -#: adjfeedback/models.py:15 +#: adjfeedback/models.py msgid "round" msgstr "runde" -#: adjfeedback/models.py:16 adjfeedback/models.py:216 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:17 +#: adjfeedback/models.py msgid "timestamp" msgstr "" -#: adjfeedback/models.py:20 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:29 +#: adjfeedback/models.py msgid "question" msgstr "Frage" -#: adjfeedback/models.py:31 +#: adjfeedback/models.py msgid "feedback" msgstr "Feedback" -#: adjfeedback/models.py:42 adjfeedback/models.py:50 adjfeedback/models.py:58 -#: adjfeedback/models.py:66 +#: adjfeedback/models.py msgid "answer" msgstr "Antwort" -#: adjfeedback/models.py:45 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:46 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:53 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:54 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:61 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:62 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:70 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:89 +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:90 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:91 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:92 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:93 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:94 adjfeedback/models.py:127 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:95 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:96 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:97 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:123 +#: adjfeedback/models.py msgid "tournament" msgstr "Turnier" -#: adjfeedback/models.py:125 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:128 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:130 +#: adjfeedback/models.py msgid "name" msgstr "name" -#: adjfeedback/models.py:131 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:133 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:134 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:137 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:138 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:140 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:144 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "required" -msgstr "benötigt" +msgstr "verpflichtend" -#: adjfeedback/models.py:147 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:150 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:153 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:160 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:161 -msgid "Permissible choices for select one/multiple fields, separated by '//' (ignored for other fields)" +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:166 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:225 adjfeedback/views.py:761 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:226 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:230 +#: adjfeedback/models.py msgid "adjudicator feedback" -msgstr "JurorIn-Feedback" +msgstr "jurorenfeedback" -#: adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator feedbacks" -msgstr "JurorIn-Feedbacks" +msgstr "jurorenfeedback" -#: adjfeedback/models.py:278 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:281 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:283 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:285 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:83 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:92 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:96 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:105 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:124 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:147 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:171 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" -msgstr "Feedback übermitteln" +msgstr "Feedback abschicken" -#: adjfeedback/templates/enter_feedback.html:9 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format -msgid "Add Feedback from %(source_name)s" +msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Überblick" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" -msgstr "" +msgstr "Freitextfeld" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "\n" -" On %(adjudicator)s\n" -" " +msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:85 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:90 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:100 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html #, python-format -msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit on trainees." +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:20 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:31 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Feedback" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s Hauptjuror" msgstr[1] "%(c_chairs)s Hauptjuroren" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" -msgstr[0] "%(c_trainees)s Jurierlehrling" -msgstr[1] "%(c_trainees)s Jurierlehrlingen" +msgstr[0] "%(c_trainees)s Trainee" +msgstr[1] "%(c_trainees)s Trainees" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 -#, python-format -msgid "Add feedback from %(name)s" -msgstr "" - -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" -msgstr "Übermitteln" +msgstr "Abschicken" -#: adjfeedback/views.py:117 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:141 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:152 adjfeedback/views.py:176 adjfeedback/views.py:191 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:155 adjfeedback/views.py:181 adjfeedback/views.py:196 +#: adjfeedback/views.py msgid "Feedbacks" -msgstr "Feedbacks" +msgstr "Feedback" -#: adjfeedback/views.py:162 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:170 adjfeedback/views.py:706 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:185 adjfeedback/views.py:700 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:270 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:281 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:293 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:361 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:366 +#: adjfeedback/views.py msgid "Team" msgstr "Team" -#: adjfeedback/views.py:373 adjfeedback/views.py:392 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:378 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:385 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Juror" -#: adjfeedback/views.py:512 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:542 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:621 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:644 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:671 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:692 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:737 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:761 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:797 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po index 604a7c9a7f6..60f91492167 100644 --- a/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/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: 2021-04-02 01:40-0300\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,951 +17,947 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" msgstr[1] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/es/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/es/LC_MESSAGES/django.po index 6b67893bf53..b05d48669e7 100644 --- a/tabbycat/adjfeedback/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:50\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,951 +17,947 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "juez fuente" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "equipo fuente" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Fuente" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] " 1 envío de retroalimentación fue marcado como confirmado. Note que esto puede haber causado que otros envíos de retroalimentación se marquen como no confirmados." msgstr[1] "%(count)d envíos de retroalimentación fueron marcados como confirmados. Note que esto puede haber causado que otros envíos de retroalimentación se marquen como no confirmados." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "1 envío de retroalimentación no fue marcado como confirmado, probablemente porque otros envíos de retroalimentación que entran en conflicto con este también fueron marcados como confirmados." msgstr[1] "%(count)d envíos de retroalimentación no fueron marcados como confirmados, probablemente porque otros envíos de retroalimentación que entran en conflicto con ellos también fueron marcados como confirmados." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "1 envío de retroalimentación fue marcado como no confirmado." msgstr[1] "%(count)d envíos de retroalimentación fueron marcados como no confirmados." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" msgstr[1] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Retroalimentación del Juez" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "principal" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "panelista" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "sombra" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "Sí" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "Este campo es necesario." -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Puntaje general (%(min)d=peor;%(max)d=mejor)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Jueces --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Juez, esta retroalimentación es sobre (?)" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s(el juez principal dio retroalimentación oral)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "juez" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "ronda" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "puntaje" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "marca de tiempo (?)" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "pregunta" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "retroalimentación" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "respuesta" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "retroalimentación del juez es respuesta boolean" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "casilla de marcar" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "si/no (desplegable)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "entero (caja de texto)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "escala de enteros" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "texto" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "texto largo" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "escoja uno" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "escoja varios" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "torneo" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "número de secuencia" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "La pregunta mostrada a los participantes, ej., \"Está de acuerdo con la decisión?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "nombre" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Un nombre corto para la pregunta, ej., \"acuerdo con decisión\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "referencia" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Referencia compatible con el código, ej., \"acuerdo_con_decision\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "del juez" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "A los jueces debería preguntárseles esto (sobre otros jueces)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "del equipo" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "A los equipos debería preguntárseles esto" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "tipo de respuesta" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "necesario" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "valor mínimo" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valor mínimo permitido para campos numéricos (ignorar para campos de texto o boleanos)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "valor máximo" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valor máximo permitido para campos numéricos (ignorar para campos de texto o boleanos)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "elecciones" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "pregunta de retroalimentación del juez" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "preguntas de retroalimentación del juez" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "retroalimentación del juez" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "retroalimentaciones del juez" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "Ni el juez fuente ni el equpo fuente fueron especificados. " -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "Hay un juez fuente y un equipo fuente." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "El juez no vio este debate." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Hay algunos problemas con el envío de esta retroalimentación. Por favor revisela y corrijalos." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)sno ha enviado ninguna retroalimentación aún." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s ha recibido ninguna retroalimentación aún." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "La configuración de retroalimentación actual permite y espera solo que jueces principales envíen retroalimentación (sobre sus panelistas y trainees)" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "La configuración de retroalimentación actual permite y espera que todos los jueces (incluyendo trainees) envíen retroalimentación sobre todos los miembros del panel (incluyendo trainees)." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "Hay %(nadjs_outside_range)s juez con un puntaje fuera del rango permitido para jueces, el cual actualmente está entre %(min_score)s y %(max_score)s. Esto puede causar que la ubicación automática de jueces se comporte de formas inesperadas. Si quisiera usar un rango de puntajes más amplio, puede configurarlo en la sección de configuración de retroalimentación." msgstr[1] "Hay %(nadjs_outside_range)s jueces con puntajes fuera del rango permitido para jueces, el cual actualmente está entre %(min_score)s y %(max_score)s. Esto puede causar que la ubicación automática de jueces se comporte de formas inesperadas. Si quisiera usar un rango de puntajes más amplio, puede configurarlo en la sección de configuración de retroalimentación." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "%(count)s juez tiene, actualmente, un puntaje igual o mayor a %(min)s y menor a %(max)s. Eso es %(percent)s%% del grupo de jueces." msgstr[1] "%(count)s jueces tienen, actualmente, un puntaje igual o mayor a %(min)s y menor a %(max)s. Eso es %(percent)s%% del grupo de jueces." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "Distribución del Puntaje (el rango es %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Retroalimentación" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "Razón de Puntaje" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "Hay %(c_chairs)sdebate por ronda, entonces se necesita %(c_chairs)s juez principal." msgstr[1] "Hay %(c_chairs)s debates por ronda, entonces se necesitan %(c_chairs)s jueces principales" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s juez principal" msgstr[1] "%(c_chairs)s jueces principales" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "Todos los jueces con un puntaje suficientemente alto para votar, pero que no se asignaron como jueces principales, son asignados como panelistas por el sistema de auto asignación." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "%(c_panellists)s panelista" msgstr[1] "%(c_panellists)s panelistas" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "Los jueces son asignados como trainees por el sistema de auto asignación si su puntaje es menor al 'puntaje mínimo para votar' (actualmente %(min_voting)s) configurado en las configuraciones de las Reglas de Enfrentamiento de este torneo." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "Distribuciones de Auto asignación (%(min_voting_score)s+ para votar)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d retroalimentación" msgstr[1] "%(count)d retroalimentaciones" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "confirmado " -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/fr/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/fr/LC_MESSAGES/django.po index a37c79108fc..452f48ff031 100644 --- a/tabbycat/adjfeedback/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 05:45\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 03:05\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,952 +17,948 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "Les échelles de nombre entiers doivent avoir un minimum et maximum" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "cible" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "juge source" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "équipe source" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "%(timestamp)s (version %(version)s)" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "Cible" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Source" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "Horodatage et version des commentaires" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s (version %(version)s)" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "1 évaluation a été marqué comme confirmé. Notez que cette action peut avoir marqué autre évaluations comme non confirmés." msgstr[1] "%(count)d évaluations ont été marqués comme confirmé. Notez que cette action peut avoir marqué autre évaluations comme non confirmés." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "1 évaluation n’a pas été marqué comme confirmé, probablement parce qu’autres évaluations qui sont incompatibles l’ont été." msgstr[1] "%(count)d évaluations n’ont pas été marqués comme confirmé, probablement parce qu’autres évaluations qui sont incompatibles l’ont été." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "1 évaluation a été marqué comme non confirmé." msgstr[1] "%(count)d évaluations ont été marqué comme non confirmés." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "1 évaluation n’est plus tenu en compte." msgstr[1] "%(count)d évaluations ne sont plus tenus en compte." -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "1 évaluation est désormais tenu en compte." msgstr[1] "%(count)d évaluations sont désormais tenus en compte." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Évaluations de juges" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "président" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "seul" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "panelliste" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "stagiaire" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "Oui" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "Non" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "Ce champ est obligatoire." -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Note globale (%(min)d=le pire; %(max)d=le meilleur)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "Pas tenu en compte" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "Envoyé - " #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Juges --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Juge dont l’évaluation concerne" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s (le(a) président(e) a rendu les commentaires)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "%(name)s (panelliste a donné la rétroaction à la place du président)" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "La ligne (pour %(adjudicator)s) n’avait pas de note" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "La ligne (pour %(adjudicator)s) avait trop de colonnes" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "Il y a plusieurs juges appelés « %(adjudicator)s » donc vous ne pouvez pas utiliser l’outil d’import d’ensemble pour mettre leurs notes à jour. Veuillez le faire sur la page de vue d’ensemble d’évaluations à la place." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "Il n’y a pas de juge dans ce tournoi avec le nom « %(adjudicator)s »" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "La note pour %(adjudicator)s, « %(score)s », n’est pas un nombre" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "Il n’y a aucun note à importer." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "juge" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "joute" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "note" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "horodatage" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "histoire de note de base de juge" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "histoires de note de base de juge" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "question" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "évaluation" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "réponse" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "réponse booléenne d'un évaluation de juge" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "réponses booléennes d'un évaluation de juge" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "réponse au nombre entier d'un évaluation de juge" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "réponses au nombre entier d'un évaluation de juge" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "réponse en virgule flottante d’un évaluation de juge" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "réponses en virgule flottante d’un évaluation de juge" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "réponse en chaine de caractères d’un évaluation de juge" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "réponses en chaine de caractères d’un évaluation de juge" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "réponse multiple au choix multiple d'évaluation de juge" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "réponses multiples au choix multiple d'évaluation de juge" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "case à cocher" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "oui/non (liste déroulante)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "nombre entier (champ de saisie)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "échelle de nombres entier" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "virgule flottante" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "texte" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "texte long" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "choisissez un" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "choisissez plusieurs" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "tournoi" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "nombre de séquence" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "La question présentée aux participants, par exemple, « Êtes-vous d'accord avec la décision ? »" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "nom" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Un nom court pour la question, tel « D'accord »" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "référence" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Référence compatible aux codes, e.g., « accord_avec_decision »" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "pour les juges" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "Cette question devrait être posée aux juges (à propos d’autres juges)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "pour les équipes" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "Cette question devrait être posée aux équipes" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "type de réponse" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "obligatoire" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "Si les participants doivent remplir ce champ" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "valeur minimale" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valeur minimale pour champs numériques (ignoré pour les champs texte ou vrai/faux)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "valeur maximale" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valeur maximale pour champs numériques (ignoré pour les champs texte ou vrai/faux)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "choix" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "Les choix acceptables pour les champs de selection unique/multiple (ignoré pour les autres types de champ)" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "question d’un évaluation de juge" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "questions d’un évaluation de juge" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "pas tenu en compte" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "Si l’évaluation devrait influencer la note du (de la) juge" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "évaluation de juge" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "évaluations de juge" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "Soit le juge ou équipe source n'a pas été spécifié." -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "Il y avait à la fois un juge et équipe source." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "Il n'y a pas de juge comme cible pour cette évaluation. Aurait-il été supprimé ?" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "Juge n'a pas vu ce débat." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "Si le juge est qualifiant (cliquer pour marquer)" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "S/O" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "Score pondéré actuel" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "L'évaluation actuelle de ce juge." -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "Résultat du note de base" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "Cliquer pour modifier la note de base" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "Note de base assigné" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "La différence actuelle entre la note de base et note actuelle d'un juge" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "La différence actuelle entre la note de base et note actuelle de ce juge" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "L'écart-type des notes actuels de ce juge ; avec plus grands nombres représentant des notes d'évaluation moins consistants." -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "L'écart-type des notes actuelles de ce juge" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "Évaluations par joute" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "Passez sur les points pour montrer la note moyenne reçu dans la joute" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "Voir %(count)s
évaluation" msgstr[1] "Voir %(count)s
évaluations" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "Feuilles d'évaluation non-soumises" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "Voir évaluations manquantes" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "Par qui vient cette évaluation ?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "Saisir Évaluation" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "Ajouter Évaluation par %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "Ajouter Évaluation" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "Il n'y a pas d'options d'évaluation parce qu'aucun joute n'a encore été publié. Revenez quand il y en aura !" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "Ce tournoi attend que vous soumettez des évaluations seulement sur le juge qui a rendu la décision. Ne donnez pas d'évaluation sur les autres juges." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "Ce tournoi attend que vous soumettez des évaluations sur tous les juges du jury (incluant les stagiaires)." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Ce formulaire d’évaluation a des problèmes. Veuillez les examiner et les corriger." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "En soumettant ce formulaire, votre adresse IP sera stocké pour des usages d’historique." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Vue d’ensemble" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "Récentes" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "Non soumis" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "Important" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Commentaires" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "Par Source" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "Par Cible" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "Modifier Notes en Masse" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "Évaluation %(source_type)s %(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)s n'a pas encore soumis aucun évaluation." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s n’a pas encore reçu d’évaluation." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "Ceci est probablement parce que l'équipe ou le juge qui a soumise cette évaluation l'avait soumise plusieurs fois ; ou parce qu'une équipe a soumis des évaluations sur plusieurs panellistes (et non juste le rendeur)." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "Non confirmé ; n'affectera pas la note du juge." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "L'évaluation est compté pour le juge mais n'est pas prise en compte en calculant les scores." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "Ignoré ; n'affectera pas la note de ce juge." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "Cette évaluation est soumise pour un juge mais qui depuis s'est fait enlevé du débat. Vous devriez probablement aller dans la zone de la base de données et supprimer l'évaluation." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "La note donnée dans cette évaluation." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "Pour %(adjudicator)s" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "Reçu comme %(as)s" +msgid "Received as %(as_type)s" +msgstr "Reçu comme %(as_type)s" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "Base %(base)s" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "Par %(source)s (leur %(relationship)s)" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "Par %(source)s (%(relationship)s de %(side)s)" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "Par inconnu" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "%(time)s" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "Les évaluations non-confirmés ne sont pas comptés comme soumises et n'affecteront pas la note de ce juge." -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "Dé-confirmer" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "Confirmer" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "Les évaluations ignorées sont comptés comme soumises, mais n'affectent pas la note de ce juge." -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "Tenir en compte" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "Plus tenir en compte" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "Aucun évaluation n’a encore été envoyé" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "%(c_breaking)s marqué comme qualifiant" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "La configuration des évaluations actuelle permet et attend seulement les présidents à soumettre des évaluations (sur les panellistes et stagiaires)." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "La configuration des évaluations actuelle permet et attend les présidents et panellistes à soumettre des évaluations sur l'un l'autre et aussi les présidents pour les stagiaires." -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "La configuration des évaluations actuelle permet et attend que les panellistes et stagiaires soumettent des évaluations sur le président, et les présidents à évaluer tout autre membre du jury (incluant les stagiaires)." -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "La configuration des évaluations actuelle permet et attend tout les juges (incluant les stagiaires) à soumettre des évaluations sur tout les autres membres du jury (incluant les stagiaires)." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "Il y a %(nadjs_outside_range)s juge avec une note hors de l'étendue permise de notes de juge, ce qui est réglée de %(min_score)s à %(max_score)s. Ceci peut causer la repartition automatique de juge à se comporter étrangement. Si vous voulez utiliser une étendue plus large, vous pouvez le régler dans la configuration des évaluations." msgstr[1] "Il y a %(nadjs_outside_range)s juges avec une note hors de l'étendue permise de notes de juge, ce qui est réglée de %(min_score)s à %(max_score)s. Ceci peut causer la repartition automatique de juge à se comporter étrangement. Si vous voulez utiliser une étendue plus large, vous pouvez le régler dans la configuration des évaluations." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "%(count)s juge a une note égale ou plus grande que %(min)s et en dessous de %(max)s. Cela fait %(percent)s%% des juges." msgstr[1] "%(count)s juges ont une note égale ou plus grande que %(min)s et en dessous de %(max)s. Cela fait %(percent)s%% des juges." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "Distributions des Notes (étendue de %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "Base" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Évaluation" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "La proportion d'une note de juge déterminé par les évaluations contre la base est réglée par joute. Cliquez ce lien et modifiez le champ 'Poids d'évaluation' pour modifier ce ratio pour %(round)s." -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "Ratio de Note" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "Il y a %(c_chairs)s débat par joute, donc il doit avoir %(c_chairs)s président." msgstr[1] "Il y a %(c_chairs)s débats par joute, donc il doit avoir %(c_chairs)s présidents." -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "Il y a %(c_debates)s débat par joute, mais seulement %(c_chairs)s au dessus de la note minimale pour voter." msgstr[1] "Il y a %(c_debates)s débats par joute, mais seulement %(c_chairs)s au dessus de la note minimale pour voter." -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s président" msgstr[1] "%(c_chairs)s présidents" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "Tous les juges avec un score assez haute pour voter, mais qui ne sont pas marqués comme présidents, seront marqués comme panellistes par la repartition automatique." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "%(c_panellists)s panelliste" msgstr[1] "%(c_panellists)s panellistes" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "Les juges sont marqués comme stagiaires par la repartition automatique si leur note est moins que la 'note minimale pour voter' (actuellement %(min_voting)s) réglé dans la configuration des règles de tirage de ce tournoi." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "%(c_trainees)s stagiaire" msgstr[1] "%(c_trainees)s stagiaires" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "Repartir Distributions Automatiquement (%(min_voting_score)s pour voter)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "Changer la note de base" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "L'étendue des notes pour les juges est entre %(pref.adj_min_score)s et %(pref.adj_max_score)s. Les notes décimales sont permises. Ceci peut être configuré dans la configuration des évaluations." -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "La note minimale obligatoire pour être marqué comme panelliste ou président (automatiquement) est %(min_voting_score)s. Ceci peut être configuré dans les règles de tirage." -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "Note de base" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "Enregistrer la note de base" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "Qui êtes-vous ?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "sélectionnez votre nom ou celui de ton équipe dans cette liste" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "Mettre à jour les notes de juge" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "Il n'y a pas de juges dans ce tournoi, donc vous ne pouvez pas mettre à jour des notes. Vous voulez peut-être importer des juges avant." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "Collez une liste des noms des juges et leurs nouvelles notes, dans le format :\n" "juge,note. Comme exemple :" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "Les noms des juges doivent être exactement identiques à leurs noms dans le système." -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "Cet envoi de formulaire a des problèmes :" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "Envoyer" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "Vue d’ensemble des évaluations" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "Trouver évaluations d’un juge" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d évaluation" msgstr[1] "%(count)d évaluations" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Évaluations" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "Trouver Évaluation" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "Par les équipes" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "Par les juges" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "Évaluations Récents" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(30 plus récents)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "Commentaires Uniquement" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "(250 plus récents)" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "Évaluations Importantes" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "(la note était beaucoup plus élevée ou basse que prévu)" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "Une équipe" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "Équipe" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "Institution" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "Un(e) juge" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Juge" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "L’évaluation de %(target)s par %(source)s est ajouté." -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "Merci, %(source)s ! Votre évaluation de %(target)s a été enregistrée." -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "Oups ! Je n’ai pas reconnu ce juge : %(adjudicator)s" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "Oups ! Cette valeur n’est pas une note de base valide." -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "L’avance des évaluations" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "%(nmissing)d évaluation manquant (%(fulfilled).1f%% reçu)" msgstr[1] "%(nmissing)d évaluations manquants (%(fulfilled).1f%% reçu)" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "Évaluation de %(adjudicator)s par %(source)s est désormais %(result)s." -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "confirmé" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "dé-confirmé" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "tenu en compte" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/he/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/he/LC_MESSAGES/django.po index 8ddbd19c12c..aa55ef4118f 100644 --- a/tabbycat/adjfeedback/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:29\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,34 +12,45 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:43 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:68 adjfeedback/admin.py:126 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:69 adjfeedback/admin.py:127 adjfeedback/models.py:220 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:70 adjfeedback/admin.py:128 adjfeedback/models.py:222 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:84 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:85 adjfeedback/admin.py:149 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:167 +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." @@ -48,7 +59,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/admin.py:179 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." @@ -57,7 +68,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." @@ -66,7 +77,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/admin.py:202 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." @@ -75,7 +86,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/admin.py:212 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." @@ -84,387 +95,398 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:25 +#: adjfeedback/forms.py msgid "chair" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "panellist" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "trainee" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:56 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:58 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:73 adjfeedback/forms.py:82 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:173 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:185 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:244 adjfeedback/forms.py:307 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:245 adjfeedback/forms.py:312 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:268 adjfeedback/forms.py:342 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "" -#: adjfeedback/forms.py:285 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:309 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:315 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:317 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:408 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:413 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:426 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:432 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:440 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:455 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:12 adjfeedback/models.py:215 +#: adjfeedback/models.py msgid "adjudicator" msgstr "" -#: adjfeedback/models.py:15 +#: adjfeedback/models.py msgid "round" msgstr "סיבוב" -#: adjfeedback/models.py:16 adjfeedback/models.py:216 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:17 +#: adjfeedback/models.py msgid "timestamp" msgstr "" -#: adjfeedback/models.py:20 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:29 +#: adjfeedback/models.py msgid "question" msgstr "" -#: adjfeedback/models.py:31 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:42 adjfeedback/models.py:50 adjfeedback/models.py:58 -#: adjfeedback/models.py:66 +#: adjfeedback/models.py msgid "answer" msgstr "" -#: adjfeedback/models.py:45 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:46 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:53 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:54 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:61 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:62 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:70 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:89 +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:90 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:91 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:92 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:93 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:94 adjfeedback/models.py:127 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:95 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:96 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:97 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:123 +#: adjfeedback/models.py msgid "tournament" msgstr "טורניר" -#: adjfeedback/models.py:125 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:128 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:130 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:131 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:133 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:134 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:137 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:138 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:140 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:144 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:147 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:150 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:153 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:160 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:161 -msgid "Permissible choices for select one/multiple fields, separated by '//' (ignored for other fields)" +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:166 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:225 adjfeedback/views.py:761 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:226 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:230 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:278 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:281 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:283 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:285 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:83 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:92 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:96 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:105 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:124 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" @@ -473,215 +495,218 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/tables.py:147 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:171 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format -msgid "Add Feedback from %(source_name)s" +msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "\n" -" On %(adjudicator)s\n" -" " +msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:85 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:90 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:100 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html #, python-format -msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit on trainees." +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:20 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:31 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." @@ -690,7 +715,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." @@ -699,29 +724,29 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" -msgstr "" +msgstr "בסיס" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." @@ -730,7 +755,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." @@ -739,7 +764,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" @@ -748,11 +773,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" @@ -761,12 +786,12 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" @@ -775,83 +800,76 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 -#, python-format -msgid "Add feedback from %(name)s" -msgstr "" - -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:117 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:141 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:152 adjfeedback/views.py:176 adjfeedback/views.py:191 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" @@ -860,90 +878,90 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/views.py:155 adjfeedback/views.py:181 adjfeedback/views.py:196 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:162 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:170 adjfeedback/views.py:706 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:185 adjfeedback/views.py:700 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:270 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:281 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:293 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:361 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:366 +#: adjfeedback/views.py msgid "Team" msgstr "קבוצה" -#: adjfeedback/views.py:373 adjfeedback/views.py:392 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:378 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:385 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:512 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:542 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:621 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:644 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:671 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:692 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" @@ -952,24 +970,24 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: adjfeedback/views.py:737 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:761 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:797 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/hi/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/hi/LC_MESSAGES/django.po index 62153098653..a16d314ab1b 100644 --- a/tabbycat/adjfeedback/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,934 +12,952 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:43 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:68 adjfeedback/admin.py:126 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:69 adjfeedback/admin.py:127 adjfeedback/models.py:220 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:70 adjfeedback/admin.py:128 adjfeedback/models.py:222 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:84 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:85 adjfeedback/admin.py:149 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:167 +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:179 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:202 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" msgstr[1] "" -#: adjfeedback/admin.py:212 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" msgstr[1] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:25 +#: adjfeedback/forms.py msgid "chair" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "panellist" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "trainee" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:56 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:58 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:73 adjfeedback/forms.py:82 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:173 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:185 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:244 adjfeedback/forms.py:307 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:245 adjfeedback/forms.py:312 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:268 adjfeedback/forms.py:342 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "" -#: adjfeedback/forms.py:285 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:309 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:315 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:317 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:408 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:413 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:426 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:432 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:440 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:455 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:12 adjfeedback/models.py:215 +#: adjfeedback/models.py msgid "adjudicator" msgstr "" -#: adjfeedback/models.py:15 +#: adjfeedback/models.py msgid "round" msgstr "" -#: adjfeedback/models.py:16 adjfeedback/models.py:216 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:17 +#: adjfeedback/models.py msgid "timestamp" msgstr "" -#: adjfeedback/models.py:20 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:29 +#: adjfeedback/models.py msgid "question" msgstr "" -#: adjfeedback/models.py:31 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:42 adjfeedback/models.py:50 adjfeedback/models.py:58 -#: adjfeedback/models.py:66 +#: adjfeedback/models.py msgid "answer" msgstr "" -#: adjfeedback/models.py:45 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:46 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:53 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:54 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:61 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:62 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:70 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:89 +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:90 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:91 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:92 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:93 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:94 adjfeedback/models.py:127 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:95 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:96 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:97 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:123 +#: adjfeedback/models.py msgid "tournament" msgstr "" -#: adjfeedback/models.py:125 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:128 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:130 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:131 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:133 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:134 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:137 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:138 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:140 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:144 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:147 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:150 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:153 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:160 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:161 -msgid "Permissible choices for select one/multiple fields, separated by '//' (ignored for other fields)" +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:166 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:225 adjfeedback/views.py:761 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:226 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:230 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:278 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:281 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:283 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:285 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:83 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:92 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:96 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:105 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:124 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:147 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:171 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format -msgid "Add Feedback from %(source_name)s" +msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "\n" -" On %(adjudicator)s\n" -" " +msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:85 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:90 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:100 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html #, python-format -msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit on trainees." +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:20 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:31 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 -#, python-format -msgid "Add feedback from %(name)s" -msgstr "" - -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:117 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:141 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:152 adjfeedback/views.py:176 adjfeedback/views.py:191 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:155 adjfeedback/views.py:181 adjfeedback/views.py:196 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:162 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:170 adjfeedback/views.py:706 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:185 adjfeedback/views.py:700 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:270 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:281 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:293 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:361 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:366 +#: adjfeedback/views.py msgid "Team" msgstr "" -#: adjfeedback/views.py:373 adjfeedback/views.py:392 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:378 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:385 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:512 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:542 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:621 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:644 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:671 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:692 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:737 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:761 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:797 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/id/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/id/LC_MESSAGES/django.po index a2d2c4d2821..66669234435 100644 --- a/tabbycat/adjfeedback/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-05-23 06:54\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,936 +17,932 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "Skala bilangan bulat harus memiliki minimum dan maksimum" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "tujuan" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "juri yang memberi penilaian" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "tim yang memberi penilaian" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "%(timestamp)s (versi %(version)s)" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "Tujuan" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Sumber" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "Waktu dan versi penilaian" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s (versi %(version)s)" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "%(count)d penilaian juri telah terkonfirmasi. Perhatikan bahwa ini dapat menyebabkan submisi penilaian juri yang lain menjadi tidak terkonfirmasi." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "%(count)d penilaian juri tidak terkonfirmasi, mungkin karena submisi penilaian juri yang lain berhubungan dengan ini ditandai sebagai terkonfirmasi." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "%(count)d submisi penilaian juri ditandai sebagai tidak terkonfirmasi." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "%(count)d submisi penilaian juri telah diabaikan." -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "%(count)d submisi penilaian juri telah diakui." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Penilaian Juri" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "ketua panel" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "solo" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "panelis" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "trainee" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Nilai secara keseluruhan (%(min)d=terrendah; %(max)d=tertinggi)" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "Diabaikan" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "Dimasukkan " #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Juri debat --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Juri penilaian ini untuk" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s (ketua panel memberikan verbal)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "%(name)s (panelis memberikan verbal)" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "Baris ini (untuk %(adjudicator)s) tidak memiliki nilai" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "Baris ini (untuk %(adjudicator)s) memiliki terlalu banyak kolom" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "Ada beberapa juri yang bernama \"%(adjudicator)s\", sehingga importir nilai masal tidak dapat digunakan untuk memperbarui nilai mereka. Perbarui nilai mereka di halaman Tinjauan Penilaian." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "Tidak ada juri di turnamen ini dengan nama \"%(adjudicator)s\"" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "Nilai untuk %(adjudicator)s, \"%(score)s\", bukan angka" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "Tidak ada nilai untuk diimpor." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "juri debat" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "ronde" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "skor" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "waktu" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "histori nilai awal juri" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "histori nilai awal juri" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "pertanyaan" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "penilaian" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "jawaban" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "penilaian juri, jawaban boolean / iya-tidak" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "penilaian juri, jawaban boolean / iya-tidak" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "penilaian juri, jawaban numerik" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "penilaian juri, jawaban numerik" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "penilaian juri, jawaban numerik" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "penilaian juri, jawaban numerik" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "penilaian juri, jawaban frasa / kalimat singkat" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "penilaian juri, jawaban frasa / kalimat singkat" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "jawaban pilihan berganda umpanbalik juri" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "jawaban pilihan berganda umpanbalik juri" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "kotak centang" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "iya / tidak (dropdown)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "numerik (kotak teks)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "skala numerik" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "bilangan desimal" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "teks" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "teks panjang" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "pilih satu" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "pilih beberapa" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "turnamen" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "nomor urut" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "Pertanyaan yang ditampilkan kepada partisipan, seperti \"Apakah anda setuju dengan keputusan yang diberikan?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "nama" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Nama pendek untuk pertanyaan ini seperti \"Setuju dengan keputusan\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "referensi" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Referensi yang kompatibel dengan kode seperti \"setuju_dengan_keputusan\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "dari juri" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "Juri harus ditanyakan pertanyaan ini (tentang juri lain)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "dari tim" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "Tim harus ditanyakan pertanyaan ini" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "tipe jawaban" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "diwajibkan" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "Apakah partisipan diwajibkan untuk mengisi kolom ini" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "nilai minimum" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Nilai minimum yang diijinkan untuk kolom numerik (abaikan untuk kolom teks dan boolean)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "nilai maksimum" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Nilai maksimum yang diijinkan untuk kolom numerik (abaikan untuk kolom teks dan boolean)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "pilihan" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "Pilihan yang diizinkan untuk memilih satu / beberapa bidang (diabaikan untuk bidang lain)" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "pertanyaan penilaian juri" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "pertanyaan penilaian juri" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "diabaikan" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "Apakah submisi penilaian juri mempengaruhi nilai juri tersebut" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "penilaian juri" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "penilaian Juri" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "Juri atau tim yang memberikan penilaian tidak disebutkan." -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "Ada keduanya, juri dan tim yang memberikan penilaian." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "Tidak ada juri yang menjadi target penilaian ini. Apakah mereka telah dihapus?" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "Juri tidak melihat debat ini." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "Apakah juri ditandai sebagai breaking (klik untuk mentandai)" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "N/A" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "Skor saat ini" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "Nilai juri ini sekarang." -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "Hasil nilai awal" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "Klik untuk menyunting nilai awal" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "Nilai awal yang diberikan" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "Perbedaan antara nilai awal dan nilai juri saat ini" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "Perbedaan antara nilai awal dan nilai juri saat ini" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "Standar deviasi nilai juri; angka yang lebih besar mengindikasikan penilaian juri yang tidak konsisten." -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "Standar deviasi nilai juri ini" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "Penilaian Juri tiap Ronde" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "Letakkan mouse di atas titik data untuk melihat skor rata-rata yang diterima tiap ronde" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "Lihat %(count)s
penilaian juri" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "Penilaian juri yang belum diterima" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "Lihat Penilaian Juri yang Hilang" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "Dari siapakah penilaian ini diberikan?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "Berikan Penilaian" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "Tambahkan Penilaian dari %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "Tambahkan Penilaian" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "Tidak ada opsi penilaian karena belum ada ronde yang dirilis ke publik. Periksa kembali saat ronde telah dirilis!" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "Turnamen ini mengharapkan anda untuk memberikan penilaian hanya untuk juri yang memberikan verbal . Jangan memberikan penilaian untuk juri lainnya." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "Turnamen ini mengharapkan anda untuk memberikan penilaian untuk semua juri (termasuk trainee)." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Ada sedikit masalah dengan penilaian juri ini. Tolong periksa dan perbaiki." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "Saat melakukan submisi, alamat IP anda akan disimpan untuk pencatatan." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Tinjauan" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "Terbaru" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "Belum Diterima" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "Penting" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Komentar" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "Dengan Sumber" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "Dengan Tujuan" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "Perbarui nilai secara masal" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "Penilaian dari %(source_type)s %(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)s belum memberikan penilaian sama sekali." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s belum menerima penilaian sama sekali." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "Ini mungkin karena tim atau juri yang memberikan penilaian melakukan submisi berkali-kali terhadap orang yang sama; atau karena tim memberikan penilaian untuk beberapa panelis dan bukan hanya yang memberikan verbal." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "Tidak terkonfirmasi; tidak akan berpengaruh pada nilai juri." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "Penilaian ini dihitung untuk juri ini, namun tidak digunakan saat mengkalkulasi skor." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "Diabaikan; tidak akan berpengaruh pada nilai juri." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "Penilaian ini diberikan untuk seorang juri namun juri tersebut telah dihapus dari debat. Dianjurkan untuk ke Sunting Database dan menghapus penilaian ini." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "Skor yang diberikan dalam penilaian ini." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "Pada %(adjudicator)s" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "Diterima sebagai %(as)s" +msgid "Received as %(as_type)s" +msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "Nilai awal %(base)s" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "Dari %(source)s (%(relationship)s mereka)" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "Dari %(source)s (%(relationship)s sebagai %(side)s)" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "Asal tidak diketahui" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "Penilaian yang tidak terkonfirmasi tidak akan dianggap telah diserahkan dan tidak akan mempengaruhi skor juri tersebut." -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "Tidak terkonfirmasi" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "Konfirmasi" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "Penilaian yang diabaikan dianggap telah diserahkan namun tidak mempengaruhi skor juri." -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "Hiraukan" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "Abaikan" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "Belum ada penilaian yang masuk" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "%(c_breaking)s ditandai sebagai breaking" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "Konfigurasi Penilaian saat ini mengijinkan dan mengharuskan hanya ketua panel yang memberikan penilaian terhadap panelis dan trainee mereka." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr " Konfigurasi umpan balik saat ini memungkinkan dan mengharapkan baik ketua maupun panelis untuk saling mengirimkan umpan balik, dan juga ketua untuk mengirimkan umpan balik pada peserta pelatihan.umpan balik." -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr " Konfigurasi umpan balik saat ini memungkinkan dan mengharapkan baik panelis maupun peserta pelatihan untuk mengirimkan umpan balik mengenai kursi, dan kursi untuk mengirimkan umpan balik kepada setiap anggota lain dari panel (termasuk peserta pelatihan)." -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "Konfigurasi Penilaian saat ini mengijinkan dan mengharuskan semua juri (termasuk trainee) untuk memberikan penilaian terhadap satu sama lain." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "Ada %(nadjs_outside_range)s juri dengan skor diluar interval yang diijinkan untuk nilai juri, yang mana diatur mulai dari %(min_score)s hingga %(max_score)s. Ini dapat menyebabkan alokasi otomatis memberikan hasil yang tidak sesuai ekspektasi. Apabila anda ingin menggunakan interval nilai yang lebih luas, anda dapat mengkonfigurasi ini di pengaturan penilaian juri." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "%(count)s juri kini memiliki nilai sama dengan atau lebih dari %(min)s dan kurang dari %(max)s. Jumlah mereka sebesar %(percent)s%% dari total juri yang ada." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "Distribusi Skor (interval %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "N. Awal" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Penilaian Juri" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "Nilai juri ditentukan berdasarkan penilaian tiap ronde dan nilai awal dan proporsinya diatur berbeda tiap ronde. Klik tautan berikut dan ubah 'Bobot penilaian tiap ronde' untuk mengubah proporsi ini untuk %(round)s." -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "Rasio skor" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "Ada %(c_chairs)s debat per ronde, sehingga membutuhkan %(c_chairs)s ketua panel." -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "Ada %(c_debates)s debat per ronde, namun hanya %(c_chairs)s yang memiliki skor di atas skor minimum." -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s ketua panel" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "Seluruh juri dengan nilai cukup tinggi untuk memberikan suara, tetapi tidak diaokasikan sebagai ketua, dialokasikan sebagai panelis oleh auto-allocator." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "%(c_panellists)s panelis" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "Juri dialokasikan sebagai trainee oleh auto-allocator jika nilainya kurang dari 'nilai minimal pemungutan suara' (saat ini nilainya %(min_voting)s) yang diatur pada konfigurasi Aturan Undian turnamen." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "%(c_trainees)s trainee" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "Alokasi-Otomatis Distribusi (%(min_voting_score)s+ untuk memberi suara)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "Ubah Nilai Basis" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "Rentang nilai untuk juri adalah antara %(pref.adj_min_score)s dan %(pref.adj_max_score)s. Desimal diperbolehkan. Nilai ini dapat dikonfigurasi di Pengaturan umpan balik." -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "Nilai minimum yang diperlukan untuk dialokasikan sebagai panelis atau ketua (jika menggunakan auto-allocator) adalah %(min_voting_score)s. Nilai ini dapat dikonfigurasikan di Pengaturan pengundian." -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "Nilai basis" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "Simpan Nilai Basis" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "Siapakah Anda?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "klik nama Anda atau tim Anda pada daftar ini" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "Perbarui Nilai Juri" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "Tidak ada satupun juri pada turnamen ini, maka Anda tidak dapat mempebarui nilai apapun. Anda mungkin ingin impor beberap juri terlebih dahulu." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "Tempelkan daftar nama juri dan nilai baru mereka, dalam format: juri,nilai. Sebagai contoh:" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "Nama-nama juri harus sama persis dengan nama-nama mereka pada sistem tabulasi." -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "Ada beberapa masalah terkait data pada formulir ini:" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "Kirim" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "Gambaran Umpan Balik" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "Temukan Umpan Balik pada Juri" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d umpan balik" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Umpan Balik" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "Temukan Umpan Balik" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "Dari Tim" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "Dari Juri" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "Umpan Balik Terbaru" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(30 terbaru)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "Hanya Komentar" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "(250 terbaru)" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "Umpan Balik Penting" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "(rating jauh lebih besar/kecil dari yang diharapkan)" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "Sebuah Tim" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "Tim" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "Institusi" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "Seorang Juri" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Juri" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "Umpan balik dari %(source)s pada %(target)s ditambahkan." -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "Terima kasih, %(source)s! Umpan balik Anda pada %(target)s telah dicatat." -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "Ups! Saya tidak mengenali juri tersebut: %(adjudicator)s" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "Ups! Nilai tersebut bukan nilai basis yang valid." -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "Progres Umpan Balik" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "%(nmissing)d tidak mengandung kiriman umpan balik (%(fulfilled).1f%% dikembalikan)" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "Umpan balik untuk %(adjudicator)s dari %(source)s sekarang %(result)s." -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "terkonfirmasi" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "nir-terkonfirmasi" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "nir-terabaikan" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..0b6edfa8332 Binary files /dev/null and b/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.po index 8b99b754cb3..2201ccd774e 100644 --- a/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2022-04-18 11:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,951 +17,947 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "Le scale intere devono avere un minimo e un massimo" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "obiettivo" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "giudice del dibattito" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "team di origine" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "%(timestamp)s (versione %(version)s)" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "Obiettivo" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Fonte" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "Feedback timestamp e versione" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s (versione %(version)s)" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "1 invio di feedback è stato contrassegnato come confermato. Nota che questo potrebbe aver causato altri invii di feedback da contrassegnare come non confermati." msgstr[1] "%(count)d invii di feedback sono stati contrassegnati come confermati. Nota che questo potrebbe aver causato altri invii di feedback da contrassegnare come non confermati." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "1 invio di feedback è stato contrassegnato come confermato, probabilmente perché altri invii di feedback in conflitto con questo sono stati contrassegnati come confermati." msgstr[1] "%(count)d invii di feedback sono stati contrassegnati come confermati, probabilmente perché altri invii di feedback in conflitto con questi sono stati contrassegnati come confermati." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "1 invio di feedback è stato contrassegnato come non confermato." msgstr[1] "%(count)d invii di feedback sono stati contrassegnati come non confermati." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "1 invio di feedback è ora ignorato." msgstr[1] "%(count)d invii di feedback ora sono ignorati." -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "1 invio di feedback è ora riconosciuto." msgstr[1] "%(count)d invii di feedback ora sono riconosciuti." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Feedback giudice" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "arbitro" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "solo" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "giudice" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "coach" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Punteggio complessivo (%(min)d=peggiore; %(max)d=migliore)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "Ignorato" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "Inviato per approvazione - " #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- GiudicI --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Giudice questo feedback riguarda" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s (il chair ha dato parola)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "%(name)s (il giudice ha dato parola per la giuria)" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "Questa riga (per %(adjudicator)s) non ha un punteggio" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "Questa riga (per %(adjudicator)s) ha troppe colonne" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "Ci sono diversi giudici chiamati \"%(adjudicator)s\", quindi non puoi usare l'importatore di massa per aggiornare il loro punteggio. Si prega di farlo nella pagina Panoramica feedback." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "Non c'è nessun giudice in questo torneo con il nome \"%(adjudicator)s\"" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "Il punteggio per %(adjudicator)s, \"%(score)s\", non è un numero" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "Non ci sono punteggi da importare." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "giudice" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "round" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "punteggio" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "data e ora" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "cronologia punteggio base giudice" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "cronologie punteggi base giudice" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "domanda" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "feedback" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "risposta" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "risposta booleana di feedback giudice" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "risposte booleane di feedback giudice" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "risposta intera di feedback giudice" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "risposte intere di feedback giudice" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "risposta numerica di feedback giudice" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "risposte numerice di feedback giudice" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "risposta di testo di feedback giudice" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "risposte di testo di feedback giudice" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "risposta a scelta multipla di feedback giudice" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "risposte a scelta multipla di feedback giudice" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "casella di spunta" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "si/no (menu a tendina)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "intero (casella di testo)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "scala intera" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "virgola" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "testo" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "testo lungo" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "scelta singola" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "scelta multipla" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "torneo" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "numero sequenziale" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "La domanda mostrata ai partecipanti, ad esempio, \"Sei d'accordo con la decisione?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "nome" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Un nome breve per la domanda, ad esempio, \"In accordo con la decisione\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "riferimento" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Riferimento compatibile con il codice, ad esempio, \"agree_with_decision\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "dal giudice" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "Questa domanda dovrebbe essere posta ai giudici (riguardo altri giudici)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "dalle squadre" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "Questa domanda dovrebbe essere fatta alle squadre" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "tipo di risposta" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "obbligatorio" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "Indica se i partecipanti sono tenuti a compilare questo campo" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "valore minimo" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valore minimo consentito per i campi numerici (ignorato per i campi di testo o numeri decimali)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "valore massimo" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valore massimo consentito per i campi numerici (ignorato per i campi di testo o numeri decimali)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "scelte" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "Scelte consentite per selezionare uno o più campi (ignorati per altri campi)" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "domanda di feedback giudice" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "domande di feedback giudice" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "ignorato" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "Se il feedback deve influenzare il punteggio del giudice" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "feedback giudice" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "feedback giudice" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "Il giudice o il team di origine non sono stati specificati." -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "C'erano sia un giudice che una squadrea di partenza." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "Non c'è nessun giudice specificato come obiettivo per questo feedback. Forse è stato cancellato?" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "Il giudice non ha assistito a questo dibattito." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "Se il giudice è stato contrassegnato come da eliminatorie (click per contrassegnare)" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "N/D" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "Punteggio ponderato attuale" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "L'attuale rating di questo giudice." -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "Punteggio base" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "Fare click per modificare il punteggio base" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "Punteggio base assegnato" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "La differenza attuale tra il punteggio base di un giudice e il punteggio attuale" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "La differenza tra il punteggio base di questo giudice e il punteggio attuale" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "La deviazione standard dei punteggi attuali di questo giudice; i numeri più grandi significano punteggi di feedback meno coerenti." -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "La deviazione standard degli attuali punteggi di questo giudice" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "Feedback Per Round" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "Passa con il mouse dopra i dati per mostrare il punteggio medio ricevuto in quel round" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "Mostra %(count)s
feedback" msgstr[1] "Mostra %(count)s
feedbacks" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "Votazioni di feedback non inviate" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "Visualizza Feedback Mancante" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "Da chi viene il feedback?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "Inserisci Feedback" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "Aggiungi Feedback da %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "Aggiungi Feedback" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "Non ci sono opzioni di feedback perché nessun round è stato ancora rilasciato al pubblico. Controlla quando lo rilasceranno!" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "Questo torneo si aspetta che tu invii un feedback solo sul giudice che ha emesso la sentenza. Non inviare un feedback su altri giudici." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "Questo torneo si aspetta che tu invii un feedback su tutti i giudici della giuria (inclusi i tirocinanti)." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Ci sono alcuni problemi con questo invio di feedback. Si prega di rivederli e correggerli." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "Quando si invia questo modulo il tuo indirizzo IP sarà memorizzato per motivi di logging." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Panoramica" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "Più recenti" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "Non inviato" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "Importante" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Commenti" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "Per Sorgente" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "Per destinatario" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "Aggiornamento punteggi bulk" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "Feedback %(source_type)s %(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)s non ha ancora inviato nessun feedback." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s non ha ancora ricevuto nessun feedback." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "Questo molto probabilmente perché il team o il giudice che ha inviato questo feedback lo restitutoreha inviato più volte sulla stessa persona; o perché un team ha inviato feedback su più giudici (piuttosto che solo chi ha restituito)." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "Non confermato; non influenzerà il punteggio di questo giudice." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "Il feedback è contato per il giudice, ma non viene preso in considerazione nel calcolo dei punteggi." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "Ignorato; non influenzerà il punteggio di questo giudice." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "Questo feedback viene inviato su un giudice che sembra sia stato rimosso dal dibattito. Probabilmente dovresti andare nell'area Modifica database ed eliminare questo feedback." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "Il punteggio dato in questa parte di feedback." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "Su %(adjudicator)s" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "Ricevuto come %(as)s" +msgid "Received as %(as_type)s" +msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "Base %(base)s" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "Da %(source)s (il loro %(relationship)s)" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "Da %(source)s (%(relationship)s da %(side)s)" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "Da sconosciuto" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "Il feedback non confermato non è conteggiato come è stato inviato e non influisce sul punteggio di questo giudice." -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "Non conferma" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "Conferma" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "Il feedback ignorato viene contato tra quelli inviati, ma non influisce sul punteggio di questo giudice." -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "Non ignorato" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "Ignora" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "Non è stato inviato ancora nessun feedback" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "%(c_breaking)s qualificatocontrassegnato come eliminatorie" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "L'attuale configurazione di feedback consente e prevede che solo gli arbitri presentino un feedback (sui loro arbitri e tirocinanti)." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "L'attuale configurazione di feedback consente e prevede che i giudici e le giurie presentino un feedback su loro stessi, inoltre i giudici inviano feedback sui tirocinanti." -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "L'attuale configurazione di feedback consente e prevede che le giurie ed i tirocinanti presentino un feedback sui giudici, inoltre i giudici inviano feedback su ogni altro membro della giuria (inclusi i tirocinanti)." -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "L'attuale configurazione di feedback consente e prevede che tutti i giudici (inclusi i tirocinanti) presentino un feedback su ogni altro membro della giuria (inclusi i tirocinanti)." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "C'è %(nadjs_outside_range)s giudice con un punteggio Fuori dal range consentito dei punteggi giudice, che è attualemtne impostato da %(min_score)s a %(max_score)s. Ciò potrebbe causare un comportamento anomalo dell'assegnazione automatica dei giudici. Se si desidera utilizzare un range più ampio, è possibile configurarlo nelle impostazioni di feedback." msgstr[1] "Ci sono %(nadjs_outside_range)s giudici con un punteggio fuori dal range consentito dei punteggi giudice, che è attualemtne impostato da %(min_score)s a %(max_score)s. Ciò potrebbe causare un comportamento anomalo dell'assegnazione automatica dei giudici. Se si desidera utilizzare un range più ampio, è possibile configurarlo nelle impostazioni di feedback." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "%(count)s giudice ha attualmente un punteggio uguale o superiore a %(min)s e inferiore a %(max)s. Questo è %(percent)s%% dell'insieme dei giudici." msgstr[1] "%(count)s giudici hanno attualmente un punteggio uguale o superiore a %(min)s e inferiore a %(max)s. Questo è %(percent)s%% dell'insieme dei giudici." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "Distribuzione punteggi (range è %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "Base" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Feedback" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "La proporzione del punteggio di un giudice determinata in base al feedback rispetto al punteggio di test è impostata sulla base di ogni round. Fare clic su questo link e modificare il campo 'Peso feedback' per modificare questo rapporto per %(round)s." -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "Rapporto Punteggio" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "C'è %(c_chairs)s dibattito per round, quindi c'è bisogno di %(c_chairs)s giudice." msgstr[1] "Ci sono %(c_chairs)s dibattiti per round, quindi c'è bisogno di %(c_chairs)s giudici." -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "C'è %(c_debates)s dibattito per round, ma solo %(c_chairs)s oltre il punteggio minimo per votare." msgstr[1] "Ci sono %(c_debates)s dibattiti per round, ma solo %(c_chairs)s oltre il punteggio minimo per votare." -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s giudice arbitro" msgstr[1] "%(c_chairs)s giudici arbitri" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "Tutti i giudici con un punteggio abbastanza alto per votare, ma che non sono assegnati per arbitrare, sono assegnati come giudici dal sistema automatico." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "%(c_panellists)s giudice" msgstr[1] "%(c_panellists)s giudici" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "I giudici vengono assegnati come apprendisti dal sistema automatico se il loro punteggio è inferiore al 'punteggio minimo di voto' (attualmente %(min_voting)s) impostato nella configurazione delle Regole di sorteggio di questo torneo." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "%(c_trainees)s apprendista" msgstr[1] "%(c_trainees)s apprendisti" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "Distribuzioni Auto-assegnate (%(min_voting_score)s+ per votare)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "Cambia il punteggio base" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "L'intervallo di punteggio per i giudici è compreso tra %(pref.adj_min_score)s e %(pref.adj_max_score)s. Sono permessi decimali. Questo può essere configurato nelle Impostazioni di Feedback." -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "La richiesta di punteggio minimo per essere assegnato come giudice o giudice arbitro (quando si utilizza il sistema automatico) è %(min_voting_score)s. È possibile configurarlo nelle Impostazioni del sorteggio." -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "Punteggio base" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "Salva punteggio base" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "Chi sei?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "seleziona il tuo nome o il tuo team in questo elenco" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "Aggiorna Punteggi giudice" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "In questo torneo non c'è nessun giudice, quindi non puoi aggiornare nessun punteggio. Potresti prima voler importare alcuni giudici." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "Incolla un elenco dei nomi dei giudici e dei loro nuovi punteggi, nel formato: giudice,punteggio. Per esempio:" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "I nomi dei giudici devono corrispondere esattamente ai loro nomi nel sistema di tab." -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "Ci sono alcuni problemi con i dati su questo modulo:" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "Invia" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "Panoramica Feedback" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "Trova feedback sul giudice" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d feedback" msgstr[1] "%(count)d feedback" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Feedback" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "Trova feedback" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "Dai team" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "Dai giudici" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "Ultimo feedback" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(30 più recenti)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "Solo Commenti" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "(250 più recenti)" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "Feedback Importante" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "(valutazione molto più alta/inferiore del previsto)" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "Un team" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "Team" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "Istituto" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "Un giudice" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Giudice" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "Aggiunto feedback da %(source)s a %(target)s." -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "Grazie, %(source)s! Il tuo feedback su %(target)s è stato registrato." -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "Ops! Non ho riconosciuto il giudice: %(adjudicator)s" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "Ops! Il valore non è un punteggio valido." -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "Progresso Feedback" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "%(nmissing)d feedback mancante (%(fulfilled).1f%% restituito)" msgstr[1] "%(nmissing)d feedback mancanti (%(fulfilled).1f%% restituito)" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "Il feedback per %(adjudicator)s da %(source)s ora è %(result)s." -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "confermato" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "non confermato" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "non ignorato" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/ja/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ja/LC_MESSAGES/django.po index a8324aa3d1d..feaf8943a30 100644 --- a/tabbycat/adjfeedback/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-08-26 06:06\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-06-21 14:26\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,936 +17,932 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "整数の範囲には最大値と最小値を設定する必要があります。" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "対象" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "ディベートのジャッジ" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "ディベートのチーム" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "%(timestamp)s ( %(version)s 版)" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "対象" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "ソース" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "フィードバックのタイムスタンプとバージョン" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s ( %(version)s 版)" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "%(count)d 個のフィードバック提出が確認済みです。これにより、他に提出されたフィードバックが未確認の状態となっている可能性があります。" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "他に提出されたフィードバックが確認済みとなったことによる競合のため、 %(count)d 個の提出されたフィードバックが未確認の状態です。" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." -msgstr[0] "" +msgstr[0] "%(count)d フィードバックの提出が確認されていません。" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." -msgstr[0] "" +msgstr[0] "%(count)d フィードバックの提出が無視されます。" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." -msgstr[0] "" +msgstr[0] "%(count)d フィードバックの提出が確認されました。" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" -msgstr "" +msgstr "ジャッジのフィードバック" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "チェア" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "ソロ" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "パネル" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "トレイニー" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "はい" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "いいえ" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "必須" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" -msgstr "" +msgstr "総合スコア (%(min)d=worst; %(max)d=best) *" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "反映されていません" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "提出済み " #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" -msgstr "" +msgstr "%(name)s(%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- ジャッジ -- " -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" -msgstr "" +msgstr "評価者について" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" -msgstr "" +msgstr "%(name)s (フィードバックを行った人)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "ジャッジ" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "ラウンド" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "スコア" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "タイムスタンプ" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "質問" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "フィードバック" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "回答" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "チェック欄" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "はい/いいえ(ドロップダウン)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "文章" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "長い文章" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "一つ選んでください" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "複数選択" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "大会" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "点数の上限" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "フィードバックを入力する" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "%(name)sからのフィードバックを入力する" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "フィードバックを追加する" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "概要" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "最新" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "未提出" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "コメント" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "フィードバック" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "提出" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "フィードバック概要" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "ジャッジに対するフィードバックを検索" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d件のフィードバック" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "フィードバック" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "フィードバックを探す" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "最近のフィードバック" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(直近30個)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "重要なフィードバック" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "(評価が予想より高かった/低かった)" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "チーム" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "チーム" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "大学・団体" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "ジャッジ" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "ジャッジ" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "フィードバック提出状況" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..b72ba4d7ed4 Binary files /dev/null and b/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..20091d842c4 --- /dev/null +++ b/tabbycat/adjfeedback/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,966 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" + +#: adjfeedback/admin.py +msgid "Integer scales must have a minimum and maximum" +msgstr "" + +#: adjfeedback/admin.py +msgid "target" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source adjudicator" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source team" +msgstr "" + +#: adjfeedback/admin.py +msgid "Target" +msgstr "" + +#: adjfeedback/admin.py +msgid "Source" +msgstr "" + +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." +msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as unconfirmed." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now ignored." +msgid_plural "%(count)d feedback submissions are now ignored." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now recognized." +msgid_plural "%(count)d feedback submissions are now recognized." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/apps.py +msgid "Adjudicator Feedback" +msgstr "" + +#: adjfeedback/forms.py +msgid "chair" +msgstr "ойынның бас төрешісі" + +#: adjfeedback/forms.py +msgid "solo" +msgstr "" + +#: adjfeedback/forms.py +msgid "panellist" +msgstr "қосымша төреші" + +#: adjfeedback/forms.py +msgid "trainee" +msgstr "үйренуші" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "This field is required." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "Overall score (%(min)d=worst; %(max)d=best)*" +msgstr "" + +#: adjfeedback/forms.py +msgid "Ignored" +msgstr "" + +#. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" +#: adjfeedback/forms.py +msgid "Submitted - " +msgstr "" + +#. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (%(adjpos)s)" +msgstr "" + +#: adjfeedback/forms.py +msgid "-- Adjudicators --" +msgstr "" + +#: adjfeedback/forms.py +msgid "Adjudicator this feedback is about" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (chair gave oral)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (panellist gave oral as chair rolled)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) didn't have a score" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) had too many columns" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" +msgstr "" + +#: adjfeedback/forms.py +msgid "There were no scores to import." +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator" +msgstr "төреші" + +#: adjfeedback/models.py +msgid "round" +msgstr "ойын" + +#: adjfeedback/models.py +msgid "score" +msgstr "" + +#: adjfeedback/models.py +msgid "timestamp" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score history" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score histories" +msgstr "" + +#: adjfeedback/models.py +msgid "question" +msgstr "" + +#: adjfeedback/models.py +msgid "feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py +msgid "checkbox" +msgstr "" + +#: adjfeedback/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer (textbox)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer scale" +msgstr "" + +#: adjfeedback/models.py +msgid "float" +msgstr "" + +#: adjfeedback/models.py +msgid "text" +msgstr "" + +#: adjfeedback/models.py +msgid "long text" +msgstr "" + +#: adjfeedback/models.py +msgid "select one" +msgstr "" + +#: adjfeedback/models.py +msgid "select multiple" +msgstr "" + +#: adjfeedback/models.py +msgid "tournament" +msgstr "турнир" + +#: adjfeedback/models.py +msgid "sequence number" +msgstr "" + +#: adjfeedback/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: adjfeedback/models.py +msgid "name" +msgstr "" + +#: adjfeedback/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "reference" +msgstr "" + +#: adjfeedback/models.py +msgid "Code-compatible reference, e.g., \"agree_with_decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "from adjudicator" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicators should be asked this question (about other adjudicators)" +msgstr "" + +#: adjfeedback/models.py +msgid "from team" +msgstr "" + +#: adjfeedback/models.py +msgid "Teams should be asked this question" +msgstr "" + +#: adjfeedback/models.py +msgid "answer type" +msgstr "" + +#: adjfeedback/models.py +msgid "required" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: adjfeedback/models.py +msgid "minimum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "maximum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "choices" +msgstr "" + +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback question" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback questions" +msgstr "" + +#: adjfeedback/models.py adjfeedback/views.py +msgid "ignored" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether the feedback should affect the adjudicator's score" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedbacks" +msgstr "" + +#: adjfeedback/models.py +msgid "Either the source adjudicator or source team wasn't specified." +msgstr "" + +#: adjfeedback/models.py +msgid "There was both a source adjudicator and a source team." +msgstr "" + +#: adjfeedback/models.py +msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicator did not see this debate." +msgstr "" + +#: adjfeedback/tables.py +msgid "Whether the adj is marked as breaking (click to mark)" +msgstr "" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py +msgid "Current weighted score" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's current rating." +msgstr "" + +#: adjfeedback/tables.py +msgid "Base score result" +msgstr "" + +#: adjfeedback/tables.py +msgid "Click to edit base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "Assigned base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The current difference between an adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The difference between this adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores" +msgstr "" + +#: adjfeedback/tables.py +msgid "Feedback Per Round" +msgstr "" + +#: adjfeedback/tables.py +msgid "Hover over the data points to show the average score received in that round" +msgstr "" + +#: adjfeedback/tables.py +#, python-format +msgid "View %(count)s
feedback" +msgid_plural "View %(count)s
feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/tables.py +msgid "Unsubmitted feedback ballots" +msgstr "" + +#: adjfeedback/tables.py +msgid "View Missing Feedback" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +msgid "Who is the feedback from?" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html +msgid "Enter Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html +#, python-format +msgid "Add Feedback from %(name)s" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html +msgid "Add Feedback" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are some problems with this feedback submission. Please review and correct them." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Overview" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Latest" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Unsubmitted" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Important" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Comments" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Source" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Target" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Bulk Update Scores" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "Feedback %(source_type)s %(source_name)s" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't submitted any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't received any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The score given in this piece of feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(round)s %(score)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "On %(adjudicator)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Received as %(as_type)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Base %(base)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (their %(relationship)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (%(relationship)s from %(side)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "From unknown" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(time)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Confirm" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-ignore" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignore" +msgstr "" + +#: adjfeedback/templates/feedback_cards_list.html +msgid "No feedback has been submitted yet" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "%(c_breaking)s marked as breaking" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Base" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Feedback" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Score Ratio" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." +msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." +msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_chairs)s chair" +msgid_plural "%(c_chairs)s chairs" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_panellists)s panellist" +msgid_plural "%(c_panellists)s panellists" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_trainees)s trainee" +msgid_plural "%(c_trainees)s trainees" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Change Base Score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Base score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Save Base Score" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "Who are you?" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "click your name or your team on this list" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgctxt "page title" +msgid "Update Adjudicator Scores" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +#, python-format +msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "The adjudicators' names must match their names in the tab system exactly." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Submit" +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Overview" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback on Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(count)d feedback" +msgid_plural "%(count)d feedbacks" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +msgid "Feedbacks" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "From Teams" +msgstr "" + +#: adjfeedback/views.py +msgid "From Adjudicators" +msgstr "" + +#: adjfeedback/views.py +msgid "Latest Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(30 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Only Comments" +msgstr "" + +#: adjfeedback/views.py +msgid "(250 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Important Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(rating was much higher/lower than expected)" +msgstr "" + +#: adjfeedback/views.py +msgid "A Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Institution" +msgstr "" + +#: adjfeedback/views.py +msgid "An Adjudicator" +msgstr "" + +#: adjfeedback/views.py +msgid "Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback from %(source)s on %(target)s added." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" +msgstr "" + +#: adjfeedback/views.py +msgid "Whoops! The value isn't a valid base score." +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Progress" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" +msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" +msgstr[0] "" +msgstr[1] "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." +msgstr "" + +#: adjfeedback/views.py +msgid "confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-ignored" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Updated base score for %(count)d adjudicator." +msgid_plural "Updated base scores for %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/adjfeedback/locale/ms/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ms/LC_MESSAGES/django.po index b30df001800..9ac7a3a83ce 100644 --- a/tabbycat/adjfeedback/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:54\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,936 +17,932 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "Yang Di-Pertua Dewan" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "ahli panel" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "trainee" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "hakim" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "pusingan" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "cap masa" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "pertandingan" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Komen" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/pt/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/pt/LC_MESSAGES/django.po index 8c62e8a5250..1d0219d73bc 100644 --- a/tabbycat/adjfeedback/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:46\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,951 +17,947 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "Escalas de números inteiros devem ter um mínimo e um máximo" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "alvo" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "juiz fonte" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "dupla fonte" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "Alvo" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Fonte" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "1 submissão de feedback foi marcada como confirmada. Note que isso pode ter causado com que outras submissões de feedback tenham sido marcadas como não confirmadas." msgstr[1] "%(count)d submissões de feedback foram marcadas como confirmadas. Note que isso pode ter causado com que outras submissões de feedback tenham sido marcadas como não confirmadas." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "1 submissão de feedback não foi marcada como confirmado, provavelmente porque outras submissões de feedback conflitantes também foram marcadas como confirmadas." msgstr[1] "%(count)d submissões de feedback não foram marcadas como confirmados, provavelmente porque outras submissões de feedback conflitantes também foram marcadas como confirmadas." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "1 submissão de feedback foi marcada como não confirmada." msgstr[1] "%(count)d submissões de feedback foram marcadas como não confirmadas." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "1 submissão de feedback está agora como \"ignorada\"." msgstr[1] "%(count)d submissões de feedback estão agora como \"ignoradas\"." -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "1 submissão de feedback agora está como \"reconhecida\"." msgstr[1] "%(count)d submissões de feedback estão agora como \"reconhecidas\"." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Avaliação de juiz" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "presidente" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "sozinho" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "juiz auxiliar" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "aprendiz" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "Sim" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "Não" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "Este campo é obrigatório." -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Pontuação geral (%(min)d=pior; %(max)d=melhor)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "Ignorado" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Juízes --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Juiz que este feedback é sobre" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s (o presidente deu feedback oral)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "Esta linha (para %(adjudicator)s) não teve uma pontuação" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "Esta linha (para %(adjudicator)s) teve muitas colunas" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "Existem vários juízes chamados \"%(adjudicator)s\", então você não pode usar o importador em massa para atualizar suas pontuações. Por favor, faça isso na página Visão Geral do Feedback." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "Não há juiz neste torneio com o nome de \"%(adjudicator)s\"" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "A pontuação para %(adjudicator)s, \"%(score)s\", não é um número" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "Não haviam pontuações para importar." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "juiz" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "rodada" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "pontuação" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "marca de tempo" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "pergunta" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "feedback" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "resposta" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "resposta booleana de uma avaliação de juiz" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "respostas booleanas de uma avaliação de juiz" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "caixa de seleção" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "texto" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "texto longo" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "selecione um" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "selecione vários" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "torneio" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "número sequencial" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "A pergunta exibida aos participantes, por exemplo, \"Concordou com a decisão?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "nome" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Um apelido para a pergunta, por exemplo, \"Concordar com a decisão\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "referência" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Referência compatível com a programação, por exemplo, \"concordo_com_decisao\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "do juiz" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "Deverão ser feitas estas perguntas aos juízes (sobre outros juízes)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "das duplas" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "Estas perguntas devem ser feitas às duplas" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "tipo de resposta" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "obrigatório" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "Se os participantes são obrigados a preencher este campo" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "valor mínimo" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valor mínimo permitido para campos numéricos (ignorado para campos de texto ou booleanos)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "valor máximo" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Valor máximo permitido para campos numéricos (ignorado para campos de texto ou booleanos)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "escolhas" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "pergunta para a avaliação dos juízes" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "perguntas para a avaliação dos juízes" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "ignorado" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "Se a avaliação deve afetar a pontuação do juiz" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "avaliação de juiz" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "avaliações de juiz" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "O juiz de origem ou a dupla de origem não foi especificada." -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "Houve tanto um juiz de origem quanto uma dupla de origem." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "O juiz não viu este debate." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "Se o juiz está marcado como classificado (clique para marcar)" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "Pontuação ponderada atualizada" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "A classificação atual deste juiz." -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "O desvio padrão das pontuações atuais deste juiz; com números maiores, o que significa menos resultados consistentes de avaliações de juízes." -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "O desvio padrão dos resultados atuais deste juiz" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "Avaliação por Rodada" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "Passe sobre os pontos de dados para mostrar a pontuação média recebida nessa rodada" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" msgstr[1] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "Cédulas de feedback não enviadas" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "Visualizar avaliações faltantes" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "De quem é esta avaliação?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "Inserir avaliação" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "Adicionar feedback de %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "Adicionar feedback" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "Não há avaliações a serem feitas porque nenhuma rodada foi divulgada ao público. Volte quanto tiverem!" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "Este torneio espera que você envie avaliação apenas no juiz que der o feedback. Não envie avaliações sobre outros juízes." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "Este torneio espera que você avalie todos os juízes na mesa (incluindo aprendizes)." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Há alguns problemas com a submissão desta avaliação. Por favor, reveja e conserte-os." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "Ao enviar este formulário, seu endereço IP será armazenado para fins de registro." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Visão geral" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "Último" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "Não submetido" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "Importante" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Comentários" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "Por fonte" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "Por alvo" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "Feedback %(source_type)s%(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)s ainda não submeteu nenhum feedback." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s ainda não recebeu nenhuma avaliação." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "Isso é muito provável porque a dupla ou o juiz que enviou essa avaliação submeteu várias vezes sobre a mesma pessoa; ou porque a dupla enviou várias avaliações em múltiplos juízes (ao invés de ter enviado apenas sobre o juiz que deu o feedback)." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "Não confirmado; não afetará a pontuação deste juiz." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "A avaliação é considerado para o juiz, mas não é tido em conta para o cálculo da pontuação." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "Ignorado; não afetará a pontuação deste juiz." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "Esta avaliação foi submetida para um juiz, mas parece que ele foi removido do debate. Você provavelmente deve ir para a área de Editar Banco de Dados e excluir esta avaliação." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "A pontuação dada para esta parte da avaliação." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "Recebido como %(as)s" +msgid "Received as %(as_type)s" +msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "De %(source)s (seus %(relationship)s)" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "De %(source)s (%(relationship)s de %(side)s)" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "De desconhecido" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "%(time)s" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "Desfazer confirmação" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "Confirmar" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "Desfazer o \"ignorar\"" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "Ignorar" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "Nenhum feedback foi submetido até agora" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "%(c_breaking)s marcado como classificante" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "A atual configuração de avaliaçãopermite e espera que apenas os presidentes enviem avaliações (sobre seus auxiliares e aprendizes)." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "A atual configuração de avaliação permite e espera que todos os juízes (incluindo os aprendizes) enviem avaliações sobre todos os outros membros da mesa (incluindo aprendizes)." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "Há um %(nadjs_outside_range)s juiz com a pontuação fora da margem permitida de pontuações de juízes, que atualmente é de %(min_score)s até %(max_score)s. Isso pode causar que a alocação automática de juízes aja de formas não previstas. Se você preferir utilizar uma margem mais ampla de pontuação, você pode configurar isso em configuração de avaliação." msgstr[1] "Há %(nadjs_outside_range)s juízes com pontuações fora da margem permitida de pontuações de juízes, que atualmente é de %(min_score)s até %(max_score)s. Isso pode causar que a alocação automática de juízes aja de formas não previstas. Se você preferir utilizar uma margem mais ampla de pontuação, você pode configurar isso em configuração de avaliação." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Avaliação de juiz" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "" msgstr[1] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "Quem é você?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "Atualizar Pontuações dos Juízes" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "Não há quaisquer juízes neste torneio, então você não pode atualizar quaisquer pontuações. Você talvez queira importar alguns juízes primeiro." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "Submeter" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "Visão geral do feedback" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "Procurar feedback de um juiz" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "%(count)d feedback" msgstr[1] "%(count)d feedbacks" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Feedbacks" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "Procurar feedback" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "Das duplas" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "Dos juízes" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "Último feedback" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(30 mais recentes)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "Apenas Comentários" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "(250 mais recentes)" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "Uma dupla" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "Dupla" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "Instituição" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "Um juiz" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Juiz" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" msgstr[1] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/ro/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ro/LC_MESSAGES/django.po index 736000595a5..e0413ce1932 100644 --- a/tabbycat/adjfeedback/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:56\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,34 +12,45 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:43 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:68 adjfeedback/admin.py:126 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:69 adjfeedback/admin.py:127 adjfeedback/models.py:220 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:70 adjfeedback/admin.py:128 adjfeedback/models.py:222 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:84 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:85 adjfeedback/admin.py:149 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:167 +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." @@ -47,7 +58,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/admin.py:179 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." @@ -55,7 +66,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." @@ -63,7 +74,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/admin.py:202 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." @@ -71,7 +82,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/admin.py:212 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." @@ -79,387 +90,398 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:25 +#: adjfeedback/forms.py msgid "chair" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "solo" msgstr "" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "panellist" msgstr "" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "trainee" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:56 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:58 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:73 adjfeedback/forms.py:82 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:173 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:185 +#: adjfeedback/forms.py msgid "Ignored" msgstr "" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:244 adjfeedback/forms.py:307 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:245 adjfeedback/forms.py:312 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:268 adjfeedback/forms.py:342 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "" -#: adjfeedback/forms.py:285 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:309 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:315 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:317 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:408 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:413 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:426 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:432 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:440 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:455 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:12 adjfeedback/models.py:215 +#: adjfeedback/models.py msgid "adjudicator" msgstr "" -#: adjfeedback/models.py:15 +#: adjfeedback/models.py msgid "round" msgstr "" -#: adjfeedback/models.py:16 adjfeedback/models.py:216 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:17 +#: adjfeedback/models.py msgid "timestamp" msgstr "" -#: adjfeedback/models.py:20 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:29 +#: adjfeedback/models.py msgid "question" msgstr "" -#: adjfeedback/models.py:31 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:42 adjfeedback/models.py:50 adjfeedback/models.py:58 -#: adjfeedback/models.py:66 +#: adjfeedback/models.py msgid "answer" msgstr "" -#: adjfeedback/models.py:45 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:46 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:53 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:54 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:61 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:62 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:70 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:89 +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:90 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:91 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:92 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:93 +#: adjfeedback/models.py msgid "float" msgstr "" -#: adjfeedback/models.py:94 adjfeedback/models.py:127 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:95 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:96 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:97 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:123 +#: adjfeedback/models.py msgid "tournament" msgstr "" -#: adjfeedback/models.py:125 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:128 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:130 +#: adjfeedback/models.py msgid "name" msgstr "" -#: adjfeedback/models.py:131 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:133 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:134 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:137 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:138 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:140 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:144 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "required" msgstr "" -#: adjfeedback/models.py:147 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:150 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:153 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:160 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:161 -msgid "Permissible choices for select one/multiple fields, separated by '//' (ignored for other fields)" +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:166 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:225 adjfeedback/views.py:761 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "" -#: adjfeedback/models.py:226 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:230 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:278 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:281 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:283 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:285 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py +msgid "N/A" +msgstr "" + +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:83 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:92 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:96 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:105 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:124 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" @@ -467,215 +489,218 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/tables.py:147 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:171 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format -msgid "Add Feedback from %(source_name)s" +msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "\n" -" On %(adjudicator)s\n" -" " +msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:85 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:90 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:100 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html #, python-format -msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit on trainees." +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:20 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:31 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." @@ -683,7 +708,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." @@ -691,29 +716,29 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." @@ -721,7 +746,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." @@ -729,7 +754,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" @@ -737,11 +762,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" @@ -749,12 +774,12 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" @@ -762,83 +787,76 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 -#, python-format -msgid "Add feedback from %(name)s" -msgstr "" - -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:117 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:141 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:152 adjfeedback/views.py:176 adjfeedback/views.py:191 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" @@ -846,90 +864,90 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/views.py:155 adjfeedback/views.py:181 adjfeedback/views.py:196 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:162 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:170 adjfeedback/views.py:706 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:185 adjfeedback/views.py:700 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:270 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:281 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:293 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:361 +#: adjfeedback/views.py msgid "A Team" msgstr "" -#: adjfeedback/views.py:366 +#: adjfeedback/views.py msgid "Team" msgstr "" -#: adjfeedback/views.py:373 adjfeedback/views.py:392 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:378 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "" -#: adjfeedback/views.py:385 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "" -#: adjfeedback/views.py:512 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:542 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:621 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:644 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:671 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:692 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" @@ -937,24 +955,24 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: adjfeedback/views.py:737 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:761 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:797 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/ru/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/ru/LC_MESSAGES/django.po index 8aa30a339eb..fdc051e1f22 100644 --- a/tabbycat/adjfeedback/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:47\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,40 +17,40 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "Целые шкалы должны иметь минимум и максимум" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "цель" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "судья-источник" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "команда-источник" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "Цель" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "Источник" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." @@ -59,7 +59,7 @@ msgstr[1] "%(count)d переданных форм обратной связи msgstr[2] "%(count)d переданных форм обратной связи не были отмечены как подтвержденные. Заметьте, что это может привести к тому, что остальные формы обратной связи не будут отмечены как подтвержденные." msgstr[3] "%(count)d переданных форм обратной связи не были отмечены как подтвержденные. Заметьте, что это может привести к тому, что остальные формы обратной связи не будут отмечены как подтвержденные." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." @@ -68,7 +68,7 @@ msgstr[1] "%(count)d переданных форм обратной связи msgstr[2] "%(count)d переданных форм обратной связи не были отмечены как подтвержденные, возможно, потому, что были переданы противоречащие им формы обратной связи, которые были отмечены как подтвержденные." msgstr[3] "%(count)d переданных форм обратной связи не были отмечены как подтвержденные, возможно, потому, что были переданы противоречащие им формы обратной связи, которые были отмечены как подтвержденные." -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." @@ -77,7 +77,7 @@ msgstr[1] "%(count)d переданных форм обратной связи msgstr[2] "%(count)d переданных форм обратной связи были отмечены как неподтвержденные." msgstr[3] "%(count)d переданных форм обратной связи были отмечены как неподтвержденные." -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." @@ -86,7 +86,7 @@ msgstr[1] "%(count)d переданных форм обратной связи msgstr[2] "%(count)d переданных форм обратной связи теперь игнорируются." msgstr[3] "%(count)d переданных форм обратной связи теперь игнорируются." -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." @@ -95,399 +95,398 @@ msgstr[1] "%(count)d переданных форм обратной связи msgstr[2] "%(count)d переданных форм обратной связи теперь приняты." msgstr[3] "%(count)d переданных форм обратной связи теперь приняты." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Форма обратной связи на судью" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "чэйр" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "одиночно" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "винг" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "винг без права голоса" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "Да" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "Нет" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "Это поле является обязательным." -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "Общий балл (%(min)d=минимальный, %(max)d=максимальный)*" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "Проигнорированна" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Судьи --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "Судья, на которого эта форма" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "%(name)s (чэйр дал устный разбор)" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "%(name)s (этот член коллегии давал разбор вместо чеира)" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "Эта строка (для %(adjudicator)s) не имеет балла" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "Эта строка (для %(adjudicator)s) имеет слишком много столбцов" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "Существует несколько судей, называемых \"%(adjudicator)s\", поэтому вы не можете использовать импортер для обновления их баллов. Пожалуйста, сделайте это на странице Обзор обратной связи." -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "В этом турнире нет судьи с именем \"%(adjudicator)s\"" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "Балл для %(adjudicator)s, \"%(score)s\", не является числом" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "Не было баллов для импорта." -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "судья" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "раунд" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "балл" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "отметка времени" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "история изменений исходного рейтинга судьи" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "история изменений исходного рейтинга судей" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "вопрос" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "обратная связь" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "ответ" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "булевой ответ формы обратной связи на судью" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "булевые ответы формы обратной связи на судью" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "целый ответ формы обратной связи на судью" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "целые ответы формы обратной связи на судей" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "численный ответ формы обратной связи на судью" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "численные ответы формы обратной связи на судью" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "строчный ответ формы обратной связи на судью" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "строчные ответ формы обратной связи на судью" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "отметка" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "да/нет (выпадающий список)" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "целое число (текстовое поле)" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "целое число" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "десятичное число" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "текст" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "длинный текст" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "выберите один" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "выбрать несколько" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "турнир" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "порядковый номер" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "Вопрос, который отображается участникам, например, \"Вы согласны с решением?\"" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "название" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "Краткое название вопроса, например, \"Согласие с решением\"" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "ссылка" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "Совместимая с кодом ссылка, например, \"согласны__с_решением\"" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "от судьи" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "Судьям следует задавать этот вопрос (о других судьях)" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "от команды" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "Командам нужно задать этот вопрос" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "тип ответа" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "обязательно" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "Необходимо ли участникам заполнить это поле" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "минимальное значение" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Минимальное допустимое значение для числовых полей (игнорируется для текстовых или булевых полей)" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "максимальное значение" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "Максимальное допустимое значение для числовых полей (игнорируется для текстовых или булевых полей)" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "выборы" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "вопрос обратной связи" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "вопросы обратной связи" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "проигнорированна" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "Должна ли обратная связь повлиять на оценку судьи" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "форма обратной связи на судью" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "формы обратной связи на судью" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "Не указан либо судья-источник, либо команда-источник." -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "Есть и судья-источник и команда-источник." -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "В этой форме обратной связи ни указан ни один судья. Возможно, они были удалены?" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "Судья не видел этих дебатов." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "Был ли судья отмечен как брейкающийся (нажмите чтобы отметить)" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "Н/Д" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "Текущий взвешенный балл" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "Текущий рейтинг этого судьи." -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "Исходный рейтинг" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "Щелкните, чтобы изменить исходный рейтинг" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "Исходный рейтинг" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "Различие между исходным и текущим рейтингом судьи" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "Различие между исходным и текущим рейтингом этого судьи" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "Стандартное отклонение текущих оценок этого судьи; более большие числа означают менее последовательные оценки в обратной связи." -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "Стандартное отклонение текущих оценок этого судьи" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "Обратная связь за раунд" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "Наведите на числовые данных, чтобы показать средний результат, полученный в этом раунде" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" @@ -496,220 +495,218 @@ msgstr[1] "Посмотреть%(count)s
обратную связь" msgstr[2] "Посмотреть%(count)s
обратную связь" msgstr[3] "Посмотреть%(count)s
обратную связь" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "Не отправленные формы обратной связи" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "Посмотреть, какие формы обратной связи отсутствуют" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "От кого эта форма?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "Введите обратную связь" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "Добавить обратную связь от %(name)s" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "Добавить обратную связь" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "Нет возможностей сдать обратную связь, так как ни один раунд ни опубликован. Вернитесь сюда, когда они будут опубликованы!" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "Этот турнир ожидает, что вы отправите обратную связь только на судью, который вынес решение. Не отправляйте обратную связь на других судей." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "Этот турнир ожидает, что вы представите обратную связь о всех судьях коллегии (включая вингов без права голоса)." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "Есть проблемы с отправкой этой формы обратной связи. Пожалуйста, проверьте и исправьте их." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "При отправке этой формы ваш IP-адрес будет сохраняться в целях авторизации." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "Обзор" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "Последние" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "Неотправленные" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "Важное" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "Комментарии" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "По источнику" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "По цели" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "Массово обновить рейтинг" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "Обратная связь %(source_type)s %(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "%(source_name)s ещё не оставил обратную связь." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "%(source_name)s ещё не получил обратную связь." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "Это скорее всего потому, что команда или судья, которая представила эту обратную связь, несколько раз представила её на одно и том же лицо; или потому, что команда представила обратную связь на нескольких членов судейской коллегии (а не только на того, кто давал разбор)." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "Не потверждено; не повлияет на оценку этого судьи." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "Обратная связь подсчитывается для этого судьи, но не учитывается при расчете баллов." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "Проигнорировано; не повлияет на оценку этого судьи." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "Эта форма обратной связи отправлена на судью, но, похоже, он был удален из этих дебатов. Возможно, вы должны перейти в область Редактировать базу данных и удалить этот отзыв." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "Оценка, указанная в этой части формы обратной связи." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "На %(adjudicator)s" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr " Получено как %(as)s" +msgid "Received as %(as_type)s" +msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "От %(source)s их %(relationship)s" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "От %(source)s %(relationship)s от %(side)s" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "От неизвестного" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "%(time)s" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "Не подтвержденная обратная связь не считается поданной и не влияет на оценку этого судьи." -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "Отменить подтверждение" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "Подтвердить" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "Игнорируемая обратная связь считается поданной, но не влияет на оценку этого судьи." -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "Не игнорировать" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "Игнорировать" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "Ни одна форма обратной связи пока не отправлена" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "%(c_breaking)s отмечен как брейкающийся" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "Текущая настройка форм обратной связи позволяет только чэйрам предоставлять обратную связь (на их вингов и вингов без права голоса)." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "Текущая настройка форм обратной связи позволяет всем судьям (включая вингов без права голоса) предоставлять обратную связь на всех членов судейской коллегии (включая вингов без права голоса)." -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." @@ -718,7 +715,7 @@ msgstr[1] "Есть %(nadjs_outside_range)s судей с ба msgstr[2] "Есть %(nadjs_outside_range)s судей с баллами выходящими за пределы разрешенного диапазона судейских баллов, который установлен от %(min_score)s до %(max_score)s. Это может привести к сбоям в автоматическом распределении судей. Если вы хотите использовать более широкий диапазон, вы можете настроить его в настройках обратной связи." msgstr[3] "Есть %(nadjs_outside_range)s судей с баллами выходящими за пределы разрешенного диапазона судейских баллов, который установлен от %(min_score)s до %(max_score)s. Это может привести к сбоям в автоматическом распределении судей. Если вы хотите использовать более широкий диапазон, вы можете настроить его в настройках обратной связи." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." @@ -727,29 +724,29 @@ msgstr[1] "%(count)s судей имеют балл равный или боль msgstr[2] "%(count)s судей имеют балл равный или больший %(min)s и ниже %(max)s. Это %(percent)s %% судейского пула." msgstr[3] "%(count)s судей имеют балл равный или больший %(min)s и ниже %(max)s. Это %(percent)s %% судейского пула." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "Распределение баллов (диапазон: %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "Обратная связь" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "Доля балла судьи, определяемая обратной связью и тестом, устанавливается на каждый раунд. Нажмите на эту ссылку и отредактируйте поле \"вес обратной связи\", чтобы изменить это соотношение для %(round)s." -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "Рейтинг баллов" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." @@ -758,7 +755,7 @@ msgstr[1] "Есть %(c_chairs)s дебатов в этом раунде, так msgstr[2] "Есть %(c_chairs)s дебатов в этом раунде, так что должно быть %(c_chairs)s чэйров." msgstr[3] "Есть %(c_chairs)s дебатов в этом раунде, так что должно быть %(c_chairs)s чэйров." -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." @@ -767,7 +764,7 @@ msgstr[1] "Есть %(c_debates)s дебатов в этом раунде, но msgstr[2] "Есть %(c_debates)s дебатов в этом раунде, но только %(c_chairs)s, имеющих балл выше минимально допустимого для голосования." msgstr[3] "Есть %(c_debates)s дебатов в этом раунде, но только %(c_chairs)s, имеющих балл выше минимально допустимого для голосования." -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" @@ -776,11 +773,11 @@ msgstr[1] "%(c_chairs)s чэйры" msgstr[2] "%(c_chairs)s чэйры" msgstr[3] "%(c_chairs)s чэйры" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "Все судьи, чей рейтинг достаточен для того, чтобы иметь право голоса, но недостаточен, чтобы быть назначенным чэйром, буду автоматически назначены вингами." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" @@ -789,12 +786,12 @@ msgstr[1] "%(c_panellists)s винги" msgstr[2] "%(c_panellists)s винги" msgstr[3] "%(c_panellists)s винги" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "Судьи автоматически распределяются как винги без права голоса, если их балл меньше чем \"минимальный балл для права голоса\" (текущий %(min_voting)s установлен в настройках сетки этого турнира)." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" @@ -803,77 +800,76 @@ msgstr[1] "%(c_trainees)s винги без права голоса" msgstr[2] "%(c_trainees)s винги без права голоса" msgstr[3] "%(c_trainees)s винги без права голоса" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "Автораспределение (%(min_voting_score)s+для голосования)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "Изменить исходный рейтинг" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "Диапазон баллов для судей между %(pref.adj_min_score)s и %(pref.adj_max_score)s. Десятичные оценки разрешены. Это можно настроить в настройках обратной связи." -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "Минимальный балл, необходимый для того чтобы автоматически быть распределенным как винг или чэйр %(min_voting_score)s. Это может быть настроено в настройках сетки." -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "Исходный рейтинг" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "Сохранить исходный рейтинг" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "Кто вы?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "нажмите на ваше имя или команду в этом списке" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "Обновить баллы для судей" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "На этом турнире нет судей, поэтому вы не можете обновить какие-либо оценки. Вы можете сначала импортировать некоторых судей." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "Вставьте список имен судей и их новых оценок в формате: судья,балл. Например:" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "Имена судей должны точно соответствовать их именам в тэбе." -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "Есть некоторые проблемы с данными в этой форме:" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "Отправить" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "Обзор обратной связи" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "Найти обратную связь на судью" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" @@ -882,90 +878,90 @@ msgstr[1] "%(count)d обратная связь" msgstr[2] "%(count)d обратная связь" msgstr[3] "%(count)d обратная связь" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Обратная связь" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "Найти обратную связь" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "От команд" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "От судей" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "Последняя обратная связь" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "(30 последних)" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "Только комментарии" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "(250 последних)" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "Важная форма обратной связи" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "(рейтинг был гораздо выше/ниже, чем ожидалось)" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "Команда" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "Команда" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "Клуб" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "Судья" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Судьяя" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "Обратная связь от %(source)s на %(target)s добавлена." -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "Спасибо, %(source)s! Ваша обратная связь на %(target)s была записана." -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "Упс! Я не узнал, этого судью: %(adjudicator)s" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "Упс! Это значение исходного рейтинга не является допустимым." -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "Прогресс отправки форм обратной связи" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" @@ -974,24 +970,24 @@ msgstr[1] "%(nmissing)d оправка отсутствующей обратно msgstr[2] "%(nmissing)d оправка отсутствующей обратной связи (%(fulfilled).1f%% возвращена)" msgstr[3] "%(nmissing)d оправка отсутствующей обратной связи (%(fulfilled).1f%% возвращена)" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "Обратная связь на %(adjudicator)s от %(source)s составляет %(result)s." -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "подтвержденные" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "не подтверждено" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "не-игнорированно" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/tr/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/tr/LC_MESSAGES/django.po index 51a61e8310b..bd8b63a8eb7 100644 --- a/tabbycat/adjfeedback/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:26\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,937 +12,955 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:43 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" -msgstr "" +msgstr "Tamsayı ölçeklerinin minimum ve maksimumu olmalıdır" -#: adjfeedback/admin.py:68 adjfeedback/admin.py:126 +#: adjfeedback/admin.py msgid "target" -msgstr "" +msgstr "hedef" -#: adjfeedback/admin.py:69 adjfeedback/admin.py:127 adjfeedback/models.py:220 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" -msgstr "" +msgstr "kaynak jüri" -#: adjfeedback/admin.py:70 adjfeedback/admin.py:128 adjfeedback/models.py:222 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" -msgstr "" +msgstr "kaynak ekip" -#: adjfeedback/admin.py:84 +#: adjfeedback/admin.py msgid "Target" -msgstr "" +msgstr "Hedef" -#: adjfeedback/admin.py:85 adjfeedback/admin.py:149 +#: adjfeedback/admin.py msgid "Source" -msgstr "" +msgstr "Kaynak" -#: adjfeedback/admin.py:167 +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "Geri bildirim zaman damgası ve sürümü" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "%(timestamp)s (version %(version)s)" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 geri bildirim gönderimi onaylandı olarak işaretlendi. Bunun, diğer geri bildirim gönderimlerinin onaylanmadı olarak işaretlenmesine neden olabileceğini unutmayın." +msgstr[1] "%(count)d geri bildirim gönderimi onaylandı olarak işaretlendi. Bunun, diğer geri bildirim gönderimlerinin onaylanmadı olarak işaretlenmesine neden olabileceğini unutmayın." -#: adjfeedback/admin.py:179 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 geri bildirim gönderimi onaylandı olarak işaretlenmemiştir, çünkü muhtemelen onunla çakışan diğer geri bildirim gönderimleri de onaylandı olarak işaretlenmiştir." +msgstr[1] "%(count)d geri bildirim gönderimi onaylandı olarak işaretlenmemiştir, çünkü muhtemelen onunla çakışan diğer geri bildirim gönderimleri de onaylandı olarak işaretlenmiştir." -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 geri bildirim gönderimi onaylanmadı olarak işaretlendi." +msgstr[1] "%(count)d geri bildirim gönderimi onaylanmadı olarak işaretlendi." -#: adjfeedback/admin.py:202 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 geri bildirim artık gizli." +msgstr[1] "%(count)d geri bildirim artık gizli." -#: adjfeedback/admin.py:212 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 geri bildirim artık tanınıyor." +msgstr[1] "%(count)d geri bildirim artık tanınıyor." -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "Jüri Geri Bildirimi" -#: adjfeedback/forms.py:25 +#: adjfeedback/forms.py msgid "chair" msgstr "başkan" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "solo" -msgstr "" +msgstr "Solo" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "panellist" -msgstr "" +msgstr "panelist" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "trainee" -msgstr "" +msgstr "acemi" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:56 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:58 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:73 adjfeedback/forms.py:82 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:173 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" -msgstr "" +msgstr "Genel puan (%(min)d=worst; %(max)d=best)*" -#: adjfeedback/forms.py:185 +#: adjfeedback/forms.py msgid "Ignored" -msgstr "" +msgstr "Gizli" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:244 adjfeedback/forms.py:307 +#: adjfeedback/forms.py msgid "Submitted - " -msgstr "" +msgstr "- Gönderildi" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:245 adjfeedback/forms.py:312 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" -msgstr "" +msgstr "%(name)s (%(adjpos)s)" -#: adjfeedback/forms.py:268 adjfeedback/forms.py:342 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- Jüriler --" -#: adjfeedback/forms.py:285 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" -msgstr "" +msgstr "Hakem bu geri bildirim şunu hakkında:" -#: adjfeedback/forms.py:309 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:315 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" -msgstr "" +msgstr "%(name)s (başkan karar sebebi açıkladı)" -#: adjfeedback/forms.py:317 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" -msgstr "" +msgstr "%(name)s (panelist başkanın verdiği rolle karar sebebi açıkladı)" -#: adjfeedback/forms.py:408 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" -msgstr "" +msgstr "Bu satırın (% (adjudicator)s için) bir puanı yoktu" -#: adjfeedback/forms.py:413 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" -msgstr "" +msgstr "Bu satırda (%(adjudicator)s için) çok fazla sütun vardı" -#: adjfeedback/forms.py:426 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." -msgstr "" +msgstr "\"%(adjudicator)s\" adında birkaç jüri var, bu nedenle puanlarını güncellemek için toplu dışa aktarım kullanamazsınız. Lütfen bunun yerine Geri Bildirim Genel Bakış sayfasını kullanın." -#: adjfeedback/forms.py:432 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" -msgstr "" +msgstr "Bu turnuvada \"%(adjudicator)s\" isimli bir jüri bulunmamaktadır." -#: adjfeedback/forms.py:440 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" -msgstr "" +msgstr "%(adjudicator)s'un puanı \"%(score)s\" bir sayı değildir." -#: adjfeedback/forms.py:455 +#: adjfeedback/forms.py msgid "There were no scores to import." -msgstr "" +msgstr "İçe aktarılacak puan yoktu." -#: adjfeedback/models.py:12 adjfeedback/models.py:215 +#: adjfeedback/models.py msgid "adjudicator" msgstr "jüri" -#: adjfeedback/models.py:15 +#: adjfeedback/models.py msgid "round" msgstr "tur" -#: adjfeedback/models.py:16 adjfeedback/models.py:216 +#: adjfeedback/models.py msgid "score" -msgstr "" +msgstr "Puan" -#: adjfeedback/models.py:17 +#: adjfeedback/models.py msgid "timestamp" -msgstr "" +msgstr "Zaman damgası" -#: adjfeedback/models.py:20 +#: adjfeedback/models.py msgid "adjudicator base score history" -msgstr "" +msgstr "hakem temel puan geçmişi" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score histories" -msgstr "" +msgstr "hakem taban puan geçmişleri" -#: adjfeedback/models.py:29 +#: adjfeedback/models.py msgid "question" msgstr "soru" -#: adjfeedback/models.py:31 +#: adjfeedback/models.py msgid "feedback" -msgstr "geri Bildirim" +msgstr "geri bildirim" -#: adjfeedback/models.py:42 adjfeedback/models.py:50 adjfeedback/models.py:58 -#: adjfeedback/models.py:66 +#: adjfeedback/models.py msgid "answer" msgstr "cevap" -#: adjfeedback/models.py:45 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" -msgstr "" +msgstr "jüri geri bildirimi mantıksal cevabı" -#: adjfeedback/models.py:46 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" -msgstr "" +msgstr "jüri geri bildirimi mantıksal cevapları" -#: adjfeedback/models.py:53 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" -msgstr "" +msgstr "jüri geri bildirimi tamsayı cevabı" -#: adjfeedback/models.py:54 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" -msgstr "" +msgstr "jüri geri bildirimi tamsayı cevapları" -#: adjfeedback/models.py:61 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" -msgstr "" +msgstr "jüri geri bildirimi float cevabı" -#: adjfeedback/models.py:62 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" -msgstr "" +msgstr "jüri geri bildirimi float cevapları" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" -msgstr "" +msgstr "jüri geri bildirimi dizi cevabı" -#: adjfeedback/models.py:70 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" -msgstr "" +msgstr "jüri geri bildirimi dizi cevapları" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "jüri geri bildirimi çoklu seçim cevabı" -#: adjfeedback/models.py:89 +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "jüri geri bildirimi çoklu seçim cevapları" + +#: adjfeedback/models.py msgid "checkbox" -msgstr "" +msgstr "onay kutusu" -#: adjfeedback/models.py:90 +#: adjfeedback/models.py msgid "yes/no (dropdown)" -msgstr "" +msgstr "evet/hayır (açılır menü)" -#: adjfeedback/models.py:91 +#: adjfeedback/models.py msgid "integer (textbox)" -msgstr "" +msgstr "tamsayı (metin kutusu)" -#: adjfeedback/models.py:92 +#: adjfeedback/models.py msgid "integer scale" -msgstr "" +msgstr "tamsayı ölçeği" -#: adjfeedback/models.py:93 +#: adjfeedback/models.py msgid "float" -msgstr "" +msgstr "float" -#: adjfeedback/models.py:94 adjfeedback/models.py:127 +#: adjfeedback/models.py msgid "text" -msgstr "" +msgstr "metin" -#: adjfeedback/models.py:95 +#: adjfeedback/models.py msgid "long text" -msgstr "" +msgstr "uzun metin" -#: adjfeedback/models.py:96 +#: adjfeedback/models.py msgid "select one" -msgstr "" +msgstr "birini seçin" -#: adjfeedback/models.py:97 +#: adjfeedback/models.py msgid "select multiple" -msgstr "" +msgstr "birden fazla seç" -#: adjfeedback/models.py:123 +#: adjfeedback/models.py msgid "tournament" msgstr "turnuva" -#: adjfeedback/models.py:125 +#: adjfeedback/models.py msgid "sequence number" -msgstr "" +msgstr "sıra numarası" -#: adjfeedback/models.py:128 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" -msgstr "" +msgstr "Katılımcılara gösterilen soru, örneğin, \"Karara katıldınız mı?\"" -#: adjfeedback/models.py:130 +#: adjfeedback/models.py msgid "name" msgstr "isim" -#: adjfeedback/models.py:131 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" -msgstr "" +msgstr "Sorunun kısa adı, örneğin, \"Karara katılıyorum\"" -#: adjfeedback/models.py:133 +#: adjfeedback/models.py msgid "reference" -msgstr "" +msgstr "referans" -#: adjfeedback/models.py:134 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" -msgstr "" +msgstr "Kod uyumlu referanslar, örneğin \"agree_with_decision\"" -#: adjfeedback/models.py:137 +#: adjfeedback/models.py msgid "from adjudicator" -msgstr "" +msgstr "jüriden" -#: adjfeedback/models.py:138 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" -msgstr "" +msgstr "Bu soru jürilere sorulmalıdır (diğer jüriler hakkında)" -#: adjfeedback/models.py:140 +#: adjfeedback/models.py msgid "from team" -msgstr "" +msgstr "takımdan" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "Teams should be asked this question" -msgstr "" +msgstr "Bu soru takımlara sorulmalıdır" -#: adjfeedback/models.py:144 +#: adjfeedback/models.py msgid "answer type" -msgstr "" +msgstr "yanıt türü" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "required" -msgstr "" +msgstr "gerekli" -#: adjfeedback/models.py:147 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" -msgstr "" +msgstr "Katılımcıların bu alanı doldurmaları gerekip gerekmediği" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "minimum value" -msgstr "" +msgstr "minimum değer" -#: adjfeedback/models.py:150 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" -msgstr "" +msgstr "Sayısal alanlar için izin verilen minimum değer (metin veya mantıksal alanlar için yoksayılır)" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "maximum value" -msgstr "" +msgstr "maksimum değer" -#: adjfeedback/models.py:153 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" -msgstr "" +msgstr "Sayısal alanlar için izin verilen maksimum değer (metin veya mantıksal alanları için yoksayılır)" -#: adjfeedback/models.py:160 +#: adjfeedback/models.py msgid "choices" -msgstr "" +msgstr "seçenekler" -#: adjfeedback/models.py:161 -msgid "Permissible choices for select one/multiple fields, separated by '//' (ignored for other fields)" -msgstr "" +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "Bir/birden fazla alan seçmek için izin verilen seçenekler (diğer alanlar için yoksayılır)" -#: adjfeedback/models.py:166 +#: adjfeedback/models.py msgid "adjudicator feedback question" -msgstr "" +msgstr "jüri geri bildirim sorusu" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "adjudicator feedback questions" -msgstr "" +msgstr "jüri geri bildirim soruları" -#: adjfeedback/models.py:225 adjfeedback/views.py:761 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" -msgstr "" +msgstr "gizli" -#: adjfeedback/models.py:226 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" -msgstr "" +msgstr "Geri bildirimin jürinin puanını etkileyip etkilemeyeceği" -#: adjfeedback/models.py:230 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "jüri geri bildirimi" -#: adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator feedbacks" -msgstr "" +msgstr "jüri geri bildirimleri" -#: adjfeedback/models.py:278 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." -msgstr "" +msgstr "Kaynak jüri veya kaynak takım belirtilmedi." -#: adjfeedback/models.py:281 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." -msgstr "" +msgstr "Hem bir kaynak jüri hem de bir kaynak takımı vardı." -#: adjfeedback/models.py:283 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" -msgstr "" +msgstr "Bu geri bildirim için hedef olarak belirlenmiş bir jüri yok. Belki silindiler?" -#: adjfeedback/models.py:285 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." -msgstr "" +msgstr "Jüri bu maçı görmedi." -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" -msgstr "" +msgstr "Adj'nin break olarak işaretlenip işaretlenmediği (işaretlemek için tıklayın)" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "YOK" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" -msgstr "" +msgstr "Geçerli ağırlıklı puan" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." -msgstr "" +msgstr "Bu jürinin mevcut puanı" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" -msgstr "" +msgstr "Temel puan sonucu" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" -msgstr "" +msgstr "Temel puanı düzenlemek için tıklayın" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" -msgstr "" +msgstr "Atanan temel puan" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" -msgstr "" +msgstr "Bir jürinin temel puanı ile mevcut puanı arasındaki mevcut fark" -#: adjfeedback/tables.py:83 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" -msgstr "" +msgstr "Bu jürinin taban puanı ile mevcut puanı arasındaki fark" -#: adjfeedback/tables.py:92 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." -msgstr "" +msgstr "Bu jürinin mevcut puanlarının standart sapması; daha büyük sayılar daha az tutarlı geri bildirim puanları anlamına gelir." -#: adjfeedback/tables.py:96 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" -msgstr "" +msgstr "Bu jürinin mevcut puanlarının standart sapması" -#: adjfeedback/tables.py:105 +#: adjfeedback/tables.py msgid "Feedback Per Round" -msgstr "" +msgstr "Tur Başı Geri Bildirim" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" -msgstr "" +msgstr "Turda alınan ortalama puanı göstermek için fareyi veri noktalarının üzerine getirin" -#: adjfeedback/tables.py:124 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)s
geri bildirimi görüntüleyin" +msgstr[1] "%(count)s
geri bildirimlerini görüntüleyin" -#: adjfeedback/tables.py:147 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" -msgstr "" +msgstr "Gönderilmemiş geri bildirim ballotları" -#: adjfeedback/tables.py:171 +#: adjfeedback/tables.py msgid "View Missing Feedback" -msgstr "" +msgstr "Eksik Geri Bildirim Görüntüle" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" -msgstr "" +msgstr "Geri bildirim kimden geliyor?" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" -msgstr "" +msgstr "Geri Bildirim Girin" -#: adjfeedback/templates/enter_feedback.html:9 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format -msgid "Add Feedback from %(source_name)s" -msgstr "" +msgid "Add Feedback from %(name)s" +msgstr "%(name)s'den geri bildirim ekle" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" -msgstr "" +msgstr "Geri bildirim ekle" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" -msgstr "" +msgstr "Geri bildirim seçeneği yoktur, çünkü henüz açık bir tur yayınlanmamıştır. Yayınlanınca tekrar kontrol edin!" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." -msgstr "" +msgstr "Bu turnuvaya yalnızca kararı veren jüri hakkında geri bildirim göndermeniz gerekiyor. Diğer jüriler hakkında geri bildirim göndermeyin." -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." -msgstr "" +msgstr "Bu turnuvada paneldeki tüm jürilere (acemiler dahil) geri bildirim göndermeniz gerekiyor." -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." -msgstr "" +msgstr "Bu geri bildirimle ilgili bazı sorunlar vardır. Lütfen bunları gözden geçirin ve düzeltin." -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." -msgstr "" +msgstr "Bu formu gönderirken IP adresiniz kayıt amaçlı saklanacaktır." -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" -msgstr "" +msgstr "Genel bakış" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" -msgstr "" +msgstr "Sonuncu" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" -msgstr "" +msgstr "Gönderilmemiş" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" -msgstr "" +msgstr "Önemli" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" -msgstr "" +msgstr "Yorumlar" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" -msgstr "" +msgstr "Kaynağa Göre" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" -msgstr "" +msgstr "Hedefe Göre" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" -msgstr "" +msgstr "Toplu Güncelleme Puanları" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" -msgstr "" +msgstr "Geri bildirim %(source_type)s %(source_name)s" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." -msgstr "" +msgstr "%(source_name)s henüz herhangi bir geri bildirim göndermedi." -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." -msgstr "" +msgstr "%(source_name)s henüz herhangi bir geri bildirim almadı." -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." -msgstr "" +msgstr "Bunun nedeni büyük olasılıkla bu geri bildirimi gönderen ekibin veya jürinin aynı kişiye birkaç kez gönderimde bulunmuş olması veya bir ekibin sadece karar açıklayan jüri dışındaki panelistlere de geri bildirim göndermesi." -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." -msgstr "" +msgstr "Doğrulanmamış; hakemin puanını etkilemez." -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." -msgstr "" +msgstr "Bu geri bildirim hakem için sayılır, ancak puanlar hesaplanırken dikkate alınmaz." -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." -msgstr "" +msgstr "Gizli; bu hakemin puanını etkilemeyecektir." -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." -msgstr "" +msgstr "Bu geri bildirim bir jüriye verilmiş ancak jüri maçtan çıkartılmış. Veritabanını Düzenle alanına gitmeli ve bu geri bildirimi silmelisiniz." -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." -msgstr "" +msgstr "Bu geri bildirimde verilen puan." -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" -msgstr "" +msgstr "%(round)s %(score)s" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "\n" -" On %(adjudicator)s\n" -" " -msgstr "" +msgid "On %(adjudicator)s" +msgstr "%(adjudicator)s jürisi hakkında" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "" +msgid "Received as %(as_type)s" +msgstr " %(as_type)s olarak alındı." -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" -msgstr "" +msgstr "Taban %(base)s" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" -msgstr "" +msgstr "%(source)s (their %(relationship)s)'den" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" -msgstr "" +msgstr "%(source)s (%(relationship)s from %(side)s)'den" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" -msgstr "" +msgstr "Bilinmeyenden" -#: adjfeedback/templates/feedback_card.html:85 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:90 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." -msgstr "" +msgstr "Onaylanmamış geri bildirimler gönderilmemiş sayılır ve jürinin puanını etkilemez." -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" -msgstr "" +msgstr "Onayı kaldır" -#: adjfeedback/templates/feedback_card.html:95 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" -msgstr "" +msgstr "Onayla" -#: adjfeedback/templates/feedback_card.html:100 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." -msgstr "" +msgstr "Gizli geri bildirimler gönderilmiş sayılır, ancak jürinin puanını etkilemez." -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" -msgstr "" +msgstr "Gizlemeyi Geri Al" -#: adjfeedback/templates/feedback_card.html:105 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" -msgstr "" +msgstr "Gizle" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" -msgstr "" +msgstr "Henüz geri bildirim gönderilmedi" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" -msgstr "" +msgstr "%(c_breaking)s break oldu olarak işaretlendi" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." -msgstr "" +msgstr "Mevcut Geri Bildirim Ayarları yalnızca başkanların (panelistleri ve acemileri hakkında) geri bildirim göndermesine izin verir." -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format -msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit on trainees." -msgstr "" +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "Mevcut Geri Bildirim Ayarları hem başkanların hem de panelistlerin birbirleri hakkında ve başkanların acemilere geri bildirim göndermelerine izin verir." + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "Mevcut Geri Bildirim Ayarları hem panelistlerin hem de acemilerin başkanlara ve başkanların panelin diğer tüm üyelerine (acemiler dahil) geri bildirim göndermelerine izin verir." -#: adjfeedback/templates/feedback_overview.html:20 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." -msgstr "" +msgstr "Mevcut Geri Bildirim Ayarları, tüm jürilerin (acemiler dahil) panelin diğer tüm üyelerine (acemiler dahil) geri bildirim göndermesine izin verir." -#: adjfeedback/templates/feedback_overview.html:31 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Şuan %(nadjs_outside_range)s jüri jüri puanlarının izin verilen aralığı dışında. Şuan %(min_score)s ile %(max_score)s arası. Bu jüri otomatik tahsisinin çalışmasını etkileyebilir. Daha geniş bir puan aralığı ayarlamak için geri bildirim ayarları kullanabilirsiniz." +msgstr[1] "Şuan %(nadjs_outside_range)s jüri jüri puanlarının izin verilen aralığı dışında. Şuan %(min_score)s ile %(max_score)s arası. Bu jüri otomatik tahsisinin çalışmasını etkileyebilir. Daha geniş bir puan aralığı ayarlamak için geri bildirim ayarları kullanabilirsiniz." -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)s jürisi şu anda %(min)s puana eşit veya üstünde ve %(max)s puanın altında bir puana sahiptir. Bu, jüri havuzunun %(percent)s%%'sidir." +msgstr[1] "%(count)s jürileri şu anda %(min)s puana eşit veya üstünde ve %(max)s puanın altında bir puana sahiptir. Bu, jüriler havuzunun %(percent)s%%'sidir." -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" -msgstr "" +msgstr "Puan Dağılımları (range is %(min_score)s–%(max_score)s)" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" -msgstr "" +msgstr "Temel" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" -msgstr "Geri Bildirim" +msgstr "Geri bildirim" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." -msgstr "" +msgstr "Jürinin geri bildirimle ve testle belirlenen puanlarının oranı tur başına belirlenir. Bu bağlantıyı tıklayın ve %(round)s için bu oranı değiştirmek için \"Geri bildirim ağırlığı\" alanını düzenleyin." -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" -msgstr "" +msgstr "Puan Oranı" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Tur başına %(c_chairs)s maç var, bu yüzden %(c_chairs)s başkan gerekli." +msgstr[1] "Tur başına %(c_chairs)s maç var, bu yüzden %(c_chairs)s başkan gerekli." -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Tur başına %(c_chairs)s maç var, ancak minimum oy puanının üzerinde sadece %(c_chairs) var." +msgstr[1] "Tur başına %(c_chairs)s maç var, ancak minimum oy puanının üzerinde sadece %(c_chairs) var." -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s başkan" msgstr[1] "%(c_chairs)s başkanlar" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." -msgstr "" +msgstr "Oy kullanacak kadar yüksek bir puana sahip, ancak sandalye olarak tahsis edilmeyen tüm jüriler, otomatik tahsis tarafından panelist olarak tahsis edilir." -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(c_panellists)s panelist" +msgstr[1] "%(c_panellists)s panelistler" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." -msgstr "" +msgstr "Jüriler puanlarının bu turnuvanın Kura Kuralları yapılandırmasında belirlenen 'minimum oylama puanından' (%(min_voting)s) az olması durumunda otomatik tahsis tarafından acemi olarak tahsis edilir." -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(c_trainees)s acemi" +msgstr[1] "%(c_trainees)s acemiler" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" -msgstr "" +msgstr "Otomatik Tahsis Dağıtımları (oy vermek için %(min_voting_score)s+)" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" -msgstr "" +msgstr "Temel Puan Değiştir" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." -msgstr "" +msgstr "Jüri puan aralığı %(pref.adj_min_score)s ve %(pref.adj_max_score)s arasındadır. Ondalık sayılara izin verilir. Bu, Geri Bildirim Ayarları ile değiştirilebilir." -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." -msgstr "" +msgstr "Panelist veya başkan olarak tahsis edilmek içiin gereken minimum puan (otomatik tahsis kullanırken) %(min_voting_score)s. Bu, Kura Ayarları ile değiştirilebilir." -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" -msgstr "" +msgstr "temel puan" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" -msgstr "" +msgstr "temel puan kaydet" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" -msgstr "" +msgstr "Kimsin?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" -msgstr "" - -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 -#, python-format -msgid "Add feedback from %(name)s" -msgstr "" +msgstr "bu listede adınıza veya takımınıza tıklayın" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" -msgstr "" +msgstr "Jüri Puanlarını Güncelle" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." -msgstr "" +msgstr "Bu turnuvada herhangi bir jüri yok, bu yüzden puan güncelleyemezsiniz. Önce jüri aktarmak isteyebilirsiniz." -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" -msgstr "" +msgstr "Jüri adlarının ve yeni puanlarının bir listesini şu biçimde yapıştırın: jüri,puan. Mesela:" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." -msgstr "" +msgstr "Jürilerin adları, tab sistemindeki adlarıyla tam olarak eşleşmelidir." -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" -msgstr "" +msgstr "Bu formdaki verilerle ilgili bazı sorunlar var:" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" -msgstr "" +msgstr "Gönder" -#: adjfeedback/views.py:117 +#: adjfeedback/views.py msgid "Feedback Overview" -msgstr "" +msgstr "Geri bildirim genel bakış" -#: adjfeedback/views.py:141 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" -msgstr "" +msgstr "Jüri hakkında geri bildirim ara" -#: adjfeedback/views.py:152 adjfeedback/views.py:176 adjfeedback/views.py:191 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d geri bildirim" +msgstr[1] "%(count)d geri bildirimler" -#: adjfeedback/views.py:155 adjfeedback/views.py:181 adjfeedback/views.py:196 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "Geri Bildirimler" -#: adjfeedback/views.py:162 +#: adjfeedback/views.py msgid "Find Feedback" -msgstr "" +msgstr "Geri Bildirim Bul" -#: adjfeedback/views.py:170 adjfeedback/views.py:706 +#: adjfeedback/views.py msgid "From Teams" -msgstr "" +msgstr "Ekiplerden" -#: adjfeedback/views.py:185 adjfeedback/views.py:700 +#: adjfeedback/views.py msgid "From Adjudicators" -msgstr "" +msgstr "Jürilerden" -#: adjfeedback/views.py:270 +#: adjfeedback/views.py msgid "Latest Feedback" -msgstr "" +msgstr "Son Geri Bildirim" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "(30 most recent)" -msgstr "" +msgstr "(Son 30)" -#: adjfeedback/views.py:281 +#: adjfeedback/views.py msgid "Only Comments" -msgstr "" +msgstr "Sadece Yorumlar" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "(250 most recent)" -msgstr "" +msgstr "(Son 250)" -#: adjfeedback/views.py:293 +#: adjfeedback/views.py msgid "Important Feedback" -msgstr "" +msgstr "Önemli Geri Bildirim" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" -msgstr "" +msgstr "(derecelendirme beklenenden çok daha yüksek/düşük)" -#: adjfeedback/views.py:361 +#: adjfeedback/views.py msgid "A Team" -msgstr "" +msgstr "Bir Takım" -#: adjfeedback/views.py:366 +#: adjfeedback/views.py msgid "Team" msgstr "Takım" -#: adjfeedback/views.py:373 adjfeedback/views.py:392 +#: adjfeedback/views.py msgid "Institution" -msgstr "" +msgstr "Kurum" -#: adjfeedback/views.py:378 +#: adjfeedback/views.py msgid "An Adjudicator" -msgstr "" +msgstr "Bir jüri" -#: adjfeedback/views.py:385 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "Jüri" -#: adjfeedback/views.py:512 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." -msgstr "" +msgstr "%(target)s için %(source)s tarafından geri bildirim eklendi." -#: adjfeedback/views.py:542 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." -msgstr "" +msgstr "Teşekkürler, %(source)s! %(target)s hakkındaki geri bildiriminiz kaydedildi." -#: adjfeedback/views.py:621 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" -msgstr "" +msgstr "Tanınmayan juri: %(adjudicator)s" -#: adjfeedback/views.py:644 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." -msgstr "" +msgstr "Değer geçerli bir temel puan değil." -#: adjfeedback/views.py:671 +#: adjfeedback/views.py msgid "Feedback Progress" -msgstr "" +msgstr "Geri Bildirim Durumu" -#: adjfeedback/views.py:692 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(nmissing)d eksik geri bildirim gönderimi (%(fulfilled).1f%% returned)" +msgstr[1] "%(nmissing)d eksik geri bildirim gönderimleri (%(fulfilled).1f%% returned)" -#: adjfeedback/views.py:737 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." -msgstr "" +msgstr "%(adjudicator)s için %(source)s'den gelen geri bildirim artık %(result)s şeklindedir." -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "confirmed" -msgstr "" +msgstr "onaylanmış" -#: adjfeedback/views.py:751 +#: adjfeedback/views.py msgid "un-confirmed" -msgstr "" +msgstr "onaylanmamış" -#: adjfeedback/views.py:761 +#: adjfeedback/views.py msgid "un-ignored" -msgstr "" +msgstr "gizlenmemiş" -#: adjfeedback/views.py:797 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jürisi için temel puan güncellendi." +msgstr[1] "%(count)d jürileri için temel puanlar güncellendi." diff --git a/tabbycat/adjfeedback/locale/tzl/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/tzl/LC_MESSAGES/django.po index 4d9697a3deb..fc785132ca3 100644 --- a/tabbycat/adjfeedback/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-11-29 01:58\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,951 +17,947 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "crwdns29274:0crwdne29274:0" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "crwdns29276:0crwdne29276:0" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "crwdns29278:0crwdne29278:0" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "crwdns29280:0crwdne29280:0" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "crwdns51564:0%(timestamp)scrwdnd51564:0%(version)scrwdne51564:0" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "crwdns29282:0crwdne29282:0" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "crwdns29284:0crwdne29284:0" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "crwdns51566:0crwdne51566:0" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "crwdns51564:0%(timestamp)scrwdnd51564:0%(version)scrwdne51564:0" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "crwdns29286:1crwdne29286:1" msgstr[1] "crwdns29286:5%(count)dcrwdne29286:5" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "crwdns29288:1crwdne29288:1" msgstr[1] "crwdns29288:5%(count)dcrwdne29288:5" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "crwdns29290:1crwdne29290:1" msgstr[1] "crwdns29290:5%(count)dcrwdne29290:5" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "crwdns29292:1crwdne29292:1" msgstr[1] "crwdns29292:5%(count)dcrwdne29292:5" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "crwdns29294:1crwdne29294:1" msgstr[1] "crwdns29294:5%(count)dcrwdne29294:5" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "crwdns29296:0crwdne29296:0" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "crwdns29298:0crwdne29298:0" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "crwdns29300:0crwdne29300:0" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "crwdns29302:0crwdne29302:0" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "crwdns29304:0crwdne29304:0" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "crwdns29306:0crwdne29306:0" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "crwdns29308:0crwdne29308:0" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "crwdns29310:0crwdne29310:0" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "crwdns51062:0%(min)dcrwdnd51062:0%(max)dcrwdne51062:0" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "crwdns29314:0crwdne29314:0" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "crwdns51064:0crwdne51064:0" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "crwdns51066:0%(name)scrwdnd51066:0%(adjpos)scrwdne51066:0" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "crwdns29318:0crwdne29318:0" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "crwdns29320:0crwdne29320:0" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "crwdns51068:0%(name)scrwdne51068:0" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "crwdns51070:0%(name)scrwdne51070:0" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "crwdns51072:0%(name)scrwdne51072:0" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "crwdns29328:0%(adjudicator)scrwdne29328:0" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "crwdns29330:0%(adjudicator)scrwdne29330:0" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "crwdns29332:0%(adjudicator)scrwdne29332:0" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "crwdns29334:0%(adjudicator)scrwdne29334:0" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "crwdns29336:0%(adjudicator)scrwdnd29336:0%(score)scrwdne29336:0" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "crwdns29338:0crwdne29338:0" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "crwdns29340:0crwdne29340:0" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "crwdns29342:0crwdne29342:0" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "crwdns29344:0crwdne29344:0" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "crwdns29346:0crwdne29346:0" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "crwdns35554:0crwdne35554:0" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "crwdns35556:0crwdne35556:0" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "crwdns29352:0crwdne29352:0" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "crwdns29354:0crwdne29354:0" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "crwdns29356:0crwdne29356:0" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "crwdns29358:0crwdne29358:0" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "crwdns29360:0crwdne29360:0" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "crwdns29362:0crwdne29362:0" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "crwdns29364:0crwdne29364:0" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "crwdns29366:0crwdne29366:0" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "crwdns29368:0crwdne29368:0" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "crwdns29370:0crwdne29370:0" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "crwdns29372:0crwdne29372:0" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "crwdns51702:0crwdne51702:0" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "crwdns51704:0crwdne51704:0" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "crwdns29374:0crwdne29374:0" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "crwdns29376:0crwdne29376:0" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "crwdns29378:0crwdne29378:0" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "crwdns29380:0crwdne29380:0" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "crwdns29382:0crwdne29382:0" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "crwdns29384:0crwdne29384:0" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "crwdns29386:0crwdne29386:0" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "crwdns29388:0crwdne29388:0" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "crwdns29390:0crwdne29390:0" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "crwdns29392:0crwdne29392:0" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "crwdns29394:0crwdne29394:0" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "crwdns29396:0crwdne29396:0" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "crwdns29398:0crwdne29398:0" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "crwdns29400:0crwdne29400:0" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "crwdns29402:0crwdne29402:0" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "crwdns29404:0crwdne29404:0" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "crwdns29406:0crwdne29406:0" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "crwdns29408:0crwdne29408:0" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "crwdns29410:0crwdne29410:0" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "crwdns29412:0crwdne29412:0" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "crwdns29414:0crwdne29414:0" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "crwdns29416:0crwdne29416:0" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "crwdns29418:0crwdne29418:0" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "crwdns29420:0crwdne29420:0" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "crwdns29422:0crwdne29422:0" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "crwdns29424:0crwdne29424:0" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "crwdns29426:0crwdne29426:0" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "crwdns29428:0crwdne29428:0" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "crwdns51914:0crwdne51914:0" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "crwdns29432:0crwdne29432:0" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "crwdns29434:0crwdne29434:0" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "crwdns29436:0crwdne29436:0" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "crwdns51074:0crwdne51074:0" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "crwdns29440:0crwdne29440:0" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "crwdns29442:0crwdne29442:0" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "crwdns29444:0crwdne29444:0" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "crwdns29446:0crwdne29446:0" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "crwdns35160:0crwdne35160:0" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "crwdns29450:0crwdne29450:0" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "crwdns33934:0crwdne33934:0" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "crwdns51568:0crwdne51568:0" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "crwdns33936:0crwdne33936:0" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "crwdns33938:0crwdne33938:0" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "crwdns35558:0crwdne35558:0" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "crwdns35560:0crwdne35560:0" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "crwdns35562:0crwdne35562:0" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "crwdns35564:0crwdne35564:0" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "crwdns35566:0crwdne35566:0" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "crwdns33950:0crwdne33950:0" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "crwdns33952:0crwdne33952:0" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "crwdns29452:0crwdne29452:0" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "crwdns33954:0crwdne33954:0" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "crwdns35162:1%(count)scrwdne35162:1" msgstr[1] "crwdns35162:5%(count)scrwdne35162:5" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "crwdns33960:0crwdne33960:0" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "crwdns33962:0crwdne33962:0" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "crwdns29454:0crwdne29454:0" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "crwdns29456:0crwdne29456:0" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "crwdns51698:0%(name)scrwdne51698:0" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "crwdns29460:0crwdne29460:0" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "crwdns29462:0crwdne29462:0" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "crwdns33964:0crwdne33964:0" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "crwdns33966:0crwdne33966:0" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "crwdns29464:0crwdne29464:0" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "crwdns29466:0crwdne29466:0" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "crwdns29468:0crwdne29468:0" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "crwdns29470:0crwdne29470:0" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "crwdns29472:0crwdne29472:0" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "crwdns29474:0crwdne29474:0" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "crwdns33968:0crwdne33968:0" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "crwdns33970:0crwdne33970:0" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "crwdns33972:0crwdne33972:0" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "crwdns29480:0crwdne29480:0" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "crwdns29482:0%(source_type)scrwdnd29482:0%(source_name)scrwdne29482:0" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "crwdns29484:0%(source_name)scrwdne29484:0" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "crwdns29486:0%(source_name)scrwdne29486:0" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "crwdns33974:0crwdne33974:0" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "crwdns29490:0crwdne29490:0" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "crwdns29492:0crwdne29492:0" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "crwdns29494:0crwdne29494:0" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "crwdns29496:0crwdne29496:0" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "crwdns29498:0crwdne29498:0" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "crwdns51076:0%(round)scrwdnd51076:0%(score)scrwdne51076:0" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "crwdns51794:0%(adjudicator)scrwdne51794:0" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" -msgstr "crwdns33980:0%(as)scrwdne33980:0" +msgid "Received as %(as_type)s" +msgstr "crwdns52153:0%(as_type)scrwdne52153:0" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "crwdns51080:0%(base)scrwdne51080:0" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "crwdns33982:0%(source)scrwdnd33982:0%(relationship)scrwdne33982:0" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "crwdns33984:0%(source)scrwdnd33984:0%(relationship)scrwdnd33984:0%(side)scrwdne33984:0" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "crwdns29512:0crwdne29512:0" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "crwdns33986:0%(time)scrwdne33986:0" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "crwdns35042:0crwdne35042:0" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "crwdns33990:0crwdne33990:0" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "crwdns33992:0crwdne33992:0" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "crwdns35044:0crwdne35044:0" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "crwdns29518:0crwdne29518:0" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "crwdns29520:0crwdne29520:0" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "crwdns29522:0crwdne29522:0" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "crwdns29524:0%(c_breaking)scrwdne29524:0" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "crwdns29526:0%(option_url)scrwdne29526:0" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "crwdns51916:0%(option_url)scrwdne51916:0" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "crwdns51918:0%(option_url)scrwdne51918:0" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "crwdns29530:0%(option_url)scrwdne29530:0" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "crwdns29532:1%(nadjs_outside_range)scrwdnd29532:1%(min_score)scrwdnd29532:1%(max_score)scrwdnd29532:1%(feedback_settings_url)scrwdne29532:1" msgstr[1] "crwdns29532:5%(nadjs_outside_range)scrwdnd29532:5%(min_score)scrwdnd29532:5%(max_score)scrwdnd29532:5%(feedback_settings_url)scrwdne29532:5" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "crwdns29534:1%(count)scrwdnd29534:1%(min)scrwdnd29534:1%(max)scrwdnd29534:1%(percent)scrwdne29534:1" msgstr[1] "crwdns29534:5%(count)scrwdnd29534:5%(min)scrwdnd29534:5%(max)scrwdnd29534:5%(percent)scrwdne29534:5" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "crwdns29536:0%(min_score)scrwdnd29536:0%(max_score)scrwdne29536:0" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "crwdns51082:0crwdne51082:0" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "crwdns29540:0crwdne29540:0" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "crwdns29542:0%(round)scrwdne29542:0" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "crwdns29544:0crwdne29544:0" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "crwdns29546:1%(c_chairs)scrwdnd29546:1%(c_chairs)scrwdne29546:1" msgstr[1] "crwdns29546:5%(c_chairs)scrwdnd29546:5%(c_chairs)scrwdne29546:5" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "crwdns29548:1%(c_debates)scrwdnd29548:1%(c_chairs)scrwdne29548:1" msgstr[1] "crwdns29548:5%(c_debates)scrwdnd29548:5%(c_chairs)scrwdne29548:5" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "crwdns29550:1%(c_chairs)scrwdne29550:1" msgstr[1] "crwdns29550:5%(c_chairs)scrwdne29550:5" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "crwdns29552:0crwdne29552:0" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "crwdns29554:1%(c_panellists)scrwdne29554:1" msgstr[1] "crwdns29554:5%(c_panellists)scrwdne29554:5" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "crwdns29556:0%(min_voting)scrwdne29556:0" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "crwdns29558:1%(c_trainees)scrwdne29558:1" msgstr[1] "crwdns29558:5%(c_trainees)scrwdne29558:5" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "crwdns29560:0%(min_voting_score)scrwdne29560:0" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "crwdns35568:0crwdne35568:0" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "crwdns29564:0%(pref.adj_min_score)scrwdnd29564:0%(pref.adj_max_score)scrwdnd29564:0%(feedback_options)scrwdne29564:0" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "crwdns29566:0%(min_voting_score)scrwdnd29566:0%(draw_rules)scrwdne29566:0" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "crwdns35570:0crwdne35570:0" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "crwdns35572:0crwdne35572:0" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "crwdns29576:0crwdne29576:0" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "crwdns29578:0crwdne29578:0" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "crwdns29582:0crwdne29582:0" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "crwdns29584:0%(import_url)scrwdne29584:0" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "crwdns29586:0crwdne29586:0" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "crwdns29588:0crwdne29588:0" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "crwdns29590:0crwdne29590:0" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "crwdns29592:0crwdne29592:0" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "crwdns29594:0crwdne29594:0" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "crwdns29596:0crwdne29596:0" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "crwdns29598:1%(count)dcrwdne29598:1" msgstr[1] "crwdns29598:5%(count)dcrwdne29598:5" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "crwdns29600:0crwdne29600:0" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "crwdns29602:0crwdne29602:0" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "crwdns29604:0crwdne29604:0" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "crwdns29606:0crwdne29606:0" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "crwdns29608:0crwdne29608:0" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "crwdns29610:0crwdne29610:0" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "crwdns33996:0crwdne33996:0" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "crwdns33998:0crwdne33998:0" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "crwdns29612:0crwdne29612:0" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "crwdns29614:0crwdne29614:0" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "crwdns29616:0crwdne29616:0" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "crwdns29618:0crwdne29618:0" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "crwdns29620:0crwdne29620:0" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "crwdns29622:0crwdne29622:0" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "crwdns29624:0crwdne29624:0" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "crwdns29626:0%(source)scrwdnd29626:0%(target)scrwdne29626:0" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "crwdns29628:0%(source)scrwdnd29628:0%(target)scrwdne29628:0" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "crwdns51084:0%(adjudicator)scrwdne51084:0" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "crwdns35574:0crwdne35574:0" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "crwdns29636:0crwdne29636:0" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "crwdns34000:1%(nmissing)dcrwdnd34000:1%(fulfilled)crwdne34000:1" msgstr[1] "crwdns34000:5%(nmissing)dcrwdnd34000:5%(fulfilled)crwdne34000:5" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "crwdns51086:0%(adjudicator)scrwdnd51086:0%(source)scrwdnd51086:0%(result)scrwdne51086:0" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "crwdns34002:0crwdne34002:0" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "crwdns34004:0crwdne34004:0" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "crwdns34006:0crwdne34006:0" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.mo b/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..fee783d4dd2 Binary files /dev/null and b/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..db5f2f6a388 --- /dev/null +++ b/tabbycat/adjfeedback/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,950 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-22 12:33\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 924\n" + +#: adjfeedback/admin.py +msgid "Integer scales must have a minimum and maximum" +msgstr "" + +#: adjfeedback/admin.py +msgid "target" +msgstr "mục tiêu" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source adjudicator" +msgstr "" + +#: adjfeedback/admin.py adjfeedback/models.py +msgid "source team" +msgstr "" + +#: adjfeedback/admin.py +msgid "Target" +msgstr "Mục tiêu" + +#: adjfeedback/admin.py +msgid "Source" +msgstr "Nguồn" + +#: adjfeedback/admin.py +msgid "Feedback timestamp and version" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." +msgstr[0] "Có %(count)d lượt gửi phản hồi đã được đánh dấu xác nhận. Chú ý rằng điều này có thể hủy đánh dấu xác nhận các lượt gửi phản hồi khác." + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." +msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." +msgstr[0] "Có %(count)d lượt gửi phản hồi chưa được đánh dấu xác nhận, có thể bởi vì các lượt gửi phản hồi khác không trùng khớp đã được đánh dấu là xác nhận." + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission was marked as unconfirmed." +msgid_plural "%(count)d feedback submissions were marked as unconfirmed." +msgstr[0] "Có %(count)d lượt gửi phản hồi đã được đánh dấu là không xác nhận." + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now ignored." +msgid_plural "%(count)d feedback submissions are now ignored." +msgstr[0] "Đã bỏ qua %(count)d lượt gửi phản hồi." + +#: adjfeedback/admin.py +#, python-format +msgid "1 feedback submission is now recognized." +msgid_plural "%(count)d feedback submissions are now recognized." +msgstr[0] "" + +#: adjfeedback/apps.py +msgid "Adjudicator Feedback" +msgstr "Phản hồi của giám khảo" + +#: adjfeedback/forms.py +msgid "chair" +msgstr "giám khảo chính" + +#: adjfeedback/forms.py +msgid "solo" +msgstr "đơn" + +#: adjfeedback/forms.py +msgid "panellist" +msgstr "giám khảo phụ" + +#: adjfeedback/forms.py +msgid "trainee" +msgstr "giám khảo thực tập" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: adjfeedback/forms.py +msgid "This field is required." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "Overall score (%(min)d=worst; %(max)d=best)*" +msgstr "Điểm tổng kết (%(min)d=tệ nhất; %(max)d=tốt nhất)*" + +#: adjfeedback/forms.py +msgid "Ignored" +msgstr "Bỏ qua" + +#. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" +#: adjfeedback/forms.py +msgid "Submitted - " +msgstr "Đã gửi - " + +#. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (%(adjpos)s)" +msgstr "%(name)s (%(adjpos)s)" + +#: adjfeedback/forms.py +msgid "-- Adjudicators --" +msgstr "-- Giám khảo --" + +#: adjfeedback/forms.py +msgid "Adjudicator this feedback is about" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (chair gave oral)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "%(name)s (panellist gave oral as chair rolled)" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) didn't have a score" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "This line (for %(adjudicator)s) had too many columns" +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." +msgstr "" + +#: adjfeedback/forms.py +#, python-format +msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" +msgstr "Không có giám khảo nào trong giải này mang tên \"%(adjudicator)s\"" + +#: adjfeedback/forms.py +#, python-format +msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" +msgstr "" + +#: adjfeedback/forms.py +msgid "There were no scores to import." +msgstr "Không có điểm nào để đưa vào." + +#: adjfeedback/models.py +msgid "adjudicator" +msgstr "giám khảo" + +#: adjfeedback/models.py +msgid "round" +msgstr "vòng" + +#: adjfeedback/models.py +msgid "score" +msgstr "điểm" + +#: adjfeedback/models.py +msgid "timestamp" +msgstr "mốc thời gian" + +#: adjfeedback/models.py +msgid "adjudicator base score history" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator base score histories" +msgstr "" + +#: adjfeedback/models.py +msgid "question" +msgstr "câu hỏi" + +#: adjfeedback/models.py +msgid "feedback" +msgstr "phản hồi" + +#: adjfeedback/models.py +msgid "answer" +msgstr "trả lời" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback boolean answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback integer answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback float answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback string answers" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answer" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback multiple select answers" +msgstr "" + +#: adjfeedback/models.py +msgid "checkbox" +msgstr "" + +#: adjfeedback/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer (textbox)" +msgstr "" + +#: adjfeedback/models.py +msgid "integer scale" +msgstr "" + +#: adjfeedback/models.py +msgid "float" +msgstr "" + +#: adjfeedback/models.py +msgid "text" +msgstr "" + +#: adjfeedback/models.py +msgid "long text" +msgstr "" + +#: adjfeedback/models.py +msgid "select one" +msgstr "" + +#: adjfeedback/models.py +msgid "select multiple" +msgstr "" + +#: adjfeedback/models.py +msgid "tournament" +msgstr "" + +#: adjfeedback/models.py +msgid "sequence number" +msgstr "" + +#: adjfeedback/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: adjfeedback/models.py +msgid "name" +msgstr "" + +#: adjfeedback/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "reference" +msgstr "" + +#: adjfeedback/models.py +msgid "Code-compatible reference, e.g., \"agree_with_decision\"" +msgstr "" + +#: adjfeedback/models.py +msgid "from adjudicator" +msgstr "từ giám khảo" + +#: adjfeedback/models.py +msgid "Adjudicators should be asked this question (about other adjudicators)" +msgstr "" + +#: adjfeedback/models.py +msgid "from team" +msgstr "" + +#: adjfeedback/models.py +msgid "Teams should be asked this question" +msgstr "" + +#: adjfeedback/models.py +msgid "answer type" +msgstr "" + +#: adjfeedback/models.py +msgid "required" +msgstr "" + +#: adjfeedback/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: adjfeedback/models.py +msgid "minimum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "maximum value" +msgstr "" + +#: adjfeedback/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "choices" +msgstr "" + +#: adjfeedback/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback question" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback questions" +msgstr "" + +#: adjfeedback/models.py adjfeedback/views.py +msgid "ignored" +msgstr "bỏ qua" + +#: adjfeedback/models.py +msgid "Whether the feedback should affect the adjudicator's score" +msgstr "" + +#: adjfeedback/models.py +msgid "adjudicator feedback" +msgstr "phản hồi của giám khảo" + +#: adjfeedback/models.py +msgid "adjudicator feedbacks" +msgstr "các phản hồi của giám khảo" + +#: adjfeedback/models.py +msgid "Either the source adjudicator or source team wasn't specified." +msgstr "" + +#: adjfeedback/models.py +msgid "There was both a source adjudicator and a source team." +msgstr "" + +#: adjfeedback/models.py +msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" +msgstr "" + +#: adjfeedback/models.py +msgid "Adjudicator did not see this debate." +msgstr "" + +#: adjfeedback/tables.py +msgid "Whether the adj is marked as breaking (click to mark)" +msgstr "" + +#: adjfeedback/tables.py +msgid "N/A" +msgstr "Không xác định" + +#: adjfeedback/tables.py +msgid "Current weighted score" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's current rating." +msgstr "" + +#: adjfeedback/tables.py +msgid "Base score result" +msgstr "" + +#: adjfeedback/tables.py +msgid "Click to edit base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "Assigned base score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The current difference between an adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The difference between this adjudicator's base score and current score" +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." +msgstr "" + +#: adjfeedback/tables.py +msgid "The standard deviation of this adjudicator's current scores" +msgstr "" + +#: adjfeedback/tables.py +msgid "Feedback Per Round" +msgstr "" + +#: adjfeedback/tables.py +msgid "Hover over the data points to show the average score received in that round" +msgstr "" + +#: adjfeedback/tables.py +#, python-format +msgid "View %(count)s
feedback" +msgid_plural "View %(count)s
feedbacks" +msgstr[0] "" + +#: adjfeedback/tables.py +msgid "Unsubmitted feedback ballots" +msgstr "" + +#: adjfeedback/tables.py +msgid "View Missing Feedback" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +msgid "Who is the feedback from?" +msgstr "" + +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html +msgid "Enter Feedback" +msgstr "Nhập phản hồi" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html +#, python-format +msgid "Add Feedback from %(name)s" +msgstr "Thêm phản hồi từ %(name)s" + +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html +msgid "Add Feedback" +msgstr "Thêm phản hồi" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "There are some problems with this feedback submission. Please review and correct them." +msgstr "" + +#: adjfeedback/templates/enter_feedback.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Overview" +msgstr "Tổng quan" + +#: adjfeedback/templates/feedback_base.html +msgid "Latest" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Unsubmitted" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Important" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Comments" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Source" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "By Target" +msgstr "" + +#: adjfeedback/templates/feedback_base.html +msgid "Bulk Update Scores" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "Feedback %(source_type)s %(source_name)s" +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't submitted any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_by_source.html +#, python-format +msgid "%(source_name)s hasn't received any feedback yet." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored; will not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "The score given in this piece of feedback." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(round)s %(score)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "On %(adjudicator)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Received as %(as_type)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "Base %(base)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (their %(relationship)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "From %(source)s (%(relationship)s from %(side)s)" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "From unknown" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +#, python-format +msgid "%(time)s" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Un-confirm" +msgstr "Hủy xác nhận" + +#: adjfeedback/templates/feedback_card.html +msgid "Confirm" +msgstr "Xác nhận" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." +msgstr "Phản hồi bị bỏ qua được tính là đã nộp, nhưng không ảnh hưởng đến điểm của giám khảo." + +#: adjfeedback/templates/feedback_card.html +msgid "Un-ignore" +msgstr "" + +#: adjfeedback/templates/feedback_card.html +msgid "Ignore" +msgstr "Bỏ qua" + +#: adjfeedback/templates/feedback_cards_list.html +msgid "No feedback has been submitted yet" +msgstr "Không có phản hồi nào đã được nộp" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "%(c_breaking)s marked as breaking" +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." +msgstr "" + +#: adjfeedback/templates/feedback_overview.html +#, python-format +msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Base" +msgstr "Sàn" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Feedback" +msgstr "Phản hồi" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "Score Ratio" +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." +msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." +msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_chairs)s chair" +msgid_plural "%(c_chairs)s chairs" +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_panellists)s panellist" +msgid_plural "%(c_panellists)s panellists" +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." +msgstr "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "%(c_trainees)s trainee" +msgid_plural "%(c_trainees)s trainees" +msgstr[0] "" + +#: adjfeedback/templates/overview_breakdowns.html +#, python-format +msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Change Base Score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +#, python-format +msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Base score" +msgstr "" + +#: adjfeedback/templates/overview_modals.html +msgid "Save Base Score" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "Who are you?" +msgstr "" + +#: adjfeedback/templates/public_add_feedback.html +msgid "click your name or your team on this list" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgctxt "page title" +msgid "Update Adjudicator Scores" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +#, python-format +msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "The adjudicators' names must match their names in the tab system exactly." +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: adjfeedback/templates/update_adjudicator_scores.html +msgid "Submit" +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Overview" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback on Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(count)d feedback" +msgid_plural "%(count)d feedbacks" +msgstr[0] "" + +#: adjfeedback/views.py +msgid "Feedbacks" +msgstr "" + +#: adjfeedback/views.py +msgid "Find Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "From Teams" +msgstr "" + +#: adjfeedback/views.py +msgid "From Adjudicators" +msgstr "" + +#: adjfeedback/views.py +msgid "Latest Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(30 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Only Comments" +msgstr "" + +#: adjfeedback/views.py +msgid "(250 most recent)" +msgstr "" + +#: adjfeedback/views.py +msgid "Important Feedback" +msgstr "" + +#: adjfeedback/views.py +msgid "(rating was much higher/lower than expected)" +msgstr "" + +#: adjfeedback/views.py +msgid "A Team" +msgstr "" + +#: adjfeedback/views.py +msgid "Team" +msgstr "Đội" + +#: adjfeedback/views.py +msgid "Institution" +msgstr "Tổ chức" + +#: adjfeedback/views.py +msgid "An Adjudicator" +msgstr "" + +#: adjfeedback/views.py +msgid "Adjudicator" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback from %(source)s on %(target)s added." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" +msgstr "" + +#: adjfeedback/views.py +msgid "Whoops! The value isn't a valid base score." +msgstr "" + +#: adjfeedback/views.py +msgid "Feedback Progress" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" +msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" +msgstr[0] "" + +#: adjfeedback/views.py +#, python-format +msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." +msgstr "" + +#: adjfeedback/views.py +msgid "confirmed" +msgstr "đã xác nhận" + +#: adjfeedback/views.py +msgid "un-confirmed" +msgstr "" + +#: adjfeedback/views.py +msgid "un-ignored" +msgstr "" + +#: adjfeedback/views.py +#, python-format +msgid "Updated base score for %(count)d adjudicator." +msgid_plural "Updated base scores for %(count)d adjudicators." +msgstr[0] "" + diff --git a/tabbycat/adjfeedback/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/zh_Hans/LC_MESSAGES/django.po index aa5f1775156..21ab8e316c8 100644 --- a/tabbycat/adjfeedback/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/adjfeedback/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:50\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,936 +17,932 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/adjfeedback/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 924\n" -#: adjfeedback/admin.py:44 +#: adjfeedback/admin.py msgid "Integer scales must have a minimum and maximum" msgstr "" -#: adjfeedback/admin.py:73 adjfeedback/admin.py:139 +#: adjfeedback/admin.py msgid "target" msgstr "" -#: adjfeedback/admin.py:74 adjfeedback/admin.py:140 adjfeedback/models.py:236 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source adjudicator" msgstr "" -#: adjfeedback/admin.py:75 adjfeedback/admin.py:141 adjfeedback/models.py:238 +#: adjfeedback/admin.py adjfeedback/models.py msgid "source team" msgstr "" -#: adjfeedback/admin.py:91 -#, python-format -msgid "%(timestamp)s (version %(version)s)" -msgstr "" - -#: adjfeedback/admin.py:96 +#: adjfeedback/admin.py msgid "Target" msgstr "" -#: adjfeedback/admin.py:97 adjfeedback/admin.py:162 +#: adjfeedback/admin.py msgid "Source" msgstr "" -#: adjfeedback/admin.py:98 +#: adjfeedback/admin.py msgid "Feedback timestamp and version" msgstr "" -#: adjfeedback/admin.py:180 +#: adjfeedback/admin.py +#, python-format +msgid "%(timestamp)s (version %(version)s)" +msgstr "" + +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as confirmed. Note that this may have caused other feedback submissions to be marked as unconfirmed." msgstr[0] "" -#: adjfeedback/admin.py:192 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was not marked as confirmed, probably because other feedback submissions that conflict with it were also marked as confirmed." msgid_plural "%(count)d feedback submissions were not marked as confirmed, probably because other feedback submissions that conflict with them were also marked as confirmed." msgstr[0] "" -#: adjfeedback/admin.py:205 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission was marked as unconfirmed." msgid_plural "%(count)d feedback submissions were marked as unconfirmed." msgstr[0] "" -#: adjfeedback/admin.py:215 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now ignored." msgid_plural "%(count)d feedback submissions are now ignored." msgstr[0] "" -#: adjfeedback/admin.py:225 +#: adjfeedback/admin.py #, python-format msgid "1 feedback submission is now recognized." msgid_plural "%(count)d feedback submissions are now recognized." msgstr[0] "" -#: adjfeedback/apps.py:7 +#: adjfeedback/apps.py msgid "Adjudicator Feedback" msgstr "" -#: adjfeedback/forms.py:26 +#: adjfeedback/forms.py msgid "chair" msgstr "主席" -#: adjfeedback/forms.py:27 +#: adjfeedback/forms.py msgid "solo" msgstr "單主" -#: adjfeedback/forms.py:28 +#: adjfeedback/forms.py msgid "panellist" msgstr "成员" -#: adjfeedback/forms.py:29 +#: adjfeedback/forms.py msgid "trainee" msgstr "实习生" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:57 +#: adjfeedback/forms.py msgid "Yes" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:59 +#: adjfeedback/forms.py msgid "No" msgstr "" #. Translators: Please leave this blank, it should be left for the base Django translations. -#: adjfeedback/forms.py:74 adjfeedback/forms.py:83 +#: adjfeedback/forms.py msgid "This field is required." msgstr "" -#: adjfeedback/forms.py:164 +#: adjfeedback/forms.py #, python-format msgid "Overall score (%(min)d=worst; %(max)d=best)*" msgstr "" -#: adjfeedback/forms.py:176 +#: adjfeedback/forms.py msgid "Ignored" msgstr "不理了" #. Translators: e.g. "Megan Pearson (chair)", with adjpos="chair" -#: adjfeedback/forms.py:228 adjfeedback/forms.py:291 +#: adjfeedback/forms.py msgid "Submitted - " msgstr "" #. Translators: e.g. "Megan Pearson (panellist)", with round="Round 3", adjpos="panellist" -#: adjfeedback/forms.py:229 adjfeedback/forms.py:296 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (%(adjpos)s)" msgstr "" -#: adjfeedback/forms.py:252 adjfeedback/forms.py:326 +#: adjfeedback/forms.py msgid "-- Adjudicators --" msgstr "-- 裁判 --" -#: adjfeedback/forms.py:269 +#: adjfeedback/forms.py msgid "Adjudicator this feedback is about" msgstr "" -#: adjfeedback/forms.py:293 +#: adjfeedback/forms.py #, python-format msgid "%(name)s" msgstr "" -#: adjfeedback/forms.py:299 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (chair gave oral)" msgstr "" -#: adjfeedback/forms.py:301 +#: adjfeedback/forms.py #, python-format msgid "%(name)s (panellist gave oral as chair rolled)" msgstr "" -#: adjfeedback/forms.py:392 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) didn't have a score" msgstr "" -#: adjfeedback/forms.py:397 +#: adjfeedback/forms.py #, python-format msgid "This line (for %(adjudicator)s) had too many columns" msgstr "" -#: adjfeedback/forms.py:410 +#: adjfeedback/forms.py #, python-format msgid "There are several adjudicators called \"%(adjudicator)s\", so you can't use the bulk importer to update their score. Please do so in the Feedback Overview page instead." msgstr "" -#: adjfeedback/forms.py:416 +#: adjfeedback/forms.py #, python-format msgid "There is no adjudicator in this tournament with the name \"%(adjudicator)s\"" msgstr "" -#: adjfeedback/forms.py:424 +#: adjfeedback/forms.py #, python-format msgid "The score for %(adjudicator)s, \"%(score)s\", isn't a number" msgstr "" -#: adjfeedback/forms.py:439 +#: adjfeedback/forms.py msgid "There were no scores to import." msgstr "" -#: adjfeedback/models.py:13 adjfeedback/models.py:231 +#: adjfeedback/models.py msgid "adjudicator" msgstr "裁判" -#: adjfeedback/models.py:16 +#: adjfeedback/models.py msgid "round" msgstr "赛" -#: adjfeedback/models.py:17 adjfeedback/models.py:232 +#: adjfeedback/models.py msgid "score" msgstr "" -#: adjfeedback/models.py:18 +#: adjfeedback/models.py msgid "timestamp" msgstr "时间戳" -#: adjfeedback/models.py:21 +#: adjfeedback/models.py msgid "adjudicator base score history" msgstr "" -#: adjfeedback/models.py:22 +#: adjfeedback/models.py msgid "adjudicator base score histories" msgstr "" -#: adjfeedback/models.py:30 +#: adjfeedback/models.py msgid "question" msgstr "问题" -#: adjfeedback/models.py:32 +#: adjfeedback/models.py msgid "feedback" msgstr "" -#: adjfeedback/models.py:45 adjfeedback/models.py:55 adjfeedback/models.py:65 -#: adjfeedback/models.py:74 +#: adjfeedback/models.py msgid "answer" msgstr "回答" -#: adjfeedback/models.py:48 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answer" msgstr "" -#: adjfeedback/models.py:49 +#: adjfeedback/models.py msgid "adjudicator feedback boolean answers" msgstr "" -#: adjfeedback/models.py:58 +#: adjfeedback/models.py msgid "adjudicator feedback integer answer" msgstr "" -#: adjfeedback/models.py:59 +#: adjfeedback/models.py msgid "adjudicator feedback integer answers" msgstr "" -#: adjfeedback/models.py:68 +#: adjfeedback/models.py msgid "adjudicator feedback float answer" msgstr "" -#: adjfeedback/models.py:69 +#: adjfeedback/models.py msgid "adjudicator feedback float answers" msgstr "" -#: adjfeedback/models.py:77 +#: adjfeedback/models.py msgid "adjudicator feedback string answer" msgstr "" -#: adjfeedback/models.py:78 +#: adjfeedback/models.py msgid "adjudicator feedback string answers" msgstr "" -#: adjfeedback/models.py:86 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answer" msgstr "" -#: adjfeedback/models.py:87 +#: adjfeedback/models.py msgid "adjudicator feedback multiple select answers" msgstr "" -#: adjfeedback/models.py:106 +#: adjfeedback/models.py msgid "checkbox" msgstr "" -#: adjfeedback/models.py:107 +#: adjfeedback/models.py msgid "yes/no (dropdown)" msgstr "" -#: adjfeedback/models.py:108 +#: adjfeedback/models.py msgid "integer (textbox)" msgstr "" -#: adjfeedback/models.py:109 +#: adjfeedback/models.py msgid "integer scale" msgstr "" -#: adjfeedback/models.py:110 +#: adjfeedback/models.py msgid "float" msgstr "浮点" -#: adjfeedback/models.py:111 adjfeedback/models.py:145 +#: adjfeedback/models.py msgid "text" msgstr "" -#: adjfeedback/models.py:112 +#: adjfeedback/models.py msgid "long text" msgstr "" -#: adjfeedback/models.py:113 +#: adjfeedback/models.py msgid "select one" msgstr "" -#: adjfeedback/models.py:114 +#: adjfeedback/models.py msgid "select multiple" msgstr "" -#: adjfeedback/models.py:141 +#: adjfeedback/models.py msgid "tournament" msgstr "比赛" -#: adjfeedback/models.py:143 +#: adjfeedback/models.py msgid "sequence number" msgstr "" -#: adjfeedback/models.py:146 +#: adjfeedback/models.py msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" msgstr "" -#: adjfeedback/models.py:148 +#: adjfeedback/models.py msgid "name" msgstr "名称" -#: adjfeedback/models.py:149 +#: adjfeedback/models.py msgid "A short name for the question, e.g., \"Agree with decision\"" msgstr "" -#: adjfeedback/models.py:151 +#: adjfeedback/models.py msgid "reference" msgstr "" -#: adjfeedback/models.py:152 +#: adjfeedback/models.py msgid "Code-compatible reference, e.g., \"agree_with_decision\"" msgstr "" -#: adjfeedback/models.py:155 +#: adjfeedback/models.py msgid "from adjudicator" msgstr "" -#: adjfeedback/models.py:156 +#: adjfeedback/models.py msgid "Adjudicators should be asked this question (about other adjudicators)" msgstr "" -#: adjfeedback/models.py:158 +#: adjfeedback/models.py msgid "from team" msgstr "" -#: adjfeedback/models.py:159 +#: adjfeedback/models.py msgid "Teams should be asked this question" msgstr "" -#: adjfeedback/models.py:162 +#: adjfeedback/models.py msgid "answer type" msgstr "" -#: adjfeedback/models.py:164 +#: adjfeedback/models.py msgid "required" msgstr "必须的" -#: adjfeedback/models.py:165 +#: adjfeedback/models.py msgid "Whether participants are required to fill out this field" msgstr "" -#: adjfeedback/models.py:167 +#: adjfeedback/models.py msgid "minimum value" msgstr "" -#: adjfeedback/models.py:168 +#: adjfeedback/models.py msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:170 +#: adjfeedback/models.py msgid "maximum value" msgstr "" -#: adjfeedback/models.py:171 +#: adjfeedback/models.py msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" msgstr "" -#: adjfeedback/models.py:176 +#: adjfeedback/models.py msgid "choices" msgstr "" -#: adjfeedback/models.py:177 +#: adjfeedback/models.py msgid "Permissible choices for select one/multiple fields (ignored for other fields)" msgstr "" -#: adjfeedback/models.py:182 +#: adjfeedback/models.py msgid "adjudicator feedback question" msgstr "" -#: adjfeedback/models.py:183 +#: adjfeedback/models.py msgid "adjudicator feedback questions" msgstr "" -#: adjfeedback/models.py:241 adjfeedback/views.py:768 +#: adjfeedback/models.py adjfeedback/views.py msgid "ignored" msgstr "不理了" -#: adjfeedback/models.py:242 +#: adjfeedback/models.py msgid "Whether the feedback should affect the adjudicator's score" msgstr "" -#: adjfeedback/models.py:246 +#: adjfeedback/models.py msgid "adjudicator feedback" msgstr "" -#: adjfeedback/models.py:247 +#: adjfeedback/models.py msgid "adjudicator feedbacks" msgstr "" -#: adjfeedback/models.py:307 +#: adjfeedback/models.py msgid "Either the source adjudicator or source team wasn't specified." msgstr "" -#: adjfeedback/models.py:310 +#: adjfeedback/models.py msgid "There was both a source adjudicator and a source team." msgstr "" -#: adjfeedback/models.py:312 +#: adjfeedback/models.py msgid "There is no adjudicator specified as the target for this feedback. Perhaps they were deleted?" msgstr "" -#: adjfeedback/models.py:314 +#: adjfeedback/models.py msgid "Adjudicator did not see this debate." msgstr "" -#: adjfeedback/tables.py:19 +#: adjfeedback/tables.py msgid "Whether the adj is marked as breaking (click to mark)" msgstr "" -#: adjfeedback/tables.py:35 +#: adjfeedback/tables.py msgid "N/A" msgstr "不适用" -#: adjfeedback/tables.py:45 +#: adjfeedback/tables.py msgid "Current weighted score" msgstr "" -#: adjfeedback/tables.py:50 +#: adjfeedback/tables.py msgid "This adjudicator's current rating." msgstr "" -#: adjfeedback/tables.py:58 +#: adjfeedback/tables.py msgid "Base score result" msgstr "" -#: adjfeedback/tables.py:65 +#: adjfeedback/tables.py msgid "Click to edit base score" msgstr "" -#: adjfeedback/tables.py:70 +#: adjfeedback/tables.py msgid "Assigned base score" msgstr "" -#: adjfeedback/tables.py:79 +#: adjfeedback/tables.py msgid "The current difference between an adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:84 +#: adjfeedback/tables.py msgid "The difference between this adjudicator's base score and current score" msgstr "" -#: adjfeedback/tables.py:93 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores; with larger numbers meaning less consistent feedback scores." msgstr "" -#: adjfeedback/tables.py:97 +#: adjfeedback/tables.py msgid "The standard deviation of this adjudicator's current scores" msgstr "" -#: adjfeedback/tables.py:106 +#: adjfeedback/tables.py msgid "Feedback Per Round" msgstr "" -#: adjfeedback/tables.py:107 +#: adjfeedback/tables.py msgid "Hover over the data points to show the average score received in that round" msgstr "" -#: adjfeedback/tables.py:125 +#: adjfeedback/tables.py #, python-format msgid "View %(count)s
feedback" msgid_plural "View %(count)s
feedbacks" msgstr[0] "" -#: adjfeedback/tables.py:148 +#: adjfeedback/tables.py msgid "Unsubmitted feedback ballots" msgstr "" -#: adjfeedback/tables.py:172 +#: adjfeedback/tables.py msgid "View Missing Feedback" msgstr "" -#: adjfeedback/templates/add_feedback.html:5 +#: adjfeedback/templates/add_feedback.html msgid "Who is the feedback from?" msgstr "" -#: adjfeedback/templates/add_feedback.html:6 -#: adjfeedback/templates/enter_feedback.html:5 +#: adjfeedback/templates/add_feedback.html +#: adjfeedback/templates/enter_feedback.html msgid "Enter Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:9 -#: adjfeedback/templates/public_add_feedback.html:13 -#: adjfeedback/templates/public_add_feedback.html:20 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/public_add_feedback.html #, python-format msgid "Add Feedback from %(name)s" msgstr "" -#: adjfeedback/templates/enter_feedback.html:13 -#: adjfeedback/templates/feedback_base.html:42 +#: adjfeedback/templates/enter_feedback.html +#: adjfeedback/templates/feedback_base.html msgid "Add Feedback" msgstr "" -#: adjfeedback/templates/enter_feedback.html:21 +#: adjfeedback/templates/enter_feedback.html msgid "There are no feedback options because no rounds have been released to the public yet. Check back when they have!" msgstr "" -#: adjfeedback/templates/enter_feedback.html:27 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback only on the adjudicator who delivered the adjudication. Do not submit feedback on other adjudicators." msgstr "" -#: adjfeedback/templates/enter_feedback.html:29 +#: adjfeedback/templates/enter_feedback.html msgid "This tournament expects you to submit feedback on all of the adjudicators on the panel (including trainees)." msgstr "" -#: adjfeedback/templates/enter_feedback.html:43 +#: adjfeedback/templates/enter_feedback.html msgid "There are some problems with this feedback submission. Please review and correct them." msgstr "" -#: adjfeedback/templates/enter_feedback.html:58 +#: adjfeedback/templates/enter_feedback.html msgid "When submitting this form your IP address will be stored for logging purposes." msgstr "" -#: adjfeedback/templates/feedback_base.html:8 +#: adjfeedback/templates/feedback_base.html msgid "Overview" msgstr "" -#: adjfeedback/templates/feedback_base.html:12 +#: adjfeedback/templates/feedback_base.html msgid "Latest" msgstr "" -#: adjfeedback/templates/feedback_base.html:16 +#: adjfeedback/templates/feedback_base.html msgid "Unsubmitted" msgstr "" -#: adjfeedback/templates/feedback_base.html:20 +#: adjfeedback/templates/feedback_base.html msgid "Important" msgstr "" -#: adjfeedback/templates/feedback_base.html:24 +#: adjfeedback/templates/feedback_base.html msgid "Comments" msgstr "" -#: adjfeedback/templates/feedback_base.html:28 +#: adjfeedback/templates/feedback_base.html msgid "By Source" msgstr "" -#: adjfeedback/templates/feedback_base.html:32 +#: adjfeedback/templates/feedback_base.html msgid "By Target" msgstr "" -#: adjfeedback/templates/feedback_base.html:39 +#: adjfeedback/templates/feedback_base.html msgid "Bulk Update Scores" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:4 -#: adjfeedback/templates/feedback_by_source.html:5 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "Feedback %(source_type)s %(source_name)s" msgstr "" -#: adjfeedback/templates/feedback_by_source.html:12 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't submitted any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_by_source.html:17 +#: adjfeedback/templates/feedback_by_source.html #, python-format msgid "%(source_name)s hasn't received any feedback yet." msgstr "" -#: adjfeedback/templates/feedback_card.html:8 +#: adjfeedback/templates/feedback_card.html msgid "This is most likely because the team or adjudicator who submitted this feedback has submitted several times on the same person; or because a team has submitted feedback on multiple panellists (rather than just the orallist)." msgstr "" -#: adjfeedback/templates/feedback_card.html:9 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:14 +#: adjfeedback/templates/feedback_card.html msgid "The feedback is counted for the adjudicator, but is not taken into account when calculating scores." msgstr "" -#: adjfeedback/templates/feedback_card.html:15 +#: adjfeedback/templates/feedback_card.html msgid "Ignored; will not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:20 +#: adjfeedback/templates/feedback_card.html msgid "This feedback is submitted on an adjudicator but it looks like they have been since been removed from the debate. You should probably go to the Edit Database area and delete this feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:29 +#: adjfeedback/templates/feedback_card.html msgid "The score given in this piece of feedback." msgstr "" -#: adjfeedback/templates/feedback_card.html:30 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(round)s %(score)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:34 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "On %(adjudicator)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:39 +#: adjfeedback/templates/feedback_card.html #, python-format -msgid "Received as %(as)s" +msgid "Received as %(as_type)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:43 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "Base %(base)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:50 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (their %(relationship)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:54 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "From %(source)s (%(relationship)s from %(side)s)" msgstr "" -#: adjfeedback/templates/feedback_card.html:58 +#: adjfeedback/templates/feedback_card.html msgid "From unknown" msgstr "" -#: adjfeedback/templates/feedback_card.html:88 +#: adjfeedback/templates/feedback_card.html #, python-format msgid "%(time)s" msgstr "" -#: adjfeedback/templates/feedback_card.html:93 +#: adjfeedback/templates/feedback_card.html msgid "Unconfirmed feedback is not counted as having been submitted and does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Un-confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:98 +#: adjfeedback/templates/feedback_card.html msgid "Confirm" msgstr "" -#: adjfeedback/templates/feedback_card.html:103 +#: adjfeedback/templates/feedback_card.html msgid "Ignored feedback is counted as having been submitted, but does not affect this adjudicator's score." msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Un-ignore" msgstr "" -#: adjfeedback/templates/feedback_card.html:108 +#: adjfeedback/templates/feedback_card.html msgid "Ignore" msgstr "不理" -#: adjfeedback/templates/feedback_cards_list.html:17 +#: adjfeedback/templates/feedback_cards_list.html msgid "No feedback has been submitted yet" msgstr "" -#: adjfeedback/templates/feedback_overview.html:4 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "%(c_breaking)s marked as breaking" msgstr "" -#: adjfeedback/templates/feedback_overview.html:10 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects only chairs to submit feedback (on their panellists and trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:14 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both chairs and panellists to submit feedback on each other, and also chairs to submit feedback on trainees." msgstr "" -#: adjfeedback/templates/feedback_overview.html:18 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects both panellists and trainees to submit feedback on chairs, and chairs to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:22 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "The current feedback configuration allows and expects all adjudicators (including trainees) to submit feedback on every other member of the panel (including trainees)." msgstr "" -#: adjfeedback/templates/feedback_overview.html:30 +#: adjfeedback/templates/feedback_overview.html #, python-format msgid "There is %(nadjs_outside_range)s adjudicator with a score outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgid_plural "There are %(nadjs_outside_range)s adjudicators with scores outside the permitted range of adjudicator scores, which is currently set as %(min_score)s to %(max_score)s. This can cause adjudicator auto-allocation to behave in unexpected ways. If you'd like to use a wider score range, you can configure this in feedback settings." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:13 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(count)s adjudicator currently has a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgid_plural "%(count)s adjudicators currently have a score equal to or above %(min)s and below %(max)s. That is %(percent)s%% of the adjudicator pool." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:27 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Score Distributions (range is %(min_score)s–%(max_score)s)" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:43 +#: adjfeedback/templates/overview_breakdowns.html msgid "Base" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:49 +#: adjfeedback/templates/overview_breakdowns.html msgid "Feedback" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:53 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "The proportion of an adjudicator's score determined by feedback vs the test is set on a per-round basis. Click this link and edit the 'Feedback weight' field to modify this ratio for %(round)s." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:57 +#: adjfeedback/templates/overview_breakdowns.html msgid "Score Ratio" msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:72 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_chairs)s debate per round, so there needs to be %(c_chairs)s chair." msgid_plural "There are %(c_chairs)s debates per round, so there need to be %(c_chairs)s chairs." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:78 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "There is %(c_debates)s debate per round, but only %(c_chairs)s above the minimum voting score." msgid_plural "There are %(c_debates)s debates per round, but only %(c_chairs)s above the minimum voting score." msgstr[0] "" -#: adjfeedback/templates/overview_breakdowns.html:85 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_chairs)s chair" msgid_plural "%(c_chairs)s chairs" msgstr[0] "%(c_chairs)s位主席" -#: adjfeedback/templates/overview_breakdowns.html:95 +#: adjfeedback/templates/overview_breakdowns.html msgid "All adjudicators with a score high enough to vote, but who aren't allocated as chairs, are allocated as panellists by the auto-allocator." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:99 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_panellists)s panellist" msgid_plural "%(c_panellists)s panellists" msgstr[0] "%(c_panellists)s的成员" -#: adjfeedback/templates/overview_breakdowns.html:109 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Adjudicators are allocated as trainees by the auto-allocator if their score is less than the 'minimum voting score' (currently %(min_voting)s) set in this tournament's Draw Rules configuration." msgstr "" -#: adjfeedback/templates/overview_breakdowns.html:114 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "%(c_trainees)s trainee" msgid_plural "%(c_trainees)s trainees" msgstr[0] "%(c_trainees)s个实习生" -#: adjfeedback/templates/overview_breakdowns.html:123 +#: adjfeedback/templates/overview_breakdowns.html #, python-format msgid "Auto-Allocate Distributions (%(min_voting_score)s+ to vote)" msgstr "" -#: adjfeedback/templates/overview_modals.html:10 +#: adjfeedback/templates/overview_modals.html msgid "Change Base Score" msgstr "" -#: adjfeedback/templates/overview_modals.html:17 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The score range for adjudicators is between %(pref.adj_min_score)s and %(pref.adj_max_score)s. Decimals are permitted. This can be configured in Feedback settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:25 +#: adjfeedback/templates/overview_modals.html #, python-format msgid "The minimum score require to be allocated as a panellist or chair (when using the auto-allocator) is %(min_voting_score)s. This can be configured in Draw settings." msgstr "" -#: adjfeedback/templates/overview_modals.html:34 +#: adjfeedback/templates/overview_modals.html msgid "Base score" msgstr "" -#: adjfeedback/templates/overview_modals.html:41 +#: adjfeedback/templates/overview_modals.html msgid "Save Base Score" msgstr "" -#: adjfeedback/templates/public_add_feedback.html:4 +#: adjfeedback/templates/public_add_feedback.html msgid "Who are you?" msgstr "您是谁?" -#: adjfeedback/templates/public_add_feedback.html:5 +#: adjfeedback/templates/public_add_feedback.html msgid "click your name or your team on this list" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:4 -#: adjfeedback/templates/update_adjudicator_scores.html:6 +#: adjfeedback/templates/update_adjudicator_scores.html msgctxt "page title" msgid "Update Adjudicator Scores" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:11 +#: adjfeedback/templates/update_adjudicator_scores.html #, python-format msgid "There aren't any adjudicators in this tournament, so you can't update any scores. You might want to import some adjudicators first." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:28 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Paste a list of adjudicators' names and their new scores, in the format: adjudicator,score. For example:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:40 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "The adjudicators' names must match their names in the tab system exactly." msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:47 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "There are some problems with the data on this form:" msgstr "" -#: adjfeedback/templates/update_adjudicator_scores.html:58 +#: adjfeedback/templates/update_adjudicator_scores.html msgid "Submit" msgstr "" -#: adjfeedback/views.py:118 +#: adjfeedback/views.py msgid "Feedback Overview" msgstr "" -#: adjfeedback/views.py:142 +#: adjfeedback/views.py msgid "Find Feedback on Adjudicator" msgstr "" -#: adjfeedback/views.py:153 adjfeedback/views.py:177 adjfeedback/views.py:192 +#: adjfeedback/views.py #, python-format msgid "%(count)d feedback" msgid_plural "%(count)d feedbacks" msgstr[0] "" -#: adjfeedback/views.py:156 adjfeedback/views.py:182 adjfeedback/views.py:197 +#: adjfeedback/views.py msgid "Feedbacks" msgstr "" -#: adjfeedback/views.py:163 +#: adjfeedback/views.py msgid "Find Feedback" msgstr "" -#: adjfeedback/views.py:171 adjfeedback/views.py:710 +#: adjfeedback/views.py msgid "From Teams" msgstr "" -#: adjfeedback/views.py:186 adjfeedback/views.py:704 +#: adjfeedback/views.py msgid "From Adjudicators" msgstr "" -#: adjfeedback/views.py:271 +#: adjfeedback/views.py msgid "Latest Feedback" msgstr "" -#: adjfeedback/views.py:272 +#: adjfeedback/views.py msgid "(30 most recent)" msgstr "" -#: adjfeedback/views.py:282 +#: adjfeedback/views.py msgid "Only Comments" msgstr "" -#: adjfeedback/views.py:283 +#: adjfeedback/views.py msgid "(250 most recent)" msgstr "" -#: adjfeedback/views.py:294 +#: adjfeedback/views.py msgid "Important Feedback" msgstr "" -#: adjfeedback/views.py:295 +#: adjfeedback/views.py msgid "(rating was much higher/lower than expected)" msgstr "" -#: adjfeedback/views.py:362 +#: adjfeedback/views.py msgid "A Team" msgstr "一个队伍" -#: adjfeedback/views.py:367 +#: adjfeedback/views.py msgid "Team" msgstr "队伍" -#: adjfeedback/views.py:374 adjfeedback/views.py:391 +#: adjfeedback/views.py msgid "Institution" msgstr "" -#: adjfeedback/views.py:377 +#: adjfeedback/views.py msgid "An Adjudicator" msgstr "一个裁判" -#: adjfeedback/views.py:384 +#: adjfeedback/views.py msgid "Adjudicator" msgstr "裁判" -#: adjfeedback/views.py:511 +#: adjfeedback/views.py #, python-format msgid "Feedback from %(source)s on %(target)s added." msgstr "" -#: adjfeedback/views.py:541 +#: adjfeedback/views.py #, python-format msgid "Thanks, %(source)s! Your feedback on %(target)s has been recorded." msgstr "" -#: adjfeedback/views.py:625 +#: adjfeedback/views.py #, python-format msgid "Whoops! I didn't recognise that adjudicator: %(adjudicator)s" msgstr "" -#: adjfeedback/views.py:648 +#: adjfeedback/views.py msgid "Whoops! The value isn't a valid base score." msgstr "" -#: adjfeedback/views.py:675 +#: adjfeedback/views.py msgid "Feedback Progress" msgstr "" -#: adjfeedback/views.py:696 +#: adjfeedback/views.py #, python-format msgid "%(nmissing)d missing feedback submission (%(fulfilled).1f%% returned)" msgid_plural "%(nmissing)d missing feedback submissions (%(fulfilled).1f%% returned)" msgstr[0] "" -#: adjfeedback/views.py:741 +#: adjfeedback/views.py #, python-format msgid "Feedback for %(adjudicator)s from %(source)s is now %(result)s." msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "confirmed" msgstr "" -#: adjfeedback/views.py:755 +#: adjfeedback/views.py msgid "un-confirmed" msgstr "" -#: adjfeedback/views.py:768 +#: adjfeedback/views.py msgid "un-ignored" msgstr "" -#: adjfeedback/views.py:804 +#: adjfeedback/views.py #, python-format msgid "Updated base score for %(count)d adjudicator." msgid_plural "Updated base scores for %(count)d adjudicators." diff --git a/tabbycat/adjfeedback/management/commands/generatefeedback.py b/tabbycat/adjfeedback/management/commands/generatefeedback.py index e902f542238..bb045b94614 100644 --- a/tabbycat/adjfeedback/management/commands/generatefeedback.py +++ b/tabbycat/adjfeedback/management/commands/generatefeedback.py @@ -11,8 +11,8 @@ OBJECT_TYPE_CHOICES = ["round", "debate"] SUBMITTER_TYPE_MAP = { - 'tabroom': AdjudicatorFeedback.SUBMITTER_TABROOM, - 'public': AdjudicatorFeedback.SUBMITTER_PUBLIC, + 'tabroom': AdjudicatorFeedback.Submitter.TABROOM, + 'public': AdjudicatorFeedback.Submitter.PUBLIC, } User = get_user_model() diff --git a/tabbycat/adjfeedback/migrations/0014_alter_adjudicatorfeedback_submitter_type.py b/tabbycat/adjfeedback/migrations/0014_alter_adjudicatorfeedback_submitter_type.py new file mode 100644 index 00000000000..3d89c917ecb --- /dev/null +++ b/tabbycat/adjfeedback/migrations/0014_alter_adjudicatorfeedback_submitter_type.py @@ -0,0 +1,21 @@ +# Generated by Django 4.1.7 on 2023-09-03 01:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("adjfeedback", "0013_alter_adjudicatorfeedback_confirmer_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="adjudicatorfeedback", + name="submitter_type", + field=models.CharField( + choices=[("T", "Tab room"), ("P", "Public"), ("A", "Automation")], + max_length=1, + verbose_name="submitter type", + ), + ), + ] diff --git a/tabbycat/adjfeedback/models.py b/tabbycat/adjfeedback/models.py index eb8df9abf97..cfc530f5380 100644 --- a/tabbycat/adjfeedback/models.py +++ b/tabbycat/adjfeedback/models.py @@ -204,7 +204,7 @@ def choices_for_number_scale(self): def construct_number_scale(self, min_value, max_value): """Used to build up a semi-intelligent range of options for numeric scales. - Shifted here rather than the class so it can be more easily used to + Shifted here rather than the class so that it can be more easily used to construct the default values for printed forms.""" step = max((int(max_value) - int(min_value)) / 10, 1) options = list(range(int(min_value), int(max_value + 1), int(step))) diff --git a/tabbycat/adjfeedback/progress.py b/tabbycat/adjfeedback/progress.py index 3448f7273c4..db7bf0961e2 100644 --- a/tabbycat/adjfeedback/progress.py +++ b/tabbycat/adjfeedback/progress.py @@ -264,7 +264,7 @@ def __init__(self, team, tournament=None): def _submitted_feedback_queryset_operations(queryset): # this is also used by get_feedback_progress return queryset.filter(confirmed=True, - source_team__debate__round__stage=Round.STAGE_PRELIMINARY).select_related( + source_team__debate__round__stage=Round.Stage.PRELIMINARY).select_related( 'adjudicator', 'adjudicator__institution', 'source_team__debate__round') def get_submitted_feedback(self): @@ -277,7 +277,7 @@ def _debateteam_queryset_operations(queryset): debateteams = queryset.filter( debate__ballotsubmission__confirmed=True, debate__round__silent=False, - debate__round__stage=Round.STAGE_PRELIMINARY, + debate__round__stage=Round.Stage.PRELIMINARY, ).select_related('debate', 'debate__round').prefetch_related( 'debate__debateadjudicator_set__adjudicator') populate_confirmed_ballots([dt.debate for dt in debateteams], results=True) @@ -330,7 +330,7 @@ def __init__(self, adjudicator, tournament=None): def _submitted_feedback_queryset_operations(queryset): # this is also used by get_feedback_progress return queryset.filter(confirmed=True, - source_adjudicator__debate__round__stage=Round.STAGE_PRELIMINARY).select_related( + source_adjudicator__debate__round__stage=Round.Stage.PRELIMINARY).select_related( 'adjudicator', 'adjudicator__institution', 'source_adjudicator__debate__round') def get_submitted_feedback(self): @@ -342,7 +342,7 @@ def _debateadjudicator_queryset_operations(queryset): # this is also used by get_feedback_progress return queryset.filter( debate__ballotsubmission__confirmed=True, - debate__round__stage=Round.STAGE_PRELIMINARY, + debate__round__stage=Round.Stage.PRELIMINARY, ).select_related('debate', 'debate__round').prefetch_related( 'debate__debateadjudicator_set__adjudicator') diff --git a/tabbycat/adjfeedback/templates/feedback_card.html b/tabbycat/adjfeedback/templates/feedback_card.html index 6b04629b139..ddfa086ff8b 100644 --- a/tabbycat/adjfeedback/templates/feedback_card.html +++ b/tabbycat/adjfeedback/templates/feedback_card.html @@ -37,8 +37,8 @@ {% endblocktrans %}
- {% blocktrans trimmed with as=feedback.debate_adjudicator.get_type_display %} - Received as {{ as }} + {% blocktrans trimmed with as_type=feedback.debate_adjudicator.get_type_display %} + Received as {{ as_type }} {% endblocktrans %} {% blocktrans trimmed with base=feedback.adjudicator.base_score|floatformat:"1" %} @@ -68,9 +68,7 @@ {% else %} {% endif %} - - {{ item.question.reference }} - + {{ item.question.text }} {% elif item.question.answer_type == item.question.ANSWER_TYPE_FLOAT %} {{ item.question.text }}
{{ item.answer|floatformat:"2" }}
diff --git a/tabbycat/adjfeedback/templates/overview_modals.html b/tabbycat/adjfeedback/templates/overview_modals.html index 94e10600902..24523951d7f 100644 --- a/tabbycat/adjfeedback/templates/overview_modals.html +++ b/tabbycat/adjfeedback/templates/overview_modals.html @@ -34,7 +34,7 @@ + type="number" step="any"/>
diff --git a/tabbycat/adjfeedback/tests/test_progress.py b/tabbycat/adjfeedback/tests/test_progress.py index 24e9314f51b..b1b57e3f40b 100644 --- a/tabbycat/adjfeedback/tests/test_progress.py +++ b/tabbycat/adjfeedback/tests/test_progress.py @@ -73,9 +73,9 @@ def _create_debate(self, teams, adjs, votes, trainees=[], venue=None): aff, neg = teams aff_team = self._team(aff) - DebateTeam.objects.create(debate=debate, team=aff_team, side=DebateTeam.SIDE_AFF) + DebateTeam.objects.create(debate=debate, team=aff_team, side=DebateTeam.Side.AFF) neg_team = self._team(neg) - DebateTeam.objects.create(debate=debate, team=neg_team, side=DebateTeam.SIDE_NEG) + DebateTeam.objects.create(debate=debate, team=neg_team, side=DebateTeam.Side.NEG) chair = self._adj(adjs[0]) DebateAdjudicator.objects.create(debate=debate, adjudicator=chair, @@ -89,7 +89,7 @@ def _create_debate(self, teams, adjs, votes, trainees=[], venue=None): DebateAdjudicator.objects.create(debate=debate, adjudicator=trainee, type=DebateAdjudicator.TYPE_TRAINEE) - ballotsub = BallotSubmission(debate=debate, submitter_type=BallotSubmission.SUBMITTER_TABROOM) + ballotsub = BallotSubmission(debate=debate, submitter_type=BallotSubmission.Submitter.TABROOM) result = DebateResultByAdjudicatorWithScores(ballotsub) for t, side in zip(teams, ('aff', 'neg')): diff --git a/tabbycat/adjfeedback/utils.py b/tabbycat/adjfeedback/utils.py index d4926d683fb..75f09b69f7a 100644 --- a/tabbycat/adjfeedback/utils.py +++ b/tabbycat/adjfeedback/utils.py @@ -57,7 +57,9 @@ def expected_feedback_targets(debateadj, feedback_paths=None, debate=None): if feedback_paths == 'all-adjs' or debateadj.type == DebateAdjudicator.TYPE_CHAIR: targets = [(adj, pos) for adj, pos in adjudicators.with_positions() if adj.id != debateadj.adjudicator_id] - elif feedback_paths == 'with-t-on-c' or (feedback_paths == 'with-p-on-c' and debateadj.type == DebateAdjudicator.TYPE_PANEL): + elif feedback_paths == 'with-p-on-p' and debateadj.type == DebateAdjudicator.TYPE_PANEL: + targets = [(adj, pos) for adj, pos in adjudicators.with_positions() if adj.id != debateadj.adjudicator_id and pos != AdjudicatorAllocation.POSITION_TRAINEE] + elif feedback_paths in ['with-t-on-c', 'with-p-on-p'] or (feedback_paths == 'with-p-on-c' and debateadj.type == DebateAdjudicator.TYPE_PANEL): if adjudicators.has_chair: targets = [(adjudicators.chair, AdjudicatorAllocation.POSITION_CHAIR)] else: diff --git a/tabbycat/adjfeedback/views.py b/tabbycat/adjfeedback/views.py index d29c121a283..99b781ca194 100644 --- a/tabbycat/adjfeedback/views.py +++ b/tabbycat/adjfeedback/views.py @@ -83,7 +83,7 @@ def get_context_data(self, **kwargs): for (band_min, band_max), threshold_class in zip(bands, threshold_classes): band_specs.append({ 'min': band_min, 'max': band_max, 'class': threshold_class, - 'count': [x >= band_min and x < band_max for x in scores].count(True), + 'count': [band_min <= x < band_max for x in scores].count(True), }) band_specs[0]['count'] += [x == max_score for x in scores].count(True) @@ -548,7 +548,7 @@ def form_valid(self, form): def get_context_data(self, **kwargs): kwargs['no_rounds_released'] = not self.tournament.round_set.filter( - draw_status=Round.STATUS_RELEASED).exists() + draw_status=Round.Status.RELEASED).exists() return super().get_context_data(**kwargs) diff --git a/tabbycat/api/fields.py b/tabbycat/api/fields.py index ce1fb50fc7c..afe3fcfb494 100644 --- a/tabbycat/api/fields.py +++ b/tabbycat/api/fields.py @@ -4,12 +4,17 @@ from django.db.models import Q from django.urls import get_script_prefix, resolve, Resolver404 from django.utils.encoding import uri_to_iri -from rest_framework.relations import HyperlinkedIdentityField, HyperlinkedRelatedField, SlugRelatedField +from drf_spectacular.utils import extend_schema_field +from rest_framework.relations import Hyperlink, HyperlinkedIdentityField, HyperlinkedRelatedField, SlugRelatedField from rest_framework.reverse import reverse +from rest_framework.serializers import CharField, Field + from participants.models import Adjudicator, Speaker, Team from venues.models import Venue +from .utils import is_staff + class TournamentHyperlinkedRelatedField(HyperlinkedRelatedField): default_tournament_field = 'tournament' @@ -98,6 +103,20 @@ def get_queryset(self): return super().get_queryset().select_related('debate') +class AnonymisingParticipantNameField(CharField): + + def get_attribute(self, instance): + # Pass entire instance to use other fields (not just .name) + return instance + + def to_representation(self, instance): + if not is_staff(self.context): + if instance.anonymous: + return None + return instance.get_public_name(self.context['tournament']) + return super().to_representation(instance.name) + + class AnonymisingHyperlinkedTournamentRelatedField(TournamentHyperlinkedRelatedField): default_tournament_field = 'team__tournament' @@ -150,7 +169,7 @@ def get_url_kwargs(self, obj): } def get_url(self, obj, view_name, request, format): - view_name = 'api-%s-detail' % (obj.content_type.model) + view_name = 'api-%s-detail' % obj.content_type.model return super().get_url(obj, view_name, request, format) def get_object(self, view_name, view_args, view_kwargs): @@ -167,7 +186,7 @@ def to_internal_value(self, data): self.fail('incorrect_type', data_type=type(data).__name__) if http_prefix: - # If needed convert absolute URLs to relative path + # If needed, convert absolute URLs to relative path data = parse.urlparse(data).path prefix = get_script_prefix() if data.startswith(prefix): @@ -187,3 +206,88 @@ def to_internal_value(self, data): return self.get_object(match.view_name, match.args, match.kwargs) except (ObjectDoesNotExist, ValueError, TypeError): self.fail('does_not_exist') + + +class BaseSourceField(TournamentHyperlinkedRelatedField): + """Taken from REST_Framework: rest_framework.relations.HyperlinkedRelatedField + + This subclass adapts the framework in order to have a hyperlinked field which + is dynamic on the model of object given or taken; merging into one field, as + well as using an attribute from it, which would not be possible for fear of + nulls.""" + + view_name = '' # View and model/queryset is dynamic on the object + + def get_queryset(self): + return self.model.objects.all() + + def get_attribute(self, obj): + return obj + + def to_representation(self, value): + format = self.context.get('format', None) + if format and self.format and self.format != format: + format = self.format + + # Return the hyperlink, or error if incorrectly configured. + url = self.get_url_options(value, format) + + if url is None: + return None + + return Hyperlink(url, value) + + def to_internal_value(self, data): + self.source_attrs = [self.field_source_name] # Must set + + # Was the value already entered? + if isinstance(data, tuple(model for model, field in self.models.values())): + return data + + try: + http_prefix = data.startswith(('http:', 'https:')) + except AttributeError: + self.fail('incorrect_type', data_type=type(data).__name__) + + if http_prefix: + # If needed, convert absolute URLs to relative path + data = parse.urlparse(data).path + prefix = get_script_prefix() + if data.startswith(prefix): + data = '/' + data[len(prefix):] + + data = uri_to_iri(data) + try: + match = resolve(data) + except Resolver404: + self.fail('no_match') + + self.model = {view: model for view, (model, field) in self.models.items()}[match.view_name] + + try: + return self.get_object(match.view_name, match.args, match.kwargs) + except self.model.DoesNotExist: + self.fail('does_not_exist') + + +class ParticipantSourceField(BaseSourceField): + field_source_name = 'participant_submitter' + models = { + 'api-speaker-detail': (Speaker, 'participant_submitter'), + 'api-adjudicator-detail': (Adjudicator, 'participant_submitter'), + } + + def get_url_options(self, value, format): + for view_name, (model, field) in self.models.items(): + obj = getattr(value.participant_submitter, model.__name__.lower(), None) + if obj is not None: + return self.get_url(obj, view_name, self.context['request'], format) + + +@extend_schema_field({'anyOf': [{"type": "number"}, {"type": "boolean"}, {"type": "string"}, {"type": "array", "items": {"type": "string"}}]}) +class AnyField(Field): + def to_representation(self, value): + return value + + def to_internal_value(self, data): + return data diff --git a/tabbycat/api/serializers.py b/tabbycat/api/serializers.py index b7dbabff7bd..4b9ba5f7aa4 100644 --- a/tabbycat/api/serializers.py +++ b/tabbycat/api/serializers.py @@ -1,20 +1,18 @@ from collections import OrderedDict from collections.abc import Mapping from functools import partialmethod -from urllib import parse +from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError as DjangoValidationError from django.db import IntegrityError from django.db.models import QuerySet -from django.urls import get_script_prefix, resolve, Resolver404 from django.utils import timezone -from django.utils.encoding import uri_to_iri +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from rest_framework.fields import get_error_detail, SkipField -from rest_framework.relations import Hyperlink from rest_framework.settings import api_settings -from adjallocation.models import DebateAdjudicator +from adjallocation.models import DebateAdjudicator, PreformedPanel from adjfeedback.models import AdjudicatorFeedback, AdjudicatorFeedbackQuestion from breakqual.models import BreakCategory, BreakingTeam from draw.models import Debate, DebateTeam @@ -24,12 +22,15 @@ from participants.utils import populate_code_names from privateurls.utils import populate_url_keys from results.mixins import TabroomSubmissionFieldsMixin -from results.models import BallotSubmission -from results.result import DebateResult +from results.models import BallotSubmission, SpeakerScore, TeamScore +from results.result import DebateResult, ResultError +from standings.speakers import SpeakerStandingsGenerator +from standings.teams import TeamStandingsGenerator from tournaments.models import Round, Tournament from venues.models import Venue, VenueCategory, VenueConstraint from . import fields +from .utils import is_staff def _validate_field(self, field, value): @@ -42,80 +43,33 @@ def _validate_field(self, field, value): return value -class BaseSourceField(fields.TournamentHyperlinkedRelatedField): - """Taken from REST_Framework: rest_framework.relations.HyperlinkedRelatedField +class RootSerializer(serializers.Serializer): + class RootLinksSerializer(serializers.Serializer): + v1 = serializers.HyperlinkedIdentityField(view_name='api-v1-root') - This subclass adapts the framework in order to have a hyperlinked field which - is dynamic on the model of object given or taken; merging into one field, as - well as using an attribute from it, which would not be possible for fear of - nulls.""" + _links = RootLinksSerializer(source='*', read_only=True) + timezone = serializers.CharField(allow_blank=False, read_only=True) + version = serializers.CharField() - view_name = '' # View and model/queryset is dynamic on the object - def get_queryset(self): - return self.model.objects.all() +class V1RootSerializer(serializers.Serializer): + class V1LinksSerializer(serializers.Serializer): + tournaments = serializers.HyperlinkedIdentityField(view_name='api-tournament-list') + institutions = serializers.HyperlinkedIdentityField(view_name='api-global-institution-list') + users = serializers.HyperlinkedIdentityField(view_name='api-users-list') - def get_attribute(self, obj): - return obj + _links = V1LinksSerializer(source='*', read_only=True) - def to_representation(self, value): - format = self.context.get('format', None) - if format and self.format and self.format != format: - format = self.format - # Return the hyperlink, or error if incorrectly configured. - url = self.get_url_options(value, format) +class CheckinSerializer(serializers.Serializer): + object = serializers.HyperlinkedIdentityField(view_name='api-root') + barcode = serializers.IntegerField() + checked = serializers.BooleanField() + timestamp = serializers.DateTimeField() - if url is None: - return None - return Hyperlink(url, value) - - def to_internal_value(self, data): - self.source_attrs = [self.field_source_name] # Must set - - # Was the value already entered? - if isinstance(data, tuple(model for model, field in self.models.values())): - return data - - try: - http_prefix = data.startswith(('http:', 'https:')) - except AttributeError: - self.fail('incorrect_type', data_type=type(data).__name__) - - if http_prefix: - # If needed convert absolute URLs to relative path - data = parse.urlparse(data).path - prefix = get_script_prefix() - if data.startswith(prefix): - data = '/' + data[len(prefix):] - - data = uri_to_iri(data) - try: - match = resolve(data) - except Resolver404: - self.fail('no_match') - - self.model = {view: model for view, (model, field) in self.models.items()}[match.view_name] - - try: - return self.get_object(match.view_name, match.args, match.kwargs) - except self.model.DoesNotExist: - self.fail('does_not_exist') - - -class ParticipantSourceField(BaseSourceField): - field_source_name = 'participant_submitter' - models = { - 'api-speaker-detail': (Speaker, 'participant_submitter'), - 'api-adjudicator-detail': (Adjudicator, 'participant_submitter'), - } - - def get_url_options(self, value, format): - for view_name, (model, field) in self.models.items(): - obj = getattr(value.participant_submitter, model.__name__.lower(), None) - if obj is not None: - return self.get_url(obj, view_name, self.context['request'], format) +class AvailabilitiesSerializer(serializers.ListSerializer): + child = fields.ParticipantAvailabilityForeignKeyField(view_name='api-availability-list') class VenueConstraintSerializer(serializers.ModelSerializer): @@ -196,26 +150,15 @@ class RoundMotionSerializer(serializers.ModelSerializer): class Meta: model = RoundMotion - exclude = ('round', 'motion') - - def validate_seq(self, value): - qs = RoundMotion.objects.filter( - round=self.context['round'], seq=value).exclude(id=getattr(self.instance, 'id', None)) - if qs.exists(): - raise serializers.ValidationError("Object with same value exists in the round") - return value + exclude = ('round', 'motion', 'seq') def create(self, validated_data): motion_data = validated_data.pop('motion') - if '' in motion_data: - validated_data['motion'] = motion_data[''] + if isinstance(motion_data, Motion): # If passed in a URL - Becomes an object + validated_data['motion'] = motion_data else: - validated_data['motion'] = Motion() - - validated_data['motion'].text = motion_data['text'] - validated_data['motion'].reference = motion_data['reference'] - validated_data['motion'].info_slide = motion_data.get('info_slide', '') - validated_data['motion'].save() + validated_data['motion'] = Motion(text=motion_data['text'], reference=motion_data['reference'], info_slide=motion_data.get('info_slide', ''), tournament=self.context['tournament']) + validated_data['motion'].save() return super().create(validated_data) @@ -231,13 +174,13 @@ class RoundLinksSerializer(serializers.Serializer): view_name='api-breakcategory-detail', queryset=BreakCategory.objects.all(), allow_null=True, required=False) - motions = RoundMotionSerializer(many=True, source='roundmotion_set') + motions = RoundMotionSerializer(many=True, source='roundmotion_set', required=False) _links = RoundLinksSerializer(source='*', read_only=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('feedback_weight') # Can't show in a ListSerializer @@ -252,8 +195,8 @@ class Meta: def validate(self, data): bc = data.get('break_category', getattr(self.instance, 'break_category', None)) - stage = data.get('stage', getattr(self.instance, 'stage', Round.STAGE_ELIMINATION)) - if (bc is None) == (stage == Round.STAGE_ELIMINATION): + stage = data.get('stage', getattr(self.instance, 'stage', Round.Stage.PRELIMINARY)) + if (bc is None) == (stage == Round.Stage.ELIMINATION): # break category is None _XNOR_ stage is elimination raise serializers.ValidationError("Rounds are elimination iff they have a break category.") return super().validate(data) @@ -263,6 +206,9 @@ def create(self, validated_data): round = super().create(validated_data) if len(motions_data) > 0: + for i, motion in enumerate(motions_data, start=1): + motion['seq'] = i + motions = self.RoundMotionSerializer(many=True, context=self.context) motions._validated_data = motions_data # Data was already validated motions.save(round=round) @@ -270,22 +216,30 @@ def create(self, validated_data): return round def update(self, instance, validated_data): - motions_data = validated_data.pop('motion_set', []) - for roundmotion in motions_data: + motions_data = validated_data.pop('roundmotion_set', []) + for i, roundmotion in enumerate(motions_data, start=1): + roundmotion['seq'] = i + motion = roundmotion['motion'].get('pk') if motion is None: motion = Motion( text=roundmotion['motion']['text'], reference=roundmotion['motion']['reference'], - info_slide=roundmotion['motion'].get('info_slide'), + info_slide=roundmotion['motion'].get('info_slide', ''), + tournament=instance.tournament, ) else: motion.text = roundmotion['motion']['text'] motion.reference = roundmotion['motion']['reference'] - motion.info_slide = roundmotion['motion'].get('info_slide') + motion.info_slide = roundmotion['motion'].get('info_slide', '') motion.save() RoundMotion.objects.update_or_create(round=instance, motion=motion, defaults={'seq': roundmotion['seq']}) - return super().update(instance, validated_data) + + for attr, value in validated_data.items(): + setattr(instance, attr, value) + + instance.save() + return instance """Remove once DRF supports the serializer's structure""" def set_value(self, dictionary, keys, value): @@ -490,26 +444,26 @@ def save(self, **kwargs): class SpeakerSerializer(serializers.ModelSerializer): - class LinksSerializer(serializers.Serializer): + class SpeakerLinksSerializer(serializers.Serializer): checkin = fields.TournamentHyperlinkedIdentityField(tournament_field='team__tournament', view_name='api-speaker-checkin') url = fields.TournamentHyperlinkedIdentityField(tournament_field='team__tournament', view_name='api-speaker-detail') + name = fields.AnonymisingParticipantNameField() team = fields.TournamentHyperlinkedRelatedField(view_name='api-team-detail', queryset=Team.objects.all()) categories = fields.TournamentHyperlinkedRelatedField( many=True, view_name='api-speakercategory-detail', queryset=SpeakerCategory.objects.all(), ) - _links = LinksSerializer(source='*', read_only=True) + _links = SpeakerLinksSerializer(source='*', read_only=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('gender') self.fields.pop('email') self.fields.pop('phone') self.fields.pop('pronoun') - self.fields.pop('anonymous') self.fields.pop('url_key') if kwargs['context']['tournament'].pref('participant_code_names') == 'everywhere': @@ -537,10 +491,11 @@ def create(self, validated_data): class AdjudicatorSerializer(serializers.ModelSerializer): - class LinksSerializer(serializers.Serializer): + class AdjudicatorLinksSerializer(serializers.Serializer): checkin = fields.TournamentHyperlinkedIdentityField(view_name='api-adjudicator-checkin') url = fields.TournamentHyperlinkedIdentityField(view_name='api-adjudicator-detail') + name = fields.AnonymisingParticipantNameField() institution = serializers.HyperlinkedRelatedField( allow_null=True, view_name='api-global-institution-detail', @@ -563,13 +518,13 @@ class LinksSerializer(serializers.Serializer): queryset=Adjudicator.objects.all(), ) venue_constraints = VenueConstraintSerializer(many=True, required=False) - _links = LinksSerializer(source='*', read_only=True) + _links = AdjudicatorLinksSerializer(source='*', read_only=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Remove private fields in the public endpoint if needed - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('institution_conflicts') self.fields.pop('team_conflicts') self.fields.pop('adjudicator_conflicts') @@ -589,7 +544,6 @@ def __init__(self, *args, **kwargs): self.fields.pop('email') self.fields.pop('phone') self.fields.pop('pronoun') - self.fields.pop('anonymous') self.fields.pop('url_key') class Meta: @@ -627,6 +581,11 @@ def update(self, instance, validated_data): vc._validated_data = venue_constraints # Data was already validated vc.save(adjudicator=instance) + if self.partial: + # Avoid removing conflicts if merely PATCHing + for field in ['institution_conflicts', 'adjudicator_conflicts', 'team_conflicts']: + validated_data[field] = list(getattr(instance, field).all()) + validated_data.get(field, []) + return super().update(instance, validated_data) @@ -643,17 +602,20 @@ class Meta: allow_null=True, view_name='api-global-institution-detail', queryset=Institution.objects.all(), + required=False, ) break_categories = fields.TournamentHyperlinkedRelatedField( many=True, view_name='api-breakcategory-detail', queryset=BreakCategory.objects.all(), + required=False, ) institution_conflicts = serializers.HyperlinkedRelatedField( many=True, view_name='api-global-institution-detail', queryset=Institution.objects.all(), + required=False, ) venue_constraints = VenueConstraintSerializer(many=True, required=False) @@ -668,7 +630,7 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Remove private fields in the public endpoint if needed - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('institution_conflicts') self.fields.pop('venue_constraints') @@ -709,14 +671,14 @@ def create(self, validated_data): 3. Create the speakers. 4. Add institution conflict""" - if len(validated_data.get('short_reference', "")) == 0: - validated_data['short_reference'] = validated_data['reference'][:34] + if validated_data.get('short_reference') is None: + validated_data['short_reference'] = validated_data.get('reference', '')[:34] speakers_data = validated_data.pop('speakers', []) break_categories = validated_data.pop('break_categories', []) venue_constraints = validated_data.pop('venue_constraints', []) - emoji, code_name = pick_unused_emoji() + emoji, code_name = pick_unused_emoji(validated_data['tournament'].id) if 'emoji' not in validated_data or validated_data.get('emoji') is None: validated_data['emoji'] = emoji if 'code_name' not in validated_data or validated_data.get('code_name') is None: @@ -760,6 +722,10 @@ def update(self, instance, validated_data): vc._validated_data = venue_constraints # Data was already validated vc.save(institution=instance) + if self.partial: + # Avoid removing conflicts if merely PATCHing + validated_data['institution_conflicts'] = list(instance.institution_conflicts.all()) + validated_data.get('institution_conflicts', []) + return super().update(instance, validated_data) @@ -775,7 +741,7 @@ class Meta: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('venue_constraints') def create(self, validated_data): @@ -817,14 +783,14 @@ class PerTournamentInstitutionSerializer(InstitutionSerializer): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('teams') self.fields.pop('adjudicators') class VenueSerializer(serializers.ModelSerializer): - class LinksSerializer(serializers.Serializer): + class VenueLinksSerializer(serializers.Serializer): checkin = fields.TournamentHyperlinkedIdentityField(view_name='api-venue-checkin') url = fields.TournamentHyperlinkedIdentityField(view_name='api-venue-detail') @@ -835,7 +801,7 @@ class LinksSerializer(serializers.Serializer): ) display_name = serializers.ReadOnlyField() external_url = serializers.URLField(source='url', required=False, allow_blank=True) - _links = LinksSerializer(source='*', read_only=True) + _links = VenueLinksSerializer(source='*', read_only=True) class Meta: model = Venue @@ -855,18 +821,31 @@ class Meta: exclude = ('tournament',) +def get_metrics_field_type(generator): + return { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'metric': {'type': 'string', 'enum': list(generator.metric_annotator_classes.keys())}, + 'value': {'type': 'number'}, + }, + }, + } + + class BaseStandingsSerializer(serializers.Serializer): rank = serializers.SerializerMethodField() tied = serializers.SerializerMethodField() metrics = serializers.SerializerMethodField() - def get_rank(self, obj): + def get_rank(self, obj) -> int: return obj.rankings['rank'][0] - def get_tied(self, obj): + def get_tied(self, obj) -> bool: return obj.rankings['rank'][1] - def get_metrics(self, obj): + def get_metrics(self, obj) -> list: return [{'metric': s, 'value': v} for s, v in obj.metrics.items()] def __init__(self, *args, **kwargs): @@ -876,10 +855,33 @@ def __init__(self, *args, **kwargs): class TeamStandingsSerializer(BaseStandingsSerializer): team = fields.TournamentHyperlinkedRelatedField(view_name='api-team-detail', queryset=Team.objects.all()) + @extend_schema_field(get_metrics_field_type(TeamStandingsGenerator)) + def get_metrics(self, obj) -> list: + return super().get_metrics(obj) + class SpeakerStandingsSerializer(BaseStandingsSerializer): speaker = fields.AnonymisingHyperlinkedTournamentRelatedField(view_name='api-speaker-detail', anonymous_source='anonymous') + @extend_schema_field(get_metrics_field_type(SpeakerStandingsGenerator)) + def get_metrics(self, obj) -> list: + return super().get_metrics(obj) + + +class DebateAdjudicatorSerializer(serializers.Serializer): + adjudicators = Adjudicator.objects.all() + chair = fields.TournamentHyperlinkedRelatedField(view_name='api-adjudicator-detail', queryset=adjudicators) + panellists = fields.TournamentHyperlinkedRelatedField(many=True, view_name='api-adjudicator-detail', queryset=adjudicators) + trainees = fields.TournamentHyperlinkedRelatedField(many=True, view_name='api-adjudicator-detail', queryset=adjudicators) + + def save(self, **kwargs): + aa = kwargs['debate'].adjudicators + aa.chair = self.validated_data.get('chair') + aa.panellists = self.validated_data.get('panellists') + aa.trainees = self.validated_data.get('trainees') + aa.save() + return aa + class RoundPairingSerializer(serializers.ModelSerializer): class DebateTeamSerializer(serializers.ModelSerializer): @@ -889,20 +891,6 @@ class Meta: model = DebateTeam fields = ('team', 'side') - class DebateAdjudicatorSerializer(serializers.Serializer): - adjudicators = Adjudicator.objects.all() - chair = fields.TournamentHyperlinkedRelatedField(view_name='api-adjudicator-detail', queryset=adjudicators) - panellists = fields.TournamentHyperlinkedRelatedField(many=True, view_name='api-adjudicator-detail', queryset=adjudicators) - trainees = fields.TournamentHyperlinkedRelatedField(many=True, view_name='api-adjudicator-detail', queryset=adjudicators) - - def save(self, **kwargs): - aa = kwargs['debate'].adjudicators - aa.chair = self.validated_data.get('chair') - aa.panellists = self.validated_data.get('panellists') - aa.trainees = self.validated_data.get('trainees') - aa.save() - return aa - url = fields.RoundHyperlinkedIdentityField(view_name='api-pairing-detail', lookup_url_kwarg='debate_pk') venue = fields.TournamentHyperlinkedRelatedField(view_name='api-venue-detail', queryset=Venue.objects.all(), required=False, allow_null=True) @@ -911,7 +899,7 @@ def save(self, **kwargs): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if not kwargs['context']['request'].user.is_staff: + if not is_staff(kwargs.get('context')): self.fields.pop('bracket') self.fields.pop('room_rank') self.fields.pop('importance') @@ -933,7 +921,7 @@ def create(self, validated_data): teams.save(debate=debate) if adjs_data is not None: - adjudicators = self.DebateAdjudicatorSerializer() + adjudicators = DebateAdjudicatorSerializer() adjudicators._validated_data = adjs_data adjudicators.save(debate=debate) @@ -949,7 +937,7 @@ def update(self, instance, validated_data): raise serializers.ValidationError(e) if 'adjudicators' in validated_data and validated_data['adjudicators'] is not None: - adjudicators = self.DebateAdjudicatorSerializer() + adjudicators = DebateAdjudicatorSerializer() adjudicators._validated_data = validated_data.pop('adjudicators') adjudicators.save(debate=instance) @@ -969,7 +957,7 @@ class Meta: class FeedbackSerializer(TabroomSubmissionFieldsMixin, serializers.ModelSerializer): - class SubmitterSourceField(BaseSourceField): + class SubmitterSourceField(fields.BaseSourceField): field_source_name = 'source' models = { 'api-adjudicator-detail': (Adjudicator, 'source_adjudicator'), @@ -992,18 +980,31 @@ class FeedbackAnswerSerializer(serializers.Serializer): view_name='api-feedbackquestion-detail', queryset=AdjudicatorFeedbackQuestion.objects.all(), ) - answer = serializers.CharField() + answer = fields.AnyField() def validate(self, data): # Convert answer to correct type model = AdjudicatorFeedbackQuestion.ANSWER_TYPE_CLASSES[data['question'].answer_type] + if type(data['answer']) != model.ANSWER_TYPE: + raise serializers.ValidationError({'answer': 'The answer must be of type %s' % model.ANSWER_TYPE.__name__}) + data['answer'] = model.ANSWER_TYPE(data['answer']) + + option_error = serializers.ValidationError({'answer': 'Answer must be in set of options'}) + if len(data['question'].choices) > 0: + if model.ANSWER_TYPE is list and len(set(data['answer']) - set(data['question'].choices)) > 0: + raise option_error + if data['answer'] not in data['question'].choices: + raise option_error + if (data['question'].min_value is not None and data['answer'] < data['question'].min_value) or (data['question'].max_value is not None and data['answer'] > data['question'].max_value): + raise option_error + return super().validate(data) url = fields.AdjudicatorFeedbackIdentityField(view_name='api-feedback-detail') adjudicator = fields.TournamentHyperlinkedRelatedField(view_name='api-adjudicator-detail', queryset=Adjudicator.objects.all()) source = SubmitterSourceField(source='*') - participant_submitter = ParticipantSourceField(allow_null=True) + participant_submitter = fields.ParticipantSourceField(allow_null=True) debate = DebateHyperlinkedRelatedField(view_name='api-pairing-detail', queryset=Debate.objects.all(), lookup_url_kwarg='debate_pk') answers = FeedbackAnswerSerializer(many=True, source='get_answers', required=False) @@ -1018,9 +1019,15 @@ def validate(self, data): source = data.pop('source') debate = data.pop('debate') - # Test answers for correct source source_type = 'from_team' if isinstance(source, Team) else 'from_adj' - for answer in data.get('get_answers'): + required_questions = self.context['tournament'].adjudicatorfeedbackquestion_set.filter(required=True, **{source_type: True}) + answers = data.get('get_answers', []) + + if len(set(required_questions) - set(a['question'] for a in answers)) > 0: + raise serializers.ValidationError("Answer to required question is missing") + + # Test answers for correct source + for answer in answers: if not getattr(answer['question'], source_type, False): raise serializers.ValidationError("Question is not permitted from source.") @@ -1083,7 +1090,7 @@ class ResultSerializer(serializers.Serializer): class SheetSerializer(serializers.Serializer): class TeamResultSerializer(serializers.Serializer): - side = serializers.CharField() + side = serializers.ChoiceField(choices=DebateTeam.Side.choices) points = serializers.IntegerField(required=False) win = serializers.BooleanField(required=False) score = serializers.FloatField(required=False, allow_null=True) @@ -1094,8 +1101,9 @@ class TeamResultSerializer(serializers.Serializer): ) class SpeechSerializer(serializers.Serializer): - ghost = serializers.BooleanField(required=False) + ghost = serializers.BooleanField(required=False, help_text=SpeakerScore._meta.get_field('ghost').help_text) score = serializers.FloatField() + rank = serializers.IntegerField(required=False) speaker = fields.TournamentHyperlinkedRelatedField( view_name='api-speaker-detail', @@ -1115,6 +1123,8 @@ def save(self, **kwargs): if kwargs.get('adjudicator') is not None: speaker_args.insert(0, kwargs['adjudicator']) result.set_score(*speaker_args, self.validated_data['score']) + if kwargs.get('rank') is not None: + result.set_speaker_rank(*speaker_args, self.validated_data['rank']) return result @@ -1142,8 +1152,8 @@ def save(self, **kwargs): if result.get_scoresheet_class().uses_declared_winners and self.validated_data.get('win', False): args = [self.validated_data['side']] - if self.validated_data.get('adjudicator') is not None: - args.insert(0, self.validated_data['adjudicator']) + if kwargs.get('adjudicator') is not None and not result.ballotsub.single_adj: + args.insert(0, kwargs.get('adjudicator')) result.add_winner(*args) speech_serializer = self.SpeechSerializer(context=self.context) @@ -1210,7 +1220,11 @@ def create(self, validated_data): sheets._validated_data = sheet sheets.save(result=result) - result.save() + try: + result.save() + except ResultError as e: + raise serializers.ValidationError(str(e)) + return result class VetoSerializer(serializers.ModelSerializer): @@ -1223,8 +1237,9 @@ class Meta: exclude = ('id', 'ballot_submission', 'preference', 'debate_team') def create(self, validated_data): + team = validated_data.pop('debate_team').pop('team') try: - validated_data['debate_team'] = DebateTeam.objects.get(debate=self.context['debate'], team=validated_data.pop('team')) + validated_data['debate_team'] = DebateTeam.objects.get(debate=self.context['debate'], team=team) except (DebateTeam.DoesNotExist, DebateTeam.MultipleObjectsReturned): raise serializers.ValidationError('Team is not in debate') return super().create(validated_data) @@ -1232,7 +1247,7 @@ def create(self, validated_data): result = ResultSerializer(source='result.get_result_info') motion = fields.TournamentHyperlinkedRelatedField(view_name='api-motion-detail', required=False, queryset=Motion.objects.all()) url = fields.DebateHyperlinkedIdentityField(view_name='api-ballot-detail') - participant_submitter = ParticipantSourceField(allow_null=True) + participant_submitter = fields.ParticipantSourceField(allow_null=True, required=False) vetos = VetoSerializer(many=True, source='debateteammotionpreference_set', required=False, allow_null=True) class Meta: @@ -1240,28 +1255,35 @@ class Meta: exclude = ('debate',) read_only_fields = ('timestamp', 'version', 'submitter_type', 'submitter', 'participant_submitter', - 'confirmer', 'confirm_timestamp', 'ip_address', 'single_adj', 'private_url') + 'confirmer', 'confirm_timestamp', 'ip_address', 'private_url') def get_request(self): return self.context['request'] def create(self, validated_data): result_data = validated_data.pop('result').pop('get_result_info') - veto_data = validated_data.pop('vetos', None) + veto_data = validated_data.pop('debateteammotionpreference_set', None) validated_data.update(self.get_submitter_fields()) if validated_data.get('confirmed', False): validated_data['confirmer'] = self.context['request'].user validated_data['confirm_timestamp'] = timezone.now() - stage = 'elim' if self.context['round'].stage == Round.STAGE_ELIMINATION else 'prelim' + stage = 'elim' if self.context['round'].stage == Round.Stage.ELIMINATION else 'prelim' if self.context['tournament'].pref('ballots_per_debate_' + stage) == 'per-adj': - if self.context['debate'].debateadjudicator_set.all().count() > 1: + debateadj_count = self.context['debate'].debateadjudicator_set.exclude(type=DebateAdjudicator.TYPE_TRAINEE).count() + if debateadj_count > 1: if len(result_data['sheets']) == 1: validated_data['participant_submitter'] = result_data['sheets'][0]['adjudicator'] validated_data['single_adj'] = True - else: - raise serializers.ValidationError('Single-adjudicator ballots must have only one scoresheet') + elif validated_data.get('single_adj', False): + raise serializers.ValidationError({'single_adj': 'Single-adjudicator ballots can only have one scoresheet'}) + elif len(result_data['sheets']) != debateadj_count: + raise serializers.ValidationError({ + 'result': 'Voting ballots must either have one scoresheet or ballots from all voting adjudicators', + }) + elif len(result_data['sheets']) > 1: + raise serializers.ValidationError({'result': 'Consensus ballots can only have one scoresheet'}) ballot = super().create(validated_data) @@ -1271,8 +1293,9 @@ def create(self, validated_data): result.save(ballot=ballot) if veto_data: - vetos = self.VetoSerializer(context=self.context) + vetos = self.VetoSerializer(context=self.context, many=True) vetos._validated_data = veto_data + vetos._errors = [] vetos.save(ballot_submission=ballot, preference=3) return ballot @@ -1286,3 +1309,103 @@ def update(self, instance, validated_data): instance.discarded = validated_data['discarded'] instance.save() return instance + + +class UpdateBallotSerializer(serializers.ModelSerializer): + """Unused, just for OpenAPI with BallotSerializer.update()""" + class Meta: + model = BallotSubmission + fields = ('confirmed', 'discarded') + + +class PreformedPanelSerializer(serializers.ModelSerializer): + url = fields.RoundHyperlinkedIdentityField(view_name='api-preformedpanel-detail', lookup_url_kwarg='debate_pk') + adjudicators = DebateAdjudicatorSerializer(required=False, allow_null=True) + + class Meta: + model = PreformedPanel + exclude = ('round',) + + def create(self, validated_data): + adjs_data = validated_data.pop('adjudicators', None) + + validated_data['round'] = self.context['round'] + debate = super().create(validated_data) + + if adjs_data is not None: + adjudicators = DebateAdjudicatorSerializer() + adjudicators._validated_data = adjs_data + adjudicators.save(debate=debate) + + return debate + + def update(self, instance, validated_data): + if validated_data.get('adjudicators', None) is not None: + adjudicators = DebateAdjudicatorSerializer() + adjudicators._validated_data = validated_data.pop('adjudicators') + adjudicators.save(debate=instance) + + return super().update(instance, validated_data) + + +class SpeakerRoundScoresSerializer(serializers.ModelSerializer): + class RoundScoresSerializer(serializers.ModelSerializer): + class RoundSpeechSerializer(serializers.ModelSerializer): + class Meta: + model = SpeakerScore + fields = ('score', 'position', 'ghost') + + round = fields.TournamentHyperlinkedRelatedField(view_name='api-round-detail', source='debate.round', + lookup_field='seq', lookup_url_kwarg='round_seq', + queryset=Round.objects.all()) + + speeches = RoundSpeechSerializer(many=True, source="scores") + + class Meta: + model = DebateTeam + fields = ('round', 'speeches') + + speaker = fields.TournamentHyperlinkedIdentityField(tournament_field='team__tournament', view_name='api-speaker-detail') + rounds = RoundScoresSerializer(many=True, source="debateteams") + + class Meta: + model = Speaker + fields = ('speaker', 'rounds') + + +class TeamRoundScoresSerializer(serializers.ModelSerializer): + + class ScoreSerializer(serializers.ModelSerializer): + round = fields.TournamentHyperlinkedRelatedField(view_name='api-round-detail', source='debate.round', + lookup_field='seq', lookup_url_kwarg='round_seq', + queryset=Round.objects.all()) + + points = serializers.IntegerField(source='ballot.points') + score = serializers.FloatField(source='ballot.score') + has_ghost = serializers.BooleanField(source='ballot.has_ghost') + + class Meta: + model = TeamScore + fields = ('round', 'points', 'score', 'has_ghost') + + team = fields.TournamentHyperlinkedIdentityField(view_name='api-team-detail') + rounds = ScoreSerializer(many=True, source="debateteam_set") + + class Meta: + model = Team + fields = ('team', 'rounds') + + +class UserSerializer(serializers.ModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='api-users-detail') + + class Meta: + model = get_user_model() + fields = ('url', 'id', 'username', 'password', 'email', 'is_staff', 'is_superuser', 'is_active') + + def create(self, validated_data): + user = self.Meta.model(**validated_data) + user.set_password(validated_data['password']) + user.save() + + return user diff --git a/tabbycat/api/tests/__init__.py b/tabbycat/api/tests/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tabbycat/api/tests/test_serializers.py b/tabbycat/api/tests/test_serializers.py new file mode 100644 index 00000000000..ee8fa7267c4 --- /dev/null +++ b/tabbycat/api/tests/test_serializers.py @@ -0,0 +1,871 @@ +import logging + +from django.contrib.auth import get_user_model +from rest_framework.test import APIClient, APITestCase + +from adjallocation.models import DebateAdjudicator +from draw.models import Debate, DebateTeam +from motions.models import Motion, RoundMotion +from options.presets import CanadianParliamentaryPreferences +from participants.models import Adjudicator, Speaker, Team +from tournaments.models import Round, Tournament +from utils.misc import reverse_round, reverse_tournament +from utils.tests import CompletedTournamentTestMixin + +User = get_user_model() + + +class RoundSerializerTests(CompletedTournamentTestMixin, APITestCase): + + def test_exclude_motions_if_list(self): + response = self.client.get(reverse_tournament('api-round-list', self.tournament)) + self.assertIsNone(response.data[0].get('motions')) + + def test_include_motions_if_released(self): + round = self.tournament.round_set.first() + round.motions_released = True + round.save() + + response = self.client.get(reverse_round('api-round-detail', self.tournament.round_set.first())) + self.assertEqual(len(response.data.get('motions')), 3) + + def test_exclude_feedback_weight_public(self): + response = self.client.get(reverse_tournament('api-round-list', self.tournament)) + self.assertIsNone(response.data[0].get('feedback_weight')) + + def test_include_feedback_weight_admin(self): + self.client.login(username="admin", password="admin") + response = self.client.get(reverse_tournament('api-round-list', self.tournament)) + self.assertIsNotNone(response.data[0].get('feedback_weight')) + + def test_seq_validation(self): + client = APIClient() + client.login(username="admin", password="admin") + response = client.post(reverse_tournament('api-round-list', self.tournament), { + 'motions': [], + 'seq': 1, + 'name': 'Round 1', + 'abbreviation': 'R1', + 'draw_type': 'R', + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.data['seq'][0], 'Object with same value exists in the tournament') + + def test_break_category_validation(self): + client = APIClient() + client.login(username="admin", password="admin") + round = self.tournament.round_set.filter(stage=Round.Stage.ELIMINATION).first() + response = client.patch(reverse_round('api-round-detail', round), { + 'break_category': None, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(response.data['non_field_errors'][0], 'Rounds are elimination iff they have a break category.') + + def test_can_create_round(self): + client = APIClient() + client.login(username="admin", password="admin") + self.tournament.round_set.get(seq=5).delete() + response = client.post(reverse_tournament('api-round-list', self.tournament), { + 'motions': [{ + 'text': 'THW test code', + 'reference': 'Test', + 'seq': 1, + }], + 'seq': 5, + 'name': 'Round 5', + 'abbreviation': 'R5', + 'draw_type': 'P', + }) + self.assertEqual(response.status_code, 201) + self.assertEqual(len(response.data['motions']), 1) + + def test_can_update_round_motion(self): + client = APIClient() + client.login(username="admin", password="admin") + round = self.tournament.round_set.get(seq=5) + round.roundmotion_set.all().delete() + motion = round.prev.motion_set.first() + response = client.patch(reverse_round('api-round-detail', round), { + 'motions': [ + { + 'pk': motion.id, + 'text': motion.text, + 'reference': 'Test', + }, + { + 'text': 'THW write tests', + 'reference': 'Unit Test', + }, + ], + 'name': 'Round Five', + }) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data['name'], 'Round Five') + + +class MotionSerializerTests(CompletedTournamentTestMixin, APITestCase): + + def test_create_motion_with_round(self): + client = APIClient() + client.login(username="admin", password="admin") + response = client.post(reverse_tournament('api-motion-list', self.tournament), { + 'text': 'This House would straighten all bananas', + 'reference': 'Bananas', + 'info_slide': 'Get bent', + 'rounds': [{'seq': 4, 'round': 'http://testserver/api/v1/tournaments/demo/rounds/1'}], + }) + self.assertEqual(response.status_code, 201) + self.assertEqual(len(response.data['rounds']), 1) + + +class AdjudicatorSerializerTests(CompletedTournamentTestMixin, APITestCase): + + def test_create_adj_null_institution(self): + client = APIClient() + client.login(username="admin", password="admin") + response = client.post(reverse_tournament('api-adjudicator-list', self.tournament), { + "name": "string", + "gender": "M", + "email": "user@example.com", + "phone": "string", + "anonymous": True, + "pronoun": "string", + "institution": None, + "base_score": 0, + "breaking": False, + "trainee": False, + "independent": True, + "adj_core": False, + "institution_conflicts": [], + "team_conflicts": [], + "adjudicator_conflicts": [], + "url_key": "laZzBPo6FsGEr12VtB8LSHM8", + }) + self.assertEqual(response.status_code, 201) + + +class BallotSerializerTests(APITestCase): + + def setUp(self): + logging.disable(logging.CRITICAL) + self.user = User.objects.create_superuser(username='admin1', password='admin', is_active=True) + self.tournament = Tournament.objects.create(slug='apitest') + self.round = Round.objects.create(seq=1, tournament=self.tournament) + self.debate = Debate.objects.create(round=self.round) + + CanadianParliamentaryPreferences.save(self.tournament) + + self.t1 = Team.objects.create(tournament=self.tournament, reference='A') + self.s1 = Speaker.objects.create(name='1', team=self.t1) + self.s2 = Speaker.objects.create(name='2', team=self.t1) + + self.t2 = Team.objects.create(tournament=self.tournament, reference='B') + self.s3 = Speaker.objects.create(name='3', team=self.t2) + self.s4 = Speaker.objects.create(name='4', team=self.t2) + + self.t3 = Team.objects.create(tournament=self.tournament, reference='C') + + self.a1 = Adjudicator.objects.create(name='A1', tournament=self.tournament) + self.a2 = Adjudicator.objects.create(name='A2', tournament=self.tournament) + self.a3 = Adjudicator.objects.create(name='A3', tournament=self.tournament) + + DebateTeam.objects.bulk_create([DebateTeam(side=side, team=team, debate=self.debate) for side, team in zip(['aff', 'neg'], [self.t1, self.t2])]) + DebateAdjudicator.objects.bulk_create([ + DebateAdjudicator(adjudicator=self.a1, debate=self.debate, type='C'), DebateAdjudicator(adjudicator=self.a2, debate=self.debate, type='P'), + ]) + + self.m1 = Motion.objects.create(tournament=self.tournament) + self.m2 = Motion.objects.create(tournament=self.tournament) + self.m3 = Motion.objects.create(tournament=self.tournament) + RoundMotion.objects.bulk_create([RoundMotion(seq=i, motion=motion, round=self.round) for i, motion in enumerate([self.m1, self.m2])]) + + def tearDown(self): + self.debate.delete() + self.tournament.delete() + self.user.delete() + logging.disable(logging.NOTSET) + + def test_can_create_consensus_ballot_scores(self): + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 201) + + def test_can_create_voting_ballot_scores(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 201) + + def test_can_create_consensus_ballot_winner(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 201) + + def test_can_create_voting_ballot_winner(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': False, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 201) + + def test_voting_motion_vetos(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + self.tournament.preferences['motions__motion_vetoes_enabled'] = True + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }], + }, + 'vetos': [ + { + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'motion': reverse_tournament('api-motion-detail', self.tournament, kwargs={'pk': self.m1.pk}), + }, + { + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'motion': reverse_tournament('api-motion-detail', self.tournament, kwargs={'pk': self.m2.pk}), + }, + ], + }) + self.assertEqual(response.status_code, 201) + + def test_single_adj_ballot(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 201) + + def test_team_not_in_debate(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t3.pk}), + 'win': False, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['sheets'][0]['teams'][0]), 'Inconsistent team') + + def test_team_not_in_correct_side(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': False, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['sheets'][0]['teams'][0]), 'Inconsistent team') + + def test_team_not_in_debate_veto(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + self.tournament.preferences['motions__motion_vetoes_enabled'] = True + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }], + }, + 'vetos': [ + { + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t3.pk}), + 'motion': reverse_tournament('api-motion-detail', self.tournament, kwargs={'pk': self.m1.pk}), + }, + { + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'motion': reverse_tournament('api-motion-detail', self.tournament, kwargs={'pk': self.m2.pk}), + }, + ], + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data[0]), 'Team is not in debate') + + def test_adj_not_in_debate(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a3.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['sheets'][0]['adjudicator'][0]), 'Adjudicator must be in debate') + + def test_single_adj_many_ballots_fail(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'single_adj': True, + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': False, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['single_adj']), 'Single-adjudicator ballots can only have one scoresheet') + + def test_incomplete_ballots_fail(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + DebateAdjudicator.objects.create(adjudicator=self.a3, type=DebateAdjudicator.TYPE_PANEL, debate=self.debate) + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': False, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']), 'Voting ballots must either have one scoresheet or ballots from all voting adjudicators') + + def test_many_ballots_consensus_fail(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': False, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': True, + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']), 'Consensus ballots can only have one scoresheet') + + def test_inconsistent_speaker_order(self): + self.tournament.preferences['debate_rules__ballots_per_debate_prelim'] = 'per-adj' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [ + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a1.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }, + { + 'adjudicator': reverse_tournament('api-adjudicator-detail', self.tournament, kwargs={'pk': self.a2.pk}), + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }, + ], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['non_field_errors'][0]), 'Inconsistant speaker order') + + def test_speaks_without_scores(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + 'score': 1, + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + 'score': 0, + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['sheets'][0]['teams'][0]['non_field_errors'][0]), 'Speeches are required to assign scores.') + + def test_inconsistent_speaks(self): + self.tournament.preferences['debate_rules__speakers_in_ballots'] = 'never' + + client = APIClient() + client.force_authenticate(user=self.user) + response = client.post(reverse_round('api-ballot-list', self.round, kwargs={'debate_pk': self.debate.pk}), { + 'result': { + 'sheets': [{ + 'teams': [ + { + 'side': 'aff', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t1.pk}), + 'win': True, + 'score': 1, + 'speeches': [ + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s1.pk}), + }, + { + 'ghost': False, + 'score': 80, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s2.pk}), + }, + ], + }, + { + 'side': 'neg', + 'team': reverse_tournament('api-team-detail', self.tournament, kwargs={'pk': self.t2.pk}), + 'win': False, + 'score': 0, + 'speeches': [ + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s3.pk}), + }, + { + 'ghost': False, + 'score': 79, + 'speaker': reverse_tournament('api-speaker-detail', self.tournament, kwargs={'pk': self.s4.pk}), + }, + ], + }, + ], + }], + }, + }) + self.assertEqual(response.status_code, 400) + self.assertEqual(str(response.data['result']['sheets'][0]['teams'][0]['non_field_errors'][0]), 'Score must be the sum of speech scores.') diff --git a/tabbycat/api/tests/test_views.py b/tabbycat/api/tests/test_views.py new file mode 100644 index 00000000000..96ea48589b8 --- /dev/null +++ b/tabbycat/api/tests/test_views.py @@ -0,0 +1,89 @@ +from django.conf import settings +from django.urls import reverse +from dynamic_preferences.registries import global_preferences_registry +from rest_framework.test import APITestCase + +from utils.tests import CompletedTournamentTestMixin + + +class RootTests(APITestCase): + + def test_get_root(self): + response = self.client.get(reverse('api-root')) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data, { + "_links": {"v1": "http://testserver/api/v1"}, + "timezone": settings.TIME_ZONE, + "version": settings.TABBYCAT_VERSION, + }) + + def test_api_disabled_root(self): + global_preferences_registry.manager()['global__enable_api'] = False + response = self.client.get(reverse('api-root')) + self.assertEqual(response.status_code, 401) + + # Re-enable API as tearDown + global_preferences_registry.manager()['global__enable_api'] = True + + def test_get_v1_root(self): + response = self.client.get(reverse('api-v1-root')) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.data, { + "_links": { + "tournaments": "http://testserver/api/v1/tournaments", + "institutions": "http://testserver/api/v1/institutions", + "users": "http://testserver/api/v1/users", + }, + }) + + +class MotionViewsetTests(CompletedTournamentTestMixin, APITestCase): + + def test_no_public_access_preferences(self): + self.tournament.preferences['public_features__public_motions'] = False + self.tournament.preferences['tab_release__motion_tab_released'] = False + response = self.client.get(reverse('api-motion-list', kwargs={'tournament_slug': self.tournament.slug})) + self.assertEqual(response.status_code, 401) + + def test_exclude_unreleased_public(self): + self.tournament.round_set.filter(seq=1).update(motions_released=True) + + self.tournament.preferences['public_features__public_motions'] = True + self.tournament.preferences['tab_release__motion_tab_released'] = False + response = self.client.get(reverse('api-motion-list', kwargs={'tournament_slug': self.tournament.slug})) + self.assertEqual(response.status_code, 200) + self.assertEqual(len(response.data), 3) + for motion in response.data: + self.assertEqual(len(motion['rounds']), 1) + self.tournament.round_set.filter(seq=1).update(motions_released=False) # Reset + + def test_include_unreleased_tab_public(self): + self.tournament.preferences['public_features__public_motions'] = False + self.tournament.preferences['tab_release__motion_tab_released'] = True + response = self.client.get(reverse('api-motion-list', kwargs={'tournament_slug': self.tournament.slug})) + self.assertEqual(response.status_code, 200) + self.assertEqual(len(response.data), 18) # 6 rounds * 3 motions/round + + def test_unauthorized_motion_detail(self): + self.tournament.preferences['public_features__public_motions'] = True + self.tournament.preferences['tab_release__motion_tab_released'] = False + # Motion with id exists + response = self.client.get(reverse('api-motion-detail', kwargs={'tournament_slug': self.tournament.slug, 'pk': 1})) + self.assertEqual(response.status_code, 404) + + +class SpeakerCategoryViewsetTests(CompletedTournamentTestMixin, APITestCase): + + def setUp(self): + super().setUp() + self.tournament.speakercategory_set.create(name='sc1', slug='sc1', seq=1, public=False) + self.tournament.speakercategory_set.create(name='sc2', slug='sc2', seq=2, public=True) + + def test_private_excluded_public(self): + response = self.client.get(reverse('api-speakercategory-list', kwargs={'tournament_slug': self.tournament.slug})) + self.assertEqual(len(response.data), 1) + + def test_all_categories_authenticated(self): + self.client.login(username="admin", password="admin") + response = self.client.get(reverse('api-speakercategory-list', kwargs={'tournament_slug': self.tournament.slug})) + self.assertEqual(len(response.data), 2) diff --git a/tabbycat/api/urls.py b/tabbycat/api/urls.py index e95537fc43f..5fc195e9e0b 100644 --- a/tabbycat/api/urls.py +++ b/tabbycat/api/urls.py @@ -1,4 +1,5 @@ from django.urls import include, path +from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView from rest_framework.routers import SimpleRouter from . import views @@ -15,6 +16,11 @@ views.APIRootView.as_view(), name='api-root'), + path('/schema', include([ + path('.yml', SpectacularAPIView.as_view(), name='api-schema'), + path('/redoc/', SpectacularRedocView.as_view(url_name='api-schema'), name='redoc'), + ])), + path('/v1', include([ path('', views.APIV1RootView.as_view(), @@ -92,6 +98,15 @@ ])), ])), ])), + + path('/preformed-panels', include([ + path('', + views.PreformedPanelViewSet.as_view({'get': 'list', 'post': 'create', 'delete': 'delete_all', 'put': 'add_blank'}), + name='api-preformedpanel-list'), + path('/', + views.PreformedPanelViewSet.as_view(detail_methods), + name='api-preformedpanel-detail'), + ])), ])), ])), @@ -142,9 +157,14 @@ path('/', views.TeamViewSet.as_view(detail_methods), name='api-team-detail'), - path('/standings', - views.TeamStandingsView.as_view(), - name='api-team-standings'), + path('/standings', include([ + path('', + views.TeamStandingsView.as_view(), + name='api-team-standings'), + path('/rounds', + views.TeamRoundStandingsRoundsView.as_view({'get': 'list'}), + name='api-team-round-standings'), + ])), ])), path('/adjudicators', include([ path('', @@ -178,6 +198,9 @@ path('/replies', views.ReplySpeakerStandingsView.as_view(), name='api-reply-speaker-standings'), + path('/rounds', + views.SpeakerRoundStandingsRoundsView.as_view({'get': 'list'}), + name='api-speaker-round-standings'), ])), ])), path('/venues', include([ @@ -204,8 +227,6 @@ path('/', include(pref_router.urls)), # Preferences ])), - - ])), path('/institutions', include([ path('', @@ -215,5 +236,13 @@ views.GlobalInstitutionViewSet.as_view(detail_methods), name='api-global-institution-detail'), ])), + path('/users', include([ + path('', + views.UserViewSet.as_view(list_methods), + name='api-users-list'), + path('/', + views.UserViewSet.as_view({'get': 'retrieve', 'delete': 'destroy'}), + name='api-users-detail'), + ])), ])), ] diff --git a/tabbycat/api/utils.py b/tabbycat/api/utils.py new file mode 100644 index 00000000000..acbad4278f0 --- /dev/null +++ b/tabbycat/api/utils.py @@ -0,0 +1,4 @@ +def is_staff(context): + # OpenAPI generation does not have a view (sometimes context is also None in that circumstance). + # Avoid redacting fields. + return context is None or 'view' not in context or context['request'].user.is_staff diff --git a/tabbycat/api/views.py b/tabbycat/api/views.py index 8d7f44760ed..20319d2dfff 100644 --- a/tabbycat/api/views.py +++ b/tabbycat/api/views.py @@ -1,3 +1,4 @@ +from copy import deepcopy from itertools import groupby from asgiref.sync import async_to_sync @@ -5,16 +6,20 @@ from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.db.models import Count, Prefetch, Q +from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter from dynamic_preferences.api.serializers import PreferenceSerializer from dynamic_preferences.api.viewsets import PerInstancePreferenceViewSet from rest_framework.exceptions import NotFound from rest_framework.fields import DateTimeField from rest_framework.generics import GenericAPIView, get_object_or_404, RetrieveUpdateAPIView +from rest_framework.mixins import ListModelMixin from rest_framework.response import Response from rest_framework.reverse import reverse from rest_framework.views import APIView from rest_framework.viewsets import GenericViewSet, ModelViewSet +from adjallocation.models import PreformedPanel +from adjallocation.preformed.anticipated import calculate_anticipated_draw from adjfeedback.models import AdjudicatorFeedbackQuestion from availability.models import RoundAvailability from breakqual.models import BreakCategory @@ -22,9 +27,10 @@ from checkins.consumers import CheckInEventConsumer from checkins.models import Event from checkins.utils import create_identifiers, get_unexpired_checkins -from draw.models import Debate +from draw.models import Debate, DebateTeam from options.models import TournamentPreferenceModel from participants.models import Adjudicator, Institution, Speaker, SpeakerCategory, Team +from results.models import SpeakerScore, TeamScore from standings.speakers import SpeakerStandingsGenerator from standings.teams import TeamStandingsGenerator from tournaments.mixins import TournamentFromUrlMixin @@ -37,34 +43,64 @@ from .permissions import APIEnabledPermission, PublicPreferencePermission +tournament_parameter = OpenApiParameter('tournament_slug', description="The tournament's slug", type=str, location="path") +round_parameters = [ + tournament_parameter, + OpenApiParameter('round_seq', description="The round's sequence number", type=int, location="path"), +] +debate_parameters = [ + *round_parameters, + OpenApiParameter('debate_pk', description="The debate's primary key", type=int, location="path"), +] +id_parameter = OpenApiParameter('id', description="The object's primary key", type=int, location="path") + + +@extend_schema(tags=['root'], summary="API root") class APIRootView(PublicAPIMixin, GenericAPIView): name = "API Root" + serializer_class = serializers.RootSerializer def get(self, request, format=None): + """API Entrypoint; info about versions""" return Response({ "_links": { "v1": reverse('api-v1-root', request=request, format=format), }, + "timezone": settings.TIME_ZONE, "version": settings.TABBYCAT_VERSION, }) +@extend_schema(tags=['root'], summary="API v1 root") class APIV1RootView(PublicAPIMixin, GenericAPIView): name = "API Version 1 Root" + serializer_class = serializers.V1RootSerializer lookup_field = 'slug' lookup_url_kwarg = 'tournament_slug' def get(self, request, format=None): + """Entrypoint for version 1 of the API""" tournaments_create_url = reverse('api-tournament-list', request=request, format=format) institution_create_url = reverse('api-global-institution-list', request=request, format=format) + users_create_url = reverse('api-users-list', request=request, format=format) return Response({ "_links": { "tournaments": tournaments_create_url, "institutions": institution_create_url, + "users": users_create_url, }, }) +@extend_schema(tags=['tournaments']) +@extend_schema_view( + list=extend_schema(summary="List tournaments"), + create=extend_schema(summary="Create tournament"), + retrieve=extend_schema(summary="Get tournament", parameters=[tournament_parameter]), + update=extend_schema(summary="Change tournament", parameters=[tournament_parameter]), + partial_update=extend_schema(summary="Patch tournament", parameters=[tournament_parameter]), + destroy=extend_schema(summary="Delete tournament", parameters=[tournament_parameter]), +) class TournamentViewSet(PublicAPIMixin, ModelViewSet): # Don't use TournamentAPIMixin here, it's not filtering objects by tournament. queryset = Tournament.objects.all().prefetch_related( @@ -78,7 +114,18 @@ class TournamentViewSet(PublicAPIMixin, ModelViewSet): lookup_url_kwarg = 'tournament_slug' +@extend_schema(tags=['tournaments'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament preferences"), + retrieve=extend_schema(summary="Get tournament preference"), + update=extend_schema(summary="Modify tournament preference"), + partial_update=extend_schema(summary="Patch tournament preference"), + bulk=extend_schema(summary="Update multiple tournament preferences"), +) class TournamentPreferenceViewSet(TournamentFromUrlMixin, AdministratorAPIMixin, PerInstancePreferenceViewSet): + """ + """ + # Blank comment to avoid comment from TournamentFromUrlMixin appearing. queryset = TournamentPreferenceModel.objects.all() serializer_class = PreferenceSerializer @@ -86,6 +133,15 @@ def get_related_instance(self): return self.tournament +@extend_schema(tags=['rounds']) +@extend_schema_view( + list=extend_schema(summary="List rounds of a tournament", parameters=[tournament_parameter]), + create=extend_schema(summary="Create round", parameters=[tournament_parameter]), + retrieve=extend_schema(summary="Get round", parameters=round_parameters), + update=extend_schema(summary="Update round", parameters=round_parameters), + partial_update=extend_schema(summary="Patch round", parameters=round_parameters), + destroy=extend_schema(summary="Delete round", parameters=round_parameters), +) class RoundViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.RoundSerializer lookup_field = 'seq' @@ -97,6 +153,15 @@ def get_queryset(self): ).prefetch_related('roundmotion_set', 'roundmotion_set__motion', 'roundmotion_set__motion__tournament') +@extend_schema(tags=['motions'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament motions"), + create=extend_schema(summary="Create motion"), + retrieve=extend_schema(summary="Get motion", parameters=[id_parameter]), + update=extend_schema(summary="Update motion", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch motion", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete motion", parameters=[id_parameter]), +) class MotionViewSet(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.MotionSerializer access_preference = ('public_motions', 'motion_tab_released') @@ -109,10 +174,28 @@ def get_queryset(self): return super().get_queryset().filter(filters).prefetch_related('roundmotion_set', 'roundmotion_set__round') +@extend_schema(tags=['break-categories'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament break categories"), + create=extend_schema(summary="Create break category"), + retrieve=extend_schema(summary="Get break category", parameters=[id_parameter]), + update=extend_schema(summary="Update break category", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch break category", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete break category", parameters=[id_parameter]), +) class BreakCategoryViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.BreakCategorySerializer +@extend_schema(tags=['speaker-categories'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament speaker categories"), + create=extend_schema(summary="Create speaker category"), + retrieve=extend_schema(summary="Get speaker category", parameters=[id_parameter]), + update=extend_schema(summary="Update speaker category", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch speaker category", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete speaker category", parameters=[id_parameter]), +) class SpeakerCategoryViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.SpeakerCategorySerializer @@ -122,6 +205,12 @@ def get_queryset(self): return super().get_queryset() +@extend_schema(tags=['break-categories'], parameters=[tournament_parameter, id_parameter]) +@extend_schema_view( + get=extend_schema(summary="Get break-eligible teams for category"), + put=extend_schema(summary="Update break eligibility of teams"), + patch=extend_schema(summary="Add teams as break-eligible"), +) class BreakEligibilityView(TournamentAPIMixin, TournamentPublicAPIMixin, RetrieveUpdateAPIView): serializer_class = serializers.BreakEligibilitySerializer access_preference = 'public_break_categories' @@ -130,6 +219,12 @@ def get_queryset(self): return super().get_queryset().prefetch_related('team_set') +@extend_schema(tags=['speaker-categories'], parameters=[tournament_parameter, id_parameter]) +@extend_schema_view( + get=extend_schema(summary="Get speaker category membership"), + put=extend_schema(summary="Update membership of speaker category"), + patch=extend_schema(summary="Add speakers to category"), +) class SpeakerEligibilityView(TournamentAPIMixin, TournamentPublicAPIMixin, RetrieveUpdateAPIView): serializer_class = serializers.SpeakerEligibilitySerializer access_preference = 'public_participants' @@ -141,9 +236,12 @@ def get_queryset(self): return qs -class BreakingTeamsView(TournamentAPIMixin, TournamentPublicAPIMixin, GenerateBreakMixin, GenericViewSet): +@extend_schema(tags=['break-categories'], parameters=[tournament_parameter, id_parameter]) +@extend_schema_view(list=extend_schema(summary="Get breaking teams")) +class BreakingTeamsView(TournamentAPIMixin, TournamentPublicAPIMixin, GenerateBreakMixin, GenericViewSet, ListModelMixin): serializer_class = serializers.BreakingTeamSerializer tournament_field = 'break_category__tournament' + pagination_class = None access_preference = 'public_breaking_teams' @property @@ -161,23 +259,21 @@ def get_serializer_context(self): context['break_category'] = self.break_category return context - def list(self, request, *args, **kwargs): - """Pagination might be dangerous here, so disabled.""" - queryset = self.filter_queryset(self.get_queryset()) - serializer = self.get_serializer(queryset, many=True) - return Response(serializer.data) - + @extend_schema(summary="Generate break") def create(self, request, *args, **kwargs): self.generate_break((self.break_category,)) return self.list(request, *args, **kwargs) + @extend_schema(summary="Delete break") def destroy(self, request, *args, **kwargs): - """Destroy is normally for a specific instance, now QuerySet.""" + """ + Destroy is normally for a specific instance, now QuerySet. + """ self.filter_queryset(self.get_queryset()).delete() return Response(status=204) # No content + @extend_schema(summary="Update remark and regenerate break") def update(self, request, *args, **kwargs): - """Update team remark and then regenerate break.""" serializer = serializers.PartialBreakingTeamSerializer(data=request.data, context=self.get_serializer_context()) serializer.is_valid(raise_exception=True) serializer.save() @@ -185,6 +281,12 @@ def update(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) +@extend_schema(tags=['institutions'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List institutions in tournament", parameters=[ + OpenApiParameter('region', description='Only include institutions from the region', required=False, type=str), + ]), +) class InstitutionViewSet(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.PerTournamentInstitutionSerializer access_preference = 'public_institutions_list' @@ -207,6 +309,15 @@ def get_queryset(self): ) +@extend_schema(tags=['teams'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List teams in tournament"), + create=extend_schema(summary="Create team"), + retrieve=extend_schema(summary="Get team", parameters=[id_parameter]), + update=extend_schema(summary="Update team", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch team", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete team", parameters=[id_parameter]), +) class TeamViewSet(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.TeamSerializer access_preference = 'public_participants' @@ -226,6 +337,17 @@ def get_queryset(self): ) +@extend_schema(tags=['adjudicators'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="Get adjudicators in tournament", parameters=[ + OpenApiParameter('break', description='Only include breaking adjudicators', required=False, type=bool, default=False), + ]), + create=extend_schema(summary="Create adjudicator"), + retrieve=extend_schema(summary="Get adjudicator", parameters=[id_parameter]), + update=extend_schema(summary="Update adjudicator", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch adjudicator", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete adjudicator", parameters=[id_parameter]), +) class AdjudicatorViewSet(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.AdjudicatorSerializer access_preference = 'public_participants' @@ -245,6 +367,17 @@ def get_queryset(self): ).filter(filters) +@extend_schema(tags=['institutions']) +@extend_schema_view( + list=extend_schema(summary="List all institutions", parameters=[ + OpenApiParameter('region', description='Only include institutions from the region', required=False, type=str), + ]), + create=extend_schema(summary="Create institution"), + retrieve=extend_schema(summary="Get institution", parameters=[id_parameter]), + update=extend_schema(summary="Update institution", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch institution", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete institution", parameters=[id_parameter]), +) class GlobalInstitutionViewSet(AdministratorAPIMixin, ModelViewSet): serializer_class = serializers.InstitutionSerializer @@ -255,6 +388,15 @@ def get_queryset(self): return Institution.objects.filter(filters).select_related('region').prefetch_related('venue_constraints__category__tournament') +@extend_schema(tags=['teams'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List speakers in tournament"), + create=extend_schema(summary="Add speaker"), + retrieve=extend_schema(summary="Get speaker", parameters=[id_parameter]), + update=extend_schema(summary="Update speaker", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch speaker", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete speaker", parameters=[id_parameter]), +) class SpeakerViewSet(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.SpeakerSerializer tournament_field = "team__tournament" @@ -271,6 +413,15 @@ def get_queryset(self): return super().get_queryset().prefetch_related(category_prefetch) +@extend_schema(tags=['venues'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List rooms in tournament"), + create=extend_schema(summary="Create room"), + retrieve=extend_schema(summary="Get room", parameters=[id_parameter]), + update=extend_schema(summary="Update room", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch room", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete room", parameters=[id_parameter]), +) class VenueViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.VenueSerializer @@ -280,6 +431,15 @@ def get_queryset(self): Prefetch('venuecategory_set', queryset=VenueCategory.objects.select_related('tournament').filter(tournament__isnull=False))) +@extend_schema(tags=['venues'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament venue categories"), + create=extend_schema(summary="Create venue category"), + retrieve=extend_schema(summary="Get venue category", parameters=[id_parameter]), + update=extend_schema(summary="Update venue category", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch venue category", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete venue category", parameters=[id_parameter]), +) class VenueCategoryViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.VenueCategorySerializer @@ -289,6 +449,7 @@ def get_queryset(self): Prefetch('venues', queryset=Venue.objects.select_related('tournament').filter(tournament__isnull=False))) +@extend_schema(tags=['checkins'], parameters=[tournament_parameter, id_parameter]) class BaseCheckinsView(AdministratorAPIMixin, TournamentAPIMixin, APIView): name = "Check-ins" @@ -347,24 +508,29 @@ def get_response_dict(self, request, obj, checked, event, **kwargs): def get_queryset(self): return self.model.objects.filter(**self.lookup_kwargs()).select_related(self.tournament_field) + @extend_schema(request=None, responses=serializers.CheckinSerializer) def get(self, request, *args, **kwargs): + """Get checkin status""" obj = self.get_object() event = get_unexpired_checkins(self.tournament, self.window_preference_pref).filter(identifier=obj.checkin_identifier) return Response(self.get_response_dict(request, obj, event.exists(), event.first())) + @extend_schema(request=None, responses={200: serializers.CheckinSerializer}) def delete(self, request, *args, **kwargs): """Checks out""" obj = self.get_object() self.broadcast_checkin(obj, False) return Response(self.get_response_dict(request, obj, False, None)) + @extend_schema(request=None, responses=serializers.CheckinSerializer) def put(self, request, *args, **kwargs): """Checks in""" obj = self.get_object() e = self.broadcast_checkin(obj, True) return Response(self.get_response_dict(request, obj, True, e)) + @extend_schema(request=None, responses=serializers.CheckinSerializer) def patch(self, request, *args, **kwargs): """Toggles the check-in status""" obj = self.get_object() @@ -373,6 +539,7 @@ def patch(self, request, *args, **kwargs): e = self.broadcast_checkin(obj, not check) return Response(self.get_response_dict(request, obj, not check, e)) + @extend_schema(request=None, responses=serializers.CheckinSerializer) def post(self, request, *args, **kwargs): """Creates an identifier""" obj = self.get_object_queryset() # Don't .get() as create_identifiers expects a queryset @@ -383,12 +550,28 @@ def post(self, request, *args, **kwargs): return Response(self.get_response_dict(request, obj.get(), False, None), status=status) +@extend_schema(tags=['adjudicators']) +@extend_schema_view( + get=extend_schema(summary="Get adjudicator checkin status"), + delete=extend_schema(summary="Check out adjudicator"), + put=extend_schema(summary="Check in adjudicator"), + patch=extend_schema(summary="Toggle adjudicator checkin status"), + post=extend_schema(summary="Create adjudicator checkin identifier"), +) class AdjudicatorCheckinsView(BaseCheckinsView): model = Adjudicator object_api_view = 'api-adjudicator-detail' window_preference_pref = 'checkin_window_people' +@extend_schema(tags=['teams']) +@extend_schema_view( + get=extend_schema(summary="Get speaker checkin status"), + delete=extend_schema(summary="Check out speaker"), + put=extend_schema(summary="Check in speaker"), + patch=extend_schema(summary="Toggle speaker checkin status"), + post=extend_schema(summary="Create speaker checkin identifier"), +) class SpeakerCheckinsView(BaseCheckinsView): model = Speaker object_api_view = 'api-speaker-detail' @@ -396,31 +579,66 @@ class SpeakerCheckinsView(BaseCheckinsView): tournament_field = 'team__tournament' +@extend_schema(tags=['venues']) +@extend_schema_view( + get=extend_schema(summary="Get room checkin status"), + delete=extend_schema(summary="Check out room"), + put=extend_schema(summary="Check in room"), + patch=extend_schema(summary="Toggle room checkin status"), + post=extend_schema(summary="Create room checkin identifier"), +) class VenueCheckinsView(BaseCheckinsView): model = Venue object_api_view = 'api-venue-detail' window_preference_pref = 'checkin_window_venues' +def get_metrics_params(generator): + metrics = { + 'type': 'array', + 'items': { + 'type': 'string', + 'enum': list(generator.metric_annotator_classes.keys()), + }, + } + desc_default = '; default is tournament settings' + return [ + OpenApiParameter('metrics', + description='Rank participants with these metrics' + desc_default, + required=False, type=metrics, explode=False), + OpenApiParameter('extra_metrics', + description='Include these unranked metrics for participants' + desc_default, + required=False, type=metrics, explode=False), + ] + + class BaseStandingsView(TournamentAPIMixin, TournamentPublicAPIMixin, GenericAPIView): lookup_field = 'slug' lookup_url_kwarg = 'tournament_slug' def get_metrics(self): + if self.request.query_params.get('metrics'): + return self.request.query_params.get('metrics').split(","), self.request.query_params.get('extra_metrics').split(",") + pref_model = self.model.__name__.lower() return self.tournament.pref(pref_model + '_standings_precedence'), self.tournament.pref(pref_model + '_standings_extra_metrics') def get_queryset(self): qs = self.model.objects.filter(**{self.tournament_field: self.tournament}).select_related(self.tournament_field) - category = self.request.query_params.get('category', None) - if category is not None: - return qs.filter(categories__pk=category) return qs def get_max_round(self): + if self.request.query_params.get('round'): + return Round.objects.get(tournament=self.tournament, seq=int(self.request.query_params.get('round'))) return None + @extend_schema(tags=['standings'], parameters=[ + tournament_parameter, + OpenApiParameter('category', description='Only include participants in a category (ID)', required=False, type=int), + OpenApiParameter('round', description='Sequence of last round to take into account', required=False, type=int), + ]) def get(self, request, **kwargs): + """Get current standings""" metrics, extra_metrics = self.get_metrics() generator = self.generator(metrics, ('rank',), extra_metrics) standings = generator.generate(self.get_queryset(), round=self.get_max_round()) @@ -428,6 +646,13 @@ def get(self, request, **kwargs): return Response(serializer.data) +@extend_schema_view( + get=extend_schema( + summary="Get substantive speaker standings", + parameters=get_metrics_params(SpeakerStandingsGenerator), + responses=serializers.SpeakerStandingsSerializer(many=True), + ), +) class SubstantiveSpeakerStandingsView(BaseStandingsView): name = "Speaker Standings" serializer_class = serializers.SpeakerStandingsSerializer @@ -436,15 +661,28 @@ class SubstantiveSpeakerStandingsView(BaseStandingsView): tournament_field = 'team__tournament' generator = SpeakerStandingsGenerator - def get_max_round(self): - return self.tournament.round_set.last() + def get_queryset(self): + category = self.request.query_params.get('category', None) + if category is not None: + return super().get_queryset().filter(categories__pk=category) + return super().get_queryset() +@extend_schema_view( + get=extend_schema(summary="Get reply speaker standings", responses=serializers.SpeakerStandingsSerializer(many=True)), +) class ReplySpeakerStandingsView(SubstantiveSpeakerStandingsView): def get_metrics(self): return ('replies_avg',), ('replies_stddev', 'replies_count') +@extend_schema_view( + get=extend_schema( + summary="Get team standings", + parameters=get_metrics_params(TeamStandingsGenerator), + responses=serializers.TeamStandingsSerializer(many=True), + ), +) class TeamStandingsView(BaseStandingsView): name = 'Team Standings' serializer_class = serializers.TeamStandingsSerializer @@ -452,7 +690,94 @@ class TeamStandingsView(BaseStandingsView): model = Team generator = TeamStandingsGenerator + def get_queryset(self): + category = self.request.query_params.get('category', None) + if category is not None: + return super().get_queryset().filter(break_categories__pk=category) + return super().get_queryset() + +@extend_schema(tags=['standings'], parameters=[ + tournament_parameter, + OpenApiParameter('replies', description='Whether to include reply speeches', required=False, type=bool, default=False), + OpenApiParameter('substantive', description='Whether to include substantive speeches', required=False, type=bool, default=True), + OpenApiParameter('ghost', description='Include ghost (iron-person) scores', required=False, type=bool, default=False), +]) +@extend_schema_view( + list=extend_schema(summary="Get speaker scores per round", responses=serializers.SpeakerRoundScoresSerializer(many=True)), +) +class SpeakerRoundStandingsRoundsView(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): + serializer_class = serializers.SpeakerRoundScoresSerializer + tournament_field = "team__tournament" + access_preference = 'speaker_tab_released' + + def get_queryset(self): + qs = super().get_queryset().prefetch_related(Prefetch('team__debateteam_set', queryset=DebateTeam.objects.all().select_related('debate__round__tournament'))) + data = {s.id: s for s in qs.all()} + + speaker_scores = SpeakerScore.objects.select_related('speaker', 'ballot_submission', + 'debate_team__debate__round__tournament').filter( + ballot_submission__confirmed=True, speaker_id__in=data.keys(), + ).order_by('speaker_id', 'debate_team_id', 'position') + + if self.request.query_params.get('ghost', False) == 'true': + speaker_scores = speaker_scores.filter(ghost=True) + if self.request.query_params.get('replies', False) == 'true': + speaker_scores = speaker_scores.filter(position=self.tournament.reply_position) + elif self.request.query_params.get('substantive', 'true') == 'true': + speaker_scores = speaker_scores.filter(position__lte=self.tournament.last_substantive_position) + + for spk in data.values(): + spk.debateteams = deepcopy(spk.team.debateteam_set.all()) + for dt in spk.debateteams: + dt.scores = [] + + for speaker, all_scores in groupby(speaker_scores, key=lambda ss: ss.speaker_id): + speaker_rounds = {dt.id: dt for dt in data[speaker].debateteams} + for dt, round_scores in groupby(all_scores, key=lambda ss: ss.debate_team_id): + speaker_rounds[dt].scores.extend(list(round_scores)) + + return data.values() + + +@extend_schema(tags=['standings'], parameters=[ + tournament_parameter, +]) +@extend_schema_view( + list=extend_schema(summary="Get team scores per round", responses=serializers.TeamRoundScoresSerializer(many=True)), +) +class TeamRoundStandingsRoundsView(TournamentAPIMixin, TournamentPublicAPIMixin, ModelViewSet): + serializer_class = serializers.TeamRoundScoresSerializer + access_preference = 'team_tab_released' + + def perform_create(self, serializer): + serializer.save() + + def get_queryset(self): + ts_pf = Prefetch('teamscore_set', queryset=TeamScore.objects.filter(ballot_submission__confirmed=True), to_attr='round_scores') + qs = super().get_queryset().prefetch_related( + Prefetch('debateteam_set', queryset=DebateTeam.objects.all().prefetch_related(ts_pf).select_related('debate__round__tournament'))) + + for t in qs: + for dt in t.debateteam_set.all(): + if len(dt.round_scores): + # There should only ever be one confirmed score + dt.ballot = dt.round_scores[0] + else: + dt.ballot = TeamScore() + + return qs + + +@extend_schema(tags=['debates'], parameters=round_parameters) +@extend_schema_view( + list=extend_schema(summary="List pairings in round"), + create=extend_schema(summary="Create pairing"), + retrieve=extend_schema(summary="Get pairing", parameters=debate_parameters), + update=extend_schema(summary="Update pairing", parameters=debate_parameters), + partial_update=extend_schema(summary="Patch pairing", parameters=debate_parameters), + destroy=extend_schema(summary="Delete pairing", parameters=debate_parameters), +) class PairingViewSet(RoundAPIMixin, ModelViewSet): class Permission(PublicPreferencePermission): @@ -478,7 +803,7 @@ def get_round_status(self, view): access_preference = 'public_draw' round_released_field = 'draw_status' - round_released_value = Round.STATUS_RELEASED + round_released_value = Round.Status.RELEASED permission_classes = [APIEnabledPermission, Permission] @@ -488,11 +813,22 @@ def get_queryset(self): 'debateadjudicator_set', 'debateadjudicator_set__adjudicator', 'debateadjudicator_set__adjudicator__tournament', ) + @extend_schema(summary="Delete all pairings in the round") def delete_all(self, request, *args, **kwargs): self.get_queryset().delete() return Response(status=204) # No content +@extend_schema(tags=['results'], parameters=debate_parameters) +@extend_schema_view( + list=extend_schema(summary="Get debate ballots", parameters=[ + OpenApiParameter('confirmed', description='Only include confirmed ballots', required=False, type=bool, default=False), + ]), + create=extend_schema(summary="Create ballot"), + retrieve=extend_schema(summary="Get ballot", parameters=[id_parameter]), + update=extend_schema(summary="Update ballot", parameters=[id_parameter], request=serializers.UpdateBallotSerializer), + partial_update=extend_schema(summary="Patch ballot", parameters=[id_parameter], request=serializers.UpdateBallotSerializer), +) class BallotViewSet(RoundAPIMixin, TournamentPublicAPIMixin, ModelViewSet): serializer_class = serializers.BallotSerializer access_preference = 'ballots_released' @@ -532,7 +868,27 @@ def get_queryset(self): 'motion', 'motion__tournament', 'participant_submitter__adjudicator__tournament') - + @extend_schema(summary="Delete ballot", parameters=[id_parameter], responses={200: serializers.BallotSerializer}) + def destroy(self, request, *args, **kwargs): + """Only mark as discarded; don't allow object deletion.""" + instance = self.get_object() + instance.discarded = True + instance.save() + return self.retrieve(request, *args, **kwargs) + + +@extend_schema(tags=['feedback'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List tournament feedback questions", parameters=[ + OpenApiParameter('from_adj', description='Only include questions given to adjudicators', required=False, type=bool, default=False), + OpenApiParameter('from_team', description='Only include questions given to teams', required=False, type=bool, default=False), + ]), + create=extend_schema(summary="Create feedback question"), + retrieve=extend_schema(summary="Get feedback question", parameters=[id_parameter]), + update=extend_schema(summary="Update feedback question", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch feedback question", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete feedback question", parameters=[id_parameter]), +) class FeedbackQuestionViewSet(TournamentAPIMixin, PublicAPIMixin, ModelViewSet): serializer_class = serializers.FeedbackQuestionSerializer @@ -545,6 +901,20 @@ def get_queryset(self): return super().get_queryset().filter(filters) +@extend_schema(tags=['feedback'], parameters=[tournament_parameter]) +@extend_schema_view( + list=extend_schema(summary="List all tournament feedback", parameters=[ + OpenApiParameter('source_type', description='The type of participant submitter of the feedback', required=False, type=str, enum=['adjudicator', 'team']), + OpenApiParameter('source', description='The ID of the participant submitting feedback; must be used in conjunction with `source_type`', required=False, type=int), + OpenApiParameter('round', description='The sequence of the rounds of the submitted feedback', required=False, type={"type": "array", "items": {"type": "integer"}}, explode=False), + OpenApiParameter('target', description='The ID of the adjudicator receiving feedback', required=False, type=int), + ]), + create=extend_schema(summary="Create feedback"), + retrieve=extend_schema(summary="Get feedback", parameters=[id_parameter]), + update=extend_schema(summary="Update feedback", parameters=[id_parameter]), + partial_update=extend_schema(summary="Patch feedback", parameters=[id_parameter]), + destroy=extend_schema(summary="Delete feedback", parameters=[id_parameter]), +) class FeedbackViewSet(TournamentAPIMixin, AdministratorAPIMixin, ModelViewSet): serializer_class = serializers.FeedbackSerializer tournament_field = 'adjudicator__tournament' @@ -564,7 +934,7 @@ def get_queryset(self): if query_params.get('source'): filters &= Q(source_team__team_id=query_params.get('source')) if query_params.get('round'): - filters &= (Q(source_adjudicator__debate__round__seq=query_params.get('round')) | + filters &= (Q(source_adjudicator__debate__round__seq__in=query_params.get('round').split(",")) | Q(source_team__debate__round__seq=query_params.get('round'))) if query_params.get('target'): filters &= Q(adjudicator_id=query_params.get('target')) @@ -587,7 +957,15 @@ def get_queryset(self): ).prefetch_related(*answers_prefetch) +@extend_schema(tags=['availabilities'], parameters=round_parameters) class AvailabilitiesViewSet(RoundAPIMixin, AdministratorAPIMixin, APIView): + serializer_class = serializers.AvailabilitiesSerializer # Isn't actually used + + extra_params = [ + OpenApiParameter('adjudicators', description='Only include adjudicators', required=False, type=bool, default=False), + OpenApiParameter('teams', description='Only include teams', required=False, type=bool, default=False), + OpenApiParameter('venues', description='Only include rooms', required=False, type=bool, default=False), + ] def get_field(self): field = ParticipantAvailabilityForeignKeyField(many=True, view_name='api-availability-list') # Dummy view name @@ -608,12 +986,12 @@ def get_queryset(self): return RoundAvailability.objects.filter( ~self.get_filters(), round=self.round).select_related('content_type', 'round__tournament') + @extend_schema(summary="Get all availabilities of the round", parameters=extra_params) def get(self, request, *args, **kwargs): - # Get all availabilities of the round return Response(self.get_field().to_representation(self.get_queryset())) + @extend_schema(summary="Toggle the availabilities of the included objects") def patch(self, request, *args, **kwargs): - # Toggle the availabilities of the included objects objs = sorted(self.get_field().to_internal_value(request.data), key=lambda o: type(o).__name__) for model, participants in groupby(objs, key=type): contenttype = ContentType.objects.get_for_model(model) @@ -631,8 +1009,8 @@ def patch(self, request, *args, **kwargs): return self.get(request, *args, **kwargs) + @extend_schema(summary="Mark objects as available") def put(self, request, *args, **kwargs): - # Mark objects as available objs = sorted(self.get_field().to_internal_value(request.data), key=lambda o: type(o).__name__) for model, participants in groupby(objs, key=type): contenttype = ContentType.objects.get_for_model(model) @@ -640,8 +1018,8 @@ def put(self, request, *args, **kwargs): [RoundAvailability(content_type=contenttype, round=self.round, object_id=p.id) for p in participants]) return self.get(request, *args, **kwargs) + @extend_schema(summary="Mark objects as unavailable") def post(self, request, *args, **kwargs): - # Mark objects as unavailable objs = sorted(self.get_field().to_internal_value(request.data), key=lambda o: type(o).__name__) for model, participants in groupby(objs, key=type): contenttype = ContentType.objects.get_for_model(model) @@ -651,7 +1029,80 @@ def post(self, request, *args, **kwargs): ).delete() return self.get(request, *args, **kwargs) + @extend_schema(summary="Delete class of availabilities", parameters=extra_params) def delete(self, request, *args, **kwargs): - # Delete class of availabilities self.get_queryset().delete() return Response(status=204) + + +@extend_schema(tags=['debates'], parameters=round_parameters) +@extend_schema_view( + list=extend_schema(summary="List all preformed panels in the round"), + create=extend_schema(summary="Create preformed panel"), + retrieve=extend_schema(summary="Get preformed panel", parameters=debate_parameters), + update=extend_schema(summary="Update preformed panel", parameters=debate_parameters), + partial_update=extend_schema(summary="Patch preformed panel", parameters=debate_parameters), + destroy=extend_schema(summary="Delete preformed panel", parameters=debate_parameters), +) +class PreformedPanelViewSet(RoundAPIMixin, AdministratorAPIMixin, ModelViewSet): + + serializer_class = serializers.PreformedPanelSerializer + lookup_url_kwarg = 'debate_pk' + + @property + def debate(self): + if hasattr(self, '_debate'): + return self._debate + + self._debate = get_object_or_404(PreformedPanel, pk=self.kwargs.get('debate_pk')) + return self._debate + + def perform_create(self, serializer): + serializer.save(**{'debate': self.debate}) + + def lookup_kwargs(self): + kwargs = super().lookup_kwargs() + kwargs['debate'] = self.debate + return kwargs + + def get_serializer_context(self): + context = super().get_serializer_context() + context['debate'] = self.debate + return context + + def get_queryset(self): + return super().get_queryset().select_related('round', 'round__tournament').prefetch_related( + 'debateteam_set', 'debateteam_set__team', 'debateteam_set__team__tournament', + 'preformedpaneladjudicator_set', 'preformedpaneladjudicator_set__adjudicator', + 'preformedpaneladjudicator_set__adjudicator__tournament', + ) + + @extend_schema(summary="Delete all preformed panels from round") + def delete_all(self, request, *args, **kwargs): + self.get_queryset().delete() + return Response(status=204) # No content + + @extend_schema(summary="Add blank preformed panels") + def add_blank(self, request, *args, **kwargs): + """Adds new complete set of panels, with calculated bracket and liveness.""" + for i, (bracket_min, bracket_max, liveness) in enumerate(calculate_anticipated_draw(self.round), start=1): + PreformedPanel.objects.update_or_create(round=self.round, room_rank=i, defaults={ + 'bracket_max': bracket_max, + 'bracket_min': bracket_min, + 'liveness': liveness, + }) + + return self.get(request, *args, **kwargs) + + +@extend_schema(tags=['users']) +@extend_schema_view( + list=extend_schema(summary="Get users"), + create=extend_schema(summary="Create user"), + retrieve=extend_schema(summary="Get user", parameters=[id_parameter]), +) +class UserViewSet(AdministratorAPIMixin, ModelViewSet): + serializer_class = serializers.UserSerializer + + def get_queryset(self): + return self.get_serializer_class().Meta.model.objects.all() diff --git a/tabbycat/availability/locale/ar/LC_MESSAGES/django.po b/tabbycat/availability/locale/ar/LC_MESSAGES/django.po index ee4e7da9a20..36185c48e55 100644 --- a/tabbycat/availability/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,93 +17,85 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "الوفرة" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "نوع المحتوى" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "ID الموضوع " -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "جولة" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "الجولة المتوفرة" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "الجولة المتوفرة" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "عرض القرعة " -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "إنشاء قرعة" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " @@ -114,98 +106,98 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "تحديد الكل" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "عدم تحديد الكل" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "تسجيلات الدخول" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "تحقق من جميع المتأهلين" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "النسخ من السابق" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "حفظ ما تم تحديده" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "الفرق" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "المحكمين" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "قاعات المناظرة" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -216,7 +208,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." @@ -227,7 +219,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" @@ -238,7 +230,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." @@ -249,7 +241,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" @@ -260,12 +252,12 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." @@ -276,11 +268,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." @@ -291,7 +283,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" @@ -302,7 +294,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." @@ -313,7 +305,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" @@ -324,7 +316,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -335,12 +327,12 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." @@ -351,16 +343,16 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "لا توجد فرق تتناظر" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -372,7 +364,7 @@ msgstr[4] "" msgstr[5] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -386,7 +378,7 @@ msgstr[5] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -398,7 +390,7 @@ msgstr[4] "" msgstr[5] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" @@ -409,60 +401,60 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "مفعل " -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "مفعل في %(prev_round)s" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "الفريق المتوفر " -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "الحكم المتوفر " -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "قاعة المناظرة المتوفرة" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "قاعة" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "اعرض الإسم (للقرعة)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "الفئات" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "الأولوية" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "دخول جميع الفرق ، الحكام ، القاعات" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "تسجيل دخول المحكمين المتأهلين" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "دخول جميع الفرق ، الحكام ، القاعات من الجولة السابقة" diff --git a/tabbycat/availability/locale/bg/LC_MESSAGES/django.mo b/tabbycat/availability/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..3e2e048abc9 Binary files /dev/null and b/tabbycat/availability/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/bg/LC_MESSAGES/django.po b/tabbycat/availability/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a0cd2929eb9 --- /dev/null +++ b/tabbycat/availability/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,392 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" + +#: availability/apps.py availability/views.py +msgid "Availability" +msgstr "" + +#: availability/models.py +msgid "content type" +msgstr "" + +#: availability/models.py +msgid "object id" +msgstr "" + +#: availability/models.py +msgid "round" +msgstr "" + +#: availability/models.py +msgid "round availability" +msgstr "" + +#: availability/models.py +msgid "round availabilities" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark All Breaking Adjs as Available" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark Everything as Available" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "Copy Availability from %(prev_round)s" +msgstr "" + +#: availability/templates/availability_index.html +msgid "View Draw" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Generate Draw" +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some teams have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some adjudicators have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some rooms have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There is an uneven number of teams marked as available — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select All" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select None" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check-Ins" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check In All Breaking" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Copy from Previous" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Save Selected" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Teams" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Adjudicators" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Rooms" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Mark teams as available" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "No need to set team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "There is an uneven number of teams marked as available for this round." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "The number of teams marked as available for this round is not a multiple of 4." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Edit team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was not available last round, is available this round." +msgid_plural "%(count)s adjudicators who were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was available last round, is not available this round." +msgid_plural "%(count)s adjudicators who were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark adjudicators as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one adjudicator marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit adjudicator availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was not available last round, is available this round." +msgid_plural "%(count)s rooms that were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was available last round, is not available this round." +msgid_plural "%(count)s rooms that were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." +msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark rooms as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one room marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit room availability" +msgstr "" + +#: availability/views.py +msgid "no teams are debating" +msgstr "" + +#. Translators: nteams in this string can only be 0 or 1 +#: availability/views.py +#, python-format +msgid "%(nteams)d breaking team — no debates can happen" +msgid_plural "%(nteams)d breaking teams — no debates can happen" +msgstr[0] "" +msgstr[1] "" + +#. Translators: ndebating in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(ndebating)d breaking team is debating this round" +msgid_plural "%(ndebating)d breaking teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#. Translators: This gets appended to the previous string (the one with +#. ndebating in it) if (and only if) nbypassing is greater than 0. +#. "It" refers to this round. +#: availability/views.py +#, python-format +msgid "; %(nbypassing)d team is bypassing it" +msgid_plural "; %(nbypassing)d teams are bypassing it" +msgstr[0] "" +msgstr[1] "" + +#. Translators: nadvancing in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(nadvancing)s advancing team is debating this round" +msgid_plural "%(nadvancing)s advancing teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#: availability/views.py +msgid "Active Now" +msgstr "" + +#: availability/views.py +#, python-format +msgid "Active in %(prev_round)s" +msgstr "" + +#: availability/views.py +msgid "Checked-In" +msgstr "" + +#: availability/views.py +msgid "Team Availability" +msgstr "" + +#: availability/views.py +msgid "Adjudicator Availability" +msgstr "" + +#: availability/views.py +msgid "Room Availability" +msgstr "" + +#: availability/views.py +msgid "Room" +msgstr "" + +#: availability/views.py +msgid "Display Name (for the draw)" +msgstr "" + +#: availability/views.py +msgid "Categories" +msgstr "" + +#: availability/views.py +msgid "Priority" +msgstr "" + +#: availability/views.py +msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms." +msgstr "" + +#: availability/views.py +msgid "Checked in all breaking adjudicators." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms from previous round." +msgstr "" + diff --git a/tabbycat/availability/locale/bn/LC_MESSAGES/django.po b/tabbycat/availability/locale/bn/LC_MESSAGES/django.po index 402f35b8e11..26e7c37245a 100644 --- a/tabbycat/availability/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-12-31 14:47\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "উপস্থিতি" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "বিষয় / সূচি টাইপ" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "পর্ব" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "আগমন" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "দলসমূহ" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "বিভাগসমূহ" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/ca/LC_MESSAGES/django.mo b/tabbycat/availability/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..68d325ba1fa Binary files /dev/null and b/tabbycat/availability/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/ca/LC_MESSAGES/django.po b/tabbycat/availability/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..8b0b3f1b7b2 --- /dev/null +++ b/tabbycat/availability/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,392 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" + +#: availability/apps.py availability/views.py +msgid "Availability" +msgstr "" + +#: availability/models.py +msgid "content type" +msgstr "" + +#: availability/models.py +msgid "object id" +msgstr "" + +#: availability/models.py +msgid "round" +msgstr "" + +#: availability/models.py +msgid "round availability" +msgstr "" + +#: availability/models.py +msgid "round availabilities" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark All Breaking Adjs as Available" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark Everything as Available" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "Copy Availability from %(prev_round)s" +msgstr "" + +#: availability/templates/availability_index.html +msgid "View Draw" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Generate Draw" +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some teams have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some adjudicators have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some rooms have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There is an uneven number of teams marked as available — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select All" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select None" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check-Ins" +msgstr "Registre" + +#: availability/templates/base_availability.html +msgid "Check In All Breaking" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Copy from Previous" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Save Selected" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Teams" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Adjudicators" +msgstr "Grup de Jutges" + +#: availability/templates/checkin_progress.html +msgid "Rooms" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Mark teams as available" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "No need to set team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "There is an uneven number of teams marked as available for this round." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "The number of teams marked as available for this round is not a multiple of 4." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Edit team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was not available last round, is available this round." +msgid_plural "%(count)s adjudicators who were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was available last round, is not available this round." +msgid_plural "%(count)s adjudicators who were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark adjudicators as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one adjudicator marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit adjudicator availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was not available last round, is available this round." +msgid_plural "%(count)s rooms that were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was available last round, is not available this round." +msgid_plural "%(count)s rooms that were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." +msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark rooms as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one room marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit room availability" +msgstr "" + +#: availability/views.py +msgid "no teams are debating" +msgstr "" + +#. Translators: nteams in this string can only be 0 or 1 +#: availability/views.py +#, python-format +msgid "%(nteams)d breaking team — no debates can happen" +msgid_plural "%(nteams)d breaking teams — no debates can happen" +msgstr[0] "" +msgstr[1] "" + +#. Translators: ndebating in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(ndebating)d breaking team is debating this round" +msgid_plural "%(ndebating)d breaking teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#. Translators: This gets appended to the previous string (the one with +#. ndebating in it) if (and only if) nbypassing is greater than 0. +#. "It" refers to this round. +#: availability/views.py +#, python-format +msgid "; %(nbypassing)d team is bypassing it" +msgid_plural "; %(nbypassing)d teams are bypassing it" +msgstr[0] "" +msgstr[1] "" + +#. Translators: nadvancing in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(nadvancing)s advancing team is debating this round" +msgid_plural "%(nadvancing)s advancing teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#: availability/views.py +msgid "Active Now" +msgstr "" + +#: availability/views.py +#, python-format +msgid "Active in %(prev_round)s" +msgstr "" + +#: availability/views.py +msgid "Checked-In" +msgstr "" + +#: availability/views.py +msgid "Team Availability" +msgstr "" + +#: availability/views.py +msgid "Adjudicator Availability" +msgstr "" + +#: availability/views.py +msgid "Room Availability" +msgstr "" + +#: availability/views.py +msgid "Room" +msgstr "Sala" + +#: availability/views.py +msgid "Display Name (for the draw)" +msgstr "" + +#: availability/views.py +msgid "Categories" +msgstr "" + +#: availability/views.py +msgid "Priority" +msgstr "" + +#: availability/views.py +msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms." +msgstr "" + +#: availability/views.py +msgid "Checked in all breaking adjudicators." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms from previous round." +msgstr "" + diff --git a/tabbycat/availability/locale/cs/LC_MESSAGES/django.mo b/tabbycat/availability/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..089499c3f56 Binary files /dev/null and b/tabbycat/availability/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/cs/LC_MESSAGES/django.po b/tabbycat/availability/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..04bdbacf0db --- /dev/null +++ b/tabbycat/availability/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" + +#: availability/apps.py availability/views.py +msgid "Availability" +msgstr "" + +#: availability/models.py +msgid "content type" +msgstr "" + +#: availability/models.py +msgid "object id" +msgstr "" + +#: availability/models.py +msgid "round" +msgstr "" + +#: availability/models.py +msgid "round availability" +msgstr "" + +#: availability/models.py +msgid "round availabilities" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark All Breaking Adjs as Available" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark Everything as Available" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "Copy Availability from %(prev_round)s" +msgstr "" + +#: availability/templates/availability_index.html +msgid "View Draw" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Generate Draw" +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some teams have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some adjudicators have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some rooms have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There is an uneven number of teams marked as available — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select All" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select None" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check-Ins" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check In All Breaking" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Copy from Previous" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Save Selected" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Teams" +msgstr "Týmy" + +#: availability/templates/checkin_progress.html +msgid "Adjudicators" +msgstr "Rozhodčí" + +#: availability/templates/checkin_progress.html +msgid "Rooms" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Mark teams as available" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "No need to set team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "There is an uneven number of teams marked as available for this round." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "The number of teams marked as available for this round is not a multiple of 4." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Edit team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was not available last round, is available this round." +msgid_plural "%(count)s adjudicators who were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was available last round, is not available this round." +msgid_plural "%(count)s adjudicators who were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +msgid "Mark adjudicators as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one adjudicator marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +msgid "Edit adjudicator availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was not available last round, is available this round." +msgid_plural "%(count)s rooms that were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was available last round, is not available this round." +msgid_plural "%(count)s rooms that were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." +msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +msgid "Mark rooms as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one room marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/templates/checkin_progress.html +msgid "Edit room availability" +msgstr "" + +#: availability/views.py +msgid "no teams are debating" +msgstr "" + +#. Translators: nteams in this string can only be 0 or 1 +#: availability/views.py +#, python-format +msgid "%(nteams)d breaking team — no debates can happen" +msgid_plural "%(nteams)d breaking teams — no debates can happen" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. Translators: ndebating in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(ndebating)d breaking team is debating this round" +msgid_plural "%(ndebating)d breaking teams are debating this round" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. Translators: This gets appended to the previous string (the one with +#. ndebating in it) if (and only if) nbypassing is greater than 0. +#. "It" refers to this round. +#: availability/views.py +#, python-format +msgid "; %(nbypassing)d team is bypassing it" +msgid_plural "; %(nbypassing)d teams are bypassing it" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#. Translators: nadvancing in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(nadvancing)s advancing team is debating this round" +msgid_plural "%(nadvancing)s advancing teams are debating this round" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: availability/views.py +msgid "Active Now" +msgstr "" + +#: availability/views.py +#, python-format +msgid "Active in %(prev_round)s" +msgstr "" + +#: availability/views.py +msgid "Checked-In" +msgstr "" + +#: availability/views.py +msgid "Team Availability" +msgstr "" + +#: availability/views.py +msgid "Adjudicator Availability" +msgstr "" + +#: availability/views.py +msgid "Room Availability" +msgstr "" + +#: availability/views.py +msgid "Room" +msgstr "" + +#: availability/views.py +msgid "Display Name (for the draw)" +msgstr "" + +#: availability/views.py +msgid "Categories" +msgstr "" + +#: availability/views.py +msgid "Priority" +msgstr "" + +#: availability/views.py +msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms." +msgstr "" + +#: availability/views.py +msgid "Checked in all breaking adjudicators." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms from previous round." +msgstr "" + diff --git a/tabbycat/availability/locale/de/LC_MESSAGES/django.po b/tabbycat/availability/locale/de/LC_MESSAGES/django.po index 5cc3664c69d..6003fd86fb4 100644 --- a/tabbycat/availability/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 08:55\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,301 +12,295 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "runde" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Teams" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Juroren" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Räume" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -314,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -324,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -332,67 +326,67 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Raum" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/en/LC_MESSAGES/django.po b/tabbycat/availability/locale/en/LC_MESSAGES/django.po index bf1be1beede..b6eb2bb1343 100644 --- a/tabbycat/availability/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/availability/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: 2020-05-24 04:15-0300\n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,298 +17,290 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format -msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random or Seeded instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,66 +326,66 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/es/LC_MESSAGES/django.po b/tabbycat/availability/locale/es/LC_MESSAGES/django.po index d3bc4edc253..e971fe48648 100644 --- a/tabbycat/availability/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "Disponibilidad" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "tipo de contenido" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "id del objeto" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "ronda" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "disponibilidad de la ronda" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "disponibilidad de las rondas" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "Ver Cuadro" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "Generar Cuadro" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "Un debate de %(prev_round)s no tiene la ballot completa. Esto puede llevar a un cuadro que falle o sea incorrecto, dependiendo de tus reglas del cuadro. Meter resultados de %(prev_round)s. " msgstr[1] "%(previous_unconfirmed)s debates de %(prev_round)s no tienen las ballots completan. Esto puede llevar a un cuadro que falle o que sea incorrecto, dependiendo de tus reglas de cuadro. Meter los resultados de %(prev_round)s. " -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "Esta es la primera ronda, pero el tipo de cuadro es %(draw_type)s. Era tut intención que fuera en cambio aleatorio? Puedes editar el tipo de cuadro de esta ronda en la parte de Editar la base de datos." -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "Esta es una ronda eliminatoria, pero no tiene una categoría de break. Las rondas eliminatorias se deben relacionar con una categoría de break. Por favor configura la categoría de break de esta ronda en la parte de Editar la base de datos." -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "Esta es una ronda eliminatoria, pero el tipo de cuadro es %(draw_type)s. El tipo de cuadro de todas las rondas eliminatorias debería ser \"Eliminatoria.\" Por favor cambia el tipo de cuadro de esta ronda en la parte de Editar la Base de Datos." -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "Parece que no hay ningún equipo bromeando en la categoría de break %(break_category)s. Ya generaste el break para la categoría de break %(break_category)s?" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "Solamente hay un equipo bromeando en la categoría de break %(break_category)s. No puedes generar una ronda eliminatoria con un solo equipo — tal vez te gustaría revisar el break de la categoría de break %(break_category)s ." -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "Seleccionar todo" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "Seleccionar ninguno" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "Chequeo" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "Chequear a todos los que breakean" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "Copiar del anterior" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "Guardar los seleccionados" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Equipos" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Jueces" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Salas" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "no hay equipos debatiendo" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "%(nteams)d equipo que breakea — no pueden hacerse los debates" msgstr[1] "%(nteams)d equipos que brekean — no pueden hacerse los debates" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "%(ndebating)d los equipos que breakean están debatiendo esta ronda" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "; %(nbypassing)d equipos lo está eludiendo" msgstr[1] "%(nbypassing)d equipos lo están eludiendo" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "%(nadvancing)s equipo que avanza está debatiendo esta ronda" msgstr[1] "%(nadvancing)s equipos que avanzan están debatiendo esta ronda" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "Activo" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "Activo en %(prev_round)s" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "Disponibilidad de Equipos" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "Disponibilidad de Jueces" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "Disponibilidad de Salas" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Sala" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "Mostrar nombre (para el cuadro)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "Categorías" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "Prioridad" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "Se han chequeado todos los equipos, jueces y salas." -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "Se han chequeado todos los jueces que breakean." -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "Se han chequeado todos los equipos, jueces y salas de la ronda anterior." diff --git a/tabbycat/availability/locale/fr/LC_MESSAGES/django.po b/tabbycat/availability/locale/fr/LC_MESSAGES/django.po index cef42951aca..259cfdaa06d 100644 --- a/tabbycat/availability/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "Disponibilité" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "type de contenu" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "identifiant d'objet" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "joute" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "disponibilité dans une joute" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "disponibilités dans une joute" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "Marquer tous les juges qualifiant comme disponibles" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "Tout marquer comme disponible" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "Copier disponibilité de %(prev_round)s" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "Voir le tirage" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "%(previous_unconfirmed)s débats de %(round)s n’ont pas de feuille complété — cela peut causer un tirage qui échoue ou qui est incorrect" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "Générer le tirage" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "La génération du tirage n'est pas possible avant que des équipes aient été marquées comme disponibles." -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "La génération du tirage n'est pas possible avant que des juges aient été marqués comme disponibles." -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "La génération du tirage n'est pas possible avant que des salles aient été marquées comme disponibles." -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "Il n'y a pas assez de salles marquées comme disponibles pour le nombre de débats — le tirage ne se générera peut-être pas correctement." -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "Il n'y a pas assez de juges marqués comme disponibles pour le nombre de débats — le tirage ne se générera peut-être pas correctement." -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "Il y a un nombre impair d'équipes marquées comme disponibles — le tirage ne se générera peut-être pas correctement." -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "Le nombre d’équipes marquées comme disponibles n’est pas un multiple de 4 — le tirage ne se générera peut-être pas correctement." -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "Un débat de %(prev_round)s n'a pas de feuille complète. Ce manque peut engendrer un tirage qui échoue ou qui est incorrect, en fonction de vos règles du tirage. Entrez les résultats de %(prev_round)s. " msgstr[1] "%(previous_unconfirmed)s débats de %(prev_round)s n'ont pas de feuille complète. Ce manque peut engendrer un tirage qui échoue ou qui est incorrect, en fonction de vos règles du tirage. Entrez les résultats de %(prev_round)s." -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "Ceci est une page pour %(round)s, cependant la joute précédente n’est pas achevée. Avez-vous oublié de marquer %(prev_round)s comme achevée ?" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "Cette joute est la première, mais son type de tirage est %(draw_type)s. Souhaitiez-vous pour qu’il soit plutôt aléatoire ? Vous pouvez modifier le type de tirage de cette joute dans la zone pour modifier la base de données." -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "Il s’agit d’une joute éliminatoire, mais la joute n'a pas de catégorie de qualification. Il faut que tous les joutes éliminatoires soient associés à une catégorie de qualification. Veuillez définir la catégorie de qualification de cette joute dans la zone pour modifier la base de données." -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "Il s’agit d’une joute éliminatoire, mais son type de tirage est %(draw_type)s. Le type de tirage de toute joute éliminatoire doivent être « Élimination ». Veuillez modifier le type de tirage de cette joute dans la zone pour modifier la base de données." -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "Il semble qu'il n'y ait aucune équipe qualifiante dans la catégorie %(break_category)s. Avez-vous générer la qualification pour la catégorie %(break_category)s?" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "Il n'y a qu'une équipe qualifiante dans la catégorie %(break_category)s. Vous ne pouvez pas générer le tirage pour une joute éliminatoire avec seulement une équipe. Vous voudriez peut-être réexaminer la qualification pour la catégorie %(break_category)s." -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "La préséance de classement d'équipes est vide. Cela signifie que les équipes ne sont pas classés par aucun métrique, donc tous les équipes seront dans une seule tranche avec tout le monde. Si vous n'attendiez pas à ça, créez une préséance de classement d'équipes dans la section de classement des options du tournoi avant de créer le tirage. Dans la plupart des tournois, la première métrique devrait être le pointage ou victoires." -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "Sélectionner tout" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "Sélectionner aucun" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "Enregistrements" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "Enregistrer tous les juges qualifiant" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "Copier de la joute précédente" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "Enregistrer les sélectionnés" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Équipes" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Juges" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Salles" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "Marquer équipes comme disponible" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "Pas de besoin à marquer la disponibilité d'équipes" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "Il y a un nombre impair d'équipes marquées comme disponibles pour cette joute." -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "Le nombre d'équipes marquées comme disponibles pour cette joute n'est pas un multiple de 4." -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "Modifier disponibilité d'équipes" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "Un juge n'a pas de tournoi associé. Réglez leur tournoi dans la zone de la base de données pour pouvoir le marquer comme disponible." msgstr[1] "%(count)s juges n'ont pas de tournoi associé. Réglez leur tournoi dans la zone de la base de données pour pouvoir les marquer comme disponibles." -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "Le %(count)s juge, qui n'était pas disponible la dernière joute, l'est désormais." msgstr[1] "Les %(count)s juges, qui n'étaient pas disponibles la dernière joute, le sont désormais." -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "Les %(count)s juges suivants, qui n'étaient pas disponibles la dernière joute, le sont désormais : %(adjs_list)s" msgstr[1] "Les %(count)s juges suivants, qui n'étaient pas disponibles la dernière joute, le sont désormais : %(adjs_list)s" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "%(count)s juge, qui était disponible la dernière joute, ne l'est plus." msgstr[1] "%(count)s juges, qui étaient disponibles la dernière joute, ne le sont plus." -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "Le %(count)s juge suivant, qui était disponible la dernière joute, ne l'est plus : %(adjs_list)s" msgstr[1] "Les %(count)s juges suivants, qui étaient disponible la dernière joute, ne le sont plus : %(adjs_list)s" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "Marquer juges comme disponibles" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "Il faut au moins un juge marqué comme disponible pour le nombre de débats." msgstr[1] "Il faut au moins %(required_count)s juges enregistrés pour le nombre de débats." -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "Modifier disponibilité de juges" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "%(count)s salle, qui n'était pas disponible la dernière joute, l'est désormais." msgstr[1] "%(count)s salles, qui n'étaient pas disponibles la dernière joute, le sont désormais." -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "La %(count)s salle suivante, qui n'était pas disponible la dernière joute, l'est désormais : %(rooms_list)s" msgstr[1] "Les %(count)s salles suivantes, qui n'étaient pas disponibles la dernière joute, le sont désormais : %(rooms_list)s" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "%(count)s salle qui était disponible la dernière joute ne l'est plus." msgstr[1] "%(count)s salles qui étaient disponibles la dernière joute ne le sont plus." -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "La %(count)s salle suivante, qui était disponible la dernière joute, ne l'est plus : %(rooms_list)s" msgstr[1] "Les %(count)s salles suivantes, qui étaient disponibles la dernière joute, ne le sont plus : %(rooms_list)s" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "Une salle n'a pas de tournoi associé. Ajoutez-le dans la zone de la base de données si vous voulez le marquer comme disponible." msgstr[1] "%(count)s salles n'ont pas de tournoi associé. Ajoutez-les dans la zone de la base de données si vous voulez les marquer comme disponibles." -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "Marquer salles comme disponible" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "Il faut au moins une salle marquée comme disponible pour le nombre de débats." msgstr[1] "Il faut au moins %(required_count)s salles marquées comme disponibles pour satisfier le nombre de débats." -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "Modifier la disponibilité des salles" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "aucune équipe ne débat" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "%(nteams)d équipe qualifiante — aucun débat ne peut avoir lieu" msgstr[1] "%(nteams)d équipes qualifiantes — aucun débat ne peut avoir lieu" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "%(ndebating)d équipes qualifiantes débattent dans cette joute" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "; %(nbypassing)d équipe le dépasse" msgstr[1] "; %(nbypassing)d équipes le dépassent" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "%(nadvancing)s équipe avançante débat dans cette joute" msgstr[1] "%(nadvancing)s équipes avançantes débattent dans cette joute" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "Actif actuellement" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "Actif dans %(prev_round)s" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "Arrivée" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "Disponibilité d'équipes" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "Disponibilité de juges" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "Disponibilité des salles" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Salle" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "Nom d'affichage (pour le tirage)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "Catégories" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "Priorité" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "La mise à jour de disponibilités a échoué suite à une faute d’intégrité des données. Vous devriez re-essayer ou faire des mises-à-jour individuelles." -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "Toutes les équipes, tous les juges et toutes les salles ont été enregistrés." -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "Tous les juges qualifiants ont été enregistrés." -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "Toutes les équipes, tous les juges et toutes les salles de la joute précédente ont été enregistrés." diff --git a/tabbycat/availability/locale/he/LC_MESSAGES/django.po b/tabbycat/availability/locale/he/LC_MESSAGES/django.po index 2f670ffe514..13332b4c290 100644 --- a/tabbycat/availability/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:29\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,96 +12,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "סיבוב" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " @@ -110,98 +104,98 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "קבוצות" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -210,7 +204,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." @@ -219,7 +213,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" @@ -228,7 +222,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." @@ -237,7 +231,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" @@ -246,12 +240,12 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." @@ -260,11 +254,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." @@ -273,7 +267,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" @@ -282,7 +276,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." @@ -291,7 +285,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" @@ -300,7 +294,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -309,12 +303,12 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." @@ -323,16 +317,16 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -342,7 +336,7 @@ msgstr[2] "" msgstr[3] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -354,7 +348,7 @@ msgstr[3] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -364,7 +358,7 @@ msgstr[2] "" msgstr[3] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" @@ -373,60 +367,60 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/hi/LC_MESSAGES/django.po b/tabbycat/availability/locale/hi/LC_MESSAGES/django.po index e40495dfddb..8de3d431f26 100644 --- a/tabbycat/availability/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,301 +12,295 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -314,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -324,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -332,67 +326,67 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/id/LC_MESSAGES/django.po b/tabbycat/availability/locale/id/LC_MESSAGES/django.po index 61910ffd334..63da7a3ef4e 100644 --- a/tabbycat/availability/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-10-24 00:45\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,292 +17,284 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "Ketersediaan" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "tipe konten" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "id objek" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "ronde" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "ketersediaan ronde" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "ketersediaan ronde" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "Tandai Seluruh Juri Breaking sebagai Tersedia" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "Tandai Semua sebagai Tersedia" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "Salin Ketersediaan dari %(prev_round)s" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "Lihat Pengundian" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "%(previous_unconfirmed)s debat dari ronde %(round)s tidak memiliki balot yang lengkap — ini dapat berujung pada draw yang salah" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "Bangkitkan Pengundian" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "Pengundian tidak dapat dibangkitkan sampai beberapa tim sudah ditandai sebagai tersedia." -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "Pengundian tidak dapat dibangkitkan sampai beberapa juri sudah ditandai sebagai tersedia." -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "Pengundian tidak dapat dibangkitkan sampai beberapa ruangan ditandai sebagai tersedia." -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "Tida ada cukup ruangan yang ditandari tersedia untuk jumlah debat — pengundia mungkin tidak terbangkitkan dengan benar." -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "Tidak ada cukup ruangan yang ditandai tersedia untuk jumlah debat — pengundian mungkin tidak terbangkitkan dengan benar." -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "Jumlah tim yang ditandai tersedia tidak genap — pengundian mungkin tidak terbangkitkan dengan benar." -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "Jumlah tim yang ditandai tersedia bukan kelipatan 4 — pengundian mungkin tidak terbangkitkan dengan benar." -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "%(previous_unconfirmed)s debat dari ronde %(prev_round)s tidak memiliki balot yang lengkap. Ini dapat berujung pada draw yang salah. Masukkan hasil dari ronde %(prev_round)s. " -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "Ini adalah halaman untuk %(round)s, tetapi ronde sebelumnya belum ditandai sebagai sudah selesai. Apakah Anda lupa untuk menandai %(prev_round)s sebagai sudah selesai? " -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "Ini adalah ronde pertama, tetapi tipe pengundian adalah %(draw_type)s. Apakah maksud Anda adalah Acak? Anda dapat menyunting tipe pengundian ronde ini pada area Sunting Basisdata." -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "Ini adalah ronde eliminasi, tetapi tidak memiliki kategori break. Ronde eliminasi harus terasosiasi dengan kategori break. Mohon sunting kategori break ronde ini pada area Sunting Basisdata." -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "Ini adalah ronde eliminasi, tetapi tipe pengundiannya adalah %(draw_type)s. Tipe pengundian untuk seluruh ronde eliminasi haruslah \"Eliminasi\". Mohon ubah tipe pengundian ronde ini pada area Sunting Basisdata." -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "Sepertinya tidak ada tim breaking di Break %(break_category)s. Sudahkah Anda membangkitkan break untuk Break %(break_category)s Break?" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "Sepertinya tidak ada tim yang breaking di Break %(break_category)s. Anda tidak dapat membangkitkan pengundian ronde eliminasi hanya dengan satu tim — Anda mungkin ingin mereview break untuk untuk Break %(break_category)s." -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "Presedensi klasemen tim kosong. Ini artinya tim tidak diranking berdasarkan metrik apapun, sehingga semua tim akan berada pada sebuah kelompok berisikan semuanya. Jika ini bukan yang Anda inginkan, atur presedensi klasemen tim pada seksi Klasemen pada konfigurasi turnamen ini sebelum membuat pengundian. Pada sebagian besar turnamen, metrik pertama seharusnya jumlah poin atau jumlah kemenangan." -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "Pilih Semua" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "Kosongkan Pilihan" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "Cek-In" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "Cek-In Seluruh Breaking" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "Salin dari Sebelumnya" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "Simpan yang Terpilih" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Tim" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Juri" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Ruangan" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "Tandai tim sebagai tersedia" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "Tidak perlu mengatur ketersediaan tim" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "Tim yang ditandai sebagai tersedia pada ronde ini jumlahnya tidak genap." -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "Jumlah tim yang ditandai sebagai tersedia pada ronde ini bukan kelipatan 4." -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "Sunting ketersediaan tim" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "%(count)s juri tidak terasosiasi dengan turnamen. Ubah kolom 'Turnamen' milik mereka pada area Sunting Basisdata jika Anda menginginkan mereka ditandai sebagai tersedia." -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "%(count)s juri yang tidak tersedia pada ronde sebelumnya, tersedia pada ronde ini." -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "%(count)s juri ini, yang tidak tersedia pada ronde sebelumnya, tersedia pada ronde ini: %(adjs_list)s" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "%(count)s juri yang tersedia di ronde sebelumnya, tidak tersedia di ronde ini." -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "%(count)s juri berikut ini, yang tersedia di ronde sebelumnya, tidak tersedia di ronde ini: %(adjs_list)s" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "Tandai juri sebagai tersedia" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "Harus ada paling tidak %(required_count)s juri yang ditandai sebagai tersedia, dengan jumlah debat yang ada." -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "Sunting ketersediaan juri" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "%(count)s ruangan yang tidak tersedia pada ronde sebelumnya, tersedia pada ronde ini." -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "%(count)s ruangan ini, yang tidak tersedia pada ronde sebelumnya, tersedia pada ronde ini: %(rooms_list)s" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "%(count)s ruangan yang tersedia pada ronde sebelumnya, tidak tersedia pada ronde ini." -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "%(count)s ruangan ini, yang tersedia pada ronde sebelumnya, tidak tersedia pada ronde ini: %(rooms_list)s" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "%(count)s ruangan tidak terasosiasi ke turnamen. Lihat kolom 'Turnamen' pada area Sunting Basisdata jika Anda ingin menandai mereka mereka sebagai tersedia." -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "Tandai ruangan atas tersedia" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "Perlu ada paling tidak %(required_count)s ruangan ditandai sebagai tersedia, dengan jumlah debat yang ada saat ini." -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "Sunting ketersediaan ruangan" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "tidak ada tim yang sedang berdebat" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" msgstr[0] "%(nteams)d tim breaking — tidak ada debat yang dapat berlangsung" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -311,73 +303,73 @@ msgstr[0] "%(ndebating)d tim breaking berdebat pada ronde ini" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" msgstr[0] "; %(nbypassing)d tim melompati ronde ini" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "%(nadvancing)s tim yang lolos berdebat pada ronde ini" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "Aktif Saat Ini" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "Aktif pada %(prev_round)s" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "Sudah Cek-In" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "Ketersediaan Tim" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "Ketersediaan Juri" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "Ketersediaan Ruangan" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Ruangan" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "Nama yang Ditampilkan (untuk pengundian)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "Kategori" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "Prioritas" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "Gagal untuk memperbarui beberapa atau semua ketersediaan karena kesalahan integritas. Anda sebaiknya mencoba lagi aksi ini atau membuat pembaruan individu." -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "Cek-in seluruh tim, juri, dan ruangan." -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "Cek-in seluruh juri breaking." -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "Cek-in seluruh tim, juri, dan ruangan dari ronde sebelumnya." diff --git a/tabbycat/availability/locale/it/LC_MESSAGES/django.mo b/tabbycat/availability/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..d086eb2d739 Binary files /dev/null and b/tabbycat/availability/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/it/LC_MESSAGES/django.po b/tabbycat/availability/locale/it/LC_MESSAGES/django.po index 16d71530dac..1fc2fd4ba6f 100644 --- a/tabbycat/availability/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2021-06-25 17:17\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/ja/LC_MESSAGES/django.po b/tabbycat/availability/locale/ja/LC_MESSAGES/django.po index c8e908e9d4a..377cd8c6753 100644 --- a/tabbycat/availability/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,292 +17,284 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "コンテンツタイプ" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "ラウンド" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "ブレイクしたすべてのジャッジを有効にする" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "すべてを有効にする" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "%(prev_round)sで有効にされているものをコピーする" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "対戦表を確認する" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "対戦表を作成する" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "いくつかのチームが有効にされていない限り対戦表は作成できません。" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "何人かのジャッジが有効にされていない限り対戦表は作成できません。" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "いくつかのラウンド部屋が有効にされていない限り対戦表は作成できません。" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "有効にされているラウンド部屋が足りません。正しく対戦表が作成されない可能性があります。" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "有効にされているジャッジが足りません。正しく対戦表が作成されない可能性があります。" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "有効にされているチーム数が奇数です。正しく対戦表が作成されない可能性があります。" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "有効にされているチーム数が4の倍数でありません。正しく対戦表が作成されない可能性があります。" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "ラウンド%(prev_round)sの%(previous_unconfirmed)s試合のバロットが揃っていません。対戦表が正しく作成されず、誤りが生じる可能性があります。まずラウンド%(prev_round)sの結果を入力してください。" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "チェックイン" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "ブレイクしているすべての者をチェックインする" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "選択したものを保存する" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "チーム" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "ジャッジ" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "ラウンド部屋" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "チームを有効にする" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "チームを有効にする必要がありません" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "このラウンドで有効にされているチーム数が奇数です。" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "このラウンドで有効にされているチーム数が4の倍数でありません。" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "ジャッジを有効にする" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" msgstr[0] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -311,73 +303,73 @@ msgstr[0] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" msgstr[0] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "ラウンド部屋" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "カテゴリー" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/kk/LC_MESSAGES/django.mo b/tabbycat/availability/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..293b1fa33da Binary files /dev/null and b/tabbycat/availability/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/kk/LC_MESSAGES/django.po b/tabbycat/availability/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..3df79059c22 --- /dev/null +++ b/tabbycat/availability/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,392 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" + +#: availability/apps.py availability/views.py +msgid "Availability" +msgstr "" + +#: availability/models.py +msgid "content type" +msgstr "" + +#: availability/models.py +msgid "object id" +msgstr "" + +#: availability/models.py +msgid "round" +msgstr "ойын" + +#: availability/models.py +msgid "round availability" +msgstr "" + +#: availability/models.py +msgid "round availabilities" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark All Breaking Adjs as Available" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark Everything as Available" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "Copy Availability from %(prev_round)s" +msgstr "" + +#: availability/templates/availability_index.html +msgid "View Draw" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Generate Draw" +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some teams have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some adjudicators have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some rooms have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "There is an uneven number of teams marked as available — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select All" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select None" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check-Ins" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check In All Breaking" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Copy from Previous" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Save Selected" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Teams" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Adjudicators" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Rooms" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Mark teams as available" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "No need to set team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "There is an uneven number of teams marked as available for this round." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "The number of teams marked as available for this round is not a multiple of 4." +msgstr "" + +#: availability/templates/checkin_progress.html +msgid "Edit team availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was not available last round, is available this round." +msgid_plural "%(count)s adjudicators who were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was available last round, is not available this round." +msgid_plural "%(count)s adjudicators who were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark adjudicators as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one adjudicator marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit adjudicator availability" +msgstr "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was not available last round, is available this round." +msgid_plural "%(count)s rooms that were not available last round, are available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was available last round, is not available this round." +msgid_plural "%(count)s rooms that were available last round, are not available this round." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." +msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Mark rooms as available" +msgstr "" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one room marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." +msgstr[0] "" +msgstr[1] "" + +#: availability/templates/checkin_progress.html +msgid "Edit room availability" +msgstr "" + +#: availability/views.py +msgid "no teams are debating" +msgstr "" + +#. Translators: nteams in this string can only be 0 or 1 +#: availability/views.py +#, python-format +msgid "%(nteams)d breaking team — no debates can happen" +msgid_plural "%(nteams)d breaking teams — no debates can happen" +msgstr[0] "" +msgstr[1] "" + +#. Translators: ndebating in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(ndebating)d breaking team is debating this round" +msgid_plural "%(ndebating)d breaking teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#. Translators: This gets appended to the previous string (the one with +#. ndebating in it) if (and only if) nbypassing is greater than 0. +#. "It" refers to this round. +#: availability/views.py +#, python-format +msgid "; %(nbypassing)d team is bypassing it" +msgid_plural "; %(nbypassing)d teams are bypassing it" +msgstr[0] "" +msgstr[1] "" + +#. Translators: nadvancing in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(nadvancing)s advancing team is debating this round" +msgid_plural "%(nadvancing)s advancing teams are debating this round" +msgstr[0] "" +msgstr[1] "" + +#: availability/views.py +msgid "Active Now" +msgstr "" + +#: availability/views.py +#, python-format +msgid "Active in %(prev_round)s" +msgstr "" + +#: availability/views.py +msgid "Checked-In" +msgstr "" + +#: availability/views.py +msgid "Team Availability" +msgstr "" + +#: availability/views.py +msgid "Adjudicator Availability" +msgstr "" + +#: availability/views.py +msgid "Room Availability" +msgstr "" + +#: availability/views.py +msgid "Room" +msgstr "" + +#: availability/views.py +msgid "Display Name (for the draw)" +msgstr "" + +#: availability/views.py +msgid "Categories" +msgstr "" + +#: availability/views.py +msgid "Priority" +msgstr "" + +#: availability/views.py +msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms." +msgstr "" + +#: availability/views.py +msgid "Checked in all breaking adjudicators." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms from previous round." +msgstr "" + diff --git a/tabbycat/availability/locale/ms/LC_MESSAGES/django.po b/tabbycat/availability/locale/ms/LC_MESSAGES/django.po index 6ca9e8c681e..3e1a94f595a 100644 --- a/tabbycat/availability/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,292 +17,284 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "jenis kandungan" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "pusingan" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Bilik" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" msgstr[0] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -311,73 +303,73 @@ msgstr[0] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" msgstr[0] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Bilik" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/pt/LC_MESSAGES/django.po b/tabbycat/availability/locale/pt/LC_MESSAGES/django.po index b02c16b9c05..889113c5ef1 100644 --- a/tabbycat/availability/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "rodada" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" msgstr[1] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" msgstr[1] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "" msgstr[1] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "" msgstr[1] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" msgstr[1] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/ro/LC_MESSAGES/django.po b/tabbycat/availability/locale/ro/LC_MESSAGES/django.po index 9a110f59f69..de543498e70 100644 --- a/tabbycat/availability/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,96 +12,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " @@ -109,98 +103,98 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -208,7 +202,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." @@ -216,7 +210,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" @@ -224,7 +218,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." @@ -232,7 +226,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" @@ -240,12 +234,12 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." @@ -253,11 +247,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." @@ -265,7 +259,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" @@ -273,7 +267,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." @@ -281,7 +275,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" @@ -289,7 +283,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -297,12 +291,12 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." @@ -310,16 +304,16 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -328,7 +322,7 @@ msgstr[1] "" msgstr[2] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -339,7 +333,7 @@ msgstr[2] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -348,7 +342,7 @@ msgstr[1] "" msgstr[2] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" @@ -356,60 +350,60 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/locale/ru/LC_MESSAGES/django.po b/tabbycat/availability/locale/ru/LC_MESSAGES/django.po index 9fc7a172c36..47567208de5 100644 --- a/tabbycat/availability/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,93 +17,85 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "Доступность" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "тип контента" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "id объекта" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "раунд" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "доступность раунда" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "доступности раунда" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "Отметить всех брейкающихся судей как доступных" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "Отметить всех как доступных" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "Скопировать доступность из %(prev_round)s" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "Посмотреть сетку" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "%(previous_unconfirmed)s дебаты из %(round)s не имею заполненного бэллота - это может привести к сбоям или неправильной сетке" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "Создать сетку" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "Сетка не может быть сгенерирована, пока какие-то команды не отмечены как доступные." -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "Сетка не может быть сгенерирована, пока какие-то судьи не отмечены как доступные." -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "Сетка не может быть сгенерирована, пока какие-то аудитории не отмечены как доступные." -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "Недостаточно аудиторий, отмеченных как доступные - сетка не может быть сгенерирована." -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "Недостаточно судей, отмеченных как доступные - сетка не может быть сгенерирована." -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "Количество команд, отмеченных как доступные, некратное — сетка не может быть сгенерирована." -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "Количество команд, отмеченных как доступные, некратно четырем — сетка не может быть сгенерирована." -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " @@ -112,98 +104,98 @@ msgstr[1] "%(previous_unconfirmed)s Дебаты %(prev_round)s не и msgstr[2] "%(previous_unconfirmed)s Дебаты %(prev_round)s не имеют заполненного бэллота. Это может привести к сбоям при создании сетки или её неточности, в зависимости от правил создания сетки. Введите результаты %(prev_round)s" msgstr[3] "%(previous_unconfirmed)s Дебаты %(prev_round)s не имеют заполненного бэллота. Это может привести к сбоям при создании сетки или её неточности, в зависимости от правил создания сетки. Введите результаты %(prev_round)s" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "Эта страница для %(round)s, но предыдущий раунд ещё не отмечен как завершенный. Возможно, вы забыли отметить %(prev_round)s как законченный?" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "Это первый раунд, но его тип сетки %(draw_type)s. Хотели бы вы, чтобы вместо этого он был случайным? Вы можете изменить тип сетки на этот раунд в области Редактировать базу данных." -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "Это брейковый раунд, но для него не установлена брейковая категория. Брейковые раунды должны быть ассоциированы с брейковой категорией. Пожалуйста, установите брейковую категорию этого раунда в области Редактировать базу данных." -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "Это брейковый раунд, но его сетка %(draw_type)s. Тип сетки на брейковые раунды должен быть \"Брейковые\". Пожалуйста, измените тип сетки для этого раунда в области в области Редактировать базу данных." -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "Похоже, что в un %(break_category)s unnamed@@1 нет команд, которые брейкаются. Вы уже создали брейк для %(break_category)s ?" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "Есть только одна команда, брейкающаяся в %(break_category)s брейке. Вы не можете создать сетку на брейковый раунд только с одной командой - возможно, вы захотите ещё раз посмотреть брейк %(break_category)s." -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "Первенство положения команд пустует. Это означает, что команды не ранжированы ни по одной метрике, то есть все команды будут в одной группе. Если это не то, что вы хотели, установите первенство положения команд в области Положение настроек турнира до создания сетки. Для большинства турниров первой метрикой будет количество баллов или побед." -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "Выбрать Все" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "Сбросить выбор" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "Регистрации" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "Проверить во всех брейках" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "Копировать из предыдущего" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "Сохранить выбранное" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Команды" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Судьи" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "Аудитории" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "Отметить команду как доступную" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "Не нужно устанавливать доступность команды" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "Количество команд, отмеченных как доступные для этого раунда, некратное." -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "Количество команд, отмеченных как доступные для этого раунда, некратное четырем." -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "Редактировать доступность команд" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -212,7 +204,7 @@ msgstr[1] "%(count)s судей не привязаны к какому-либо msgstr[2] "%(count)s судей не привязаны к какому-либо турниру. Укажите турнир в поле \"Турнир\" в области Редактировать базу данных, если вы хотите отметить этих судей как доступных." msgstr[3] "%(count)s судей не привязаны к какому-либо турниру. Укажите турнир в поле \"Турнир\" в области Редактировать базу данных, если вы хотите отметить этих судей как доступных." -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." @@ -221,7 +213,7 @@ msgstr[1] "%(count)s судьи, которые были недоступны д msgstr[2] "%(count)s судьи, которые были недоступны для прошлого раунда, доступны для этого раунда." msgstr[3] "%(count)s судьи, которые были недоступны для прошлого раунда, доступны для этого раунда." -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" @@ -230,7 +222,7 @@ msgstr[1] "Следующие %(count)s судьи, который был нед msgstr[2] "Следующие %(count)s судьи, который был недоступны для прошлого раунда, доступны для этого раунда: %(adjs_list)s" msgstr[3] "Следующие %(count)s судьи, который был недоступны для прошлого раунда, доступны для этого раунда: %(adjs_list)s" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." @@ -239,7 +231,7 @@ msgstr[1] "%(count)s судьи, которые были доступны для msgstr[2] "%(count)s судьи, которые были доступны для прошлого раунда, недоступны для этого раунда." msgstr[3] "%(count)s судьи, которые были доступны для прошлого раунда, недоступны для этого раунда." -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" @@ -248,12 +240,12 @@ msgstr[1] "Следующие %(count)s судьи, которые были до msgstr[2] "Следующие %(count)s судьи, которые были доступны для прошлого раунда, недоступны для этого раунда: %(adjs_list)s" msgstr[3] "Следующие %(count)s судьи, которые были доступны для прошлого раунда, недоступны для этого раунда: %(adjs_list)s" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "Отметить судей как доступных" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." @@ -262,11 +254,11 @@ msgstr[1] "Должно быть хотя бы %(required_count)s судей, о msgstr[2] "Должно быть хотя бы %(required_count)s судей, отмеченных как доступные, учитывая количество дебатов в этом раунде." msgstr[3] "Должно быть хотя бы %(required_count)s судей, отмеченных как доступные, учитывая количество дебатов в этом раунде." -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "Редактировать доступность судей" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." @@ -275,7 +267,7 @@ msgstr[1] "%(count)s аудитории, которые были недосту msgstr[2] "%(count)s аудитории, которые были недоступны в прошлом раунде, доступны для этого раунда." msgstr[3] "%(count)s аудитории, которые были недоступны в прошлом раунде, доступны для этого раунда." -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" @@ -284,7 +276,7 @@ msgstr[1] "Следующие %(count)s аудитории, которая бы msgstr[2] "Следующие %(count)s аудитории, которая была недоступны в прошлом раунде, доступны для этого раунда: %(rooms_list)s" msgstr[3] "Следующие %(count)s аудитории, которая была недоступны в прошлом раунде, доступны для этого раунда: %(rooms_list)s" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." @@ -293,7 +285,7 @@ msgstr[1] "%(count)s аудитории, которые были доступн msgstr[2] "%(count)s аудитории, которые были доступны в прошлом раунде, недоступны для этого раунда." msgstr[3] "%(count)s аудитории, которые были доступны в прошлом раунде, недоступны для этого раунда." -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" @@ -302,7 +294,7 @@ msgstr[1] "Следующие %(count)s аудитории, которые бы msgstr[2] "Следующие %(count)s аудитории, которые были доступны в прошлом раунде, недоступны для этого раунда: %(rooms_list)s" msgstr[3] "Следующие %(count)s аудитории, которые были доступны в прошлом раунде, недоступны для этого раунда: %(rooms_list)s" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." @@ -311,12 +303,12 @@ msgstr[1] "%(count)s аудитории не привязаны какому-л msgstr[2] "%(count)s аудитории не привязаны какому-либо турниру. Укажите турнир в поле \"Турнир\" в области Редактировать базу данных, если вы хотите отметить эти аудитории как доступные." msgstr[3] "%(count)s аудитории не привязаны какому-либо турниру. Укажите турнир в поле \"Турнир\" в области Редактировать базу данных, если вы хотите отметить эти аудитории как доступные." -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "Отметить аудитории как доступные" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." @@ -325,16 +317,16 @@ msgstr[1] "Должно быть хотя бы %(required_count)s аудитор msgstr[2] "Должно быть хотя бы %(required_count)s аудиторий, отмеченных как доступные учитывая количество дебатов в этом раунде." msgstr[3] "Должно быть хотя бы %(required_count)s аудиторий, отмеченных как доступные учитывая количество дебатов в этом раунде." -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "Редактировать доступность аудиторий" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "нет команд" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -344,7 +336,7 @@ msgstr[2] "%(nteams)d брейкающихся команд - дебаты не msgstr[3] "%(nteams)d брейкающихся команд - дебаты не могут произойти" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -356,7 +348,7 @@ msgstr[3] "%(ndebating)d брейкающихся команд играют в #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -366,7 +358,7 @@ msgstr[2] "%(nbypassing)d команды проходят его" msgstr[3] "%(nbypassing)d команды проходят его" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" @@ -375,60 +367,60 @@ msgstr[1] "%(nadvancing)s команд, которые могут пройти msgstr[2] "%(nadvancing)s команд, которые могут пройти дальше, играют в этом раунде" msgstr[3] "%(nadvancing)s команд, которые могут пройти дальше, играют в этом раунде" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "Сейчас активны" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "Активно в %(prev_round)s" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "Зарегистрированы" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "Доступность команд" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "Доступность судей" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "Доступность аудиторий" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "Аудитория" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "Показать название (для сетки)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "Категории" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "Приоритет" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "Не удалось обновить некоторые или все доступные возможности из-за ошибки интегрированности. Вы должны повторить это действие или сделать индивидуальные обновления." -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "Зарегистрированы все команды, судьи и аудитории." -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "Зарегистрированы все брейкающиеся судьи." -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "Зарегистрированы все команды, судьи и аудитории из предыдущего раунда." diff --git a/tabbycat/availability/locale/tr/LC_MESSAGES/django.po b/tabbycat/availability/locale/tr/LC_MESSAGES/django.po index 37e0c97774a..765a9ce6a97 100644 --- a/tabbycat/availability/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,387 +12,381 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" -msgstr "" +msgstr "Uygunluk" -#: availability/models.py:15 +#: availability/models.py msgid "content type" -msgstr "" +msgstr "içerik türü" -#: availability/models.py:16 +#: availability/models.py msgid "object id" -msgstr "" +msgstr "nesne kimliği" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "tur" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" -msgstr "" +msgstr "maç kullanılabilirliği" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" -msgstr "" +msgstr "maç kullanılabilirlikleri" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" -msgstr "" +msgstr "Tüm Break Olmuş Jurileri Kullanılabilir İşaretle" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" -msgstr "" +msgstr "Her Şeyi Kullanılabilir Olarak İşaretle" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" -msgstr "" +msgstr "%(prev_round)s kullanılabilirliğini kopyala" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" -msgstr "" +msgstr "Kurayı Görüntüle" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" -msgstr "" +msgstr "%(round)s dan %(previous_unconfirmed) maçların ballotu eksik - bu, başarısız veya yanlış bir kuraya yol açabilir" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" -msgstr "" +msgstr "Kura Oluştur" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." -msgstr "" +msgstr "Bazı takımlar müsait olarak işaretlenene kadar kura oluşturulamaz." -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." -msgstr "" +msgstr "Bazı jüriler müsait olarak işaretlenene kadar kura oluşturulamaz." -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." -msgstr "" +msgstr "Bazı odalar müsait olarak işaretlenene kadar kura oluşturulamaz." -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." -msgstr "" +msgstr "Maç sayısı için uygun olarak işaretlenmiş yeterli oda yoktur - kura düzgün bir şekilde oluşturulmayabilir." -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." -msgstr "" +msgstr "Maç sayısı için uygun olarak işaretlenmiş yeterli jüri yoktur - kura düzgün bir şekilde oluşturulmayabilir." -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." -msgstr "" +msgstr "Kullanılabilir olarak işaretlenmiş eşit olmayan sayıda takım var - kura düzgün bir şekilde üretilemeyebilir." -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." -msgstr "" +msgstr "Mevcut olarak işaretlenen takım sayısı 4'ün katı değildir - kura düzgün üretilemeyebilir." -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(prev_round)'nin ballotu tamamlanmamış bir maçı var. Bu, kura kurallarınıza bağlı olarak başarısız veya yanlış bir kuraya yol açabilir. %(prev_round)s. sonuçlarını gir. " +msgstr[1] "%(prev_round)'nin ballotu tamamlanmamış %(previous_unconfirmed)s maçı var. Bu, kura kurallarınıza bağlı olarak başarısız veya yanlış bir kuraya yol açabilir. %(prev_round)s. sonuçlarını gir. " -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " -msgstr "" +msgstr "Bu, %(round)s için bir sayfa ancak önceki tur hala tamamlandı olarak işaretlenmemiş. %(prev_round)s tamamlanmış olarak işaretlemyi unuttunuz mu?" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." -msgstr "" +msgstr "Bu ilk turdur, ancak kura türü %(draw_type)s. Bunun yerine Rastgele olmasını mı istediniz? Veri Tabanı düzenle kısmından bu turun kura tipini değiştirebilirsiniz." -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." -msgstr "" +msgstr "Bu bir eleme turudur, ancak bir break kategorisi yok. Eleme turları bir break kategorisiyle ilişkilendirilmelidir. Lütfen Veri Tabanı düzenle kısmından bu turun break ayarlarını değiştirin." -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." -msgstr "" +msgstr "Bu bir eleme turudur, ancak kura türü %(draw_type)s. Tüm eleme turlarının kura türü \"Eleme\" olmalıdır. Veri Tabanı düzenle kısmından bu turun kura tipini değiştirebilirsiniz." -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" -msgstr "" +msgstr "%(break_category)s Break'inde herhangi bir takım break olmuyor. %(break_category)s Breaki için break kategorisini belirlediniz mi?" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." -msgstr "" +msgstr "%(break_category)s Break'inde sadece bir takım break oluyor. Sadece bir takımla eleme turu kurası oluşturamazsınız — %(break_category)s Breakinin break kurallarını incelemek isteyebilirsiniz.." -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." -msgstr "" +msgstr "Takım sıralama önceliği boş. Bu, takımların herhangi bir metriğe göre sıralanmadığı anlamına gelir, bu nedenle tüm takımlar herkesi içeren tek bir aşamada olacaktır. İsteğiniz bu değilse, kurayı oluşturmadan önce Bu maçın ayarlarında sıralama önceliğininden takım sıralama önceliğini ayarlayın. Çoğu turnuvada, ilk metrik puan veya galibiyetdir." -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" -msgstr "" +msgstr "Tümünü Seç" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" -msgstr "" +msgstr "Hiçbiri seçin" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" -msgstr "" +msgstr "Girişler" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" -msgstr "" +msgstr "Breal Olanları Giriş Yap" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" -msgstr "" +msgstr "Öncekinden Kopyala" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" -msgstr "" +msgstr "Seçilenleri Kaydet" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "Takımlar" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "Jüriler" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" -msgstr "" +msgstr "Odalar" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" -msgstr "" +msgstr "Takımlaı kullanılabilir olarak işaretle" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" -msgstr "" +msgstr "Takım kullanılabilirliğini ayarlamanıza gerek yok" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." -msgstr "" +msgstr "Bu tur için kullanılabilir olarak işaretlenmiş eşit olmayan sayıda takım var." -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." -msgstr "" +msgstr "Bu tur için kullanılabilir olarak işaretlenen takım sayısı 4'ün katı değildir." -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" -msgstr "" +msgstr "Takım kullanılabilirliğini düzenleme" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Bir jürinin ilişkili bir turnuvası yoktur. Kullanılabilir olarak işaretlenmelerini istiyorsanız, Veritabanını Düzenle alanında 'Turnuva' alanlarını ayarlayın." +msgstr[1] "%(count)s jürilerinin ilişkili bir turnuvası yoktur. Kullanılabilir olarak işaretlenmelerini istiyorsanız, Veritabanını Düzenle alanında 'Turnuva' alanlarını ayarlayın." -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda müsait olmayan %(count)s jüri bu turda müsait." +msgstr[1] "Geçen turda müsait olmayan %(count)s jüri bu turda mevcuttur." -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda müsait olmayan aşağıdaki %(count)s jüri bu turda kullanılabilir: %(adjs_list)s" +msgstr[1] "Geçen turda müsait olmayan aşağıdaki %(count)s jüri bu turda kullanılabilir: %(adjs_list)s" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda müsait olan %(count)s jüri bu turda mevcut değildir." +msgstr[1] "Geçen turda müsait olan %(count)s jüri bu turda mevcut değildir." -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda müsait olan aşağıdaki %(count)s jüri bu turda mevcut değildir: %(adjs_list)s" +msgstr[1] "Geçen turda müsait olan aşağıdaki %(count)s jüri bu turda mevcut değildir: %(adjs_list)s" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" -msgstr "" +msgstr "Jürileri mevcut olarak işaretle" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Maç sayısı göz önüne alındığında, mevcut olarak işaretlenmiş en az bir jüri olmalıdır." +msgstr[1] "Maç sayısı göz önüne alındığında, mevcut olarak işaretlenmiş en az %(required_count)s jüri olmalıdır." -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" -msgstr "" +msgstr "Jüri kullanılabilirliğini düzenleme" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda mevcut olmayan %(count)s oda bu turda kullanılabilir." +msgstr[1] "Geçen turda mevcut olmayan %(count)s oda bu turda kullanılabilir." -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda mevcut olmayan aşağıdaki %(count)s oda bu turda kullanılabilir: %(rooms_list)s" +msgstr[1] "Geçen turda mevcut olmayan aşağıdaki %(count)s oda bu turda kullanılabilir: %(rooms_list)s" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda mevcut olan %(count)s oda bu turda mevcut değildir." +msgstr[1] "Geçen turda mevcut olan %(count)s oda bu turda mevcut değildir." -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Geçen turda mevcut olan aşağıdaki %(count)s oda bu turda değil: %(rooms_list)s" +msgstr[1] "Geçen turda mevcut olan aşağıdaki %(count)s oda bu turda değil: %(rooms_list)s" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Odanın ilişkili bir turnuvası yok. Kullanılabilir olarak işaretlenmesini istiyorsanız Veritabanını Düzenle alanında 'Turnuva' alanını ayarlayın." +msgstr[1] "%(count)s odanın ilişkili bir turnuvası yok. Kullanılabilir olarak işaretlenmesini istiyorsanız Veritabanını Düzenle alanında 'Turnuva' alanını ayarlayın." -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" -msgstr "" +msgstr "Odaları kullanılabilir olarak işaretle" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Maç sayısı göz önüne alındığında, mevcut olarak işaretlenmiş en az bir oda olmalıdır." +msgstr[1] "Maç sayısı göz önüne alındığında, mevcut olarak işaretlenmiş en az %(required_count)s oda olmalıdır." -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" -msgstr "" +msgstr "Oda kullanılabilirliğini düzenle" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" -msgstr "" +msgstr "hiçbir takım maçta değil" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(nteams)d break olan takım — hiçbir maç olamaz" +msgstr[1] "%(nteams)d break olan takımlar — hiçbir maç olamaz" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(ndebating)d break olan takım bu tur maçta" +msgstr[1] "%(ndebating)d break olan takım bu tur maçta" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "; %(nbypassing)d takım atlıyor" +msgstr[1] "; %(nbypassing)d takım atlıyor" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(nadvancing)s ilerleyen takım bu tur münazarada" +msgstr[1] "%(nadvancing)s ilerleyen takım bu tur münazarada" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" -msgstr "" +msgstr "Şuan Aktif" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" -msgstr "" +msgstr "%(prev_round)s'da Aktif" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" -msgstr "" +msgstr "Girişli" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" -msgstr "" +msgstr "Takım Kullanılabilirliği" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" -msgstr "" +msgstr "Jüri Kullanılabilirliği" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" -msgstr "" +msgstr "Oda Kullanılabilirliği" -#: availability/views.py:260 +#: availability/views.py msgid "Room" -msgstr "" +msgstr "Oda" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" -msgstr "" +msgstr "Görünen Ad (kura için)" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" -msgstr "" +msgstr "Kategoriler" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" -msgstr "" +msgstr "Öncelik" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." -msgstr "" +msgstr "Bir bütünlük hatası nedeniyle kullanılabilirliklerin bir kısmı veya tamamı güncelleştirilemedi. Bu eylemi yeniden denemeli veya tek tek güncelleştirmelisiniz." -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." -msgstr "" +msgstr "Tüm takımlar jüriler ve odalar giriş yapıldı." -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." -msgstr "" +msgstr "Tüm break olan jüriler giriş yapıldı." -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." -msgstr "" +msgstr "Tüm takımlar jüriler ve odalar giriş yapıldı." diff --git a/tabbycat/availability/locale/tzl/LC_MESSAGES/django.po b/tabbycat/availability/locale/tzl/LC_MESSAGES/django.po index 38b82fde7b2..6ff452ca9ba 100644 --- a/tabbycat/availability/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-11-18 21:01\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,298 +17,290 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "crwdns29646:0crwdne29646:0" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "crwdns29648:0crwdne29648:0" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "crwdns29650:0crwdne29650:0" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "crwdns29652:0crwdne29652:0" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "crwdns29654:0crwdne29654:0" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "crwdns29656:0crwdne29656:0" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "crwdns29658:0crwdne29658:0" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "crwdns29660:0crwdne29660:0" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "crwdns29662:0%(prev_round)scrwdne29662:0" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "crwdns29664:0crwdne29664:0" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "crwdns51088:0%(previous_unconfirmed)scrwdnd51088:0%(round)scrwdne51088:0" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "crwdns29668:0crwdne29668:0" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "crwdns29670:0crwdne29670:0" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "crwdns29672:0crwdne29672:0" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "crwdns51090:0crwdne51090:0" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "crwdns51092:0crwdne51092:0" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "crwdns29678:0crwdne29678:0" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "crwdns29680:0crwdne29680:0" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "crwdns29682:0crwdne29682:0" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "crwdns29684:1%(prev_round)scrwdnd29684:1%(prev_round_results_url)scrwdnd29684:1%(prev_round)scrwdne29684:1" msgstr[1] "crwdns29684:5%(previous_unconfirmed)scrwdnd29684:5%(prev_round)scrwdnd29684:5%(prev_round_results_url)scrwdnd29684:5%(prev_round)scrwdne29684:5" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "crwdns51094:0%(round)scrwdnd51094:0%(complete_prev_round_url)scrwdnd51094:0%(prev_round)scrwdne51094:0" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "crwdns29688:0%(draw_type)scrwdnd29688:0%(change_round_url)scrwdne29688:0" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "crwdns29690:0%(change_round_url)scrwdne29690:0" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "crwdns29692:0%(draw_type)scrwdnd29692:0%(change_round_url)scrwdne29692:0" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "crwdns29694:0%(break_category)scrwdnd29694:0%(breakqual_teams_url)scrwdnd29694:0%(break_category)scrwdne29694:0" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "crwdns29696:0%(break_category)scrwdnd29696:0%(breakqual_teams_url)scrwdnd29696:0%(break_category)scrwdne29696:0" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "crwdns35164:0%(standings_config_url)scrwdne35164:0" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "crwdns29698:0crwdne29698:0" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "crwdns29700:0crwdne29700:0" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "crwdns29702:0crwdne29702:0" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "crwdns29704:0crwdne29704:0" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "crwdns29706:0crwdne29706:0" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "crwdns29708:0crwdne29708:0" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "crwdns29710:0crwdne29710:0" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "crwdns29712:0crwdne29712:0" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "crwdns51096:0crwdne51096:0" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "crwdns29716:0crwdne29716:0" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "crwdns29718:0crwdne29718:0" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "crwdns29720:0crwdne29720:0" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "crwdns29722:0crwdne29722:0" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "crwdns29724:0crwdne29724:0" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "crwdns34010:1crwdne34010:1" msgstr[1] "crwdns34010:5%(count)scrwdne34010:5" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "crwdns34012:1%(count)scrwdne34012:1" msgstr[1] "crwdns34012:5%(count)scrwdne34012:5" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "crwdns34014:1%(count)scrwdnd34014:1%(adjs_list)scrwdne34014:1" msgstr[1] "crwdns34014:5%(count)scrwdnd34014:5%(adjs_list)scrwdne34014:5" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "crwdns34016:1%(count)scrwdne34016:1" msgstr[1] "crwdns34016:5%(count)scrwdne34016:5" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "crwdns34018:1%(count)scrwdnd34018:1%(adjs_list)scrwdne34018:1" msgstr[1] "crwdns34018:5%(count)scrwdnd34018:5%(adjs_list)scrwdne34018:5" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "crwdns29726:0crwdne29726:0" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "crwdns29728:1crwdne29728:1" msgstr[1] "crwdns29728:5%(required_count)scrwdne29728:5" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "crwdns29730:0crwdne29730:0" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "crwdns51098:1%(count)scrwdne51098:1" msgstr[1] "crwdns51098:5%(count)scrwdne51098:5" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "crwdns51100:1%(count)scrwdnd51100:1%(rooms_list)scrwdne51100:1" msgstr[1] "crwdns51100:5%(count)scrwdnd51100:5%(rooms_list)scrwdne51100:5" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "crwdns51102:1%(count)scrwdne51102:1" msgstr[1] "crwdns51102:5%(count)scrwdne51102:5" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "crwdns51104:1%(count)scrwdnd51104:1%(rooms_list)scrwdne51104:1" msgstr[1] "crwdns51104:5%(count)scrwdnd51104:5%(rooms_list)scrwdne51104:5" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "crwdns51106:1crwdne51106:1" msgstr[1] "crwdns51106:5%(count)scrwdne51106:5" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "crwdns51108:0crwdne51108:0" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "crwdns51110:1crwdne51110:1" msgstr[1] "crwdns51110:5%(required_count)scrwdne51110:5" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "crwdns51112:0crwdne51112:0" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "crwdns29742:0crwdne29742:0" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" @@ -316,7 +308,7 @@ msgstr[0] "crwdns29744:1%(nteams)dcrwdne29744:1" msgstr[1] "crwdns29744:5%(nteams)dcrwdne29744:5" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -326,7 +318,7 @@ msgstr[1] "crwdns29746:5%(ndebating)dcrwdne29746:5" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" @@ -334,67 +326,67 @@ msgstr[0] "crwdns29748:1%(nbypassing)dcrwdne29748:1" msgstr[1] "crwdns29748:5%(nbypassing)dcrwdne29748:5" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "crwdns29750:1%(nadvancing)scrwdne29750:1" msgstr[1] "crwdns29750:5%(nadvancing)scrwdne29750:5" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "crwdns29752:0crwdne29752:0" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "crwdns29754:0%(prev_round)scrwdne29754:0" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "crwdns29756:0crwdne29756:0" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "crwdns29758:0crwdne29758:0" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "crwdns29760:0crwdne29760:0" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "crwdns51114:0crwdne51114:0" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "crwdns51116:0crwdne51116:0" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "crwdns29766:0crwdne29766:0" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "crwdns29768:0crwdne29768:0" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "crwdns29770:0crwdne29770:0" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "crwdns34030:0crwdne34030:0" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "crwdns51118:0crwdne51118:0" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "crwdns29774:0crwdne29774:0" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "crwdns51120:0crwdne51120:0" diff --git a/tabbycat/availability/locale/vi/LC_MESSAGES/django.mo b/tabbycat/availability/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..584a54da11c Binary files /dev/null and b/tabbycat/availability/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/availability/locale/vi/LC_MESSAGES/django.po b/tabbycat/availability/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..6e1acdd6410 --- /dev/null +++ b/tabbycat/availability/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,375 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-25 04:12\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 926\n" + +#: availability/apps.py availability/views.py +msgid "Availability" +msgstr "Tính khả dụng" + +#: availability/models.py +msgid "content type" +msgstr "" + +#: availability/models.py +msgid "object id" +msgstr "" + +#: availability/models.py +msgid "round" +msgstr "vòng" + +#: availability/models.py +msgid "round availability" +msgstr "" + +#: availability/models.py +msgid "round availabilities" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark All Breaking Adjs as Available" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Mark Everything as Available" +msgstr "Đánh dấu tất cả là khả dụng" + +#: availability/templates/availability_index.html +#, python-format +msgid "Copy Availability from %(prev_round)s" +msgstr "Sao chép tính khả dụng từ vòng %(prev_round)s" + +#: availability/templates/availability_index.html +msgid "View Draw" +msgstr "Hiển thị bảng đấu" + +#: availability/templates/availability_index.html +#, python-format +msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" +msgstr "" + +#: availability/templates/availability_index.html +msgid "Generate Draw" +msgstr "Tạo bảng đấu" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some teams have been marked as available." +msgstr "" + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some adjudicators have been marked as available." +msgstr "Không thể tạo bảng đấu cho tới khi vài giám khảo được đánh dấu là khả dụng." + +#: availability/templates/availability_index.html +msgid "The draw cannot be generated until some rooms have been marked as available." +msgstr "Không thể tạo bảng đấu cho tới khi vài phòng được đánh dấu là khả dụng." + +#: availability/templates/availability_index.html +msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." +msgstr "Không có đủ phòng khả dụng cho các trận tranh biện - có thể có lỗi trong việc tạo bảng đấu." + +#: availability/templates/availability_index.html +msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." +msgstr "Không có đủ giám khảo khả dụng cho các trận tranh biện - có thể có lỗi trong việc tạo bảng đấu." + +#: availability/templates/availability_index.html +msgid "There is an uneven number of teams marked as available — the draw may not generate properly." +msgstr "Số đội khả dụng là số lẻ - có thể có lỗi trong việc tạo bảng đấu." + +#: availability/templates/availability_index.html +msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." +msgstr "Số đội khả dụng không chia hết cho 4 - có thể có lỗi trong việc tạo bảng đấu." + +#: availability/templates/availability_index.html +#, python-format +msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " +msgstr[0] "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." +msgstr "" + +#: availability/templates/availability_index.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: availability/templates/base_availability.html +msgid "Select All" +msgstr "Chọn tất cả" + +#: availability/templates/base_availability.html +msgid "Select None" +msgstr "Bỏ chọn tất cả" + +#: availability/templates/base_availability.html +msgid "Check-Ins" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Check In All Breaking" +msgstr "" + +#: availability/templates/base_availability.html +msgid "Copy from Previous" +msgstr "Sao chép từ phần trước" + +#: availability/templates/base_availability.html +msgid "Save Selected" +msgstr "Lưu mục đã chọn" + +#: availability/templates/checkin_progress.html +msgid "Teams" +msgstr "Đội" + +#: availability/templates/checkin_progress.html +msgid "Adjudicators" +msgstr "Giám khảo" + +#: availability/templates/checkin_progress.html +msgid "Rooms" +msgstr "Phòng" + +#: availability/templates/checkin_progress.html +msgid "Mark teams as available" +msgstr "Đánh dấu khả dụng cho các đội" + +#: availability/templates/checkin_progress.html +msgid "No need to set team availability" +msgstr "Không cần phải đánh dấu khả dụng cho các đội" + +#: availability/templates/checkin_progress.html +msgid "There is an uneven number of teams marked as available for this round." +msgstr "Số đội khả dụng trong vòng này là số lẻ." + +#: availability/templates/checkin_progress.html +msgid "The number of teams marked as available for this round is not a multiple of 4." +msgstr "Số đội khả dụng trong vòng này không chia hết cho 4." + +#: availability/templates/checkin_progress.html +msgid "Edit team availability" +msgstr "Chỉnh sửa tính khả dụng của các đội" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was not available last round, is available this round." +msgid_plural "%(count)s adjudicators who were not available last round, are available this round." +msgstr[0] "%(count)s giám khảo không khả dụng ở vòng trước khả dụng ở vòng này." + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" +msgstr[0] "%(count)s giám khảo không khả dụng ở vòng trước khả dụng ở vòng này: %(adjs_list)s" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s adjudicator who was available last round, is not available this round." +msgid_plural "%(count)s adjudicators who were available last round, are not available this round." +msgstr[0] "%(count)s giám khảo khả dụng vòng trước không khả dụng ở vòng này." + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" +msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" +msgstr[0] "%(count)s giám khảo khả dụng vòng trước không khả dụng ở vòng này: %(adjs_list)s" + +#: availability/templates/checkin_progress.html +msgid "Mark adjudicators as available" +msgstr "Đánh dấu khả dụng cho các giám khảo" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one adjudicator marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." +msgstr[0] "" + +#: availability/templates/checkin_progress.html +msgid "Edit adjudicator availability" +msgstr "Chỉnh sửa tính khả dụng của giám khảo" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was not available last round, is available this round." +msgid_plural "%(count)s rooms that were not available last round, are available this round." +msgstr[0] "%(count)s phòng không khả dụng vòng trước khả dụng ở vòng này." + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" +msgstr[0] "%(count)s phòng không khả dụng vòng trước khả dụng ở vòng này: %(rooms_list)s" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "%(count)s room that was available last round, is not available this round." +msgid_plural "%(count)s rooms that were available last round, are not available this round." +msgstr[0] "%(count)s phòng không khả dụng vòng trước khả dụng ở vòng này." + +#: availability/templates/checkin_progress.html +#, python-format +msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" +msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" +msgstr[0] "%(count)s phòng khả dụng vòng trước không khả dụng ở vòng này: %(rooms_list)s" + +#: availability/templates/checkin_progress.html +#, python-format +msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." +msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." +msgstr[0] "" + +#: availability/templates/checkin_progress.html +msgid "Mark rooms as available" +msgstr "Đánh dấu phòng phòng là khả dụng" + +#. Translators: required_count is a word for a number (e.g. "two", "three", etc.) +#: availability/templates/checkin_progress.html +#, python-format +msgid "There needs to be at least one room marked as available, given the number of debates." +msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." +msgstr[0] "" + +#: availability/templates/checkin_progress.html +msgid "Edit room availability" +msgstr "Chỉnh sửa tính khả dụng của các phòng" + +#: availability/views.py +msgid "no teams are debating" +msgstr "không có đội nào đang tranh biện" + +#. Translators: nteams in this string can only be 0 or 1 +#: availability/views.py +#, python-format +msgid "%(nteams)d breaking team — no debates can happen" +msgid_plural "%(nteams)d breaking teams — no debates can happen" +msgstr[0] "" + +#. Translators: ndebating in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(ndebating)d breaking team is debating this round" +msgid_plural "%(ndebating)d breaking teams are debating this round" +msgstr[0] "" + +#. Translators: This gets appended to the previous string (the one with +#. ndebating in it) if (and only if) nbypassing is greater than 0. +#. "It" refers to this round. +#: availability/views.py +#, python-format +msgid "; %(nbypassing)d team is bypassing it" +msgid_plural "; %(nbypassing)d teams are bypassing it" +msgstr[0] "" + +#. Translators: nadvancing in this string is always at least 2 +#: availability/views.py +#, python-format +msgid "%(nadvancing)s advancing team is debating this round" +msgid_plural "%(nadvancing)s advancing teams are debating this round" +msgstr[0] "" + +#: availability/views.py +msgid "Active Now" +msgstr "Đang hoạt động" + +#: availability/views.py +#, python-format +msgid "Active in %(prev_round)s" +msgstr "Hoạt động ở %(prev_round)s" + +#: availability/views.py +msgid "Checked-In" +msgstr "" + +#: availability/views.py +msgid "Team Availability" +msgstr "Tính khả dụng của đội" + +#: availability/views.py +msgid "Adjudicator Availability" +msgstr "Tính khả dụng của giám khảo" + +#: availability/views.py +msgid "Room Availability" +msgstr "Tính khả dụng của phòng" + +#: availability/views.py +msgid "Room" +msgstr "Phòng" + +#: availability/views.py +msgid "Display Name (for the draw)" +msgstr "Hiển thị tên (cho bảng đấu)" + +#: availability/views.py +msgid "Categories" +msgstr "Bảng" + +#: availability/views.py +msgid "Priority" +msgstr "Ưu tiên" + +#: availability/views.py +msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms." +msgstr "" + +#: availability/views.py +msgid "Checked in all breaking adjudicators." +msgstr "" + +#: availability/views.py +msgid "Checked in all teams, adjudicators and rooms from previous round." +msgstr "" + diff --git a/tabbycat/availability/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/availability/locale/zh_Hans/LC_MESSAGES/django.po index f6792736508..70bb5dd62df 100644 --- a/tabbycat/availability/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:57\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,292 +17,284 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/availability/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 926\n" -#: availability/apps.py:7 availability/views.py:36 +#: availability/apps.py availability/views.py msgid "Availability" msgstr "" -#: availability/models.py:15 +#: availability/models.py msgid "content type" msgstr "" -#: availability/models.py:16 +#: availability/models.py msgid "object id" msgstr "" -#: availability/models.py:20 +#: availability/models.py msgid "round" msgstr "赛" -#: availability/models.py:24 +#: availability/models.py msgid "round availability" msgstr "" -#: availability/models.py:25 +#: availability/models.py msgid "round availabilities" msgstr "" -#: availability/templates/availability_index.html:11 +#: availability/templates/availability_index.html msgid "Mark All Breaking Adjs as Available" msgstr "" -#: availability/templates/availability_index.html:18 +#: availability/templates/availability_index.html msgid "Mark Everything as Available" msgstr "" -#: availability/templates/availability_index.html:25 +#: availability/templates/availability_index.html #, python-format msgid "Copy Availability from %(prev_round)s" msgstr "" -#: availability/templates/availability_index.html:40 +#: availability/templates/availability_index.html msgid "View Draw" msgstr "" -#: availability/templates/availability_index.html:45 +#: availability/templates/availability_index.html #, python-format msgid "%(previous_unconfirmed)s debates from %(round)s do not have a completed ballot — this may lead to a draw that fails or is incorrect" msgstr "" -#: availability/templates/availability_index.html:47 -#: availability/templates/availability_index.html:52 -#: availability/templates/availability_index.html:57 -#: availability/templates/availability_index.html:62 -#: availability/templates/availability_index.html:67 -#: availability/templates/availability_index.html:72 -#: availability/templates/availability_index.html:77 -#: availability/templates/availability_index.html:82 -#: availability/templates/availability_index.html:86 +#: availability/templates/availability_index.html msgid "Generate Draw" msgstr "" -#: availability/templates/availability_index.html:51 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some teams have been marked as available." msgstr "" -#: availability/templates/availability_index.html:56 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some adjudicators have been marked as available." msgstr "" -#: availability/templates/availability_index.html:61 +#: availability/templates/availability_index.html msgid "The draw cannot be generated until some rooms have been marked as available." msgstr "" -#: availability/templates/availability_index.html:66 +#: availability/templates/availability_index.html msgid "There aren't enough rooms marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:71 +#: availability/templates/availability_index.html msgid "There aren't enough adjudicators marked as available for the number of debates — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:76 +#: availability/templates/availability_index.html msgid "There is an uneven number of teams marked as available — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:81 +#: availability/templates/availability_index.html msgid "The number of teams marked as available is not a multiple of 4 — the draw may not generate properly." msgstr "" -#: availability/templates/availability_index.html:99 +#: availability/templates/availability_index.html #, python-format msgid "One debate from %(prev_round)s does not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgid_plural "%(previous_unconfirmed)s debates from %(prev_round)s do not have a completed ballot. This may lead to a draw that fails or is incorrect, depending on your draw rules. Enter results from %(prev_round)s. " msgstr[0] "" -#: availability/templates/availability_index.html:121 +#: availability/templates/availability_index.html #, python-format msgid "This is a page for %(round)s, but the previous round is still not marked as completed. Did you forget to mark %(prev_round)s as completed? " msgstr "" -#: availability/templates/availability_index.html:137 +#: availability/templates/availability_index.html #, python-format msgid "This is the first round, but its draw type is %(draw_type)s. Did you intend for it to be Random instead? You can edit this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:150 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but it doesn't have a break category. Elimination rounds must be associated with a break category. Please set this round's break category in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:162 +#: availability/templates/availability_index.html #, python-format msgid "This is an elimination round, but its draw type is %(draw_type)s. The draw type of all elimination rounds must be \"Elimination\". Please change this round's draw type in the Edit Database area." msgstr "" -#: availability/templates/availability_index.html:175 +#: availability/templates/availability_index.html #, python-format msgid "There don't appear to be any teams breaking in the %(break_category)s Break. Have you generated the break for the %(break_category)s Break yet?" msgstr "" -#: availability/templates/availability_index.html:187 +#: availability/templates/availability_index.html #, python-format msgid "There's only one team breaking in the %(break_category)s Break. You can't generate an elimination round draw with only one team — you might like to review the break for the %(break_category)s Break." msgstr "" -#: availability/templates/availability_index.html:199 +#: availability/templates/availability_index.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams will be in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration before creating the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: availability/templates/base_availability.html:38 +#: availability/templates/base_availability.html msgid "Select All" msgstr "" -#: availability/templates/base_availability.html:39 +#: availability/templates/base_availability.html msgid "Select None" msgstr "" -#: availability/templates/base_availability.html:40 +#: availability/templates/base_availability.html msgid "Check-Ins" msgstr "" -#: availability/templates/base_availability.html:41 +#: availability/templates/base_availability.html msgid "Check In All Breaking" msgstr "" -#: availability/templates/base_availability.html:42 +#: availability/templates/base_availability.html msgid "Copy from Previous" msgstr "" -#: availability/templates/base_availability.html:43 +#: availability/templates/base_availability.html msgid "Save Selected" msgstr "" -#: availability/templates/checkin_progress.html:7 +#: availability/templates/checkin_progress.html msgid "Teams" msgstr "队伍" -#: availability/templates/checkin_progress.html:8 +#: availability/templates/checkin_progress.html msgid "Adjudicators" msgstr "裁判" -#: availability/templates/checkin_progress.html:9 +#: availability/templates/checkin_progress.html msgid "Rooms" msgstr "房间" -#: availability/templates/checkin_progress.html:43 +#: availability/templates/checkin_progress.html msgid "Mark teams as available" msgstr "" -#: availability/templates/checkin_progress.html:46 +#: availability/templates/checkin_progress.html msgid "No need to set team availability" msgstr "" -#: availability/templates/checkin_progress.html:49 +#: availability/templates/checkin_progress.html msgid "There is an uneven number of teams marked as available for this round." msgstr "" -#: availability/templates/checkin_progress.html:53 +#: availability/templates/checkin_progress.html msgid "The number of teams marked as available for this round is not a multiple of 4." msgstr "" -#: availability/templates/checkin_progress.html:59 +#: availability/templates/checkin_progress.html msgid "Edit team availability" msgstr "" -#: availability/templates/checkin_progress.html:68 +#: availability/templates/checkin_progress.html #, python-format msgid "One adjudicator does not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgid_plural "%(count)s adjudicators do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:77 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was not available last round, is available this round." msgid_plural "%(count)s adjudicators who were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:84 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was not available last round, is available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were not available last round, are available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:93 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s adjudicator who was available last round, is not available this round." msgid_plural "%(count)s adjudicators who were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:100 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s adjudicator, who was available last round, is not available this round: %(adjs_list)s" msgid_plural "The following %(count)s adjudicators, who were available last round, are not available this round: %(adjs_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:108 +#: availability/templates/checkin_progress.html msgid "Mark adjudicators as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:111 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one adjudicator marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s adjudicators marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:121 +#: availability/templates/checkin_progress.html msgid "Edit adjudicator availability" msgstr "" -#: availability/templates/checkin_progress.html:130 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was not available last round, is available this round." msgid_plural "%(count)s rooms that were not available last round, are available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:137 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was not available last round, is available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were not available last round, are available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:146 +#: availability/templates/checkin_progress.html #, python-format msgid "%(count)s room that was available last round, is not available this round." msgid_plural "%(count)s rooms that were available last round, are not available this round." msgstr[0] "" -#: availability/templates/checkin_progress.html:153 +#: availability/templates/checkin_progress.html #, python-format msgid "The following %(count)s room, which was available last round, is not available this round: %(rooms_list)s" msgid_plural "The following %(count)s rooms, which were available last round, are not available this round: %(rooms_list)s" msgstr[0] "" -#: availability/templates/checkin_progress.html:162 +#: availability/templates/checkin_progress.html #, python-format msgid "One room does not have an associated tournament. Set its 'Tournament' field in the Edit Database area if you want it to be marked as available." msgid_plural "%(count)s rooms do not have an associated tournament. Set their 'Tournament' field in the Edit Database area if you want them to be marked as available." msgstr[0] "" -#: availability/templates/checkin_progress.html:170 +#: availability/templates/checkin_progress.html msgid "Mark rooms as available" msgstr "" #. Translators: required_count is a word for a number (e.g. "two", "three", etc.) -#: availability/templates/checkin_progress.html:173 +#: availability/templates/checkin_progress.html #, python-format msgid "There needs to be at least one room marked as available, given the number of debates." msgid_plural "There need to be at least %(required_count)s rooms marked as available, given the number of debates." msgstr[0] "" -#: availability/templates/checkin_progress.html:185 +#: availability/templates/checkin_progress.html msgid "Edit room availability" msgstr "" -#: availability/views.py:95 +#: availability/views.py msgid "no teams are debating" msgstr "" #. Translators: nteams in this string can only be 0 or 1 -#: availability/views.py:105 +#: availability/views.py #, python-format msgid "%(nteams)d breaking team — no debates can happen" msgid_plural "%(nteams)d breaking teams — no debates can happen" msgstr[0] "" #. Translators: ndebating in this string is always at least 2 -#: availability/views.py:113 +#: availability/views.py #, python-format msgid "%(ndebating)d breaking team is debating this round" msgid_plural "%(ndebating)d breaking teams are debating this round" @@ -311,73 +303,73 @@ msgstr[0] "" #. Translators: This gets appended to the previous string (the one with #. ndebating in it) if (and only if) nbypassing is greater than 0. #. "It" refers to this round. -#: availability/views.py:121 +#: availability/views.py #, python-format msgid "; %(nbypassing)d team is bypassing it" msgid_plural "; %(nbypassing)d teams are bypassing it" msgstr[0] "" #. Translators: nadvancing in this string is always at least 2 -#: availability/views.py:140 +#: availability/views.py #, python-format msgid "%(nadvancing)s advancing team is debating this round" msgid_plural "%(nadvancing)s advancing teams are debating this round" msgstr[0] "" -#: availability/views.py:180 +#: availability/views.py msgid "Active Now" msgstr "" -#: availability/views.py:191 +#: availability/views.py #, python-format msgid "Active in %(prev_round)s" msgstr "" -#: availability/views.py:197 +#: availability/views.py msgid "Checked-In" msgstr "" -#: availability/views.py:208 +#: availability/views.py msgid "Team Availability" msgstr "" -#: availability/views.py:227 +#: availability/views.py msgid "Adjudicator Availability" msgstr "" -#: availability/views.py:246 +#: availability/views.py msgid "Room Availability" msgstr "" -#: availability/views.py:260 +#: availability/views.py msgid "Room" msgstr "房间" -#: availability/views.py:262 +#: availability/views.py msgid "Display Name (for the draw)" msgstr "" -#: availability/views.py:265 +#: availability/views.py msgid "Categories" msgstr "类别" -#: availability/views.py:266 +#: availability/views.py msgid "Priority" msgstr "" -#: availability/views.py:286 +#: availability/views.py msgid "Failed to update some or all availabilities due to an integrityerror. You should retry this action or make individual updates." msgstr "" -#: availability/views.py:294 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms." msgstr "" -#: availability/views.py:301 +#: availability/views.py msgid "Checked in all breaking adjudicators." msgstr "" -#: availability/views.py:309 +#: availability/views.py msgid "Checked in all teams, adjudicators and rooms from previous round." msgstr "" diff --git a/tabbycat/availability/templates/availability_index.html b/tabbycat/availability/templates/availability_index.html index 173c43832ee..58576578897 100644 --- a/tabbycat/availability/templates/availability_index.html +++ b/tabbycat/availability/templates/availability_index.html @@ -35,7 +35,7 @@ {% block page-subnav-actions %} - {% if round.draw_status != round.STATUS_NONE %} + {% if round.draw_status != round.Status.NONE %} {% trans "View Draw" %} @@ -131,16 +131,21 @@ {% url 'admin:tournaments_round_change' round.id as change_round_url %} {% tournamenturl 'breakqual-teams' round.break_category.slug as breakqual_teams_url %} - {% if not round.prev and round.draw_type == round.DRAW_POWERPAIRED %} -
- - {% blocktrans trimmed with draw_type=round.get_draw_type_display|lower %} - This is the first round, but its draw type is - {{ draw_type }}. Did you intend for it - to be Random instead? You can - - edit this round's draw type in the Edit Database area. - {% endblocktrans %} + {% if not round.prev and round.draw_type == round.DrawType.POWERPAIRED %} +
+
+
+ +
+
+ {% blocktrans trimmed %} + This is the first round, but its draw type is {{ draw_type }}. + Did you intend for it to be Random or Seeded instead? + You can edit this round's draw type + in the Edit Database area. + {% endblocktrans %} +
+
{% endif %} @@ -156,7 +161,7 @@
{% endif %} - {% if round.is_break_round and round.draw_type != round.DRAW_ELIMINATION %} + {% if round.is_break_round and round.draw_type != round.DrawType.ELIMINATION %}
{% blocktrans trimmed with draw_type=round.get_draw_type_display|lower %} diff --git a/tabbycat/availability/templates/checkin_progress.html b/tabbycat/availability/templates/checkin_progress.html index 3babaa40af1..82e75597440 100644 --- a/tabbycat/availability/templates/checkin_progress.html +++ b/tabbycat/availability/templates/checkin_progress.html @@ -48,16 +48,16 @@
{% elif pref.teams_in_debate == 'two' and not availability_info.teams.in_now|divisibleby:2 %} {% trans "There is an uneven number of teams marked as available for this round." as text %} {% include "components/item-info.html" with type="danger" nopad=True %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% elif pref.teams_in_debate == 'bp' and not availability_info.teams.in_now|divisibleby:4 %} {% trans "The number of teams marked as available for this round is not a multiple of 4." as text %} {% include "components/item-info.html" with type="danger" nopad=True %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% elif info.in_now == 0 and not round.is_break_round %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% else %} {% trans "Edit team availability" as title_text %} - {% include "components/item-action.html" with alone=True text=title_text type="primary" %} + {% include "components/item-action.html" with text=title_text type="primary" %} {% endif %} {% elif type == "adjs" %} @@ -114,12 +114,12 @@
There need to be at least {{ required_count }} adjudicators marked as available, given the number of debates. {% endblocktrans %} {% include "components/item-info.html" with type="danger" nopad=True %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% elif info.in_now == 0 %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% else %} {% trans "Edit adjudicator availability" as title_text %} - {% include "components/item-action.html" with alone=True text=title_text type="primary" %} + {% include "components/item-action.html" with text=title_text type="primary" %} {% endif %} {% elif type == "venues" %} @@ -178,12 +178,12 @@
the number of debates. {% endblocktrans %} {% include "components/item-info.html" with type="danger" nopad=True %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% elif info.in_now == 0 %} - {% include "components/item-action.html" with alone=True text=title_text type="success" to_complete=True %} + {% include "components/item-action.html" with text=title_text type="success" to_complete=True %} {% else %} {% trans "Edit room availability" as title_text %} - {% include "components/item-action.html" with alone=True text=title_text type="primary" %} + {% include "components/item-action.html" with text=title_text type="primary" %} {% endif %} {% endif %} diff --git a/tabbycat/breakqual/aida.py b/tabbycat/breakqual/aida.py index 682b725a0fa..6a7a6218cdb 100644 --- a/tabbycat/breakqual/aida.py +++ b/tabbycat/breakqual/aida.py @@ -41,7 +41,7 @@ def exclude_capped_teams(self): self.capped_teams = [] for tsi in self.eligible_teams: - institution_rank = tsi.get_ranking("institution") + institution_rank = tsi.get_ranking("institution_rank") if institution_rank > self.institution_cap: logger.info("Capped out, institution rank %d, cap %d: %s", institution_rank, self.institution_cap, tsi.team) self.capped_teams.append(tsi) @@ -71,7 +71,7 @@ def exclude_capped_teams(self): # iii. Set aside teams that are capped out for tsi in self.eligible_teams: - institution_rank = tsi.get_ranking("institution") + institution_rank = tsi.get_ranking("institution_rank") if institution_rank is None: continue elif institution_rank > 1 and tsi.get_ranking("rank") > natural_break_cutoff: @@ -131,7 +131,7 @@ class Aida2016EastersBreakGenerator(BaseAida2016BreakGenerator): def reinsert_capped_teams(self): # Easters rules give teams capped out post-cutoff priority post_cutoff_capped_teams = [tsi for tsi in self.capped_teams - if tsi.get_ranking("institution") <= self.institution_cap] + if tsi.get_ranking("institution_rank") <= self.institution_cap] self._reinsert_capped_teams(post_cutoff_capped_teams) self._reinsert_capped_teams(self.capped_teams) diff --git a/tabbycat/breakqual/base.py b/tabbycat/breakqual/base.py index fe5e4a0ab99..54d1e603e49 100644 --- a/tabbycat/breakqual/base.py +++ b/tabbycat/breakqual/base.py @@ -5,7 +5,7 @@ from itertools import groupby from django.utils.encoding import force_str -from django.utils.translation import gettext as _ +from django.utils.translation import ngettext from breakqual.models import BreakingTeam from standings.teams import TeamStandingsGenerator @@ -91,12 +91,14 @@ def _metric_name(metric): return force_str(name) raise BreakGeneratorError( - _("The break qualification rule %(rule)s requires the following " - "metric(s) to be in the team standings precedence in order to " - "work: %(required)s; and the following are missing: " - "%(missing)s.") % { + ngettext( + "The %(rule)s break qualification rule is missing the following " + "required metric in the team standings precedence: %(missing)s", + "The %(rule)s break qualification rule is missing the following " + "required metrics in the team standings precedence: %(missing)s", + len(missing_metrics), + ) % { 'rule': self.category.get_rule_display(), - 'required': ", ".join(_metric_name(metric) for metric in self.required_metrics), 'missing': ", ".join(_metric_name(metric) for metric in missing_metrics), }, ) diff --git a/tabbycat/breakqual/liveness.py b/tabbycat/breakqual/liveness.py index c1e60daad88..1ecda6df038 100644 --- a/tabbycat/breakqual/liveness.py +++ b/tabbycat/breakqual/liveness.py @@ -3,30 +3,19 @@ # blog and app. from itertools import accumulate -from math import ceil, factorial, floor - - -def ncr(n, r): - try: - binom = factorial(n) // factorial(r) // factorial(n - r) - except ValueError: - binom = 0 - return binom +from math import ceil, comb, floor def get_bp_coefficients(nrounds): """Get row of the number of rounds from the quadrinomial coefficients - triangle (similar to Pascal's triangle). + triangle (similar to Pascal's triangle). Only calculate half the row and mirror. See: https://oeis.org/A008287""" def get_coefficient(m, k): - coeff = 0 - for i in range(0, floor(k / 2) + 1): - coeff += ncr(m, i) * ncr(m, k - 2 * i) - return coeff + return sum(comb(m, i) * comb(m, k - 2 * i) for i in range(k // 2 + 1)) - half_row = [get_coefficient(nrounds, k) for k in range(0, ceil((3 * nrounds + 1) / 2))] + half_row = [get_coefficient(nrounds, k) for k in range(ceil((3 * nrounds + 1) / 2))] if nrounds == 0: return half_row @@ -42,7 +31,7 @@ def liveness_twoteam(is_general, current_round, break_size, total_teams, total_r if total_teams < break_size or (not is_general and len(team_scores) <= break_size): return 0, -1 # special case, everyone is safe - coefficients = [ncr(total_rounds, i) for i in range(total_rounds+1)] + coefficients = [comb(total_rounds, i) for i in range(total_rounds+1)] originals = [total_teams / (2**total_rounds) * coeff for coeff in coefficients] ceilings = [ceil(x) for x in originals] floors = [floor(x) for x in originals] diff --git a/tabbycat/breakqual/locale/ar/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ar/LC_MESSAGES/django.po index 40ae5494341..20cb7f752f5 100644 --- a/tabbycat/breakqual/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,508 +17,510 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "شروط التأهل" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "بطولة" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "اسم " -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "الاسم المطلوب عرضه، على سبيل المثال، \"إسل\"" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "اختصار" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "أختصار " -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "الرقم المتسلسل " -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "الترتيب الذي يتم به عرض الفئات " -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "حجم فئة المتأهلين " -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "عدد الفرق المتأهلة في هذه الفئة " -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "بصورة عامة" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "صحيح إذا كانت معظم الفرق مؤهلة لهذه الفئة، غير صحيح في أي حالة أخرى " -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "الأولوية" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "إذا تأهل الفريق إلى فئات متعددة، تكون الأولوية للأرقام ذات الأولوية الأعلى؛ يمكن للفرق أن تتأهل إلى فئات متعددة فقط إذا كان لجميعها نفس الأولوية" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "اساسي" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "قاعدة" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "قاعدة كيفية حساب درجات التأهل" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "الفرق المتأهله" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "فئة التأهل" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "فئات التأهل" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "فريق" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "الترتيب" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "ترتيب التأهل" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "محدود" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "غير مؤهل" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "تأهل مختلف" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "غير متأهل" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "خسر القرعة" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "إنسحب" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "اعادة وضع العلامات" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "الفرق المتأهلة " -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "التأهل" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "%(category)s تأهل" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "الفرق المستحقة" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "متأهل" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "مستبعد" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "مؤهل" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "حدد الفرق ك \" مستحقة\"" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "إنشئ التأهل" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "عرض الفرق المتأهلة " -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "معروض على الجميع " -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "غير معروض للجميع" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "مسح و اعادة جيمع التأهلات " -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "إنشئ تأهل لجميع الفرق و الفئات" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "حفظ الدرجات و تحديث التأهل " -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "حفظ الدرجات و تحديث %(category)sالتأهل" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "الحكام المتأهلين" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "تأهل " -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "المحكمين" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "النهائي " -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "ج،أف" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "نصف النهائي " -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "ن.ن" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "الدور الربع النهائي " -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "ر.ن" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "الجولات المتأهلة غير معروفة " -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "رابط " -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "مستحق ل" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "تعديل الملاحظات" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "تم حفظ تعديل درجات الفريق المتأهله " -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "الحكام المتأهلون" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "إستحقاق التأهل" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..e5245c21c99 Binary files /dev/null and b/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..cca44de16dd --- /dev/null +++ b/tabbycat/breakqual/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,525 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" + +#: breakqual/apps.py +msgid "Break Qualification" +msgstr "" + +#: breakqual/base.py +#, python-format +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" + +#: breakqual/models.py +msgid "tournament" +msgstr "" + +#: breakqual/models.py +msgid "name" +msgstr "" + +#: breakqual/models.py +msgid "Name to be displayed, e.g., \"ESL\"" +msgstr "" + +#: breakqual/models.py +msgid "slug" +msgstr "" + +#: breakqual/models.py +msgid "Slug for URLs, e.g., \"esl\"" +msgstr "" + +#: breakqual/models.py +msgid "sequence number" +msgstr "" + +#: breakqual/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: breakqual/models.py +msgid "break size" +msgstr "" + +#: breakqual/models.py +msgid "Number of breaking teams in this category" +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +msgstr "" + +#: breakqual/models.py +msgid "priority" +msgstr "" + +#: breakqual/models.py +msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" +msgstr "" + +#: breakqual/models.py +msgid "limit" +msgstr "" + +#: breakqual/models.py +msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: breakqual/models.py +msgid "Standard" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 1996" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Easters)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Australs)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2019 (Australs, Dynamic Cap)" +msgstr "" + +#: breakqual/models.py +msgid "rule" +msgstr "" + +#: breakqual/models.py +msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" +msgstr "" + +#: breakqual/models.py +msgid "breaking teams" +msgstr "" + +#: breakqual/models.py +msgid "break category" +msgstr "" + +#: breakqual/models.py +msgid "break categories" +msgstr "" + +#: breakqual/models.py +msgid "team" +msgstr "" + +#: breakqual/models.py +msgid "rank" +msgstr "" + +#: breakqual/models.py +msgid "break rank" +msgstr "" + +#: breakqual/models.py +msgid "Capped" +msgstr "" + +#: breakqual/models.py +msgid "Ineligible" +msgstr "" + +#: breakqual/models.py +msgid "Different break" +msgstr "" + +#: breakqual/models.py +msgid "Disqualified" +msgstr "" + +#: breakqual/models.py +msgid "Lost coin toss" +msgstr "" + +#: breakqual/models.py +msgid "Withdrawn" +msgstr "" + +#: breakqual/models.py +msgid "remark" +msgstr "" + +#: breakqual/models.py +msgid "Used to explain why an otherwise-qualified team didn't break" +msgstr "" + +#: breakqual/models.py +msgid "breaking team" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html +msgid "Break Categories" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "If you want to delete break categories, use the Edit Database area." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +msgid "Save Break Categories" +msgstr "" + +#: breakqual/templates/breaking_adjs.html +#, python-format +msgid "Adjudicators can be marked as breaking in the Feedback Overview section." +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaks" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Team Eligibility" +msgstr "" + +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_index.html +#, python-format +msgid " %(size)s Spots " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Teams Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaking" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Excluded" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Mark teams as eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Generate this break" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "View this break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "not publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Delete and Regenerate All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Generate the Break for All Categories" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Save Remarks and Update All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "Save Remarks and Update the %(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Overview" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Adjudicators' Break" +msgstr "" + +#: breakqual/templates/edit_break_eligibility.html +#, python-format +msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." +msgstr "" + +#: breakqual/templates/public_break_index.html breakqual/views.py +msgid "Break" +msgstr "" + +#: breakqual/templates/public_break_index.html +msgid "Adjudicators" +msgstr "" + +#. Translators: abbreviation for "grand final" +#: breakqual/utils.py +msgid "Grand Final" +msgstr "" + +#: breakqual/utils.py +msgid "GF" +msgstr "" + +#. Translators: abbreviation for "semifinals" +#: breakqual/utils.py +msgid "Semifinals" +msgstr "" + +#: breakqual/utils.py +msgid "SF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" +#: breakqual/utils.py +msgid "Quarterfinals" +msgstr "" + +#: breakqual/utils.py +msgid "QF" +msgstr "" + +#. Translators: abbreviation for "octofinals" +#: breakqual/utils.py +msgid "Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "OF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" +#: breakqual/utils.py +msgid "Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "DOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" +#: breakqual/utils.py +msgid "Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "TOF" +msgstr "" + +#. Translators: abbreviation for "finals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Finals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sF" +msgstr "" + +#. Translators: abbreviation for "semifinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Semifinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sSF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Quarterfinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sQF" +msgstr "" + +#. Translators: abbreviation for "octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sOF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sDOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sTOF" +msgstr "" + +#. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) +#: breakqual/utils.py +#, python-format +msgid "Unknown %s break round" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "U%sBR" +msgstr "" + +#: breakqual/utils.py +msgid "Unknown break round" +msgstr "" + +#: breakqual/utils.py +msgid "UBR" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "There was an error generating the break for category %(category)s: %(message)s" +msgstr "" + +#: breakqual/views.py +msgid "Eligible for" +msgstr "" + +#: breakqual/views.py +msgid "Edit Remark" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." +msgstr "" + +#: breakqual/views.py +msgid "Changes to breaking team remarks saved." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Teams break generated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +msgid "Breaking Adjudicators" +msgstr "" + +#: breakqual/views.py +msgid "Break Eligibility" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "%s Speakers" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" +msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/breakqual/locale/bn/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/bn/LC_MESSAGES/django.po index 9885de3c31d..5cc635cccf1 100644 --- a/tabbycat/breakqual/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-12-31 14:47\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "প্রতিযোগিতা" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "নাম" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "ক্রম সংখ্যা" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "দল" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "ভিন্ন বিভাগে উন্নিত" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "উন্নীতকরণ %(category)s" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "ব্রেকিং" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "ব্রেক" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "উন্নিত বিচারকমণ্ডলী" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..6457bbeab1c Binary files /dev/null and b/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..d63b5978a8a --- /dev/null +++ b/tabbycat/breakqual/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,525 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" + +#: breakqual/apps.py +msgid "Break Qualification" +msgstr "" + +#: breakqual/base.py +#, python-format +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" + +#: breakqual/models.py +msgid "tournament" +msgstr "" + +#: breakqual/models.py +msgid "name" +msgstr "nom" + +#: breakqual/models.py +msgid "Name to be displayed, e.g., \"ESL\"" +msgstr "" + +#: breakqual/models.py +msgid "slug" +msgstr "" + +#: breakqual/models.py +msgid "Slug for URLs, e.g., \"esl\"" +msgstr "" + +#: breakqual/models.py +msgid "sequence number" +msgstr "número de seqüència" + +#: breakqual/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: breakqual/models.py +msgid "break size" +msgstr "" + +#: breakqual/models.py +msgid "Number of breaking teams in this category" +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +msgstr "" + +#: breakqual/models.py +msgid "priority" +msgstr "" + +#: breakqual/models.py +msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" +msgstr "" + +#: breakqual/models.py +msgid "limit" +msgstr "" + +#: breakqual/models.py +msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: breakqual/models.py +msgid "Standard" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 1996" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Easters)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Australs)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2019 (Australs, Dynamic Cap)" +msgstr "" + +#: breakqual/models.py +msgid "rule" +msgstr "" + +#: breakqual/models.py +msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" +msgstr "" + +#: breakqual/models.py +msgid "breaking teams" +msgstr "" + +#: breakqual/models.py +msgid "break category" +msgstr "" + +#: breakqual/models.py +msgid "break categories" +msgstr "" + +#: breakqual/models.py +msgid "team" +msgstr "equip" + +#: breakqual/models.py +msgid "rank" +msgstr "" + +#: breakqual/models.py +msgid "break rank" +msgstr "" + +#: breakqual/models.py +msgid "Capped" +msgstr "" + +#: breakqual/models.py +msgid "Ineligible" +msgstr "" + +#: breakqual/models.py +msgid "Different break" +msgstr "" + +#: breakqual/models.py +msgid "Disqualified" +msgstr "" + +#: breakqual/models.py +msgid "Lost coin toss" +msgstr "" + +#: breakqual/models.py +msgid "Withdrawn" +msgstr "" + +#: breakqual/models.py +msgid "remark" +msgstr "" + +#: breakqual/models.py +msgid "Used to explain why an otherwise-qualified team didn't break" +msgstr "" + +#: breakqual/models.py +msgid "breaking team" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html +msgid "Break Categories" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "If you want to delete break categories, use the Edit Database area." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +msgid "Save Break Categories" +msgstr "" + +#: breakqual/templates/breaking_adjs.html +#, python-format +msgid "Adjudicators can be marked as breaking in the Feedback Overview section." +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaks" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Team Eligibility" +msgstr "" + +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py +#, python-format +msgid "%(category)s Break" +msgstr "%(category)s Tall" + +#: breakqual/templates/breaking_index.html +#, python-format +msgid " %(size)s Spots " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Teams Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaking" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Excluded" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Mark teams as eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Generate this break" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "View this break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "not publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Delete and Regenerate All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Generate the Break for All Categories" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Save Remarks and Update All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "Save Remarks and Update the %(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Overview" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Adjudicators' Break" +msgstr "" + +#: breakqual/templates/edit_break_eligibility.html +#, python-format +msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." +msgstr "" + +#: breakqual/templates/public_break_index.html breakqual/views.py +msgid "Break" +msgstr "Tall" + +#: breakqual/templates/public_break_index.html +msgid "Adjudicators" +msgstr "Grup de Jutges" + +#. Translators: abbreviation for "grand final" +#: breakqual/utils.py +msgid "Grand Final" +msgstr "" + +#: breakqual/utils.py +msgid "GF" +msgstr "" + +#. Translators: abbreviation for "semifinals" +#: breakqual/utils.py +msgid "Semifinals" +msgstr "" + +#: breakqual/utils.py +msgid "SF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" +#: breakqual/utils.py +msgid "Quarterfinals" +msgstr "" + +#: breakqual/utils.py +msgid "QF" +msgstr "" + +#. Translators: abbreviation for "octofinals" +#: breakqual/utils.py +msgid "Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "OF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" +#: breakqual/utils.py +msgid "Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "DOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" +#: breakqual/utils.py +msgid "Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "TOF" +msgstr "" + +#. Translators: abbreviation for "finals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Finals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sF" +msgstr "" + +#. Translators: abbreviation for "semifinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Semifinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sSF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Quarterfinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sQF" +msgstr "" + +#. Translators: abbreviation for "octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sOF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sDOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sTOF" +msgstr "" + +#. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) +#: breakqual/utils.py +#, python-format +msgid "Unknown %s break round" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "U%sBR" +msgstr "" + +#: breakqual/utils.py +msgid "Unknown break round" +msgstr "" + +#: breakqual/utils.py +msgid "UBR" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "There was an error generating the break for category %(category)s: %(message)s" +msgstr "" + +#: breakqual/views.py +msgid "Eligible for" +msgstr "" + +#: breakqual/views.py +msgid "Edit Remark" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." +msgstr "" + +#: breakqual/views.py +msgid "Changes to breaking team remarks saved." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Teams break generated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +msgid "Breaking Adjudicators" +msgstr "Jutges que passen el tall" + +#: breakqual/views.py +msgid "Break Eligibility" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "%s Speakers" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" +msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..b3fdb8cccc8 Binary files /dev/null and b/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..928cbbe3748 --- /dev/null +++ b/tabbycat/breakqual/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,529 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" + +#: breakqual/apps.py +msgid "Break Qualification" +msgstr "" + +#: breakqual/base.py +#, python-format +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: breakqual/models.py +msgid "tournament" +msgstr "turnaje" + +#: breakqual/models.py +msgid "name" +msgstr "" + +#: breakqual/models.py +msgid "Name to be displayed, e.g., \"ESL\"" +msgstr "" + +#: breakqual/models.py +msgid "slug" +msgstr "" + +#: breakqual/models.py +msgid "Slug for URLs, e.g., \"esl\"" +msgstr "" + +#: breakqual/models.py +msgid "sequence number" +msgstr "" + +#: breakqual/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: breakqual/models.py +msgid "break size" +msgstr "" + +#: breakqual/models.py +msgid "Number of breaking teams in this category" +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +msgstr "" + +#: breakqual/models.py +msgid "priority" +msgstr "" + +#: breakqual/models.py +msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" +msgstr "" + +#: breakqual/models.py +msgid "limit" +msgstr "" + +#: breakqual/models.py +msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: breakqual/models.py +msgid "Standard" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 1996" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Easters)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Australs)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2019 (Australs, Dynamic Cap)" +msgstr "" + +#: breakqual/models.py +msgid "rule" +msgstr "" + +#: breakqual/models.py +msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" +msgstr "" + +#: breakqual/models.py +msgid "breaking teams" +msgstr "" + +#: breakqual/models.py +msgid "break category" +msgstr "" + +#: breakqual/models.py +msgid "break categories" +msgstr "" + +#: breakqual/models.py +msgid "team" +msgstr "tým" + +#: breakqual/models.py +msgid "rank" +msgstr "" + +#: breakqual/models.py +msgid "break rank" +msgstr "" + +#: breakqual/models.py +msgid "Capped" +msgstr "" + +#: breakqual/models.py +msgid "Ineligible" +msgstr "" + +#: breakqual/models.py +msgid "Different break" +msgstr "" + +#: breakqual/models.py +msgid "Disqualified" +msgstr "" + +#: breakqual/models.py +msgid "Lost coin toss" +msgstr "" + +#: breakqual/models.py +msgid "Withdrawn" +msgstr "" + +#: breakqual/models.py +msgid "remark" +msgstr "" + +#: breakqual/models.py +msgid "Used to explain why an otherwise-qualified team didn't break" +msgstr "" + +#: breakqual/models.py +msgid "breaking team" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html +msgid "Break Categories" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "If you want to delete break categories, use the Edit Database area." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +msgid "Save Break Categories" +msgstr "" + +#: breakqual/templates/breaking_adjs.html +#, python-format +msgid "Adjudicators can be marked as breaking in the Feedback Overview section." +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaks" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Team Eligibility" +msgstr "" + +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_index.html +#, python-format +msgid " %(size)s Spots " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Teams Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaking" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Excluded" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Mark teams as eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Generate this break" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "View this break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "not publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Delete and Regenerate All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Generate the Break for All Categories" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Save Remarks and Update All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "Save Remarks and Update the %(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Overview" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Adjudicators' Break" +msgstr "" + +#: breakqual/templates/edit_break_eligibility.html +#, python-format +msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." +msgstr "" + +#: breakqual/templates/public_break_index.html breakqual/views.py +msgid "Break" +msgstr "" + +#: breakqual/templates/public_break_index.html +msgid "Adjudicators" +msgstr "Rozhodčí" + +#. Translators: abbreviation for "grand final" +#: breakqual/utils.py +msgid "Grand Final" +msgstr "" + +#: breakqual/utils.py +msgid "GF" +msgstr "" + +#. Translators: abbreviation for "semifinals" +#: breakqual/utils.py +msgid "Semifinals" +msgstr "" + +#: breakqual/utils.py +msgid "SF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" +#: breakqual/utils.py +msgid "Quarterfinals" +msgstr "" + +#: breakqual/utils.py +msgid "QF" +msgstr "" + +#. Translators: abbreviation for "octofinals" +#: breakqual/utils.py +msgid "Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "OF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" +#: breakqual/utils.py +msgid "Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "DOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" +#: breakqual/utils.py +msgid "Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "TOF" +msgstr "" + +#. Translators: abbreviation for "finals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Finals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sF" +msgstr "" + +#. Translators: abbreviation for "semifinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Semifinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sSF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Quarterfinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sQF" +msgstr "" + +#. Translators: abbreviation for "octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sOF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sDOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sTOF" +msgstr "" + +#. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) +#: breakqual/utils.py +#, python-format +msgid "Unknown %s break round" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "U%sBR" +msgstr "" + +#: breakqual/utils.py +msgid "Unknown break round" +msgstr "" + +#: breakqual/utils.py +msgid "UBR" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "There was an error generating the break for category %(category)s: %(message)s" +msgstr "" + +#: breakqual/views.py +msgid "Eligible for" +msgstr "" + +#: breakqual/views.py +msgid "Edit Remark" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." +msgstr "" + +#: breakqual/views.py +msgid "Changes to breaking team remarks saved." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Teams break generated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +msgid "Breaking Adjudicators" +msgstr "" + +#: breakqual/views.py +msgid "Break Eligibility" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "%s Speakers" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" +msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + diff --git a/tabbycat/breakqual/locale/de/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/de/LC_MESSAGES/django.po index 112d6106fb4..c63f2c0c1ef 100644 --- a/tabbycat/breakqual/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 09:17\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,511 +12,511 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "Turnier" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "name" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "URL-Kürzel" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "Team" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "Rang" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "Breaks" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "%(category)s Break" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "Breakend" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Überblick" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" -msgstr "JurorInnen Break" +msgstr "Jurorenbreak" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "Break" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Juroren" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Finale" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" -msgstr "GF" +msgstr "F" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Halbfinale" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "HF" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Viertelfinale" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "VF" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Achtelfinale" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "AF" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "%s Finale" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "%sF" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "%s Halbfinale" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "%sHF" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "%s Viertelfinale" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "%s Achtelfinale" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" -msgstr "Breakende JurorInnen" +msgstr "Breakende Juroren" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po index d851da277d8..876026e4447 100644 --- a/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/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: 2020-05-24 04:15-0300\n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,508 +17,510 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 -msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +#: breakqual/models.py +msgid "Are teams eligible for this break by default" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py +msgid "Four-team formats require the break size to be either six times or four times a power of two." +msgstr "" + +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po index 3cb7e2ee3c0..f68233f1982 100644 --- a/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "torneo" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "nombre" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "número de secuencia" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "equipo" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "Break de %(category)s" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Jueces" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Gran Final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Semifinales" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Cuartos de Final" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "CF" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Octavos de Final" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "Doble-Octavos de final" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "Triple-Octavos de final" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "%s Finales" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "%s Semifinales" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "%s Cuartos de Final" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "%s Octavos de Final" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "%s Doble-Octavos de final" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "%s Triple-Octavos de final" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "Ronda de break desconocida" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "RBD" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/fr/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/fr/LC_MESSAGES/django.po index e41b4106d8a..fb164d8f61b 100644 --- a/tabbycat/breakqual/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:07\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 14:54\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "Qualification" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "La règle de qualification %(rule)s exige que les mesures suivantes soient dans la précédence de classement des équipes pour qu'elle puisse se faire marcher : %(required)s; et elle manque de ce qui suit : %(missing)s." +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "La règle de qualification %(rule)s manque les métriques requises suivantes dans la préséance de classement d'équipes : %(missing)s" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "tournoi" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "nom" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "Nom à afficher, par exemple, « ESL »" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "slug" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "Slug pour les URL, par exemple, « esl »" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "numéro de séquence" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "L’ordre dans lequel les catégories sont affichées" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "taille de la qualification" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "Nombre d’équipes qualifiantes dans cette catégorie" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "est général" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "Vrai si la plupart des équipes sont admissibles pour cette catégorie, par exemple Open, sinon faux" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "priorité" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "Si une équipe se qualifie en plusieurs catégories, les nombres plus élevés ont priorité ; équipes peuvent diviser en plusieurs catégories, si et seulement si elles ont toutes la même priorité" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "limite" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "Au plus, ce montant d’équipes seront montrées sur le classement public de cette catégorie, ou 0 pour aucune limite" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "Standard" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "AIDA 1996" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "AIDA 2016 (Easters)" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "AIDA 2016 (Australs)" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "AIDA 2019 (Australs, limite dynamique)" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "règle" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "Règle pour le calcul de la qualification (la plupart des tournois devraient utiliser « Standard »)" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "qualification des équipes" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "catégorie de break" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "catégories de break" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "équipe" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "rang" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "rang dans la qualification" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "Exclue à cause de la limite" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "Non admissible" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "Qualification différente" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "Disqualifiée" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "Perdu le tirage au sort" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "Retirée" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "remarque" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "Utilisé pour expliquer pourquoi une équipe qui qualifierait autrement n’a pas qualifié" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "équipe qualifiante" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "Catégories de qualification" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "Les catégories de qualification permettent la génération de joutes éliminatoires, e.g., pour les catégories de novices ou FLS. Sur cette page, vous pouvez les définir. Après les avoir faits, vous pouvez fixer l’éligibilité des équipes sur la page d'éligibilité." -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "Si vous voulez supprimer des catégories de qualification, utilisez l’aire de modification de la base de données." -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "Enregistrer les catégories de qualification" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "Les juges peuvent être marqués comme qualifiants dans la section Vue d'ensemble des évaluations." -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "Qualifications" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " -msgstr "Ce tournoi n’a aucune catégorie de qualification définie. Vous pouvez découvrir comment créer des qualifications dans notre documentation." +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "Ce tournoi n’a aucune catégorie de qualification définie. Vous pouvez découvrir comment créer des qualifications dans notre documentation." -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "Éligibilité d'équipe" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "Qualification %(category)s" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr " %(size)s Places " -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "Équipes admissibles" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "Qualifiant" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "Exclu" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "Éligible" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "Marquer équipes comme qualifiantes" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "Générer cette qualification" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "Voir cette qualification" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "visible publiquement" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "pas visible publiquement" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "Supprimer et régénérer toutes les qualifications" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "Générer la qualification pour toutes les catégories" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "Il y a 0 équipe marquée comme admissible pour cette catégorie. Vous devez ajouter des équipes admissibles pour que cette qualification puisse être générée correctement." -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "Cette qualification utilise la règle %(category)s — si vous avez l’intention d’utiliser une règle différente, vous devriez modifier la règle pour cette catégorie de qualification dans la zone pour modifier la base de données, puis supprimez et régénérer tous les qualifications. Veuillez vérifier la qualification avant de l'annoncer au public ou de le publier. Le code qui génère la qualification n’est pas testée robustement pour les cas extrêmes." -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "Pour modifier la qualification, utilisez les remarques dans la colonne à droite. N'importe équipe avec une remarque sera exclu de la qualification (des remarques pourraient être ajoutés automatiquement). Après, cliquer les boutons Sauvegarder Remarques et Mettre à Jour appropriés ci-dessous. Si vous avez des règles de qualification compliqués (par exemple si les équipes peuvent décider eux-mêmes leur catégorie préféré), vous aurez parfois besoin de faire des modifications manuelles pour avoir la bonne qualification. Comme dernier ressort, vous pouvez modifier la liste des équipes directement dans l'interface de la base de données." -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "Le réglage équipes qualifiants public est activé. Aussi tôt que vous cliquer le bouton, la liste des équipes qualifiants sera visible publiquement, avant que vous auriez l'opportunité à le vérifier ! C'est fortement conseillé que vous désactivez ce réglage dans la page des réglages de tournoi avant de générer la qualification d'équipe." -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "La qualification n'a pas encore été générée. Souhaitez-vous générer la qualification pour toutes les catégories ? Il est sûr de générer la qualification avant que toutes les joutes préliminaires sont terminés, si vous êtes curieux : vous pouvez toujours le régénérer plus tard." -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "Attention ! Le réglage Équipes qualifiants public est activé, donc la qualification est public. Si vous modifiez la(es) qualification(s), les changements seront visibles immédiatement, sans chance pour les réviser." -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "Enregistrer les remarques et mettre à jour tous les qualifications" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "Enregistrer les remarques et mettre à jour la qualification %(category)s" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "Il y a %(count)s équipes éligibles pour cette catégorie. Voulez-vous en ajouter plus ?" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Vue d’ensemble" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "Qualification des juges" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "Il semble qu'il n'y a aucun catégorie de qualification. Si vous voulez en ajouter, vous devriez d'abord les ajouter dans l'interface de la base de données, puis retourner à cette page pour marquer les équipes comme éligible." -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "Qualification" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Juges" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Grande finale" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "GF" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Demi-finales" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "DF" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Quarts de finale" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "QF" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Huitièmes de finale" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "HF" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "Seizièmes de finale" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "16F" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "Trente-deuxièmes de finale" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "32F" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "Finales %s" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "%sF" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "Demi-finales %s" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "%sSF" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "Quarts de finale %s" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "%sQF" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "Huitièmes de finale %s" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "%sHF" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "Seizièmes de finale %s" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "%sDHF" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "Trente-deuxièmes de finale %s" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "%sTHF" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "Joute éliminatoire %s inconnue" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "JQ%sU" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "Joute éliminatoire inconnue" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "JÉI" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "Une erreur s'est produite lors de la génération de la qualification pour la catégorie %(category)s : %(message)s" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "Éligible pour" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "Modifier Remarque" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "Les changements aux remarques pour les équipes qualifiantes ont été enregistrés, et la qualification des équipes a été mise à jour, pour les catégories de qualification suivantes : %(categories)s." -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "Les changements aux remarques pour les équipes qualifiantes ont été enregistrés, et la qualification des équipes a été mise à jour, pour la catégorie de qualification %(category)s." -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "Modifications aux remarques des équipes qualifiants sauvegardés." -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "La qualification des équipes s'est générée pour les catégories de qualification suivantes : %(categories)s." -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "Juges Qualifiants" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "Admissibilité pour la qualification" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s Orateurs" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/he/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/he/LC_MESSAGES/django.po index 4bd2bbe7324..e2eecd65283 100644 --- a/tabbycat/breakqual/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,511 +12,513 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "טורניר" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "קבוצה" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s דובר/תים" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/hi/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/hi/LC_MESSAGES/django.po index 6bdffae47e6..66c25ce84e7 100644 --- a/tabbycat/breakqual/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,511 +12,511 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/id/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/id/LC_MESSAGES/django.po index eb6e15c950e..935d7599c79 100644 --- a/tabbycat/breakqual/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-11-06 05:05\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,508 +17,505 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "Kualifikasi Break" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "Aturan kualifikasi break %(rule)s membutuhkan metrik berikut ada di dalam presedensi urutan tim supaya bisa bekerja: %(required)s; dan metrik-metrik ini tidak ada: %(missing)s." +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "turnamen" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "nama" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "Nama untuk ditampilkan, misal, \"ESL\"" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "slug" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "Slug untuk URL, misal, \"esl\"" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "nomor urut" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "Urutan kategori ditampilkan" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "ukuran break" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "Jumlah tim breaking di kategori ini" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "adalah umum" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "True jika sebagian besar tim berhak untuk kategori ini, misal Terbuka, False jika tidak" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "prioritas" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "Jika tim break di lebih dari satu kategori, prioritas yang lebih tinggi diutamakan; tim dapat break ke lebih dari satu kategori jika dan hanya jika mereka memiliki prioritas yang sama" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "batas" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "Maksimal sejumlah tim ini akan muncul pada tab publik untuk kategori ini, atau gunakan 0 untuk tidak dibatasi" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "Standar" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "aturan" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "Aturan untuk bagaiman break dihitung (sebagian besar turnamen seharusnya menggunakan \"Standard\")" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "tim breaking" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "kategori break" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "kategori break" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "tim" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "peringkat" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "peringkat break" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "Dibatasi" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "Tidak berhak" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "Break berbeda" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "Terdiskualifikasi" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "Kalah pada undian koin" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "Mengundurkan diri" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "catatan" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "Digunakan untuk menjelaskan mengapa tim yang seharusnya terkualifikasi tidak break" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "tim breaking" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "Kategori Break" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "Kategori break categories membolehkan ronde break spesifik kategori, contoh, untuk kategori pemula atau ESL. Pada halaman ini, Anda dapat mendefinisikan kategori break apa saja yang ada. Setelah Anda mendefinisikan kategori, ronde break akan dibangkitkan otomatis, dan Anda dapat mengisi kelayakan pada halaman Kelayakan page." -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "Jika Anda ingin menghapus kategori break, gunakan area Sunting Basisdata." -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "Simpan Kategori Break" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "Juri dapat ditandai sebagai breaking pada bagian Gambaran Umpanbalik." -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "Break" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " -msgstr "Turnamen ini tidak memiliki kategori break yang sudah diatur. Anda dapat membaca bagaimana membuat break pada dokumentasi kami. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "Kelayakan Tim" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "Break %(category)s" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr " %(size)s Spot " -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "Tim yang Berhak" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "Breaking" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "Tidak Termasuk" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "Berhak" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "Tandai tim sebagai berhak" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "Bangkitkan break ini" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "Lihat break ini" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "terlihat secara publik" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "tidak terlihat secara publik" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "Hapus dan Bangkitkan Ulang Seluruh Break" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "Bangkitkan Break untuk Semua Kategori" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "Ada 0 tim ditandai sebagai berhak untuk kategori ini — Anda perlu menambahkan beberapa tim yang berhak untuk break ini supaya dapat dibangkitkan dengan benar." -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "Break ini menggunakan aturan %(category)s — jika Anda bermaksud menggunakan aturan lain, Anda harus menyunting aturan untuk kategori break ini di area Sunting Basisdata, kemudian hapus dan bangkitkan kembali semua break. Mohon cek dua kali hal ini sebelum mengumumkan break atau merilisnya ke publik. Kode yang membangkitkan break tidak diuji secara menyeluruh untuk kasus-kasus yang tidak umum." -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "Untuk menyunting break gunakan catatan di kolom kanan. Tim yang memiliki catatan tidak diikutikan dari break ini (pembangkit break terkadang menambahkan catatan sendiri). Kemudian, klik tombol Simpan Catatan dan Perbarui yang sesuai di bawah. Jika Anda merumitkan aturan break (contohnya, jika beberapa tim diperbolehkan untuk memilih kategori yang mereka sukai) maka Anda mungkin harus memperbarui catatan beberapa kali untuk mendapatkan break yang benar. Sebagai langkah terakhir, Anda dapat menyunting daftar tim yang breaking di area Sunting Basisdata." -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "Konfigurasi tim breaking publik dalam keadaan menyala. Sesaat setelah Anda klik tombolnya, daftar tim breaking akan terlihat di situs publik, sebelum Anda memiliki kesempatan untuk memeriksanya kembali! Sangat disarankan Anda mematikan opsi ini pada halaman konfigurasi turnamen sebelum membangkitkan break tim." -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "Break belum dibangkitkan. Apakah Anda ingin membangkitkan break untuk semua kategori? Aman untuk membangkitkan break sebelum ronde pendahuluan selesai, seandainya Anda penasaran — Anda dapat membangkitkanya kembali nanti." -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "Perhatian! Opsi \"tim breaking publik\" dalam keadaan menyala, sehingga break nya terlihat secra publik. Jika Anda memperbarui break, perubahannya akan langsung terlihat, tanpa ada kesempatan bagi anda untuk mereviewnya." -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "Simpan Catatan dan Perbarui Semua Break" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "Simpan Catatan dan Perbarui Break %(category)s" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "Ada %(count)s tim ditandai sebagai berhak untuk kategori ini. Apakah Anda ingin menambakan tim lain yang berhak?" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Tinjauan" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "Break Juri" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "Sepertinya tidak ada kategori break yang sudah didefinisikan. Jika Anda ingin membuat kategori break baru Anda perlu terlebih dahulu menambahkannya pada area Sunting Basisdata, kemudian kembali ke halaman ini untuk menetapkan kelayakan tim." -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "Break" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Juri" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Grand Final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "GF" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Semifinal" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "SF" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Quarterfinal" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "QF" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Octofinal" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "OF" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "Dobel-Oktofinal" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "DOF" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "Tripel-Oktofinal" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "TOF" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "%s Final" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "%sF" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "%s Semifinal" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "%sSF" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "%s Quarterfinal" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "%sQF" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "%s Octofinal" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "%sOF" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "%s Dobel-Oktofinal" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "%sDOF" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "%s Tripel-Oktofinal" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "%sTOF" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "Ronde break %s tidak diketahui" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "RB%sTD" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "Ronde break tidak diketahui" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "RBTD" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "Ada kesalahan saat membangkitkan break untuk kategori %(category)s: %(message)s" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "Berhak untuk" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "Sunting Catatan" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "Perubahan pada catatan tim breaking disimpan dan break tim diperbarui untuk kategori break berikut: %(categories)s." -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "Perubahan pada catatan tim breaking tersompan dan tim yang break terbarui untuk kategori break %(category)s." -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "Perubahan pada catatan tim breaking tersimpan." -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "Break tim terbangkitkan untuk kategori break berikut: %(categories)s." -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "Juri Breaking" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "Kelayakan Tim" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s Pembicara" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/it/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..72ef3963383 Binary files /dev/null and b/tabbycat/breakqual/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/it/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/it/LC_MESSAGES/django.po index b66471f94c6..f0871e2e152 100644 --- a/tabbycat/breakqual/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2022-04-17 08:28\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "nome" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "numero sequenziale" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "squadra" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Panoramica" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/ja/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ja/LC_MESSAGES/django.po index e190a9ce985..6a1b06cdd44 100644 --- a/tabbycat/breakqual/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:08\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,508 +17,505 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "ブレイク要件" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "大会" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "名前" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "スラグ" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "このカテゴリーでブレイクするチーム数" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "制限" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "チーム" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "順位" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "ブレイク順位" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "ブレイクの資格なし" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "違うカテゴリーでのブレイク" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "失格" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "コイントス負け" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "辞退" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "概要" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "ジャッジブレイク" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "ブレイク" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "ジャッジ" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..c3d4c7085d7 Binary files /dev/null and b/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..e2a1e13de49 --- /dev/null +++ b/tabbycat/breakqual/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,525 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" + +#: breakqual/apps.py +msgid "Break Qualification" +msgstr "" + +#: breakqual/base.py +#, python-format +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" + +#: breakqual/models.py +msgid "tournament" +msgstr "турнир" + +#: breakqual/models.py +msgid "name" +msgstr "" + +#: breakqual/models.py +msgid "Name to be displayed, e.g., \"ESL\"" +msgstr "" + +#: breakqual/models.py +msgid "slug" +msgstr "" + +#: breakqual/models.py +msgid "Slug for URLs, e.g., \"esl\"" +msgstr "" + +#: breakqual/models.py +msgid "sequence number" +msgstr "" + +#: breakqual/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: breakqual/models.py +msgid "break size" +msgstr "" + +#: breakqual/models.py +msgid "Number of breaking teams in this category" +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +msgstr "" + +#: breakqual/models.py +msgid "priority" +msgstr "" + +#: breakqual/models.py +msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" +msgstr "" + +#: breakqual/models.py +msgid "limit" +msgstr "" + +#: breakqual/models.py +msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: breakqual/models.py +msgid "Standard" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 1996" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Easters)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Australs)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2019 (Australs, Dynamic Cap)" +msgstr "" + +#: breakqual/models.py +msgid "rule" +msgstr "" + +#: breakqual/models.py +msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" +msgstr "" + +#: breakqual/models.py +msgid "breaking teams" +msgstr "" + +#: breakqual/models.py +msgid "break category" +msgstr "" + +#: breakqual/models.py +msgid "break categories" +msgstr "" + +#: breakqual/models.py +msgid "team" +msgstr "топ" + +#: breakqual/models.py +msgid "rank" +msgstr "" + +#: breakqual/models.py +msgid "break rank" +msgstr "" + +#: breakqual/models.py +msgid "Capped" +msgstr "" + +#: breakqual/models.py +msgid "Ineligible" +msgstr "" + +#: breakqual/models.py +msgid "Different break" +msgstr "" + +#: breakqual/models.py +msgid "Disqualified" +msgstr "" + +#: breakqual/models.py +msgid "Lost coin toss" +msgstr "" + +#: breakqual/models.py +msgid "Withdrawn" +msgstr "" + +#: breakqual/models.py +msgid "remark" +msgstr "" + +#: breakqual/models.py +msgid "Used to explain why an otherwise-qualified team didn't break" +msgstr "" + +#: breakqual/models.py +msgid "breaking team" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html +msgid "Break Categories" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "If you want to delete break categories, use the Edit Database area." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +msgid "Save Break Categories" +msgstr "" + +#: breakqual/templates/breaking_adjs.html +#, python-format +msgid "Adjudicators can be marked as breaking in the Feedback Overview section." +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaks" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Team Eligibility" +msgstr "" + +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_index.html +#, python-format +msgid " %(size)s Spots " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Teams Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaking" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Excluded" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Mark teams as eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Generate this break" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "View this break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "not publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Delete and Regenerate All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Generate the Break for All Categories" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Save Remarks and Update All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "Save Remarks and Update the %(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Overview" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Adjudicators' Break" +msgstr "" + +#: breakqual/templates/edit_break_eligibility.html +#, python-format +msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." +msgstr "" + +#: breakqual/templates/public_break_index.html breakqual/views.py +msgid "Break" +msgstr "" + +#: breakqual/templates/public_break_index.html +msgid "Adjudicators" +msgstr "" + +#. Translators: abbreviation for "grand final" +#: breakqual/utils.py +msgid "Grand Final" +msgstr "" + +#: breakqual/utils.py +msgid "GF" +msgstr "" + +#. Translators: abbreviation for "semifinals" +#: breakqual/utils.py +msgid "Semifinals" +msgstr "" + +#: breakqual/utils.py +msgid "SF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" +#: breakqual/utils.py +msgid "Quarterfinals" +msgstr "" + +#: breakqual/utils.py +msgid "QF" +msgstr "" + +#. Translators: abbreviation for "octofinals" +#: breakqual/utils.py +msgid "Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "OF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" +#: breakqual/utils.py +msgid "Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "DOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" +#: breakqual/utils.py +msgid "Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "TOF" +msgstr "" + +#. Translators: abbreviation for "finals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Finals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sF" +msgstr "" + +#. Translators: abbreviation for "semifinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Semifinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sSF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Quarterfinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sQF" +msgstr "" + +#. Translators: abbreviation for "octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sOF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sDOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sTOF" +msgstr "" + +#. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) +#: breakqual/utils.py +#, python-format +msgid "Unknown %s break round" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "U%sBR" +msgstr "" + +#: breakqual/utils.py +msgid "Unknown break round" +msgstr "" + +#: breakqual/utils.py +msgid "UBR" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "There was an error generating the break for category %(category)s: %(message)s" +msgstr "" + +#: breakqual/views.py +msgid "Eligible for" +msgstr "" + +#: breakqual/views.py +msgid "Edit Remark" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." +msgstr "" + +#: breakqual/views.py +msgid "Changes to breaking team remarks saved." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Teams break generated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +msgid "Breaking Adjudicators" +msgstr "" + +#: breakqual/views.py +msgid "Break Eligibility" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "%s Speakers" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" +msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/breakqual/locale/ms/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ms/LC_MESSAGES/django.po index 782a41a4544..0ef10483ea9 100644 --- a/tabbycat/breakqual/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:10\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,508 +17,505 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "pertandingan" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "pasukan" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/pt/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/pt/LC_MESSAGES/django.po index c6f564795a8..0c92fcccfa5 100644 --- a/tabbycat/breakqual/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:09\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "torneio" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "nome" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "número sequencial" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "dupla" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Visão geral" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Grande Final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Semifinais" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Quartas de final" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Oitavas de final" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "Rodada %s de classificação desconhecida" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "Rodada de classificação desconhecida" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "RCD" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/ro/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ro/LC_MESSAGES/django.po index 4e8f4c8b881..9e7527c1e50 100644 --- a/tabbycat/breakqual/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,511 +12,512 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/ru/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/ru/LC_MESSAGES/django.po index 2a7287df8ff..e9f0e29ec21 100644 --- a/tabbycat/breakqual/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:09\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,508 +17,508 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "Квалификация в брейк" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "Правило квалификации в брейк %(rule)s требует, чтобы следующие метрики были использованы при определении первенства положения команд: %(required)s а следующие метрики отсутствовали %(missing)s." +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "турнир" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "название" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "Отображаемое название, например, \"ESL\"" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "краткое название" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "Краткое название для URL, например, \"esl\"" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "порядковый номер" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "Порядок, в котором демонстрируются категории" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "размер брейка" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "Количество брейкающихся команд в этой категории" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "общий" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "Верно, если большинство команд имеют право на брейк в этой категории, например, основной брейк, неверно, если наоборот" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "приоритет" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "Если команда брейкается в нескольких категориях, более высокие цифры приоритета категории дают этой категории приоритет; команда может брейкнуться в нескольких категориях, если и только если у всех категорий одинаковый приоритет" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "лимит" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "Такое максимальное количество команд будут показаны в публичном тэбе для этой категории или используйте 0 для отсутствия лимита" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "Стандарт" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "AIDA 1996" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "AIDA 2016 (Восточный)" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "AIDA 2016 (Австралийский)" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "AIDA 2019 (Австралийский, Динамичное ограничение)" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "правило" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "Правило для расчета брейка (большинство турниров должны использовать \"Стандарт\")" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "брейкающиеся команды" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "категория брейка" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "категории брейка" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "команда" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "место" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "брейковый ранг" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "Записано" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "Недоступна" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "Другой брейк" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "Дисквалифицирована" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "Проиграла по броску монетки" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "Отозвано" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "комментарий" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "Используется для объяснения того, почему не брейкнулась команда, набравшая необходимое количество очков" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "брейкающаяся команда" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "Судьи могут быть помечены как брейкающиеся в разделе Обзор обратной связи." -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "Брейки" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " -msgstr "У этого турнира не установлено никаких брейковых категорий. Вы можете почитать о том, как создавать брейк в нашей документации" +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "Доступность команд" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "%(category)s Брейк" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr " %(size)s места " -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "Доступные команды" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "Брейкаются" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "Исключены" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "Доступны" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "Отметить команду как доступную" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "Генерировать этот брейк" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "Посмотреть этот брейк" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "видим публично" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "не видим публично" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "Удалить и создать заново все брейки" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "Создать брейк для всех категорий" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "Еть 0 команд, отмеченных как доступные для этой категории - вам нужно добавить несколько доступных команд для того, чтобы правильно сгенерировать этот брейк." -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "Этот брейк использует правило %(category)s — если вы хотите использовать другое правило, вы должны изменить правило для этой категории брейка в области Редактировать базу данных, а затем удалить и восстановить все брейки. Пожалуйста, проверьте это перед объявлением брейка или его опубликованием. Код, который генерирует брейк, не тестируется для крайних случаев." -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "Чтобы отредактировать брейк, используйте комментарии в правой колонке. Любая команда с комментарием будет исключена из этого брейка (генератор брейка иногда вставляет собственные комментарии). Затем нажмите на соответствующую кнопку Сохранить Комментарии и Обновить ниже. Если у вас есть сложные правила брейка (например, если некоторым командам разрешено выбрать предпочтительную категорию брейка), то вам может потребоваться обновить замечания несколько раз, чтобы получить правильный брейк. В последнем случае вы можете изменить список брейкающихся непосредственно в области Редактировать базу данных." -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "Включена настройка публичного объявления брейкающихся команд. Как только вы нажмете на кнопку, список брейкающихся команд будет публично виден на сайте без возможности его перепроверить! Очень рекомендуем отключить эту функцию на странице настроек турнира перед созданием командного брейка." -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "Брейк ещё не был сгенерирован. Хотите сгенерировать брейк для всех категорий? Надежнее сгенерировать брейк до завершения всех отборочных раундов, если вам любопытно - вы можете сгенерировать его заново позже." -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "Предупреждение! Опция \"публикация брейков\" включена, поэтому брейк виден публично. Если вы обновите брейки, изменения будут видны немедленно, без шанса изменить их." -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "Сохранить комментарии и обновить все брейки" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "Сохранить комментарии и обновить брейк %(category)s" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "Есть %(count)s команды, отмеченные как доступные для этой категории. Хотите добавить больше доступных команд?" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "Обзор" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "Брейк судей" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "Похоже что не определены категории брейка. Если вы хотите создать новые категории для брейка, вам нужно сначала добавить их в область Редактировать базу данных, затем вернуться к этой странице, чтобы установить доступность команд." -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "Брейк" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Судьи" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "Основной финал" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "Ф" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Полуфиналы" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "ПФ" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Четвертьфиналы" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "ЧФ" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "1/8 финала" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "1/8" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "1/16 финала" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "1/16" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "1/32 финала" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "1/32" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "Неизвестный брейковый раунд" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "UBR" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "Произошла ошибка при генерации брейка для категории %(category)s%(message)s" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "Доступен для" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "Редактировать комментарий" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "Изменения в комментариях к брейковым командам сохранены и командный брейк обновлен для следующих брейковых категорий: %(categories)s." -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "Изменения в комментариях к брейковым командам сохранены и командный брейк обновлен для брейковой категории %(category)s." -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "Изменения в комментариях к брейковым командам сохранены." -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "Брейк сгенерирован для следующих категорий команд: %(categories)s." -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "Брейкающиеся судьи" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "Доступность для брейка" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s Спикеры" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/tr/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/tr/LC_MESSAGES/django.po index c55d2a646d5..9caa1123d9a 100644 --- a/tabbycat/breakqual/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,514 +12,514 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" -msgstr "" +msgstr "Break Olma Şartları" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "%(rule)s'ın break olma şartı kuralı takım sıralamaları önceliğinde aşağıdaki gerekli metrikten yoksun: %(missing)s" +msgstr[1] "%(rule)s'ın break olma şartı kuralı takım sıralamaları önceliğinde aşağıdaki gerekli metriklerden yoksun: %(missing)s" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "turnuva" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "isim" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" -msgstr "" +msgstr "Görüntülenecek ad, örneğin, \"ESL\"" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" -msgstr "" +msgstr "jeton" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" -msgstr "" +msgstr "URL'ler için jeton, örneğin, \"esl\"" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" -msgstr "" +msgstr "sıra numarası" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" -msgstr "" +msgstr "Kategorilerin görüntülenme sırası" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" -msgstr "" +msgstr "break olma boyutu" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" -msgstr "" +msgstr "Bu kategoride break olan takım sayısı" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" -msgstr "" +msgstr "geneldir" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" -msgstr "" +msgstr "Çoğu takım bu kategoriye uygunsa doğrudur, örneğin Açık, Aksi takdirde Yanlış" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" -msgstr "" +msgstr "öncelik" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" -msgstr "" +msgstr "Bir takım birden fazla kategoride break olursa, daha yüksek öncelik numaraları öncelikli olur; takımlar ancak hepsi aynı önceliğe sahipse birden fazla kategoriye break olabilir" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" -msgstr "" +msgstr "sınır" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" -msgstr "" +msgstr "En fazla bu kadar çok takım bu kategori için herkese açık tabda gösterilecek. Sınır istemiyorsanız 0 kullanın." -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" -msgstr "" +msgstr "Standart" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" -msgstr "" +msgstr "kural" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" -msgstr "" +msgstr "Break hesaplanması için kural (çoğu turnuvada \"Standart\" kullanılmalıdır)" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" -msgstr "" +msgstr "break olan takımlar" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" -msgstr "" +msgstr "break kategorisi" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" -msgstr "" +msgstr "break kategorileri" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "takım" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "sıralama" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" -msgstr "" +msgstr "Break sırası" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" -msgstr "" +msgstr "Sınırlı" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" -msgstr "" +msgstr "Uygun Değil" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" -msgstr "" +msgstr "Farklı Break" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" -msgstr "" +msgstr "Diskalifiye" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" -msgstr "" +msgstr "Yazı tura kaybedildi" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" -msgstr "" +msgstr "Çekilmiş" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" -msgstr "" +msgstr "Açıklama" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" -msgstr "" +msgstr "Aksi takdirde kalifiye olmuş bir takımın neden break olmadığını açıklamak için kullanılır" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" -msgstr "" +msgstr "break olan takım" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" -msgstr "" +msgstr "break kategorileri" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." -msgstr "" +msgstr "Break kategorileri, kategoriye özel break turları yapmanızı sağlar, örneğin acemi veya ESL kategorileri. Bu sayfada, hangi break kategorilerinin bulunduğunu tanımlayabilirsiniz. Kategorileri tanımladıktan sonra, break turları otomatik olarak oluşturulur ve Uygunluk sayfasında takım uygunluğunu ayarlayabilirsiniz." -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." -msgstr "" +msgstr "Ara kategorileri silmek istiyorsanız, Veritabanını Düzenle alanını kullanın." -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" -msgstr "" +msgstr "Break Kategorilerini Kaydet" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." -msgstr "" +msgstr "Jürilerin break durumu Geribildirim Genel Bakış bölümünden işaretlenebilir." -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" -msgstr "" +msgstr "Breakler" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " -msgstr "" +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "Bu turnuvada herhangi bir break ayarlanmamıştır. Nasıl break oluşturabileceğinize buradan bakabilirsiniz. " -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" -msgstr "" +msgstr "Takım Uygunluğu" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" -msgstr "" +msgstr "%(category)s Break" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " -msgstr "" +msgstr " %(size)s Konumlar " -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" -msgstr "" +msgstr "Uygun Takımlar" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" -msgstr "" +msgstr "Break Olan" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" -msgstr "" +msgstr "Dahil Değil" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" -msgstr "" +msgstr "Uygun" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" -msgstr "" +msgstr "Takımları uygun olarak işaretle" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" -msgstr "" +msgstr "Bu breaki oluştur" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" -msgstr "" +msgstr "Bu breaki görüntüle" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" -msgstr "" +msgstr "herkese açık" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" -msgstr "" +msgstr "herkese açık değil" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" -msgstr "" +msgstr "Tüm breakleri Sil ve Yeniden Oluştur" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" -msgstr "" +msgstr "Tüm Kategoriler için Break Oluştur" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." -msgstr "" +msgstr "Bu kategori için 0 takım uygun olarak işaretli. — bu breakin doğru şekilde oluşturulması için bazı uygun takımlar eklemeniz gerekir." -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." -msgstr "" +msgstr "Bu break %(category)s kuralını kullanır — farklı bir kural kullanmak isterseniz, bu break kategorisinin kuralını Veritabanını Düzenle, alanında düzenlemeniz ve ardından tüm breakleri silip yeniden oluşturmanız gerekir. Lütfen breaki duyurmadan veya açıklamadan önce bunu kontrol edin. Break oluşturan kod her zaman iyi çalışmayabilir." -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." -msgstr "" +msgstr "Breaki düzenlemek için sağ sütundaki açıklamaları kullanın. Bir yorumu olan herhangi bir takım bu breakin dışında tutulacaktır (break üreteci bazen kendi açıklamalarını ekler). Ardından, aşağıdaki uygun Yorumları Kaydet ve Güncelle düğmesine tıklayın. Karmaşık break kurallarınız varsa (örneğin, bazı takımların tercih ettikleri kategoriyi seçmelerine izin veriliyorsa), doğru breaki elde etmek için açıklamaları birkaç kez güncellemeniz gerekebilir. Son çare olarak, break olan takımlar listesini doğrudan Veritabanını Düzenle alanından ayarlayabilirsiniz." -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." -msgstr "" +msgstr "Dikkat! \"Herkese açık break olan ekipler\" seçeneği açıktır, break herkes tarafından görülebilir. Breakleri güncellerseniz, değişiklikler hemen görünür hale gelir bunları gözden geçirme şansınız olmaz. Breakleri oluşturmadan önce turnuva ayarlama sayfasından bu ayarı devre dışı bırakmanız önerilir." -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." -msgstr "" +msgstr "Break henüz oluşturulmadı. Tüm kategoriler için break oluşturmak ister misiniz? Tüm ön turlar tamamlanmadan önce break oluşturmak güvenlidir - daha sonra yeniden oluşturabilirsiniz." -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." -msgstr "" +msgstr "Dikkat! \"Herkese açık break olan ekipler\" seçeneği açıktır, break herkes tarafından görülebilir. Breakleri güncellerseniz, değişiklikler hemen görünür hale gelir bunları gözden geçirme şansınız olmaz." -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" -msgstr "" +msgstr "Açıklamaları Kaydet ve Tüm Breakleri Güncelle" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" -msgstr "" +msgstr "Açıklamaları Kaydet ve %(category)s Breakini Güncelle" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" -msgstr "" +msgstr "Bu kategori için%(count)s takım uygun olarak işaretlenmiş. Daha fazla uygun takım eklemek ister misiniz?" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" -msgstr "" +msgstr "Genel bakış" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" -msgstr "" +msgstr "Jüri Breaki" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." -msgstr "" +msgstr "Herhangi bir break kategorisi tanımlanmamış. Yeni mola kategorileri oluşturmak istiyorsanız öncelikle veritabanı ayarla kısmında onları ekleyip ardından ekibin uygunluğunu ayarlamak için bu sayfaya dönün." -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" -msgstr "" +msgstr "Break" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "Jüriler" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" -msgstr "" +msgstr "Son Final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" -msgstr "" +msgstr "SF" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "Yarı Final" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "YF" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "Çeyrek Final" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "ÇF" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "Ön Çeyrek Final" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "ÖF" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" -msgstr "" +msgstr "Çift Ön Çeyrek Final" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" -msgstr "" +msgstr "ÇÖF" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" -msgstr "" +msgstr "Üçlü Ön Çeyrek Final" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" -msgstr "" +msgstr "ÜÖF" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" -msgstr "" +msgstr "%s Final" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" -msgstr "" +msgstr "%sF" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" -msgstr "" +msgstr "%s Yarı Final" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" -msgstr "" +msgstr "%sYF" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" -msgstr "" +msgstr "%s Çeyrek Final" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" -msgstr "" +msgstr "%sÇF" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" -msgstr "" +msgstr "%s Ön Çeyrek Final" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" -msgstr "" +msgstr "%sÖF" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" -msgstr "" +msgstr "%s Çift Ön Çeyrek Final" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" -msgstr "" +msgstr "%sÇÖF" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" -msgstr "" +msgstr "%s Üçlü Ön Çeyrek Final" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" -msgstr "" +msgstr "%sÜÖF" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" -msgstr "" +msgstr "Bilinmeyen %s break turu" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" -msgstr "" +msgstr "B%sBT" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" -msgstr "" +msgstr "Bilinmeyen break turu" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" -msgstr "" +msgstr "BBT" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" -msgstr "" +msgstr "%(category)s kategorisi için break oluşturulurken bir hata oluştu: %(message)s" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" -msgstr "" +msgstr "Uygun" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" -msgstr "" +msgstr "Açıklamayı Düzenle" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." -msgstr "" +msgstr "Break olan takım açıklamalarında yapılan değişiklikler kaydedilir ve takım breaki şu break kategorileri için güncelleştirilir: %(categories)s." -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." -msgstr "" +msgstr "Break olan takım açıklamalarında yapılan değişiklikler kaydedildi ve takım break kategorisi %(category)s için güncellendi." -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." -msgstr "" +msgstr "Break olan takım açıklamalarında yapılan değişiklikler kaydedildi." -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." -msgstr "" +msgstr "Aşağıdaki break kategorileri için takım breakleri oluşturuldu: %(categories)s." -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" -msgstr "" +msgstr "Break Olan Jüriler" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" -msgstr "" +msgstr "Break Uygunluğu" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s Konuşmacılar" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Takımın %(nspeakers)s tane %(category)s konuşmacı kategorisinden konuşmacısı var." +msgstr[1] "Takımın %(nspeakers)s tane %(category)s konuşmacı kategorisinden konuşmacısı var." diff --git a/tabbycat/breakqual/locale/tzl/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/tzl/LC_MESSAGES/django.po index 3e431a95be6..0097ada0ea9 100644 --- a/tabbycat/breakqual/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-11-18 21:01\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,508 +17,506 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "crwdns29778:0crwdne29778:0" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "crwdns29780:0%(rule)scrwdnd29780:0%(required)scrwdnd29780:0%(missing)scrwdne29780:0" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "crwdns52255:1%(rule)scrwdnd52255:1%(missing)scrwdne52255:1" +msgstr[1] "crwdns52255:5%(rule)scrwdnd52255:5%(missing)scrwdne52255:5" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "crwdns29782:0crwdne29782:0" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "crwdns29784:0crwdne29784:0" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "crwdns29786:0crwdne29786:0" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "crwdns29788:0crwdne29788:0" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "crwdns29790:0crwdne29790:0" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "crwdns29792:0crwdne29792:0" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "crwdns29794:0crwdne29794:0" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "crwdns29796:0crwdne29796:0" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "crwdns29798:0crwdne29798:0" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "crwdns29800:0crwdne29800:0" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "crwdns29802:0crwdne29802:0" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "crwdns29804:0crwdne29804:0" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "crwdns29806:0crwdne29806:0" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "crwdns29808:0crwdne29808:0" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "crwdns29810:0crwdne29810:0" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "crwdns29812:0crwdne29812:0" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "crwdns29814:0crwdne29814:0" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "crwdns29816:0crwdne29816:0" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "crwdns29818:0crwdne29818:0" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "crwdns34032:0crwdne34032:0" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "crwdns29824:0crwdne29824:0" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "crwdns29826:0crwdne29826:0" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "crwdns29828:0crwdne29828:0" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "crwdns29830:0crwdne29830:0" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "crwdns29832:0crwdne29832:0" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "crwdns29834:0crwdne29834:0" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "crwdns29836:0crwdne29836:0" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "crwdns29838:0crwdne29838:0" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "crwdns29840:0crwdne29840:0" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "crwdns29842:0crwdne29842:0" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "crwdns29844:0crwdne29844:0" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "crwdns29846:0crwdne29846:0" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "crwdns29848:0crwdne29848:0" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "crwdns29850:0crwdne29850:0" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "crwdns29852:0crwdne29852:0" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "crwdns29854:0crwdne29854:0" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "crwdns29856:0crwdne29856:0" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "crwdns51122:0crwdne51122:0" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "crwdns51124:0%(eligibility_url)scrwdne51124:0" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "crwdns51126:0%(edit_db_url)scrwdne51126:0" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "crwdns51128:0crwdne51128:0" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "crwdns29858:0%(feedback_url)scrwdne29858:0" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "crwdns29860:0crwdne29860:0" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " -msgstr "crwdns29862:0crwdne29862:0" +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "crwdns52155:0crwdne52155:0" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "crwdns51130:0crwdne51130:0" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "crwdns29922:0%(category)scrwdne29922:0" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "crwdns29868:0%(size)scrwdne29868:0" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "crwdns29870:0crwdne29870:0" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "crwdns29872:0crwdne29872:0" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "crwdns29874:0crwdne29874:0" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "crwdns29876:0crwdne29876:0" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "crwdns29878:0crwdne29878:0" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "crwdns29880:0crwdne29880:0" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "crwdns29882:0crwdne29882:0" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "crwdns29884:0crwdne29884:0" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "crwdns29886:0crwdne29886:0" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "crwdns29888:0crwdne29888:0" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "crwdns29890:0crwdne29890:0" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "crwdns29892:0%(url)scrwdne29892:0" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "crwdns29894:0%(category)scrwdnd29894:0%(url)scrwdne29894:0" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "crwdns29896:0%(url)scrwdne29896:0" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "crwdns29898:0%(options_url)scrwdne29898:0" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "crwdns29900:0crwdne29900:0" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "crwdns29902:0crwdne29902:0" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "crwdns29904:0crwdne29904:0" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "crwdns51132:0%(category)scrwdne51132:0" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "crwdns29908:0%(count)scrwdne29908:0" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "crwdns34034:0crwdne34034:0" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "crwdns29912:0crwdne29912:0" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "crwdns29914:0%(categories_url)scrwdne29914:0" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "crwdns29916:0crwdne29916:0" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "crwdns29920:0crwdne29920:0" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "crwdns51134:0crwdne51134:0" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "crwdns51136:0crwdne51136:0" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "crwdns51138:0crwdne51138:0" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "crwdns51140:0crwdne51140:0" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "crwdns51142:0crwdne51142:0" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "crwdns51144:0crwdne51144:0" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "crwdns51146:0crwdne51146:0" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "crwdns51148:0crwdne51148:0" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "crwdns51150:0crwdne51150:0" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "crwdns51152:0crwdne51152:0" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "crwdns51154:0crwdne51154:0" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "crwdns51156:0crwdne51156:0" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "crwdns51158:0%scrwdne51158:0" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "crwdns51160:0%scrwdne51160:0" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "crwdns51162:0%scrwdne51162:0" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "crwdns51164:0%scrwdne51164:0" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "crwdns51166:0%scrwdne51166:0" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "crwdns51168:0%scrwdne51168:0" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "crwdns51170:0%scrwdne51170:0" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "crwdns51172:0%scrwdne51172:0" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "crwdns51174:0%scrwdne51174:0" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "crwdns51176:0%scrwdne51176:0" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "crwdns51178:0%scrwdne51178:0" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "crwdns51180:0%scrwdne51180:0" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "crwdns51182:0%scrwdne51182:0" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "crwdns51184:0%scrwdne51184:0" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "crwdns51186:0crwdne51186:0" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "crwdns51188:0crwdne51188:0" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "crwdns29924:0%(category)scrwdnd29924:0%(message)scrwdne29924:0" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "crwdns29926:0crwdne29926:0" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "crwdns29928:0crwdne29928:0" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "crwdns29930:0%(categories)scrwdne29930:0" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "crwdns29932:0%(category)scrwdne29932:0" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "crwdns29934:0crwdne29934:0" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "crwdns29936:0%(categories)scrwdne29936:0" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "crwdns29938:0crwdne29938:0" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "crwdns29940:0crwdne29940:0" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "crwdns34036:0%scrwdne34036:0" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.mo b/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..9549c9b2033 Binary files /dev/null and b/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..2d2831b40a1 --- /dev/null +++ b/tabbycat/breakqual/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,523 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 928\n" + +#: breakqual/apps.py +msgid "Break Qualification" +msgstr "" + +#: breakqual/base.py +#, python-format +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" + +#: breakqual/models.py +msgid "tournament" +msgstr "" + +#: breakqual/models.py +msgid "name" +msgstr "" + +#: breakqual/models.py +msgid "Name to be displayed, e.g., \"ESL\"" +msgstr "" + +#: breakqual/models.py +msgid "slug" +msgstr "" + +#: breakqual/models.py +msgid "Slug for URLs, e.g., \"esl\"" +msgstr "" + +#: breakqual/models.py +msgid "sequence number" +msgstr "" + +#: breakqual/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: breakqual/models.py +msgid "break size" +msgstr "" + +#: breakqual/models.py +msgid "Number of breaking teams in this category" +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "True if most teams eligible for this category, e.g. Open, False otherwise" +msgstr "" + +#: breakqual/models.py +msgid "priority" +msgstr "" + +#: breakqual/models.py +msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" +msgstr "" + +#: breakqual/models.py +msgid "limit" +msgstr "" + +#: breakqual/models.py +msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: breakqual/models.py +msgid "Standard" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 1996" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Easters)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2016 (Australs)" +msgstr "" + +#: breakqual/models.py +msgid "AIDA 2019 (Australs, Dynamic Cap)" +msgstr "" + +#: breakqual/models.py +msgid "rule" +msgstr "" + +#: breakqual/models.py +msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" +msgstr "" + +#: breakqual/models.py +msgid "breaking teams" +msgstr "" + +#: breakqual/models.py +msgid "break category" +msgstr "" + +#: breakqual/models.py +msgid "break categories" +msgstr "" + +#: breakqual/models.py +msgid "team" +msgstr "đội" + +#: breakqual/models.py +msgid "rank" +msgstr "" + +#: breakqual/models.py +msgid "break rank" +msgstr "" + +#: breakqual/models.py +msgid "Capped" +msgstr "" + +#: breakqual/models.py +msgid "Ineligible" +msgstr "" + +#: breakqual/models.py +msgid "Different break" +msgstr "" + +#: breakqual/models.py +msgid "Disqualified" +msgstr "" + +#: breakqual/models.py +msgid "Lost coin toss" +msgstr "" + +#: breakqual/models.py +msgid "Withdrawn" +msgstr "" + +#: breakqual/models.py +msgid "remark" +msgstr "" + +#: breakqual/models.py +msgid "Used to explain why an otherwise-qualified team didn't break" +msgstr "" + +#: breakqual/models.py +msgid "breaking team" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html +msgid "Break Categories" +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +#, python-format +msgid "If you want to delete break categories, use the Edit Database area." +msgstr "" + +#: breakqual/templates/break_categories_edit.html +msgid "Save Break Categories" +msgstr "" + +#: breakqual/templates/breaking_adjs.html +#, python-format +msgid "Adjudicators can be marked as breaking in the Feedback Overview section." +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaks" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Team Eligibility" +msgstr "" + +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_index.html +#, python-format +msgid " %(size)s Spots " +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Teams Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Breaking" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Excluded" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Mark teams as eligible" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "Generate this break" +msgstr "" + +#: breakqual/templates/breaking_index.html +msgid "View this break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "not publicly visible" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Delete and Regenerate All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Generate the Break for All Categories" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." +msgstr "" + +#: breakqual/templates/breaking_teams.html +msgid "Save Remarks and Update All Breaks" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "Save Remarks and Update the %(category)s Break" +msgstr "" + +#: breakqual/templates/breaking_teams.html +#, python-format +msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" +msgstr "" + +#: breakqual/templates/breakqual_subnav.html +msgid "Overview" +msgstr "Tổng quan" + +#: breakqual/templates/breakqual_subnav.html +msgid "Adjudicators' Break" +msgstr "" + +#: breakqual/templates/edit_break_eligibility.html +#, python-format +msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." +msgstr "" + +#: breakqual/templates/public_break_index.html breakqual/views.py +msgid "Break" +msgstr "" + +#: breakqual/templates/public_break_index.html +msgid "Adjudicators" +msgstr "Giám khảo" + +#. Translators: abbreviation for "grand final" +#: breakqual/utils.py +msgid "Grand Final" +msgstr "" + +#: breakqual/utils.py +msgid "GF" +msgstr "" + +#. Translators: abbreviation for "semifinals" +#: breakqual/utils.py +msgid "Semifinals" +msgstr "" + +#: breakqual/utils.py +msgid "SF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" +#: breakqual/utils.py +msgid "Quarterfinals" +msgstr "" + +#: breakqual/utils.py +msgid "QF" +msgstr "" + +#. Translators: abbreviation for "octofinals" +#: breakqual/utils.py +msgid "Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "OF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" +#: breakqual/utils.py +msgid "Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "DOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" +#: breakqual/utils.py +msgid "Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +msgid "TOF" +msgstr "" + +#. Translators: abbreviation for "finals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Finals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sF" +msgstr "" + +#. Translators: abbreviation for "semifinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Semifinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sSF" +msgstr "" + +#. Translators: abbreviation for "quarterfinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Quarterfinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sQF" +msgstr "" + +#. Translators: abbreviation for "octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sOF" +msgstr "" + +#. Translators: abbreviation for "double-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Double-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sDOF" +msgstr "" + +#. Translators: abbreviation for "triple-octofinals" - first character of category name +#: breakqual/utils.py +#, python-format +msgid "%s Triple-Octofinals" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "%sTOF" +msgstr "" + +#. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) +#: breakqual/utils.py +#, python-format +msgid "Unknown %s break round" +msgstr "" + +#: breakqual/utils.py +#, python-format +msgid "U%sBR" +msgstr "" + +#: breakqual/utils.py +msgid "Unknown break round" +msgstr "" + +#: breakqual/utils.py +msgid "UBR" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "There was an error generating the break for category %(category)s: %(message)s" +msgstr "" + +#: breakqual/views.py +msgid "Eligible for" +msgstr "" + +#: breakqual/views.py +msgid "Edit Remark" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." +msgstr "" + +#: breakqual/views.py +msgid "Changes to breaking team remarks saved." +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Teams break generated for the following break categories: %(categories)s." +msgstr "" + +#: breakqual/views.py +msgid "Breaking Adjudicators" +msgstr "" + +#: breakqual/views.py +msgid "Break Eligibility" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "%s Speakers" +msgstr "" + +#: breakqual/views.py +#, python-format +msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" +msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" +msgstr[0] "" + diff --git a/tabbycat/breakqual/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/zh_Hans/LC_MESSAGES/django.po index a453ce14913..e5bc1903a67 100644 --- a/tabbycat/breakqual/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-07-05 17:10\n" +"POT-Creation-Date: 2023-02-12 02:04-0400\n" +"PO-Revision-Date: 2023-02-12 06:12\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,508 +17,505 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/breakqual/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 928\n" -#: breakqual/apps.py:7 +#: breakqual/apps.py msgid "Break Qualification" msgstr "资格" -#: breakqual/base.py:94 +#: breakqual/base.py #, python-format -msgid "The break qualification rule %(rule)s requires the following metric(s) to be in the team standings precedence in order to work: %(required)s; and the following are missing: %(missing)s." -msgstr "" +msgid "The %(rule)s break qualification rule is missing the following required metric in the team standings precedence: %(missing)s" +msgid_plural "The %(rule)s break qualification rule is missing the following required metrics in the team standings precedence: %(missing)s" +msgstr[0] "" -#: breakqual/models.py:10 +#: breakqual/models.py msgid "tournament" msgstr "比赛" -#: breakqual/models.py:12 +#: breakqual/models.py msgid "name" msgstr "名称" -#: breakqual/models.py:13 +#: breakqual/models.py msgid "Name to be displayed, e.g., \"ESL\"" msgstr "" -#: breakqual/models.py:15 +#: breakqual/models.py msgid "slug" msgstr "" -#: breakqual/models.py:16 +#: breakqual/models.py msgid "Slug for URLs, e.g., \"esl\"" msgstr "" -#: breakqual/models.py:18 +#: breakqual/models.py msgid "sequence number" msgstr "" -#: breakqual/models.py:19 +#: breakqual/models.py msgid "The order in which the categories are displayed" msgstr "" -#: breakqual/models.py:21 +#: breakqual/models.py msgid "break size" msgstr "" -#: breakqual/models.py:22 +#: breakqual/models.py msgid "Number of breaking teams in this category" msgstr "" -#: breakqual/models.py:24 +#: breakqual/models.py msgid "is general" msgstr "" -#: breakqual/models.py:25 +#: breakqual/models.py msgid "True if most teams eligible for this category, e.g. Open, False otherwise" msgstr "" -#: breakqual/models.py:27 +#: breakqual/models.py msgid "priority" msgstr "" -#: breakqual/models.py:28 +#: breakqual/models.py msgid "If a team breaks in multiple categories, higher priority numbers take precedence; teams can break into multiple categories if and only if they all have the same priority" msgstr "" -#: breakqual/models.py:32 +#: breakqual/models.py msgid "limit" msgstr "" -#: breakqual/models.py:33 +#: breakqual/models.py msgid "At most this many teams will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: breakqual/models.py:36 +#: breakqual/models.py msgid "Standard" msgstr "基准" -#: breakqual/models.py:37 +#: breakqual/models.py msgid "AIDA 1996" msgstr "" -#: breakqual/models.py:38 +#: breakqual/models.py msgid "AIDA 2016 (Easters)" msgstr "" -#: breakqual/models.py:39 +#: breakqual/models.py msgid "AIDA 2016 (Australs)" msgstr "" -#: breakqual/models.py:40 +#: breakqual/models.py msgid "AIDA 2019 (Australs, Dynamic Cap)" msgstr "" -#: breakqual/models.py:44 +#: breakqual/models.py msgid "rule" msgstr "规定" -#: breakqual/models.py:45 +#: breakqual/models.py msgid "Rule for how the break is calculated (most tournaments should use \"Standard\")" msgstr "" -#: breakqual/models.py:48 breakqual/models.py:105 +#: breakqual/models.py msgid "breaking teams" msgstr "有资格的队伍" -#: breakqual/models.py:57 breakqual/models.py:76 +#: breakqual/models.py msgid "break category" msgstr "类别的资格" -#: breakqual/models.py:58 +#: breakqual/models.py msgid "break categories" msgstr "" -#: breakqual/models.py:78 +#: breakqual/models.py msgid "team" msgstr "队伍" -#: breakqual/models.py:80 +#: breakqual/models.py msgid "rank" msgstr "排名" -#: breakqual/models.py:82 +#: breakqual/models.py msgid "break rank" msgstr "" -#: breakqual/models.py:91 +#: breakqual/models.py msgid "Capped" msgstr "" -#: breakqual/models.py:92 +#: breakqual/models.py msgid "Ineligible" msgstr "" -#: breakqual/models.py:93 +#: breakqual/models.py msgid "Different break" msgstr "" -#: breakqual/models.py:94 +#: breakqual/models.py msgid "Disqualified" msgstr "取消资格了" -#: breakqual/models.py:95 +#: breakqual/models.py msgid "Lost coin toss" msgstr "掷硬币败北了" -#: breakqual/models.py:96 +#: breakqual/models.py msgid "Withdrawn" msgstr "" -#: breakqual/models.py:99 +#: breakqual/models.py msgid "remark" msgstr "" -#: breakqual/models.py:100 +#: breakqual/models.py msgid "Used to explain why an otherwise-qualified team didn't break" msgstr "" -#: breakqual/models.py:104 +#: breakqual/models.py msgid "breaking team" msgstr "有资格的队伍" -#: breakqual/templates/break_categories_edit.html:4 -#: breakqual/templates/break_categories_edit.html:5 -#: breakqual/templates/breaking_index.html:30 +#: breakqual/templates/break_categories_edit.html +#: breakqual/templates/breaking_index.html msgid "Break Categories" msgstr "" -#: breakqual/templates/break_categories_edit.html:17 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "Break categories allow category-specific break rounds, e.g., for novice or ESL categories. On this page, you can define what break categories exist. After you've defined the categories, the break rounds will be automatically generated, and you can set team eligibility on the Eligibility page." msgstr "" -#: breakqual/templates/break_categories_edit.html:25 +#: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." msgstr "" -#: breakqual/templates/break_categories_edit.html:31 +#: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" msgstr "" -#: breakqual/templates/breaking_adjs.html:8 +#: breakqual/templates/breaking_adjs.html #, python-format msgid "Adjudicators can be marked as breaking in the Feedback Overview section." msgstr "" -#: breakqual/templates/breaking_index.html:4 -#: breakqual/templates/breaking_index.html:5 +#: breakqual/templates/breaking_index.html msgid "Breaks" msgstr "资格" -#: breakqual/templates/breaking_index.html:10 -msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " +#: breakqual/templates/breaking_index.html +msgid "This tournament does not have any break categories set up. You can read about how to create breaks at our documentation. " msgstr "" -#: breakqual/templates/breaking_index.html:33 +#: breakqual/templates/breaking_index.html msgid "Team Eligibility" msgstr "" -#: breakqual/templates/breaking_index.html:49 -#: breakqual/templates/breaking_teams.html:4 -#: breakqual/templates/breaking_teams.html:14 -#: breakqual/templates/breakqual_subnav.html:9 -#: breakqual/templates/public_break_index.html:15 breakqual/views.py:73 +#: breakqual/templates/breaking_index.html +#: breakqual/templates/breaking_teams.html +#: breakqual/templates/breakqual_subnav.html +#: breakqual/templates/public_break_index.html breakqual/views.py #, python-format msgid "%(category)s Break" msgstr "%(category)s的资格" -#: breakqual/templates/breaking_index.html:52 +#: breakqual/templates/breaking_index.html #, python-format msgid " %(size)s Spots " msgstr "" -#: breakqual/templates/breaking_index.html:64 +#: breakqual/templates/breaking_index.html msgid "Teams Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:76 +#: breakqual/templates/breaking_index.html msgid "Breaking" msgstr "有资格" -#: breakqual/templates/breaking_index.html:84 +#: breakqual/templates/breaking_index.html msgid "Excluded" msgstr "" -#: breakqual/templates/breaking_index.html:92 +#: breakqual/templates/breaking_index.html msgid "Eligible" msgstr "" -#: breakqual/templates/breaking_index.html:104 +#: breakqual/templates/breaking_index.html msgid "Mark teams as eligible" msgstr "" -#: breakqual/templates/breaking_index.html:109 +#: breakqual/templates/breaking_index.html msgid "Generate this break" msgstr "" -#: breakqual/templates/breaking_index.html:112 +#: breakqual/templates/breaking_index.html msgid "View this break" msgstr "" -#: breakqual/templates/breaking_teams.html:9 +#: breakqual/templates/breaking_teams.html msgid "publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:11 +#: breakqual/templates/breaking_teams.html msgid "not publicly visible" msgstr "" -#: breakqual/templates/breaking_teams.html:27 +#: breakqual/templates/breaking_teams.html msgid "Delete and Regenerate All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:36 +#: breakqual/templates/breaking_teams.html msgid "Generate the Break for All Categories" msgstr "" -#: breakqual/templates/breaking_teams.html:48 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are 0 teams marked as eligible for this category — you will need to add some eligible teams for this break to generate correctly." msgstr "" -#: breakqual/templates/breaking_teams.html:60 +#: breakqual/templates/breaking_teams.html #, python-format msgid "This break uses the %(category)s rule — if you intended to use a different rule, you should edit the rule for this break category in the Edit Database area, then delete and regenerate all breaks. Please double-check this before announcing the break or releasing it to the public. The code that generates the break is not robustly tested for corner cases." msgstr "" -#: breakqual/templates/breaking_teams.html:66 +#: breakqual/templates/breaking_teams.html #, python-format msgid "To edit the break use the remarks in the right-hand column. Any team with a remark will be excluded from this break (the break generator will sometimes insert its own remarks). Then, click the appropriate Save Remarks and Update button below. If you have complicated break rules (for example, if some teams are allowed to choose their preferred category) then you may have to update remarks a few times to get the correct break. As a last resort, you can edit the breaking teams list directly in the Edit Database area." msgstr "" -#: breakqual/templates/breaking_teams.html:76 +#: breakqual/templates/breaking_teams.html #, python-format msgid "The public breaking teams configuration setting is enabled. As soon as you click the button, the breaking teams list will be visible on the public site, before you have a chance to double-check it! It is strongly recommended that you disable this setting on the tournament configuration page before generating the team breaks." msgstr "" -#: breakqual/templates/breaking_teams.html:88 +#: breakqual/templates/breaking_teams.html msgid "The break hasn't yet been generated. Would you like to generate the break for all categories? It's safe to generate the break before all preliminary rounds are complete, if you're curious — you can regenerate it later." msgstr "" -#: breakqual/templates/breaking_teams.html:107 +#: breakqual/templates/breaking_teams.html msgid "Caution! The \"public breaking teams\" option is turned on, so the break is publicly visible. If you update the break(s), the changes will become visible immediately, without a chance for you to review them." msgstr "" -#: breakqual/templates/breaking_teams.html:120 +#: breakqual/templates/breaking_teams.html msgid "Save Remarks and Update All Breaks" msgstr "" -#: breakqual/templates/breaking_teams.html:125 +#: breakqual/templates/breaking_teams.html #, python-format msgid "Save Remarks and Update the %(category)s Break" msgstr "" -#: breakqual/templates/breaking_teams.html:137 +#: breakqual/templates/breaking_teams.html #, python-format msgid "There are %(count)s teams marked as eligible for this category. Would you like to add more eligible teams?" msgstr "" -#: breakqual/templates/breakqual_subnav.html:5 +#: breakqual/templates/breakqual_subnav.html msgid "Overview" msgstr "" -#: breakqual/templates/breakqual_subnav.html:15 +#: breakqual/templates/breakqual_subnav.html msgid "Adjudicators' Break" msgstr "" -#: breakqual/templates/edit_break_eligibility.html:7 +#: breakqual/templates/edit_break_eligibility.html #, python-format msgid "It looks like there aren't any break categories are defined. If you'd like to create new break categories you'll need to first add them in the Edit Database area, then return to this page to set team's eligibility." msgstr "" -#: breakqual/templates/public_break_index.html:4 -#: breakqual/templates/public_break_index.html:5 breakqual/views.py:66 +#: breakqual/templates/public_break_index.html breakqual/views.py msgid "Break" msgstr "资格" -#: breakqual/templates/public_break_index.html:23 +#: breakqual/templates/public_break_index.html msgid "Adjudicators" msgstr "裁判" #. Translators: abbreviation for "grand final" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "Grand Final" msgstr "总决赛" -#: breakqual/utils.py:129 +#: breakqual/utils.py msgid "GF" msgstr "总决赛" #. Translators: abbreviation for "semifinals" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "Semifinals" msgstr "四强赛" -#: breakqual/utils.py:131 +#: breakqual/utils.py msgid "SF" msgstr "半决赛" #. Translators: abbreviation for "quarterfinals" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "Quarterfinals" msgstr "八强赛" -#: breakqual/utils.py:133 +#: breakqual/utils.py msgid "QF" msgstr "八强赛" #. Translators: abbreviation for "octofinals" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "Octofinals" msgstr "十六强赛" -#: breakqual/utils.py:135 +#: breakqual/utils.py msgid "OF" msgstr "一十六强赛" #. Translators: abbreviation for "double-octofinals" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "Double-Octofinals" msgstr "三十二强赛" -#: breakqual/utils.py:137 +#: breakqual/utils.py msgid "DOF" msgstr "三十二强赛" #. Translators: abbreviation for "triple-octofinals" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "Triple-Octofinals" msgstr "六十四强赛" -#: breakqual/utils.py:139 +#: breakqual/utils.py msgid "TOF" msgstr "六十四强赛" #. Translators: abbreviation for "finals" - first character of category name -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%s Finals" msgstr "%s的决赛" -#: breakqual/utils.py:146 +#: breakqual/utils.py #, python-format msgid "%sF" msgstr "" #. Translators: abbreviation for "semifinals" - first character of category name -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%s Semifinals" msgstr "%s的四强赛" -#: breakqual/utils.py:148 +#: breakqual/utils.py #, python-format msgid "%sSF" msgstr "" #. Translators: abbreviation for "quarterfinals" - first character of category name -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%s Quarterfinals" msgstr "%s的八强赛" -#: breakqual/utils.py:150 +#: breakqual/utils.py #, python-format msgid "%sQF" msgstr "" #. Translators: abbreviation for "octofinals" - first character of category name -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%s Octofinals" msgstr "%s的十六强赛" -#: breakqual/utils.py:152 +#: breakqual/utils.py #, python-format msgid "%sOF" msgstr "" #. Translators: abbreviation for "double-octofinals" - first character of category name -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%s Double-Octofinals" msgstr "%s的三十二强赛" -#: breakqual/utils.py:154 +#: breakqual/utils.py #, python-format msgid "%sDOF" msgstr "" #. Translators: abbreviation for "triple-octofinals" - first character of category name -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%s Triple-Octofinals" msgstr "%s的六十四强赛" -#: breakqual/utils.py:156 +#: breakqual/utils.py #, python-format msgid "%sTOF" msgstr "" #. Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "Unknown %s break round" msgstr "" -#: breakqual/utils.py:168 +#: breakqual/utils.py #, python-format msgid "U%sBR" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "Unknown break round" msgstr "" -#: breakqual/utils.py:169 +#: breakqual/utils.py msgid "UBR" msgstr "" -#: breakqual/views.py:97 +#: breakqual/views.py #, python-format msgid "There was an error generating the break for category %(category)s: %(message)s" msgstr "" -#: breakqual/views.py:140 +#: breakqual/views.py msgid "Eligible for" msgstr "" -#: breakqual/views.py:144 +#: breakqual/views.py msgid "Edit Remark" msgstr "" -#: breakqual/views.py:160 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:167 +#: breakqual/views.py #, python-format msgid "Changes to breaking team remarks saved and teams break updated for break category %(category)s." msgstr "" -#: breakqual/views.py:172 +#: breakqual/views.py msgid "Changes to breaking team remarks saved." msgstr "" -#: breakqual/views.py:196 +#: breakqual/views.py #, python-format msgid "Teams break generated for the following break categories: %(categories)s." msgstr "" -#: breakqual/views.py:209 +#: breakqual/views.py msgid "Breaking Adjudicators" msgstr "有资格的裁判" -#: breakqual/views.py:274 +#: breakqual/views.py msgid "Break Eligibility" msgstr "" -#: breakqual/views.py:303 +#: breakqual/views.py #, python-format msgid "%s Speakers" msgstr "%s讲员" -#: breakqual/views.py:306 +#: breakqual/views.py #, python-format msgid "Team has %(nspeakers)s speaker with the %(category)s speaker category assigned" msgid_plural "Team has %(nspeakers)s speakers with the %(category)s speaker category assigned" diff --git a/tabbycat/breakqual/models.py b/tabbycat/breakqual/models.py index 4abe435b3cd..e9628129976 100644 --- a/tabbycat/breakqual/models.py +++ b/tabbycat/breakqual/models.py @@ -22,7 +22,7 @@ class BreakCategory(models.Model): help_text=_("Number of breaking teams in this category")) is_general = models.BooleanField( verbose_name=_("is general"), - help_text=_("True if most teams eligible for this category, e.g. Open, False otherwise")) + help_text=_("Are teams eligible for this break by default")) priority = models.IntegerField( verbose_name=_("priority"), help_text=_("If a team breaks in multiple categories, higher priority " diff --git a/tabbycat/breakqual/templates/breaking_index.html b/tabbycat/breakqual/templates/breaking_index.html index a8b9135de5a..ce14f6da4c6 100644 --- a/tabbycat/breakqual/templates/breaking_index.html +++ b/tabbycat/breakqual/templates/breaking_index.html @@ -10,7 +10,7 @@ {% blocktrans trimmed asvar message %} This tournament does not have any break categories set up. You can read about how to create breaks - at our documentation. diff --git a/tabbycat/breakqual/utils.py b/tabbycat/breakqual/utils.py index f07dd17f397..f0ab0a007ef 100644 --- a/tabbycat/breakqual/utils.py +++ b/tabbycat/breakqual/utils.py @@ -55,7 +55,7 @@ def breakcategories_with_counts(tournament): def liveness(self, team, teams_count, prelims, current_round): live_info = {'text': team.wins_count, 'tooltip': ''} - # The actual calculation should be shifed to be a cached method on + # The actual calculation should be shifted to be a cached method on # the relevant break category highest_liveness = 3 for bc in team.break_categories.all(): @@ -144,17 +144,17 @@ def calculate_live_thresholds(bc, tournament, round): def get_break_category_round_names(bc): return [ # Translators: abbreviation for "finals" - first character of category name - (_("%s Finals") % (bc.name), _("%sF") % (bc.name[:1])), + (_("%s Finals") % bc.name, _("%sF") % (bc.name[:1])), # Translators: abbreviation for "semifinals" - first character of category name - (_("%s Semifinals") % (bc.name), _("%sSF") % (bc.name[:1])), + (_("%s Semifinals") % bc.name, _("%sSF") % (bc.name[:1])), # Translators: abbreviation for "quarterfinals" - first character of category name - (_("%s Quarterfinals") % (bc.name), _("%sQF") % (bc.name[:1])), + (_("%s Quarterfinals") % bc.name, _("%sQF") % (bc.name[:1])), # Translators: abbreviation for "octofinals" - first character of category name - (_("%s Octofinals") % (bc.name), _("%sOF") % (bc.name[:1])), + (_("%s Octofinals") % bc.name, _("%sOF") % (bc.name[:1])), # Translators: abbreviation for "double-octofinals" - first character of category name - (_("%s Double-Octofinals") % (bc.name), _("%sDOF") % (bc.name[:1])), + (_("%s Double-Octofinals") % bc.name, _("%sDOF") % (bc.name[:1])), # Translators: abbreviation for "triple-octofinals" - first character of category name - (_("%s Triple-Octofinals") % (bc.name), _("%sTOF") % (bc.name[:1])), + (_("%s Triple-Octofinals") % bc.name, _("%sTOF") % (bc.name[:1])), ] @@ -166,7 +166,7 @@ def auto_make_break_rounds(bc, tournament=None, prefix=False): round_names = get_break_category_round_names(bc) if prefix else BREAK_ROUND_NAMES # Translators: "UBR" stands for "unknown break round" (used as a fallback when we don't know what it's called) - unknown_round = (_("Unknown %s break round") % (bc.name), _("U%sBR") % (bc.name[:1])) if prefix \ + unknown_round = (_("Unknown %s break round") % bc.name, _("U%sBR") % (bc.name[:1])) if prefix \ else (_("Unknown break round"), _("UBR")) break_rounds = itertools.chain(round_names, itertools.repeat(unknown_round)) @@ -176,10 +176,10 @@ def auto_make_break_rounds(bc, tournament=None, prefix=False): tournament=tournament, break_category=bc, seq=num_rounds+bc.num_break_rounds-i, - stage=Round.STAGE_ELIMINATION, + stage=Round.Stage.ELIMINATION, name=name, abbreviation=abbr, - draw_type=Round.DRAW_ELIMINATION, + draw_type=Round.DrawType.ELIMINATION, feedback_weight=0.5, silent=True, ).save() diff --git a/tabbycat/breakqual/views.py b/tabbycat/breakqual/views.py index 2c46434128d..b775a53757b 100644 --- a/tabbycat/breakqual/views.py +++ b/tabbycat/breakqual/views.py @@ -3,15 +3,16 @@ from django.conf import settings from django.contrib import messages +from django.core.exceptions import ValidationError from django.db.models import Count, Q -from django.forms import HiddenInput -from django.forms.models import BaseModelFormSet +from django.forms import HiddenInput, ModelForm from django.utils.html import escape from django.utils.translation import gettext as _, ngettext from django.views.generic import FormView, TemplateView from actionlog.mixins import LogActionMixin from actionlog.models import ActionLogEntry +from draw.generator.utils import ispow2 from participants.models import Team from participants.views import EditSpeakerCategoriesView, UpdateEligibilityEditView as BaseUpdateEligibilityEditView from tournaments.mixins import PublicTournamentPageMixin, SingleObjectFromTournamentMixin, TournamentMixin @@ -230,19 +231,18 @@ class PublicBreakingAdjudicatorsView(PublicTournamentPageMixin, BaseBreakingAdju # ============================================================================== -class BreakCategoryModelFormSet(BaseModelFormSet): - """Class to handle the different procedures for creation and modification - in BreakCategory objects.""" +class BreakCategoryModelForm(ModelForm): + """Class to handle validating the break size, as can't add validator""" - def save_new(self, form, commit=True): - """Create break rounds for new break categories""" - bc = super().save_new(form, commit) - auto_make_break_rounds(bc, prefix=True) - return bc + def __init__(self, *args, **kwargs): + self.tournament = kwargs.pop('tournament') + super().__init__(*args, **kwargs) - def save_existing(self, form, instance, commit=True): - """Stub for deleting/creating break rounds if break size changes""" - return super().save_existing(form, instance, commit) + def clean_break_size(self): + bs = self.cleaned_data['break_size'] + if self.tournament.pref('teams_in_debate') == 'bp' and not ((bs % 6 == 0 and ispow2(bs // 6)) or (bs >= 4 and ispow2(bs))): + raise ValidationError(_("Four-team formats require the break size to be either six times or four times a power of two.")) + return bs class EditBreakCategoriesView(EditSpeakerCategoriesView): @@ -260,14 +260,20 @@ class EditBreakCategoriesView(EditSpeakerCategoriesView): def get_formset_factory_kwargs(self): return { - 'fields': ('name', 'tournament', 'slug', 'seq', 'break_size', 'is_general', 'priority', 'limit'), + 'fields': ('name', 'tournament', 'slug', 'break_size', 'is_general', 'priority', 'limit'), 'extra': 2, 'widgets': { 'tournament': HiddenInput, }, - 'formset': BreakCategoryModelFormSet, + 'form': BreakCategoryModelForm, } + def get_formset_kwargs(self): + return {'form_kwargs': {'tournament': self.tournament}} + + def prepare_related(self, cat): + auto_make_break_rounds(cat, prefix=True) + class EditTeamEligibilityView(AdministratorMixin, TournamentMixin, VueTableTemplateView): diff --git a/tabbycat/checkins/admin.py b/tabbycat/checkins/admin.py index ee54d9a79e8..5fd10fd0296 100644 --- a/tabbycat/checkins/admin.py +++ b/tabbycat/checkins/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from django.utils.translation import gettext_lazy as _ from utils.admin import ModelAdmin @@ -32,14 +33,17 @@ class VenueIdentifierAdmin(ModelAdmin): @admin.register(Event) class CheckinEventAdmin(ModelAdmin): - list_display = ('identifier', 'polymorphic_ctype', 'checkin_time') + list_display = ('identifier', 'checkin_type', 'checkin_time') list_filter = ('identifier', 'identifier__polymorphic_ctype') - def polymorphic_ctype(self, obj): - return obj.identifier.polymorphic_ctype.model + @admin.display(description=_("Type")) + def checkin_type(self, obj): + klass = obj.identifier.polymorphic_ctype.model_class() + return klass._meta.get_field(klass.instance_attr).remote_field.model._meta.verbose_name def get_queryset(self, request): return super().get_queryset(request).select_related(None).prefetch_related('identifier__polymorphic_ctype') + @admin.display(description=_("Checkin time")) def checkin_time(self, obj): return obj.time.strftime("%d %b %Y %H:%M:%S.%f") diff --git a/tabbycat/checkins/migrations/0003_auto_20181224_1549.py b/tabbycat/checkins/migrations/0003_auto_20181224_1549.py index 3140e3535dd..7d560723da9 100644 --- a/tabbycat/checkins/migrations/0003_auto_20181224_1549.py +++ b/tabbycat/checkins/migrations/0003_auto_20181224_1549.py @@ -6,13 +6,11 @@ import django.db.models.deletion -def add_polymorphic_ctype_for_identifier(apps, schema_editor): - ContentType = apps.get_model('contenttypes', 'ContentType') - - for model_name in ['PersonIdentifier', 'DebateIdentifier', 'VenueIdentifier']: - model = apps.get_model('checkins', model_name) - new_ct = ContentType.objects.get_for_model(model) - model.objects.filter(polymorphic_ctype__isnull=True).update(polymorphic_ctype=new_ct) +def create_migration_sql_query(model): + return migrations.RunSQL( + "UPDATE checkins_identifier ci SET polymorphic_ctype_id=(SELECT id FROM django_content_type WHERE app_label='checkins' AND model='%s' LIMIT 1) FROM checkins_%s c WHERE c.identifier_ptr_id=ci.id AND ci.polymorphic_ctype_id IS NULL;" % (model, model), + migrations.RunSQL.noop, + ) class Migration(migrations.Migration): @@ -37,8 +35,7 @@ class Migration(migrations.Migration): name='barcode', field=models.CharField(default=checkins.models.generate_identifier, max_length=20, unique=True, validators=[django.core.validators.RegexValidator('^[0-9]{6}$', message='The barcode must contain exactly six digits.')], verbose_name='barcode'), ), - migrations.RunPython( - add_polymorphic_ctype_for_identifier, - migrations.RunPython.noop - ), + create_migration_sql_query('personidentifier'), + create_migration_sql_query('debateidentifier'), + create_migration_sql_query('venueidentifier'), ] diff --git a/tabbycat/checkins/models.py b/tabbycat/checkins/models.py index 25197637151..ef63372d819 100644 --- a/tabbycat/checkins/models.py +++ b/tabbycat/checkins/models.py @@ -11,7 +11,7 @@ def generate_identifier(): - # First number should not be 0 so it is easier import into Excel etc + # First number should not be 0 so that it is easier import into Excel etc new_id = str(random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])) + generate_identifier_string(digits, 5) if Identifier.objects.filter(barcode=new_id).count() == 0: return new_id diff --git a/tabbycat/checkins/templates/CheckInScanContainer.vue b/tabbycat/checkins/templates/CheckInScanContainer.vue index 66988e278c4..d8be11e81c9 100644 --- a/tabbycat/checkins/templates/CheckInScanContainer.vue +++ b/tabbycat/checkins/templates/CheckInScanContainer.vue @@ -99,7 +99,7 @@ export default { const promise = document.getElementById(elementID).play() if (promise !== undefined) { promise.catch(() => { - // Auto-play was prevented + // Autoplay was prevented // Show a UI element to let the user manually start playback console.debug('Safari autoplay ... needs permission for sound') }) diff --git a/tabbycat/checkins/templates/CheckInStatusContainer.vue b/tabbycat/checkins/templates/CheckInStatusContainer.vue index 059132d2c80..768058ed24d 100644 --- a/tabbycat/checkins/templates/CheckInStatusContainer.vue +++ b/tabbycat/checkins/templates/CheckInStatusContainer.vue @@ -272,7 +272,7 @@ export default { } }, statusForGroup: function (entities) { - // Check if all entites within a group are checked in + // Check if all entities within a group are checked in const statuses = entities.map(e => e.status.time) const groupStatuses = statuses.every(time => time !== undefined) return groupStatuses diff --git a/tabbycat/checkins/templates/checkin_ids.html b/tabbycat/checkins/templates/checkin_ids.html index c51392f7cc8..c16cdedfddb 100644 --- a/tabbycat/checkins/templates/checkin_ids.html +++ b/tabbycat/checkins/templates/checkin_ids.html @@ -38,7 +38,7 @@
{{ check_info.title }}
{% trans "Generate all identifiers" as text %} {% endif %}
-
+ {% csrf_token %}
diff --git a/tabbycat/draw/admin.py b/tabbycat/draw/admin.py index bb95b1919bb..e42a36d94a1 100644 --- a/tabbycat/draw/admin.py +++ b/tabbycat/draw/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from django.db.models import Prefetch -from django.utils.translation import gettext_lazy, ngettext +from django.utils.translation import gettext_lazy as _, ngettext from adjallocation.models import DebateAdjudicator from utils.admin import ModelAdmin, TabbycatModelAdminFieldsMixin @@ -49,6 +49,7 @@ class DebateAdmin(ModelAdmin): list_editable = ('result_status', 'sides_confirmed') inlines = (DebateTeamInline, DebateAdjudicatorInline) raw_id_fields = ('venue',) + actions = ('mark_as_sides_confirmed', 'mark_as_sides_not_confirmed') def get_queryset(self, request): return super().get_queryset(request).select_related( @@ -58,28 +59,6 @@ def get_queryset(self, request): 'venue__venuecategory_set', ) - actions = list() - for value, verbose_name in Debate.STATUS_CHOICES: - - def _make_set_result_status(value, verbose_name): # noqa: N805 - def _set_result_status(modeladmin, request, queryset): - count = queryset.update(result_status=value) - for obj in queryset: - modeladmin.log_change(request, obj, [{"changed": {"fields": ["result_status"]}}]) - message = ngettext("%(count)d debate had its status set to %(status)s.", - "%(count)d debates had their statuses set to %(status)s.", count) % { - 'count': count, 'status': verbose_name} - modeladmin.message_user(request, message) - - # so that they look different to DebateAdmin - _set_result_status.__name__ = "set_result_status_%s" % verbose_name.lower() - _set_result_status.short_description = gettext_lazy("Set result status to " - "%(status)s") % {'status': verbose_name} - return _set_result_status - - actions.append(_make_set_result_status(value, verbose_name)) - del value, verbose_name # for fail-fast - def mark_as_sides_confirmed(self, request, queryset): updated = queryset.update(sides_confirmed=True) for obj in queryset: @@ -91,6 +70,7 @@ def mark_as_sides_confirmed(self, request, queryset): ) % {'count': updated} self.message_user(request, message) + @admin.display(description=_("Mark sides as not confirmed")) def mark_as_sides_not_confirmed(self, request, queryset): updated = queryset.update(sides_confirmed=False) for obj in queryset: @@ -101,5 +81,3 @@ def mark_as_sides_not_confirmed(self, request, queryset): updated, ) % {'count': updated} self.message_user(request, message) - - actions.extend(['mark_as_sides_confirmed', 'mark_as_sides_not_confirmed']) diff --git a/tabbycat/draw/dbutils.py b/tabbycat/draw/dbutils.py index 01066dedb21..4e4fef3b511 100644 --- a/tabbycat/draw/dbutils.py +++ b/tabbycat/draw/dbutils.py @@ -5,5 +5,5 @@ def delete_round_draw(round, **options): Debate.objects.filter(round=round).delete() - round.draw_status = Round.STATUS_NONE + round.draw_status = Round.Status.NONE round.save() diff --git a/tabbycat/draw/generator/__init__.py b/tabbycat/draw/generator/__init__.py index be232c43a9a..62178ed6ea2 100644 --- a/tabbycat/draw/generator/__init__.py +++ b/tabbycat/draw/generator/__init__.py @@ -3,8 +3,8 @@ from .common import BasePairDrawGenerator, DrawFatalError, DrawUserError, ManualDrawGenerator from .pairing import ResultPairing, BPEliminationResultPairing from .elimination import FirstEliminationDrawGenerator, SubsequentEliminationDrawGenerator -from .powerpair import PowerPairedDrawGenerator, PowerPairedWithAllocatedSidesDrawGenerator -from .random import RandomBPDrawGenerator, RandomDrawGenerator, RandomWithAllocatedSidesDrawGenerator +from .powerpair import AustralsPowerPairedDrawGenerator, GraphPowerPairedDrawGenerator, AustralsPowerPairedWithAllocatedSidesDrawGenerator, GraphPowerPairedWithAllocatedSidesDrawGenerator +from .random import RandomBPDrawGenerator, GraphRandomDrawGenerator, GraphRandomWithAllocatedSidesDrawGenerator, SwapRandomDrawGenerator, SwapRandomWithAllocatedSidesDrawGenerator from .bphungarian import BPHungarianDrawGenerator from .bpelimination import (PartialBPEliminationDrawGenerator, AfterPartialBPEliminationDrawGenerator, FirstBPEliminationDrawGenerator, SubsequentBPEliminationDrawGenerator) @@ -25,6 +25,51 @@ ("pullup", _("Pull-up team")), ) +def get_two_team_generator(draw_type, avoid_conflicts='australs', side_allocations=None, **kwargs): + + if draw_type == "first_elimination": + return FirstEliminationDrawGenerator + elif draw_type == "elimination": + return SubsequentEliminationDrawGenerator + elif avoid_conflicts == 'graph': + if draw_type == "random": + if side_allocations == "preallocated": + return GraphRandomWithAllocatedSidesDrawGenerator + else: + return GraphRandomDrawGenerator + elif draw_type == "power_paired": + if side_allocations == "preallocated": + return GraphPowerPairedWithAllocatedSidesDrawGenerator + else: + return GraphPowerPairedDrawGenerator + else: + if draw_type == "random": + if side_allocations == "preallocated": + return SwapRandomWithAllocatedSidesDrawGenerator + else: + return SwapRandomDrawGenerator + elif draw_type == "power_paired": + if side_allocations == "preallocated": + return AustralsPowerPairedWithAllocatedSidesDrawGenerator + else: + return AustralsPowerPairedDrawGenerator + else: + raise ValueError("Unrecognised draw type for two-team draw: {}".format(draw_type)) + + +def get_bp_generator(draw_type): + try: + return { + "random": RandomBPDrawGenerator, + "power_paired": BPHungarianDrawGenerator, + "partial_elimination": PartialBPEliminationDrawGenerator, + "after_partial_elimination": AfterPartialBPEliminationDrawGenerator, + "first_elimination": FirstBPEliminationDrawGenerator, + "elimination": SubsequentBPEliminationDrawGenerator + }[draw_type] + except KeyError: + raise ValueError("Unrecognised draw type for BP draw: {}".format(draw_type)) + def DrawGenerator(teams_per_debate, draw_type, teams, results=None, rrseq=None, **kwargs): # noqa: N802 (factory function) """Factory for draw objects. @@ -33,43 +78,14 @@ def DrawGenerator(teams_per_debate, draw_type, teams, results=None, rrseq=None, 'first_elimination' and 'elimination'. """ - if teams_per_debate == 'two': - if draw_type == "random": - if kwargs.get('side_allocations') == "preallocated": - klass = RandomWithAllocatedSidesDrawGenerator - else: - klass = RandomDrawGenerator - elif draw_type == "manual": - klass = ManualDrawGenerator - elif draw_type == "power_paired": - if kwargs.get('side_allocations') == "preallocated": - klass = PowerPairedWithAllocatedSidesDrawGenerator - else: - klass = PowerPairedDrawGenerator - elif draw_type == "first_elimination": - klass = FirstEliminationDrawGenerator - elif draw_type == "elimination": - klass = SubsequentEliminationDrawGenerator - else: - raise ValueError("Unrecognised draw type for two-team draw: {}".format(draw_type)) + if draw_type == "manual": + klass = ManualDrawGenerator + + elif teams_per_debate == 'two': + klass = get_two_team_generator(draw_type, **kwargs) elif teams_per_debate == 'bp': - if draw_type == "random": - klass = RandomBPDrawGenerator - elif draw_type == "manual": - klass = ManualDrawGenerator - elif draw_type == "power_paired": - klass = BPHungarianDrawGenerator - elif draw_type == "partial_elimination": - klass = PartialBPEliminationDrawGenerator - elif draw_type == "after_partial_elimination": - klass = AfterPartialBPEliminationDrawGenerator - elif draw_type == "first_elimination": - klass = FirstBPEliminationDrawGenerator - elif draw_type == "elimination": - klass = SubsequentBPEliminationDrawGenerator - else: - raise ValueError("Unrecognised draw type for BP draw: {}".format(draw_type)) + klass = get_bp_generator(draw_type) else: raise ValueError("Unrecognised teams-per-debate option: {}".format(teams_per_debate)) diff --git a/tabbycat/draw/generator/bpelimination.py b/tabbycat/draw/generator/bpelimination.py index 7a2e70e41e1..d5354376087 100644 --- a/tabbycat/draw/generator/bpelimination.py +++ b/tabbycat/draw/generator/bpelimination.py @@ -71,7 +71,7 @@ def make_pairings(self): ndebates = nbypassing // 2 if len(self.results) != ndebates: raise DrawUserError(_("The room ranks of the partial elimination round indicate " - "that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from " + "that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from " "it." % {'nbypassing': nbypassing, 'nadvancing': ndebates * 2})) # Fold the bypassing teams two-way diff --git a/tabbycat/draw/generator/bphungarian.py b/tabbycat/draw/generator/bphungarian.py index 26e06dd2307..3c075205228 100644 --- a/tabbycat/draw/generator/bphungarian.py +++ b/tabbycat/draw/generator/bphungarian.py @@ -40,7 +40,7 @@ class BPHungarianDrawGenerator(BaseBPDrawGenerator): empirical distribution associated with the position history of the team, H_α(p) is the Rényi entropy of order α thereof, and n is the number of rounds the team - has competed in). See the "renyi_order" option below. + has competed in. See the "renyi_order" option below. "variance" - The population variance of multiplicities in the history. diff --git a/tabbycat/draw/generator/common.py b/tabbycat/draw/generator/common.py index 05bc004d36c..6b31bf373ee 100644 --- a/tabbycat/draw/generator/common.py +++ b/tabbycat/draw/generator/common.py @@ -155,14 +155,19 @@ class BasePairDrawGenerator(BaseDrawGenerator): "history_penalty" - "avoid_institution" - if True, draw tries to avoid pairing teams that are from the same institution. + "side_penalty" - A penalty to apply when optimizing with side balance """ BASE_DEFAULT_OPTIONS = { - "side_allocations" : "balance", - "avoid_history" : True, - "avoid_institution" : True, - "history_penalty" : 1e3, - "institution_penalty": 1, + "side_allocations" : "balance", + "avoid_history" : True, + "avoid_institution" : True, + "history_penalty" : 1e3, + "institution_penalty" : 1, + "side_penalty" : 0, + "pullup_debates_penalty": 0, + "pairing_penalty" : 0, + "avoid_conflicts" : "off", } TEAMS_PER_DEBATE = 2 diff --git a/tabbycat/draw/generator/graph.py b/tabbycat/draw/generator/graph.py new file mode 100644 index 00000000000..2e37a8251f6 --- /dev/null +++ b/tabbycat/draw/generator/graph.py @@ -0,0 +1,96 @@ +from collections import OrderedDict + +import munkres +import networkx as nx + + +def sign(n: int) -> int: + """Sign function for integers, -1, 0, or 1""" + try: + return n // abs(n) + except ZeroDivisionError: + return 0 + + +class GraphGeneratorMixin: + def avoid_conflicts(self, pairings): + """Graph optimisation avoids conflicts, so method is extraneous.""" + pass + + def assignment_cost(self, t1, t2, size, bracket=None): + if t1 is t2: # Same team + return + + penalty = 0 + if self.options["avoid_history"]: + penalty += t1.seen(t2) * self.options["history_penalty"] + if self.options["avoid_institution"] and t1.same_institution(t2): + penalty += self.options["institution_penalty"] + + # Add penalty of a side imbalance + if self.options["side_allocations"] == "balance" and self.options["side_penalty"] > 0: + t1_affs, t1_negs = t1.side_history + t2_affs, t2_negs = t2.side_history + + # Only declare an imbalance if both sides have been on the same side more often + # Affs are positive, negs are negative. If teams have opposite signs, negative imbalance + # gets reduced to 0. Equalities have no restriction on the side to be allocated so + # cancel as well. neg*neg -> pos + imbalance = max(0, sign(t1_affs - t1_negs) * sign(t2_affs - t2_negs)) + + # Get median imbalance between the two as a coefficient for the penalty to apply + # This would prefer an imbalance of (+5 - +1) becoming (+4 - +2) rather than + # (+5 - +4) becoming (+4 - +5), in a severe case. + magnitude = (abs(t1_affs - t1_negs) + abs(t2_affs - t2_negs)) // 2 + penalty += imbalance * magnitude * self.options["side_penalty"] + + return penalty + + def generate_pairings(self, brackets): + """Creates an undirected weighted graph for each bracket and gets the minimum weight matching""" + from .pairing import Pairing + pairings = OrderedDict() + i = 0 + for j, (points, teams) in enumerate(brackets.items()): + pairings[points] = [] + graph = nx.Graph() + n_teams = len(teams) + for t1 in teams: + for t2 in teams: + penalty = self.assignment_cost(t1, t2, n_teams, j) + if penalty is not None: + graph.add_edge(t1, t2, weight=penalty) + + for pairing in nx.min_weight_matching(graph): + i += 1 + pairings[points].append(Pairing(teams=pairing, bracket=points, room_rank=i)) + + return pairings + + +class GraphAllocatedSidesMixin(GraphGeneratorMixin): + """Use Hungarian algorithm rather than Bloom. + + This is possible as assigning the sides creates a bipartite graph rather than + a more complete graph.""" + + def assignment_cost(self, t1, t2, size): + penalty = super().assignment_cost(t1, t2, size) + if penalty is None: + return munkres.DISALLOWED + return penalty + + def generate_pairings(self, brackets): + from .pairing import Pairing + pairings = OrderedDict() + i = 0 + for points, pool in brackets.items(): + pairings[points] = [] + n_teams = len(pool['aff']) + len(pool['neg']) + matrix = [[self.assignment_cost(aff, neg, n_teams) for neg in pool['neg']] for aff in pool['aff']] + + for i_aff, i_neg in munkres.Munkres().compute(matrix): + i += 1 + pairings[points].append(Pairing(teams=[pool['aff'][i_aff], pool['neg'][i_neg]], bracket=points, room_rank=i)) + + return pairings diff --git a/tabbycat/draw/generator/one_up_one_down.py b/tabbycat/draw/generator/one_up_one_down.py index 9d900601e46..704ceab4462 100644 --- a/tabbycat/draw/generator/one_up_one_down.py +++ b/tabbycat/draw/generator/one_up_one_down.py @@ -29,7 +29,7 @@ def dp(data): The second item is the indices of the elements in data that have the maximum possible sum, subject to the constraint that you can't pick two adjacent elements. Note that negative elements will never be included, - since they always reduce the sum so it is better to exclude them. (The + since they always reduce the sum so that it is better to exclude them. (The constraint does not say that you must pick every other element.) For example, if 'data' is a list of "swap scores", this would return a list of indices of the optimal swap combinations. The first item is the @@ -117,7 +117,7 @@ def run(self, draw): representing the entire draw""" # Find a list of integers representing how much better you get by - # executing the each team with the team below. + # executing each team with the team below. swap_scores = [(self.score_swap(draw[i], draw[i+1])) for i in range(len(draw) - 1)] # Adjust scores so that if there are two equivalent ways to resolve a diff --git a/tabbycat/draw/generator/powerpair.py b/tabbycat/draw/generator/powerpair.py index 46ba4a7c94b..777a21111b5 100644 --- a/tabbycat/draw/generator/powerpair.py +++ b/tabbycat/draw/generator/powerpair.py @@ -1,17 +1,19 @@ import random from collections import OrderedDict +from typing import Optional from django.utils.translation import gettext as _ from .common import BasePairDrawGenerator, DrawFatalError, DrawUserError +from .graph import GraphAllocatedSidesMixin, GraphGeneratorMixin from .one_up_one_down import OneUpOneDownSwapper from .pairing import Pairing -class PowerPairedDrawGenerator(BasePairDrawGenerator): +class BasePowerPairedDrawGenerator(BasePairDrawGenerator): """Power-paired draw. - If there are allocated sides, use PowerPairedWithAllocatedSidesDrawGenerator + If there are allocated sides, use BasePowerPairedWithAllocatedSidesDrawGenerator instead. Options: @@ -56,6 +58,8 @@ class PowerPairedDrawGenerator(BasePairDrawGenerator): "one_up_one_down" - Swap conflicted teams with the debate above or below, in accordance with Australasian Intervarsity Debating Association rules. + "graph" - Find the minimum-cost matching in a generated + graph of the teams in a bracket. """ requires_even_teams = True @@ -66,6 +70,15 @@ class PowerPairedDrawGenerator(BasePairDrawGenerator): "pairing_method" : "slide", "avoid_conflicts" : "one_up_one_down", "pullup_restriction" : "none", + "pullup_debates_penalty": 0, + } + + PAIRING_FUNCTIONS = { + "fold" : "_pairings_fold", + "slide" : "_pairings_slide", + "random" : "_pairings_random", + "adjacent" : "_pairings_adjacent", + "fold_top_adjacent_rest": "_pairings_fold_top_adjacent_rest", } def __init__(self, *args, **kwargs): @@ -87,8 +100,10 @@ def __init__(self, *args, **kwargs): def generate(self): self._brackets = self._make_raw_brackets() self.resolve_odd_brackets(self._brackets) # operates in-place + self._pairings = self.generate_pairings(self._brackets) self.avoid_conflicts(self._pairings) # operates in-place + self._draw = list() for bracket in self._pairings.values(): self._draw.extend(bracket) @@ -112,7 +127,6 @@ def _make_raw_brackets(self): return brackets # Pullup restrictions - PULLUP_RESTRICTION_METRICS = { "least_to_date": "npullups", "lowest_ds_wins": "draw_strength", @@ -136,7 +150,6 @@ def _pullup_filter(self, teams): return [team for team in teams if getattr(team, metric) == least] # Odd bracket resolutions - ODD_BRACKET_FUNCTIONS = { "pullup_top" : "_pullup_top", "pullup_bottom" : "_pullup_bottom", @@ -178,6 +191,8 @@ def _pullup(self, brackets, pos): pullup_team = pullup_eligible_teams[pos(len(pullup_eligible_teams))] teams.remove(pullup_team) self.add_team_flag(pullup_team, "pullup") + if hasattr(pullup_team, 'subrank'): + pullup_team.subrank = None pullup_needed_for.append(pullup_team) pullup_needed_for = None @@ -258,14 +273,54 @@ def _check_conflict(team1, team2): # if nothing worked, add a "didn't work" flag self.add_team_flag(teams[0], "no_bub_updn") - # Pairings generation - PAIRING_FUNCTIONS = { - "fold" : "_pairings_fold", - "slide" : "_pairings_slide", - "random" : "_pairings_random", - "adjacent" : "_pairings_adjacent", - "fold_top_adjacent_rest": "_pairings_fold_top_adjacent_rest", - } + +class GraphCostMixin: + + def assignment_cost(self, t1, t2, size, bracket=None): + penalty = super().assignment_cost(t1, t2, size) + if penalty is None: + return None + + # Add penalty for seeing the pullup again + has_pullup = 'pullup' in self.team_flags.get(t1, []) or 'pullup' in self.team_flags.get(t2, []) + if self.options["pullup_debates_penalty"] and has_pullup: + penalty += max(t1.pullup_debates, t2.pullup_debates) * self.options["pullup_debates_penalty"] + + if self.options["pairing_method"] != "random": + subpool_penalty_func = self.get_option_function("pairing_method", self.PAIRING_FUNCTIONS) + + # Set the subrank to be last for pulled-up teams + for team in [t1, t2]: + if team.subrank is None: + team.subrank = size + + penalty += subpool_penalty_func([t1, t2], size, bracket) * self.options["pairing_penalty"] + return penalty + + @staticmethod + def _pairings_slide(teams, size: int, bracket: Optional[int] = None) -> int: + return abs(abs(teams[0].subrank - teams[1].subrank) - size // 2) + + @staticmethod + def _pairings_fold(teams, size: int, bracket: Optional[int] = None) -> int: + return abs(teams[0].subrank + teams[1].subrank - 1 - size) + + @staticmethod + def _pairings_random(teams, size: int, bracket: Optional[int] = None) -> int: + return 0 + + @staticmethod + def _pairings_adjacent(teams, size: int, bracket: Optional[int] = None) -> int: + return abs(teams[0].subrank - teams[1].subrank) - 1 + + @classmethod + def _pairings_fold_top_adjacent_rest(cls, teams, size: int, bracket: Optional[int] = None) -> int: + if bracket == 0: + return cls._pairings_fold(teams, size) + return cls._pairings_adjacent(teams, size) + + +class AustralsPairingMixin: def generate_pairings(self, brackets): """Returns a function taking an OrderedDict as returned by @@ -280,10 +335,10 @@ def _pairings(brackets, subpool_func): for points, teams in brackets.items(): bracket = list() top, bottom = subpool_func(teams) - for teams in zip(top, bottom): - pairing = Pairing(teams=teams, bracket=points, room_rank=i) + for p_teams in zip(top, bottom): + pairing = Pairing(teams=p_teams, bracket=points, room_rank=i) bracket.append(pairing) - i = i + 1 + i += 1 pairings[points] = bracket return pairings @@ -295,10 +350,10 @@ def _pairings_top_special(brackets, top_subpool_func, rest_subpool_func): for (points, teams), subpool_func in zip(brackets.items(), subpool_funcs): bracket = list() top, bottom = subpool_func(teams) - for teams in zip(top, bottom): - pairing = Pairing(teams=teams, bracket=points, room_rank=i) + for p_teams in zip(top, bottom): + pairing = Pairing(teams=p_teams, bracket=points, room_rank=i) bracket.append(pairing) - i = i + 1 + i += 1 pairings[points] = bracket return pairings @@ -350,9 +405,9 @@ def _pairings_fold_top_adjacent_rest(cls, brackets): return cls._pairings_top_special(brackets, cls._subpool_fold, cls._subpool_adjacent) # Conflict avoidance - AVOID_CONFLICT_FUNCTIONS = { "one_up_one_down": "_one_up_one_down", + "graph" : None, } def avoid_conflicts(self, pairings): @@ -377,8 +432,8 @@ def _one_up_one_down(self, pairings): swaps = swapper.swaps for i, (pairing, orig, new) in enumerate(zip(bracket, pairs_orig, pairs_new)): - assert(tuple(pairing.teams) == orig) - assert((i in swaps or i-1 in swaps) == (orig != new)) + assert tuple(pairing.teams) == orig + assert (i in swaps or i-1 in swaps) == (orig != new) if orig != new: if pairing.conflict_hist: pairing.add_flag("1u1d_hist") @@ -389,9 +444,17 @@ def _one_up_one_down(self, pairings): pairing.teams = list(new) -class PowerPairedWithAllocatedSidesDrawGenerator(PowerPairedDrawGenerator): +class GraphPowerPairedDrawGenerator(GraphCostMixin, GraphGeneratorMixin, BasePowerPairedDrawGenerator): + pass + + +class AustralsPowerPairedDrawGenerator(AustralsPairingMixin, BasePowerPairedDrawGenerator): + pass + + +class PowerPairedWithAllocatedSidesDrawGenerator(BasePowerPairedDrawGenerator): """Power-paired draw with allocated sides. - Overrides functions of PowerPairedDrawGenerator where sides need to be constrained. + Override functions of PowerPairedDrawGenerator where sides need to be constrained. All teams must have an 'allocated_side' attribute which must be either 'aff' or 'neg' (case-sensitive). Options are as for PowerPairedDrawGenerator, except that the allowable values @@ -656,6 +719,13 @@ def _intermediate_brackets_with_up_down(): from the allowable list above.""" raise NotImplementedError("Intermediate brackets with conflict avoidance isn't supported with allocated sides.") + +class GraphPowerPairedWithAllocatedSidesDrawGenerator(GraphCostMixin, GraphAllocatedSidesMixin, PowerPairedWithAllocatedSidesDrawGenerator): + pass + + +class AustralsPowerPairedWithAllocatedSidesDrawGenerator(AustralsPairingMixin, PowerPairedWithAllocatedSidesDrawGenerator): + @staticmethod def _pairings(brackets, presort_func): pairings = OrderedDict() diff --git a/tabbycat/draw/generator/random.py b/tabbycat/draw/generator/random.py index 9747360ef54..e4fddd25d4f 100644 --- a/tabbycat/draw/generator/random.py +++ b/tabbycat/draw/generator/random.py @@ -5,6 +5,7 @@ from django.utils.translation import gettext as _ from .common import BaseBPDrawGenerator, BasePairDrawGenerator, DrawUserError +from .graph import GraphAllocatedSidesMixin, GraphGeneratorMixin from .pairing import BPPairing, Pairing @@ -21,7 +22,7 @@ def make_random_pairings(self): return pairings -class RandomDrawGenerator(RandomPairingsMixin, BasePairDrawGenerator): +class BaseRandomDrawGenerator(RandomPairingsMixin, BasePairDrawGenerator): """Random draw. If there are allocated sides, use RandomDrawWithSideConstraints instead. Options: @@ -44,6 +45,17 @@ def generate(self): self.allocate_sides(self._draw) # Operates in-place return self._draw + def _get_pools(self): + return list(self.teams) + + +class GraphRandomDrawMixin: + def make_random_pairings(self): + return self.generate_pairings({0: self._get_pools()})[0] + + +class SwapRandomDrawMixin: + def avoid_conflicts(self, pairings): # Don't swap sides! The child class RandomDrawWithSideConstraints assumes # that in this algorithm, affs will stay affs and negs will stay negs. @@ -70,7 +82,7 @@ def avoid_conflicts(self, pairings): pairing.flags.append("max_swapped") def _badness(self, *pairings): - """Returns a weighted conflict intensity for all of the pairings given.""" + """Returns a weighted conflict intensity for all the pairings given.""" score = 0 if self.options["avoid_history"]: score += sum([x.conflict_hist for x in pairings]) * self.options["history_penalty"] @@ -79,16 +91,34 @@ def _badness(self, *pairings): return score -class RandomWithAllocatedSidesDrawGenerator(RandomDrawGenerator): +class GraphRandomDrawGenerator(GraphGeneratorMixin, GraphRandomDrawMixin, BaseRandomDrawGenerator): + pass + + +class SwapRandomDrawGenerator(SwapRandomDrawMixin, BaseRandomDrawGenerator): + pass + + +class BaseRandomWithAllocatedSidesDrawGenerator(BaseRandomDrawGenerator): """Random draw with allocated sides. - Overrides functions of RandomDrawGenerator where sides need to be constrained. + Override functions of RandomDrawGenerator where sides need to be constrained. All teams must have an 'allocated_side' attribute which must be either 'aff' or 'neg' (case-sensitive).""" def __init__(self, *args, **kwargs): - super(RandomWithAllocatedSidesDrawGenerator, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.check_teams_for_attribute("allocated_side", choices=["aff", "neg"]) + def _get_pools(self): + return {side: [t for t in self.teams if t.allocated_side == side] for side in ['aff', 'neg']} + + +class GraphRandomWithAllocatedSidesDrawGenerator(GraphAllocatedSidesMixin, GraphRandomDrawMixin, BaseRandomWithAllocatedSidesDrawGenerator): + pass + + +class SwapRandomWithAllocatedSidesDrawGenerator(SwapRandomDrawMixin, BaseRandomWithAllocatedSidesDrawGenerator): + def make_random_pairings(self): aff_teams = [t for t in self.teams if t.allocated_side == "aff"] neg_teams = [t for t in self.teams if t.allocated_side == "neg"] diff --git a/tabbycat/draw/locale/ar/LC_MESSAGES/django.po b/tabbycat/draw/locale/ar/LC_MESSAGES/django.po index e3f179b30fb..022ff359002 100644 --- a/tabbycat/draw/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -17,23 +17,7 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" -msgstr[4] "" -msgstr[5] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "تحديد حالة الدرجات %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." @@ -44,7 +28,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." @@ -55,406 +43,406 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "قرعة " -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "التبديلات أكثر من اللازم" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "من الاول إلى الاخير ( تاريخ ) " -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "من الاول إلى الاخير ( مؤسسة ) " -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "من الأول للأخير (لحفظ المساحة)" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "تصاعدي (تاريخ)" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "تنازلي (تاريخ)" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "تصاعدي (مؤسسة)" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "تنازلي (مؤسسة)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "تصاعدي (لحفظ المساحة)" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "تنازلي (لحفظ المساحة)" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "لا يمكن ترتيب حسب / تصاعدي أو تنازلي" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "الفرق الصاعدة" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d مناظرة لم توضع درجاتها في الجولات السابقة " -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "لا توجد فرق لإجراء القرعة" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "موقف الفريق لم يحدد موالاة أو معارضة " -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "لا يوجد" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "مؤجل" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "مسودة" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "مؤكد" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "جولة" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "جدول" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "مستوى القاعة" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "أهمية" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "حالة النتيجة" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "المواقف مؤكدة " -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "اذا لم يتم تحديد المواقف، تكون مواقف الفرق حسب أماكنهم " -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "مناظرة" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "مناظرات" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "(لم يتم تأكيد موقفي الفريقين)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "ضد" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "موالاة" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "معارضة" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "موالاة أولى " -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "معارضة أولى" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "موالاة ثانية" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "معارضة ثانية " -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "فريق" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "موقف" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "فريق المناظرة" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "فرق المناظرة" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "النتيجة غير معروفة " -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "تخصيص مواقف الفرق " -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "تخصيصات مواقف الفرق " #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "الفريق%(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "مستوى المناظرة في هذه القاعة " -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "جدول هذه المناظرة " -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "تاريخ المواقف
\n" "( عدد المرات التي كان الفريق في هذا الموقف قبل هذه الجولة )" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "ترتيب من متوازن إلى غير متوازن" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "ترتيب من غير متوازن إلى متوازن" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "أفضل تحسن ممكن ، غير مستقر " -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "كان غير مستقر و مازال غير مستقر " -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "الموقف" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "موقف هذه الجولة " -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "قبل" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "تاريخ المواقف قبل هذه الجولة " -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "بعد " -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "تاريخ المواقف بعد هذه الجولة " -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "التكلفة " -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "تكلفة الموقف " -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "الحالة" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "الفرق المسموح لها دخول هذه المناظرة لها هذا العدد من الدرجات
" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "تاريخ الموقف قبل هذه الجولة" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "المواقف" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "تكلفة الموقف " -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "توقف ! اقرأ هذا أولا ! حذف هذا الفريق قدد يسبب تعطيل البرنامج ! " -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "يطلب البرنامج أن يكون لجميع المتناظرين بالضبط فريقا واحدا للمناظرة لكل موقف، ولا فرق مناظرة أخرى، في جميع الأوقات. إذا قمت بحذف أي فريق . يجب عليك إما استبدال كل فريق بفريق جديد في نفس المناظرة . أو حذف قاعات المناظرة المرتبطة بها. إذا لم تقوم بهذا بشكل صحيح، العديد من الصفحات سوف تتأثر ." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "وهذا مصدر شائع للأخطاء. إذا حدث لك، تحقق من المناظرة (تحت قسم رسم في هذه المنطقة تحرير قاعدة البيانات) والتأكد من أن كل منهم لديه موالاة واحدة و معارضة واحدة تماما." -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "تحذير!!! إذا كنت تقوم بتحرير فرق المناظرة ، وقراءة هذا أولا!" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "يطلب البرنامج أن يكون لجميع المناظرات بالضبط فريقا واحدا للمناظرة لكل موقف، ولا فرق مناظرة أخرى، في جميع الأوقات. إذا قمت بحذف أي فريق . يجب عليك إما استبداله بفريق جديد في نفس المناظرة . أو حذف قاعات المناظرة المرتبطة بها. إذا لم تقم بذلك بشكل صحيح، العديد من الصفحات سوف تتأثر الكثير من الصفحات." -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." @@ -465,7 +453,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" @@ -476,7 +464,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." @@ -487,7 +475,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." @@ -498,7 +486,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" @@ -509,7 +497,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." @@ -520,7 +508,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" @@ -531,7 +519,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." @@ -542,7 +530,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" @@ -553,7 +541,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." @@ -564,81 +552,77 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "الوفرة" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "تعديل المواقف / التوزيع " -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "إعادة القرعة" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "تفاصيل القرعة" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "موازنة المواقف " -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "عرض القرعة" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "عرض القرعة " -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "المناظرة تبدأ %(start_time)s" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "إضافة وقت ابتداء المناظرة" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "ادخل النتائج " -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "تفاصيل القضية " -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." @@ -649,310 +633,339 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "تعديل القضايا" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "یتطلب التوجيه / التوجیھات التي سیتم تحدیدھا کجزء من النتيجة . تأكد من أنها تضاف قبل ادخال النتائج !" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "ادخل القضايا" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "تم إضافة نص قضية المناظرة" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "تعديل القضية" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "يجب إضافة قضية إذا أردت عرضه على القاعة أو طباعته على أوراق الاقتراع (باستخدام الروابط أدناه) أو لعرضه (لاحقا) على صفحة القضايا العامة." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "أضف نص القضية" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "أعلن القرعة" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "ليس ثمة شيء للإعلان، لم تقم بإجراء القرعة بعد." -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "قرعةهذه الجولة غسر مؤكدة . تأكد من القرعة قبل الإعلان." -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "عدم إعلان القرعة للجمهور." -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "إعلان القرعة للجمهور." -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "بطولتك تسمح بإدخال النتائج وتسليم التغذية الراجعة من قبل الحكام عبر الرابط الخاص بهم. لا بد من إعلان القرعة ليتمكنوا من فعل ذلك." -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "بطولتك تسمح بإدخال النتائج وتسليمها من قبل الحكام عبر الرابط الخاص بهم. لا بد من إعلان القرعة ليتمكنوا من فعل ذلك." -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "بطولتك تسمح بتسليم التغذية الراجعة من قبل الحكام عبر الرابط الخاص بهم. لا بد من إعلان القرعة ليتمكنوا من فعل ذلك." -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "إعدادات البطولة تسمح بأن تٌرى من قبل العموم. إعلان القرعة سيظهرها على الصفحة العمومية." -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "لا تحتوي أنظمة البطولة على صفحة قرعة عامة أو تعليقات / بطاقات النتائج . ليس هناك سبب لعرض القرعة." -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "أعلن القضايا" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "أعلن القضايا للجمهور." +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "عدم إعلان القضايا للجمهور." +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "أعلن القضية" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "اعلن القضية للجمهور." +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "عدم إعلان القضية للجمهور." +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "يسمح في اهذه البطولة ب التصويت على القضايا/ و تسليم إستمارات الدرجات من المحكمين، تأكد من إعلان القضايا قبل انتهاء المناظرة ليتمكنوا من التصويت" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "هذه البطولة مبرمجة على إعلان القضايا في موقع عام، الرجاء إعلان القضايا ليتمكن البنامج من عرضها في الموقع العام." - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "هذه البطولة غير مبرمجة على إعلان القضايا في موقع عام، لا داعي لإعلان القضايا." +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "سرعة التمرير" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "سريع" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "متوسط " -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "بطئ" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "بطيء جداً " -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "حجم النص" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "صغير جدا " -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "صغير" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "كبير" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "ضخم" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "توقف التمرير" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "قرعة ـ%(round)s لم يعلن عنها بعد" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "تعيين المحكمين" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "تعيين الحكام " -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "تعديل تعيين الحكم " -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "تعيين القاعة" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "تعيين القاعات" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "تعديل تعيين القاعة" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." @@ -963,21 +976,20 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "تعيين الموقف" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." @@ -988,92 +1000,92 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "لا يوجد الية لموازنة عدد مواقف الفرق في الجولات الإقصائية" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "تقارير موازنة المواقف متاحة فقط لبطولات البرلماني البريطاني." -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "لا يتم حساب تقارير موازنة الموقف للجولة الاولى ." -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "قرعة ل%(round)s" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" @@ -1084,127 +1096,127 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "جميع المناظرات لجميع جولات بطولة %(tournament)s" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "لا قرعة " -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "مسودة قرعة" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "%(side)s مستوى التأهل" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "م.ت" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "قرعة مع التفاصيل" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "تقرير موازنة الموقف " -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "الفرق غير متوازنة المواقف" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "لا يوجد فرق غير متوازنة المواقف" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "قرعة موضحة" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "لا يمكنك انشاء قرعة لـ%(round)s، هناك قرعة سابقة" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "

لا يمكن أنشاء قرعة للاسباب التالية : %(message)s

\n" "

الرجاء قم بحل المشكلة لأنشاء القرعة

" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "

لم يتم ترتيب الفرق بسبب الخلل التالي : %(message)s

\n" "

هناك مستخدم يقوم بترتيب الفرق في الوقت الحالي ، و هذا يمنع الحصول على القرعة

" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "لم يتم تخصيص الأماكن بشكل تلقائي نظرا لوجود قيود على مكان واحد أو أكثر. يجب تشغيل تخصيصات المكان بعد تخصيص المحكمين." -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "مسح القرعة ، يمكنك الان اعادة انشاء أخرى " -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "اعلنت القرعة" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "القرعة لم تعلن." -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "تعيين الموقف الأولي" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/bg/LC_MESSAGES/django.mo b/tabbycat/draw/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..d51d7872782 Binary files /dev/null and b/tabbycat/draw/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/bg/LC_MESSAGES/django.po b/tabbycat/draw/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..ca5d4dddcb9 --- /dev/null +++ b/tabbycat/draw/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,1119 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides confirmed." +msgid_plural "%(count)d debates were marked as having their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides not confirmed." +msgid_plural "%(count)d debates were marked as having their sides not confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/apps.py draw/views.py +msgid "Draw" +msgstr "" + +#: draw/generator/__init__.py +msgid "Too many swaps" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Can't bubble up/down" +msgstr "" + +#: draw/generator/__init__.py +msgid "Pull-up team" +msgstr "" + +#: draw/generator/bpelimination.py draw/generator/elimination.py +#, python-format +msgid "%d debates in the previous round don't have a result." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "%d debates in the previous round don't have exactly two teams advancing." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The number of debates (%d) in the last round is not a power of two." +msgstr "" + +#: draw/generator/bphungarian.py +#, python-format +msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." +msgstr "" + +#: draw/generator/common.py +#, python-format +msgid "The number of teams presented for the draw was not a multiple of %(num)d." +msgstr "" + +#: draw/generator/common.py +msgid "There were no teams for the draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "The number of teams (%d) in this round is not a power of two." +msgstr "" + +#: draw/generator/powerpair.py +#, python-format +msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." +msgstr "" + +#: draw/generator/random.py +#, python-format +msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." +msgstr "" + +#: draw/generator/random.py +msgid "One or more teams had an allocated side that wasn't affirmative or negative." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with two-team formats." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with British Parliamentary." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "Unrecognised \"teams in debate\" option: %(option)s" +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." +msgstr "" + +#: draw/models.py +msgid "none" +msgstr "" + +#: draw/models.py +msgid "postponed" +msgstr "" + +#: draw/models.py +msgid "draft" +msgstr "" + +#: draw/models.py +msgid "confirmed" +msgstr "" + +#: draw/models.py +msgid "round" +msgstr "" + +#: draw/models.py +msgid "room" +msgstr "" + +#: draw/models.py +msgid "bracket" +msgstr "" + +#: draw/models.py +msgid "room rank" +msgstr "" + +#: draw/models.py +msgid "importance" +msgstr "" + +#: draw/models.py +msgid "result status" +msgstr "" + +#: draw/models.py +msgid "sides confirmed" +msgstr "" + +#: draw/models.py +msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." +msgstr "" + +#: draw/models.py +msgid "debate" +msgstr "" + +#: draw/models.py +msgid "debates" +msgstr "" + +#. Translators: This is appended to a list of teams, e.g. "Auckland +#. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading +#. space. +#: draw/models.py +msgid " (sides not confirmed)" +msgstr "" + +#. Translators: This goes between teams in a debate, e.g. "Auckland 1 +#. vs Vic Wellington 1". Mind the leading and trailing spaces. +#: draw/models.py +msgid " vs " +msgstr "" + +#: draw/models.py +msgid "affirmative" +msgstr "" + +#: draw/models.py +msgid "negative" +msgstr "" + +#: draw/models.py +msgid "opening government" +msgstr "" + +#: draw/models.py +msgid "opening opposition" +msgstr "" + +#: draw/models.py +msgid "closing government" +msgstr "" + +#: draw/models.py +msgid "closing opposition" +msgstr "" + +#: draw/models.py +msgid "team" +msgstr "" + +#: draw/models.py +msgid "side" +msgstr "" + +#: draw/models.py +msgid "debate team" +msgstr "" + +#: draw/models.py +msgid "debate teams" +msgstr "" + +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "" + +#: draw/models.py +msgid "result unknown" +msgstr "" + +#: draw/models.py +msgid "won" +msgstr "" + +#: draw/models.py +msgid "lost" +msgstr "" + +#: draw/models.py +msgid "team side allocation" +msgstr "" + +#: draw/models.py +msgid "team side allocations" +msgstr "" + +#. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", +#. "Opening government: Total speaker score", "Closing opposition: Number of firsts" +#: draw/tables.py +#, python-format +msgid "%(side)s: %(metric)s" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "" + +#: draw/tables.py +msgid "Room rank of this debate" +msgstr "" + +#: draw/tables.py +msgid "Bracket of this debate" +msgstr "" + +#: draw/tables.py +msgid "side history
\n" +"(number of times the team has been on each side before this round)" +msgstr "" + +#. Translators: Abbreviation for "side history" +#: draw/tables.py +msgid "SH" +msgstr "" + +#: draw/tables.py +msgid "Went from balanced to imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Went from imbalanced to balanced" +msgstr "" + +#: draw/tables.py +msgid "Best improvement possible, still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Was imbalanced and still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "No metrics in the team standings precedence" +msgstr "" + +#: draw/tables.py +msgid "Side" +msgstr "" + +#: draw/tables.py +msgid "Position this round" +msgstr "" + +#: draw/tables.py +msgid "Before" +msgstr "" + +#: draw/tables.py +msgid "Side history before this round" +msgstr "" + +#: draw/tables.py +msgid "After" +msgstr "" + +#: draw/tables.py +msgid "Side history after this round" +msgstr "" + +#: draw/tables.py +msgid "Cost" +msgstr "" + +#: draw/tables.py +msgid "Position cost" +msgstr "" + +#: draw/tables.py +msgid "Status" +msgstr "" + +#: draw/tables.py +msgid "Teams with this many points are permitted in this debate
\n" +"(bracket in bold)" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "%(team)s: %(metric)s" +msgstr "" + +#: draw/tables.py +msgid "side history before this round" +msgstr "" + +#: draw/tables.py +msgid "Sides" +msgstr "" + +#: draw/tables.py +msgid "position cost" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "WARNING!!! If you are editing debate teams, read this first!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate does not have a chair." +msgid_plural "%(ndebates)s debates do not have a chair." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is adjudicating multiple debates." +msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has a panel with an even number of adjudicators." +msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has an adjudicator conflict." +msgid_plural "%(ndebates)s debates have adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." +msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 adjudicator is available but not assigned to a debate." +msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_teams.html +#, python-format +msgid "%(teams)s is competing in multiple debates." +msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate does not have a room." +msgid_plural "%(ndebates)s debates do not have a room." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "There are multiple debates in %(rooms)s." +msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate has a room constraint violation." +msgid_plural "%(ndebates)s debates have room constraint violations." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_base.html +msgid "Availability" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html +msgid "Edit Sides/Matchups" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Redo Draw" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Draw Details" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Position Balance" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +msgid "Confirm draw regeneration" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html +msgid "Back to Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Confirm Draw Deletion for %(round)s" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Yes, I want to delete the current draw for %(round)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "Debates start at %(start_time)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Add Start Time" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter Results" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Motion Details" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "%(motions_count)s motion has been entered." +msgid_plural "%(motions_count)s motions have been entered." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter a motion" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "You have not generated a draw for this round yet. There is nothing to release." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw has been released publicly." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View public draw page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "The motion has been released publicly." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "View public motions page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "(for the briefing room)" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motion" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Start at" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "(for printing)" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Ballot Forms" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Feedback Forms" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Scroll Speed" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Fast" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Medium" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Extra Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Hide Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Show Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Text Size" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Tiny" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Small" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Large" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Huge" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Stop Scroll" +msgstr "" + +#: draw/templates/draw_not_released.html +#, python-format +msgid "The draw for %(round)s has yet to be released." +msgstr "" + +#: draw/templates/draw_not_released.html +msgid "The draw for the next round has yet to be released." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Adjudicator Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are currently fewer adjudicators checked in than there are rooms." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate adjudicators" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit adjudicator allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Room Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate rooms" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit room allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Preformed Panels" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "There is %(npanels)s preformed panel available for this round." +msgid_plural "There are %(npanels)s preformed panels available for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are no preformed panels available for this round" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "Edit preformed panels for %(round)s" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Side Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "1 debate does not have its sides confirmed." +msgid_plural "%(ndebates)s debates do not have their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_draft.html +msgid "Delete Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Confirm Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" +msgstr "" + +#: draw/templates/draw_status_none.html +#, python-format +msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." +msgstr "" + +#: draw/templates/position_balance.html +msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." +msgstr "" + +#: draw/templates/position_balance.html +#, python-format +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" + +#: draw/templates/position_balance_break.html +msgid "Position balance reports aren't computed for elimination rounds." +msgstr "" + +#: draw/templates/position_balance_nonbp.html +msgid "Position balance reports are only available for British Parliamentary tournaments." +msgstr "" + +#: draw/templates/position_balance_round1.html +msgid "Position balance reports aren't computed for the first round of a tournament." +msgstr "" + +#: draw/views.py +msgid "No debates in this round" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: draw/views.py +msgid "Draws for Current Rounds" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debates start at %(time)s (in %(time_zone)s)" +msgstr "" + +#: draw/views.py +#, python-format +msgid "start times in time zone: %(time_zone)s" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debate starts at %(time)s" +msgid_plural "debates start at %(time)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/views.py +msgid "The draw for this round hasn't been released." +msgstr "" + +#: draw/views.py +#, python-format +msgid "All Debates for All Rounds of %(tournament)s" +msgstr "" + +#: draw/views.py +msgid "Adjudicator Assignments" +msgstr "" + +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py +msgid "Team Pairings" +msgstr "" + +#: draw/views.py +msgid "No Draw" +msgstr "" + +#: draw/views.py +msgid "Draft Draw" +msgstr "" + +#. Translators: e.g. "Affirmative: Break rank" +#: draw/views.py +#, python-format +msgid "%(side)s: Break rank" +msgstr "" + +#. Translators: "BR" stands for "Break rank" +#: draw/views.py +msgid "BR" +msgstr "" + +#: draw/views.py +msgid "Draw with Details" +msgstr "" + +#: draw/views.py +msgid "Position Balance Report" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Rényi entropy of order %(order)s" +msgstr "" + +#. Translators: This is appended to the string "Rényi entropy of order 1.0" +#: draw/views.py +msgid " (i.e., Shannon entropy)" +msgstr "" + +#: draw/views.py +msgid "Teams with position imbalances" +msgstr "" + +#: draw/views.py +msgid "No teams with position imbalances! Hooray!" +msgstr "" + +#: draw/views.py +msgid "Annotated draw" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Could not create draw for %(round)s, there was already a draw!" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, for the following reason: %(message)s

\n" +"

Please fix this issue before attempting to create the draw.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" +"

If this issue persists and you're not sure how to resolve it, please contact the developers.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" +"

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" +msgstr "" + +#: draw/views.py +msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." +msgstr "" + +#: draw/views.py +msgid "Deleted the draw. You can now recreate it as normal." +msgstr "" + +#: draw/views.py +msgid "Released the draw." +msgstr "" + +#: draw/views.py +msgid "Unreleased the draw." +msgstr "" + +#: draw/views.py +#, python-format +msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." +msgstr "" + +#: draw/views.py +msgid "Side Pre-Allocations" +msgstr "" + +#: draw/views.py +msgid "Edit Matchups" +msgstr "" + diff --git a/tabbycat/draw/locale/bn/LC_MESSAGES/django.po b/tabbycat/draw/locale/bn/LC_MESSAGES/django.po index 4ef0cf3916e..d96355fc431 100644 --- a/tabbycat/draw/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" "Last-Translator: \n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -17,1123 +17,1103 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "ড্র" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "পর্ব" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "ব্র্যাকেট" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "বিতর্ক" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "বিতর্ক" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "পক্ষ" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "বিপক্ষ" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "দল" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "পক্ষ" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "পক্ষ" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "পক্ষ" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "উপস্থিতি" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "পূর্বগঠিত প্যানেল" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/ca/LC_MESSAGES/django.mo b/tabbycat/draw/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..c5a109e1c00 Binary files /dev/null and b/tabbycat/draw/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/ca/LC_MESSAGES/django.po b/tabbycat/draw/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..7037065f8e8 --- /dev/null +++ b/tabbycat/draw/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,1119 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-07-02 00:46\n" +"Last-Translator: \n" +"Language-Team: Catalan\n" +"Language: ca_ES\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides confirmed." +msgid_plural "%(count)d debates were marked as having their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "Marca els bancades com a no confirmats" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides not confirmed." +msgid_plural "%(count)d debates were marked as having their sides not confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/apps.py draw/views.py +msgid "Draw" +msgstr "Emparellaments" + +#: draw/generator/__init__.py +msgid "Too many swaps" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Can't bubble up/down" +msgstr "" + +#: draw/generator/__init__.py +msgid "Pull-up team" +msgstr "" + +#: draw/generator/bpelimination.py draw/generator/elimination.py +#, python-format +msgid "%d debates in the previous round don't have a result." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "%d debates in the previous round don't have exactly two teams advancing." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The number of debates (%d) in the last round is not a power of two." +msgstr "" + +#: draw/generator/bphungarian.py +#, python-format +msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." +msgstr "" + +#: draw/generator/common.py +#, python-format +msgid "The number of teams presented for the draw was not a multiple of %(num)d." +msgstr "" + +#: draw/generator/common.py +msgid "There were no teams for the draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "The number of teams (%d) in this round is not a power of two." +msgstr "" + +#: draw/generator/powerpair.py +#, python-format +msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." +msgstr "" + +#: draw/generator/random.py +#, python-format +msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." +msgstr "" + +#: draw/generator/random.py +msgid "One or more teams had an allocated side that wasn't affirmative or negative." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with two-team formats." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with British Parliamentary." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "Unrecognised \"teams in debate\" option: %(option)s" +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." +msgstr "" + +#: draw/models.py +msgid "none" +msgstr "Cap" + +#: draw/models.py +msgid "postponed" +msgstr "posposat" + +#: draw/models.py +msgid "draft" +msgstr "esborrany" + +#: draw/models.py +msgid "confirmed" +msgstr "confirmat" + +#: draw/models.py +msgid "round" +msgstr "ronda" + +#: draw/models.py +msgid "room" +msgstr "sala" + +#: draw/models.py +msgid "bracket" +msgstr "grup" + +#: draw/models.py +msgid "room rank" +msgstr "rang de sala" + +#: draw/models.py +msgid "importance" +msgstr "importància" + +#: draw/models.py +msgid "result status" +msgstr "estat del resultat" + +#: draw/models.py +msgid "sides confirmed" +msgstr "bàndols confirmats" + +#: draw/models.py +msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." +msgstr "" + +#: draw/models.py +msgid "debate" +msgstr "debat" + +#: draw/models.py +msgid "debates" +msgstr "debats" + +#. Translators: This is appended to a list of teams, e.g. "Auckland +#. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading +#. space. +#: draw/models.py +msgid " (sides not confirmed)" +msgstr "" + +#. Translators: This goes between teams in a debate, e.g. "Auckland 1 +#. vs Vic Wellington 1". Mind the leading and trailing spaces. +#: draw/models.py +msgid " vs " +msgstr " contra " + +#: draw/models.py +msgid "affirmative" +msgstr "afirmatiu" + +#: draw/models.py +msgid "negative" +msgstr "negatiu" + +#: draw/models.py +msgid "opening government" +msgstr "Alta de Govern" + +#: draw/models.py +msgid "opening opposition" +msgstr "Alta d'Oposició" + +#: draw/models.py +msgid "closing government" +msgstr "Baixa de Govern" + +#: draw/models.py +msgid "closing opposition" +msgstr "Baixa d'Oposició" + +#: draw/models.py +msgid "team" +msgstr "equip" + +#: draw/models.py +msgid "side" +msgstr "bancada" + +#: draw/models.py +msgid "debate team" +msgstr "equip de debat" + +#: draw/models.py +msgid "debate teams" +msgstr "equips de debat" + +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "col·locat %(place)s" + +#: draw/models.py +msgid "result unknown" +msgstr "resultat desconegut" + +#: draw/models.py +msgid "won" +msgstr "va guanyar" + +#: draw/models.py +msgid "lost" +msgstr "va perdre" + +#: draw/models.py +msgid "team side allocation" +msgstr "assignació per equip" + +#: draw/models.py +msgid "team side allocations" +msgstr "assignacions per equip" + +#. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", +#. "Opening government: Total speaker score", "Closing opposition: Number of firsts" +#: draw/tables.py +#, python-format +msgid "%(side)s: %(metric)s" +msgstr "%(side)s: %(metric)s" + +#: draw/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "Equip %(num)d" + +#: draw/tables.py +msgid "Room rank of this debate" +msgstr "" + +#: draw/tables.py +msgid "Bracket of this debate" +msgstr "" + +#: draw/tables.py +msgid "side history
\n" +"(number of times the team has been on each side before this round)" +msgstr "" + +#. Translators: Abbreviation for "side history" +#: draw/tables.py +msgid "SH" +msgstr "" + +#: draw/tables.py +msgid "Went from balanced to imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Went from imbalanced to balanced" +msgstr "" + +#: draw/tables.py +msgid "Best improvement possible, still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Was imbalanced and still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "No metrics in the team standings precedence" +msgstr "" + +#: draw/tables.py +msgid "Side" +msgstr "Bancada" + +#: draw/tables.py +msgid "Position this round" +msgstr "Posicioneu aquesta ronda" + +#: draw/tables.py +msgid "Before" +msgstr "Abans" + +#: draw/tables.py +msgid "Side history before this round" +msgstr "" + +#: draw/tables.py +msgid "After" +msgstr "Després" + +#: draw/tables.py +msgid "Side history after this round" +msgstr "" + +#: draw/tables.py +msgid "Cost" +msgstr "Cost" + +#: draw/tables.py +msgid "Position cost" +msgstr "Cost de la posició" + +#: draw/tables.py +msgid "Status" +msgstr "Estat" + +#: draw/tables.py +msgid "Teams with this many points are permitted in this debate
\n" +"(bracket in bold)" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "%(team)s: %(metric)s" +msgstr "" + +#: draw/tables.py +msgid "side history before this round" +msgstr "" + +#: draw/tables.py +msgid "Sides" +msgstr "Costats" + +#: draw/tables.py +msgid "position cost" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "WARNING!!! If you are editing debate teams, read this first!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate does not have a chair." +msgid_plural "%(ndebates)s debates do not have a chair." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is adjudicating multiple debates." +msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has a panel with an even number of adjudicators." +msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has an adjudicator conflict." +msgid_plural "%(ndebates)s debates have adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." +msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 adjudicator is available but not assigned to a debate." +msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_teams.html +#, python-format +msgid "%(teams)s is competing in multiple debates." +msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate does not have a room." +msgid_plural "%(ndebates)s debates do not have a room." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "There are multiple debates in %(rooms)s." +msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate has a room constraint violation." +msgid_plural "%(ndebates)s debates have room constraint violations." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_base.html +msgid "Availability" +msgstr "Disponibilitat" + +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html +msgid "Edit Sides/Matchups" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Redo Draw" +msgstr "Refer Aparellaments" + +#: draw/templates/draw_base.html +msgid "Draw Details" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Position Balance" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw" +msgstr "Mostrar aparellaments" + +#: draw/templates/draw_confirm_regeneration.html +msgid "Confirm draw regeneration" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html +msgid "Back to Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Confirm Draw Deletion for %(round)s" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Yes, I want to delete the current draw for %(round)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "Debates start at %(start_time)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Add Start Time" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter Results" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Motion Details" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "%(motions_count)s motion has been entered." +msgid_plural "%(motions_count)s motions have been entered." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "Editar la moció" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter a motion" +msgid_plural "Enter motions" +msgstr[0] "Introduïu la moció" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "You have not generated a draw for this round yet. There is nothing to release." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw has been released publicly." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View public draw page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "The motion has been released publicly." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "View public motions page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "(for the briefing room)" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motion" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Start at" +msgstr "Va començar a" + +#: draw/templates/draw_display_assistant.html +msgid "(for printing)" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Ballot Forms" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Feedback Forms" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Scroll Speed" +msgstr "Velocitat de desplaçament:" + +#: draw/templates/draw_display_by.html +msgid "Fast" +msgstr "Ràpid" + +#: draw/templates/draw_display_by.html +msgid "Medium" +msgstr "Mitjana" + +#: draw/templates/draw_display_by.html +msgid "Slow" +msgstr "Lenta" + +#: draw/templates/draw_display_by.html +msgid "Extra Slow" +msgstr "Extra lenta" + +#: draw/templates/draw_display_by.html +msgid "Hide Adjudicators" +msgstr "Amagar Grup de Jutges" + +#: draw/templates/draw_display_by.html +msgid "Show Adjudicators" +msgstr "Mostrar Grup de Jutges" + +#: draw/templates/draw_display_by.html +msgid "Text Size" +msgstr "Mida del text" + +#: draw/templates/draw_display_by.html +msgid "Tiny" +msgstr "Molt petita" + +#: draw/templates/draw_display_by.html +msgid "Small" +msgstr "Petit" + +#: draw/templates/draw_display_by.html +msgid "Large" +msgstr "Gran" + +#: draw/templates/draw_display_by.html +msgid "Huge" +msgstr "Enorme" + +#: draw/templates/draw_display_by.html +msgid "Stop Scroll" +msgstr "Atura el desplaçament" + +#: draw/templates/draw_not_released.html +#, python-format +msgid "The draw for %(round)s has yet to be released." +msgstr "" + +#: draw/templates/draw_not_released.html +msgid "The draw for the next round has yet to be released." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Adjudicator Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are currently fewer adjudicators checked in than there are rooms." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate adjudicators" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit adjudicator allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Room Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate rooms" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit room allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Preformed Panels" +msgstr "Grups de Jutges formats amb antelació" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "There is %(npanels)s preformed panel available for this round." +msgid_plural "There are %(npanels)s preformed panels available for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are no preformed panels available for this round" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "Edit preformed panels for %(round)s" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Side Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "1 debate does not have its sides confirmed." +msgid_plural "%(ndebates)s debates do not have their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_draft.html +msgid "Delete Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Confirm Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" +msgstr "" + +#: draw/templates/draw_status_none.html +#, python-format +msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." +msgstr "" + +#: draw/templates/position_balance.html +msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." +msgstr "" + +#: draw/templates/position_balance.html +#, python-format +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" + +#: draw/templates/position_balance_break.html +msgid "Position balance reports aren't computed for elimination rounds." +msgstr "" + +#: draw/templates/position_balance_nonbp.html +msgid "Position balance reports are only available for British Parliamentary tournaments." +msgstr "" + +#: draw/templates/position_balance_round1.html +msgid "Position balance reports aren't computed for the first round of a tournament." +msgstr "" + +#: draw/views.py +msgid "No debates in this round" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: draw/views.py +msgid "Draws for Current Rounds" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debates start at %(time)s (in %(time_zone)s)" +msgstr "" + +#: draw/views.py +#, python-format +msgid "start times in time zone: %(time_zone)s" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debate starts at %(time)s" +msgid_plural "debates start at %(time)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/views.py +msgid "The draw for this round hasn't been released." +msgstr "" + +#: draw/views.py +#, python-format +msgid "All Debates for All Rounds of %(tournament)s" +msgstr "" + +#: draw/views.py +msgid "Adjudicator Assignments" +msgstr "" + +#: draw/views.py +msgid "Position" +msgstr "Posició" + +#: draw/views.py +msgid "Team Pairings" +msgstr "" + +#: draw/views.py +msgid "No Draw" +msgstr "" + +#: draw/views.py +msgid "Draft Draw" +msgstr "" + +#. Translators: e.g. "Affirmative: Break rank" +#: draw/views.py +#, python-format +msgid "%(side)s: Break rank" +msgstr "" + +#. Translators: "BR" stands for "Break rank" +#: draw/views.py +msgid "BR" +msgstr "" + +#: draw/views.py +msgid "Draw with Details" +msgstr "" + +#: draw/views.py +msgid "Position Balance Report" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Rényi entropy of order %(order)s" +msgstr "" + +#. Translators: This is appended to the string "Rényi entropy of order 1.0" +#: draw/views.py +msgid " (i.e., Shannon entropy)" +msgstr "" + +#: draw/views.py +msgid "Teams with position imbalances" +msgstr "" + +#: draw/views.py +msgid "No teams with position imbalances! Hooray!" +msgstr "" + +#: draw/views.py +msgid "Annotated draw" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Could not create draw for %(round)s, there was already a draw!" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, for the following reason: %(message)s

\n" +"

Please fix this issue before attempting to create the draw.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" +"

If this issue persists and you're not sure how to resolve it, please contact the developers.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" +"

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" +msgstr "" + +#: draw/views.py +msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." +msgstr "" + +#: draw/views.py +msgid "Deleted the draw. You can now recreate it as normal." +msgstr "" + +#: draw/views.py +msgid "Released the draw." +msgstr "Publicat l'aparellament." + +#: draw/views.py +msgid "Unreleased the draw." +msgstr "Despublicat l'aparellament." + +#: draw/views.py +#, python-format +msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." +msgstr "" + +#: draw/views.py +msgid "Side Pre-Allocations" +msgstr "" + +#: draw/views.py +msgid "Edit Matchups" +msgstr "" + diff --git a/tabbycat/draw/locale/cs/LC_MESSAGES/django.mo b/tabbycat/draw/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..0c47cb78972 Binary files /dev/null and b/tabbycat/draw/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/cs/LC_MESSAGES/django.po b/tabbycat/draw/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..761f5f573ca --- /dev/null +++ b/tabbycat/draw/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,1169 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" +"Last-Translator: \n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides confirmed." +msgid_plural "%(count)d debates were marked as having their sides confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides not confirmed." +msgid_plural "%(count)d debates were marked as having their sides not confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/apps.py draw/views.py +msgid "Draw" +msgstr "" + +#: draw/generator/__init__.py +msgid "Too many swaps" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Can't bubble up/down" +msgstr "" + +#: draw/generator/__init__.py +msgid "Pull-up team" +msgstr "" + +#: draw/generator/bpelimination.py draw/generator/elimination.py +#, python-format +msgid "%d debates in the previous round don't have a result." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "%d debates in the previous round don't have exactly two teams advancing." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The number of debates (%d) in the last round is not a power of two." +msgstr "" + +#: draw/generator/bphungarian.py +#, python-format +msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." +msgstr "" + +#: draw/generator/common.py +#, python-format +msgid "The number of teams presented for the draw was not a multiple of %(num)d." +msgstr "" + +#: draw/generator/common.py +msgid "There were no teams for the draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "The number of teams (%d) in this round is not a power of two." +msgstr "" + +#: draw/generator/powerpair.py +#, python-format +msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." +msgstr "" + +#: draw/generator/random.py +#, python-format +msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." +msgstr "" + +#: draw/generator/random.py +msgid "One or more teams had an allocated side that wasn't affirmative or negative." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with two-team formats." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with British Parliamentary." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "Unrecognised \"teams in debate\" option: %(option)s" +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." +msgstr "" + +#: draw/models.py +msgid "none" +msgstr "" + +#: draw/models.py +msgid "postponed" +msgstr "" + +#: draw/models.py +msgid "draft" +msgstr "" + +#: draw/models.py +msgid "confirmed" +msgstr "" + +#: draw/models.py +msgid "round" +msgstr "" + +#: draw/models.py +msgid "room" +msgstr "" + +#: draw/models.py +msgid "bracket" +msgstr "" + +#: draw/models.py +msgid "room rank" +msgstr "" + +#: draw/models.py +msgid "importance" +msgstr "" + +#: draw/models.py +msgid "result status" +msgstr "" + +#: draw/models.py +msgid "sides confirmed" +msgstr "" + +#: draw/models.py +msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." +msgstr "" + +#: draw/models.py +msgid "debate" +msgstr "debata" + +#: draw/models.py +msgid "debates" +msgstr "debat" + +#. Translators: This is appended to a list of teams, e.g. "Auckland +#. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading +#. space. +#: draw/models.py +msgid " (sides not confirmed)" +msgstr "" + +#. Translators: This goes between teams in a debate, e.g. "Auckland 1 +#. vs Vic Wellington 1". Mind the leading and trailing spaces. +#: draw/models.py +msgid " vs " +msgstr "" + +#: draw/models.py +msgid "affirmative" +msgstr "afirmace" + +#: draw/models.py +msgid "negative" +msgstr "negace" + +#: draw/models.py +msgid "opening government" +msgstr "" + +#: draw/models.py +msgid "opening opposition" +msgstr "" + +#: draw/models.py +msgid "closing government" +msgstr "" + +#: draw/models.py +msgid "closing opposition" +msgstr "" + +#: draw/models.py +msgid "team" +msgstr "tým" + +#: draw/models.py +msgid "side" +msgstr "" + +#: draw/models.py +msgid "debate team" +msgstr "" + +#: draw/models.py +msgid "debate teams" +msgstr "" + +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "" + +#: draw/models.py +msgid "result unknown" +msgstr "" + +#: draw/models.py +msgid "won" +msgstr "" + +#: draw/models.py +msgid "lost" +msgstr "" + +#: draw/models.py +msgid "team side allocation" +msgstr "" + +#: draw/models.py +msgid "team side allocations" +msgstr "" + +#. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", +#. "Opening government: Total speaker score", "Closing opposition: Number of firsts" +#: draw/tables.py +#, python-format +msgid "%(side)s: %(metric)s" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "" + +#: draw/tables.py +msgid "Room rank of this debate" +msgstr "" + +#: draw/tables.py +msgid "Bracket of this debate" +msgstr "" + +#: draw/tables.py +msgid "side history
\n" +"(number of times the team has been on each side before this round)" +msgstr "" + +#. Translators: Abbreviation for "side history" +#: draw/tables.py +msgid "SH" +msgstr "" + +#: draw/tables.py +msgid "Went from balanced to imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Went from imbalanced to balanced" +msgstr "" + +#: draw/tables.py +msgid "Best improvement possible, still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Was imbalanced and still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "No metrics in the team standings precedence" +msgstr "" + +#: draw/tables.py +msgid "Side" +msgstr "" + +#: draw/tables.py +msgid "Position this round" +msgstr "" + +#: draw/tables.py +msgid "Before" +msgstr "" + +#: draw/tables.py +msgid "Side history before this round" +msgstr "" + +#: draw/tables.py +msgid "After" +msgstr "" + +#: draw/tables.py +msgid "Side history after this round" +msgstr "" + +#: draw/tables.py +msgid "Cost" +msgstr "" + +#: draw/tables.py +msgid "Position cost" +msgstr "" + +#: draw/tables.py +msgid "Status" +msgstr "" + +#: draw/tables.py +msgid "Teams with this many points are permitted in this debate
\n" +"(bracket in bold)" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "%(team)s: %(metric)s" +msgstr "" + +#: draw/tables.py +msgid "side history before this round" +msgstr "" + +#: draw/tables.py +msgid "Sides" +msgstr "" + +#: draw/tables.py +msgid "position cost" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "WARNING!!! If you are editing debate teams, read this first!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate does not have a chair." +msgid_plural "%(ndebates)s debates do not have a chair." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is adjudicating multiple debates." +msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has a panel with an even number of adjudicators." +msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has an adjudicator conflict." +msgid_plural "%(ndebates)s debates have adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." +msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 adjudicator is available but not assigned to a debate." +msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_teams.html +#, python-format +msgid "%(teams)s is competing in multiple debates." +msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate does not have a room." +msgid_plural "%(ndebates)s debates do not have a room." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "There are multiple debates in %(rooms)s." +msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate has a room constraint violation." +msgid_plural "%(ndebates)s debates have room constraint violations." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_base.html +msgid "Availability" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html +msgid "Edit Sides/Matchups" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Redo Draw" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Draw Details" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Position Balance" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +msgid "Confirm draw regeneration" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html +msgid "Back to Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Confirm Draw Deletion for %(round)s" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Yes, I want to delete the current draw for %(round)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "Debates start at %(start_time)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Add Start Time" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter Results" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Motion Details" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "%(motions_count)s motion has been entered." +msgid_plural "%(motions_count)s motions have been entered." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter a motion" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "You have not generated a draw for this round yet. There is nothing to release." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw has been released publicly." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View public draw page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "The motion has been released publicly." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "View public motions page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "(for the briefing room)" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motion" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Start at" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "(for printing)" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Ballot Forms" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Feedback Forms" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Scroll Speed" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Fast" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Medium" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Extra Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Hide Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Show Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Text Size" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Tiny" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Small" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Large" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Huge" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Stop Scroll" +msgstr "" + +#: draw/templates/draw_not_released.html +#, python-format +msgid "The draw for %(round)s has yet to be released." +msgstr "" + +#: draw/templates/draw_not_released.html +msgid "The draw for the next round has yet to be released." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Adjudicator Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are currently fewer adjudicators checked in than there are rooms." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate adjudicators" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit adjudicator allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Room Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate rooms" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit room allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Preformed Panels" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "There is %(npanels)s preformed panel available for this round." +msgid_plural "There are %(npanels)s preformed panels available for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are no preformed panels available for this round" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "Edit preformed panels for %(round)s" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Side Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "1 debate does not have its sides confirmed." +msgid_plural "%(ndebates)s debates do not have their sides confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_status_draft.html +msgid "Delete Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Confirm Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" +msgstr "" + +#: draw/templates/draw_status_none.html +#, python-format +msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." +msgstr "" + +#: draw/templates/position_balance.html +msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." +msgstr "" + +#: draw/templates/position_balance.html +#, python-format +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" + +#: draw/templates/position_balance_break.html +msgid "Position balance reports aren't computed for elimination rounds." +msgstr "" + +#: draw/templates/position_balance_nonbp.html +msgid "Position balance reports are only available for British Parliamentary tournaments." +msgstr "" + +#: draw/templates/position_balance_round1.html +msgid "Position balance reports aren't computed for the first round of a tournament." +msgstr "" + +#: draw/views.py +msgid "No debates in this round" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: draw/views.py +msgid "Draws for Current Rounds" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debates start at %(time)s (in %(time_zone)s)" +msgstr "" + +#: draw/views.py +#, python-format +msgid "start times in time zone: %(time_zone)s" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debate starts at %(time)s" +msgid_plural "debates start at %(time)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/views.py +msgid "The draw for this round hasn't been released." +msgstr "" + +#: draw/views.py +#, python-format +msgid "All Debates for All Rounds of %(tournament)s" +msgstr "" + +#: draw/views.py +msgid "Adjudicator Assignments" +msgstr "" + +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py +msgid "Team Pairings" +msgstr "" + +#: draw/views.py +msgid "No Draw" +msgstr "" + +#: draw/views.py +msgid "Draft Draw" +msgstr "" + +#. Translators: e.g. "Affirmative: Break rank" +#: draw/views.py +#, python-format +msgid "%(side)s: Break rank" +msgstr "" + +#. Translators: "BR" stands for "Break rank" +#: draw/views.py +msgid "BR" +msgstr "" + +#: draw/views.py +msgid "Draw with Details" +msgstr "" + +#: draw/views.py +msgid "Position Balance Report" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Rényi entropy of order %(order)s" +msgstr "" + +#. Translators: This is appended to the string "Rényi entropy of order 1.0" +#: draw/views.py +msgid " (i.e., Shannon entropy)" +msgstr "" + +#: draw/views.py +msgid "Teams with position imbalances" +msgstr "" + +#: draw/views.py +msgid "No teams with position imbalances! Hooray!" +msgstr "" + +#: draw/views.py +msgid "Annotated draw" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Could not create draw for %(round)s, there was already a draw!" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, for the following reason: %(message)s

\n" +"

Please fix this issue before attempting to create the draw.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" +"

If this issue persists and you're not sure how to resolve it, please contact the developers.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" +"

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" +msgstr "" + +#: draw/views.py +msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." +msgstr "" + +#: draw/views.py +msgid "Deleted the draw. You can now recreate it as normal." +msgstr "" + +#: draw/views.py +msgid "Released the draw." +msgstr "" + +#: draw/views.py +msgid "Unreleased the draw." +msgstr "" + +#: draw/views.py +#, python-format +msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." +msgstr "" + +#: draw/views.py +msgid "Side Pre-Allocations" +msgstr "" + +#: draw/views.py +msgid "Edit Matchups" +msgstr "" + diff --git a/tabbycat/draw/locale/de/LC_MESSAGES/django.po b/tabbycat/draw/locale/de/LC_MESSAGES/django.po index f4e519c0e58..ff78af4baad 100644 --- a/tabbycat/draw/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/de/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" @@ -12,1133 +12,1108 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:429 draw/views.py:432 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:26 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:269 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:27 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:28 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:29 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:36 draw/models.py:389 +#: draw/models.py msgid "round" msgstr "runde" -#: draw/models.py:38 -msgid "venue" -msgstr "Raum" +#: draw/models.py +msgid "room" +msgstr "" -#: draw/models.py:41 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:43 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:49 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:51 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:53 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:54 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:57 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "Debatte" -#: draw/models.py:58 +#: draw/models.py msgid "debates" msgstr "Debatten" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:77 draw/models.py:102 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:89 draw/models.py:106 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "eröffnende Regierung" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "eröffnende Opposition" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "schließende Regierung" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "schließende Opposition" -#: draw/models.py:274 draw/models.py:391 +#: draw/models.py msgid "team" msgstr "Team" -#: draw/models.py:276 draw/models.py:393 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:283 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:311 -msgid "placed 1st" -msgstr "" - -#: draw/models.py:313 -msgid "placed 2nd" -msgstr "" - -#: draw/models.py:315 -msgid "placed 3rd" -msgstr "" - -#: draw/models.py:317 -msgid "placed 4th" +#: draw/models.py +#, python-format +msgid "placed %(place)s" msgstr "" -#: draw/models.py:319 draw/models.py:326 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:322 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:324 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:397 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:398 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Team %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "Status" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s: %(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:66 draw/views.py:460 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:74 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:76 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:80 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:84 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:122 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:169 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:222 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:380 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:400 +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:426 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:518 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:523 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:548 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:556 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:567 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:570 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:600 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:601 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:604 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:635 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:643 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:651 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:660 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:676 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:703 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:723 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:738 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:751 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:770 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:803 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/en/LC_MESSAGES/django.po b/tabbycat/draw/locale/en/LC_MESSAGES/django.po index 509b2b5e3ed..36934450837 100644 --- a/tabbycat/draw/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/draw/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: 2020-11-18 17:59-0400\n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,1127 +17,1127 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "" "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "" "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "" "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "" "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "" "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py +msgid "There is no draw." +msgstr "" + +#: draw/views.py +msgid "The draw had already been confirmed." +msgstr "" + +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py +msgid "The draw has already been released." +msgstr "" + +#: draw/views.py +msgid "The draw must be confirmed before being released." +msgstr "" + +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py +msgid "The draw had been unreleased." +msgstr "" + +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/es/LC_MESSAGES/django.po b/tabbycat/draw/locale/es/LC_MESSAGES/django.po index a2d46365eac..8203ef80711 100644 --- a/tabbycat/draw/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,1124 +17,1104 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "%(count)d debate tenía su estatus ajustado a %(status)s. " -msgstr[1] "%(count)d debates tenían su estatus ajustado a %(status)s" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "Configurar el status a %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "%(count)d debate fue marcado teniendo sus lados confirmados." msgstr[1] "%(count)d debates fueron marcados teniendo sus lados confirmados." -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "%(count)d debate fue marcado teniendo sus lados no confirmados" msgstr[1] "%(count)d debates fueron marcados teniendo sus lados no confirmados" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "Asignación de salas" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d debates en la ronda anterior no tienen un resultado" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d debates en la roda anterior no tienen exactamente dos equipos avanzando" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "El ranking de salas de la ronda de eliminación indica que un número impar de equipos (%(nbypassing)d) lo paso por alto." -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "El ranking de salas de la ronda de eliminiación parcial indica que %(nbypassing)d equipos lo paso por alto, pero %(advancing)d equipos avanzó de él." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "El número de debates (%d) en la última ronda no es un múltiplo de dos." -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "El orden Rényi no puede ser negativo, y actualmente está ajustado a %(alpha)f" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "El número de equipos presentado para el enfrentamiento no era un múltiplo de %(num)d." -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "No había equipos para el enfrentamiento." -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "Solo hay %d equipos clasificando en esta categoría; necesitan ser al menos dos para generar un cuadro de ronda eliminatoria. " -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "El número de equipos (%d) en esta ronda no es múltiplo de dos. " -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "Hubo %(aff_count)d equipos afirmativos pero %(neg_count)d equipos negativos." -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "Uno o más equipos tenía un lado asignado que no era afirmativo o negativo." -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "El enfrentamiento de tipo %(type)s no puede ser usado con formatos de dos equipos." -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "El enfrentamiento de tipo %(type)s no puede ser usado con Parlamento Británico." -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "El tamaño de la clasificación (%(size)d) para esta categoría clasificatoria era invalido. Debe ser ya sea seis o cuatro veces dos." -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "ninguno" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "pospuesto" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "borrador" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "confirmado " -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "ronda" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "ranking de sala" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "importancia" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "estatus de resultados" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "lados confirmados " -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "Si no está chequeado, los lados asignados a los equipos en este debate son solo ____" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "(lados no confirmados)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr " vs " -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "afirmativo" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "negativo" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "alta de gobierno" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "alta de oposición " -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "baja de gobierno " -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "baja de oposición " -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "equipo" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "do" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "equipo de debate" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "equipos de debate" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "en %(place)s lugar" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "resultado desconocido " -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "ganó" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "perdió " -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Equipo %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "Ranking de la sala de este debate " -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "Lado" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "Posición esta ronda " -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "Antes " -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "Después " -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "Costo " -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "Estatus " -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "Equipos con esta cantidad de puntos son permitidos en este debate
\n" "(__________)" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "Lados" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "¡¡¡ALTO!!!¡Lea primero!¡Borrar equipos de debate de la base de datos podría arruinar Tabbycat!" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "Tabbycat requiere que todos los debates tengan exactamente un equipo de debate por cada lado, y ningún otro equipo de debate, en todo momento. Si borrar cualquier equipo de debate, debe entonces reemplazar cada uno con un nuevo equipo de debate en el mismo debate, o borrar los objetos asociados al debate. Si no hace esto correctamente, muchas paginas se bloquearan." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "Disponibilidad" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "Ver Cuadro" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "Enfrentamientos para %(round)s" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/fr/LC_MESSAGES/django.po b/tabbycat/draw/locale/fr/LC_MESSAGES/django.po index 5babb9f39b3..597822cc0c1 100644 --- a/tabbycat/draw/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 15:51\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,1128 +17,1108 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "%(count)d débat a son statut mis à %(status)s." -msgstr[1] "%(count)d débats ont leurs statuts mis à %(status)s." - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "Mettre statut des résultats à %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "%(count)d débat a été marqué comme ayant ses côtés confirmés." msgstr[1] "%(count)d débats ont été marqués comme ayant ses côtés confirmés." -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "Marquer côtés comme non confirmés" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "%(count)d débat a été marqué comme ayant ses côtés pas confirmés." msgstr[1] "%(count)d débats ont été marqués comme ayant ses côtés pas confirmés." -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "Tirage" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "Trop d'échanges" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "Un-monte-un-descend (historique)" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "Un-monte-un-descend (institution)" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "Un-monte-un-descend (pour accommoder)" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "Nager (histoire)" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "Couler (histoire)" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "Nager (institution)" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "Couler (institution)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "Nager (pour accommoder)" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "Couler (pour accommoder)" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "Ne peut pas nager/couler" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "Promouvoir équipe" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d débats à la joute précédente n'ont pas un résultat." -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d débats à la joute précédente n'ont pas exactement deux équipes avançantes." -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "Les rangs des salles de la joute d'élimination partielle indique qu'un nombre impair d'équipes (%(nbypassing)d) l'ont contourné." -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "Les rangs des salles de la joute d'élimination partielle indique que %(nbypassing)d équipes l'ont contourné, mais que %(advancing)d équipes y ont avancé." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "Les rangs des salles de la joute d'élimination partielle indique que %(nbypassing)d équipes l'ont contourné, mais que %(nadvancing)d équipes l'ont avancé." -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "Le nombre d’équipes (%d) dans la joute précédente n’est pas une puissance de deux." -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "L'ordre de Rényi ne peut pas être négative mais il est actuellement %(alpha)f." -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "Le nombre d’équipes présenté pour le tirage n'est pas un multiple de %(num)d." -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "Il n’y a pas d’équipes pour le tirage." -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "Il n'y a que %d équipes « breaking » dans cette catégorie ; il faut au moins deux pour générer un tirage pour une joute éliminatoire." -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "Le nombre d’équipes (%d) dans cette joute n’est pas une puissance de deux." -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "%(noninteger)d sur %(total)d équipes ont une première métrique de classement non-entier. Les tranches intermédiaires obligent celui ci d'être entier (typiquement le pointage ou nombre de victoires)." -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "Il y avait %(aff_count)d équipes affirmatives mais %(neg_count)d équipes négatives." -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "Un équipe ou plus avait des côtés alloués qui n'étaient pas affirmatif ni négatif." -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "Le type de tirage %(type)s ne peut pas être utilisé avec des formats de deux équipes." -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "Le type de tirage %(type)s ne peut pas être utilisé avec le format de Parlementaire Britannique." -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "Réglage d'« équipes au débat » inconnu : %(option)s" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "La taille de la qualification (%(size)d) pour cette catégorie est invalide. Il doit être soit six ou quatre fois une puissance de deux." -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "aucun" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "repoussé" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "brouillon" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "confirmé" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "tour" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "salle" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "tranche" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "rang de salle" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "importance" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "état de résultat" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "côtés confirmés" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "Si non coché, les côtés assignés aux équipes à ce débat sont génériques." -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "débat" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "débats" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr " (côtés non-confirmés)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr " vs " -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "affirmatif" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "négatif" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "premier gouvernement" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "première opposition" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "second gouvernement" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "seconde opposition" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "équipe" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "côté" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "débat-équipe" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "débat-équipes" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "placé %(place)s" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "résultat inconnu" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "gagné" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "perdu" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "répartition des côté aux équipes" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "répartitions des côtés aux équipes" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "%(side)s: %(metric)s" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Équipe %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "Rang de salle de ce débat" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "Tranche de ce débat" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "historique des côtés
\n" "(nombre de fois que l'équipe a été sur chaque côté avant ce tour)" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "HC" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "D'équilibré à déséquilibré" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "De déséquilibré à équilibré" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "Meilleur amélioration possible, encore déséquilibré" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "Était déséquilibré et est encore déséquilibré" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "Aucune métrique dans la préséance de classement d'équipe" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "Côté" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "Position dans ce tour" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "Avant" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "Historique de côté avant ce tour" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "Après" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "Historique de côté après ce tour" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "Coût" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "Coût de position" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "État" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "Les équipes qui ont ce nombre de points sont permises dans ce débat
\n" "(tranche en caractères gras)" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s : %(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "historique de côté avant ce tour" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "Côtés" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "coût de position" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "ARRÊTEZ !!! D’abord lisez ceci ! La suppression des équipes-débat dans la base de données peut faire planter Tabbycat !" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "Tabbycat exige que tous les débats aient exactement une débat-équipe pour chaque côté, et aucune autre débat-équipe, à tout moment. Si vous supprimez n’importe quelle débat-équipe, vous devez alors remplacer chacune d’elles avec une nouvelle débat-équipe dans le même débat, ou supprimer les objets associés de débat. Si vous ne le faites pas correctement, nombreux pages planteront certainement." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "Il s’agit d’une source commune d’erreurs. Si cela vous arrive, vérifiez les débats (sous la section de Tirage dans cette zone pour modifier la base de données) pour s'assurer que chacune a exactement une équipe affirmative et une équipe négative." -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "AVERTISSEMENT !!! Si vous modifiez des équipes-débat, d’abord lisez ceci !" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "Tabbycat exige qu'il y ait exactement une équipe-débat pour chaque côté, et aucune autre équipe-débat, à chaque débat. Si vous modifiez les débat-équipes dans la base de données, vous devez vous assurer que cela reste le cas. Si vous ne le faites pas correctement, nombreux pages vont certainement se planter." -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "1 débat n'a pas de président." msgstr[1] "%(ndebates)s débats n'ont pas de président." -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "%(adjudicators)s juge plusieurs débats." msgstr[1] "Les %(nadjs)s juges suivant(e)s jugent plusieurs débats : %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "1 débat a un panel qui a un nombre pair de juges." msgstr[1] "%(ndebates)s débats ont un panel qui a un nombre pair de juges." -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "1 débat a un conflit de juge." msgstr[1] "%(ndebates)s débats ont des conflits de juge." -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "%(adjudicators)s n'est pas disponible cette joute, mais est alloué à un débat." msgstr[1] "Les %(nadjs)s juges suivants ne sont pas disponible cette joute, mais sont alloués aux débats : %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "Un juge est disponible mais pas alloué à un débat." msgstr[1] "%(ndebates)s juges sont disponibles mais ne sont pas alloué à des débats." -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "%(teams)s se figure dans plusieurs débats." msgstr[1] "Les %(nteams)s équipes suivantes se figurent dans plusieurs débats : %(teams)s" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "1 débat n'a pas de salle." msgstr[1] "%(ndebates)s débats n'ont pas de salle." -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "Il y a plusieurs débats dans %(rooms)s." msgstr[1] "Les %(ndebates)s salles suivantes ont plusieurs débats : %(rooms)s" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "Un débat viole une contrainte de salle." msgstr[1] "%(ndebates)s débats violent des contraintes de salle." -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "Disponibilité" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "Modifier les côtés/appariements" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "Refaire le tirage" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "Détails du Tirage" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "Équilibre des positions" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "Affichage du tirage" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "Confirmer régénération de tirage" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "Retour au tirage" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "Confirmer la suppression du tirage pour %(round)s" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "Voulez-vous vraiment régénérer le tirage pour %(round)s ? Cela supprimera tous les débats dans le tirage actuel y compris leurs feuilles de jugement et les attributions de juge, ce qui ne peut pas être annulé. Vous ne voulez probablement pas le faire si des résultats ont été saisis !" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "Oui, je veux supprimer le tirage actuelle pour %(round)s" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "Voir le tirage" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "Les débats commenceront à %(start_time)s" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "Définir l'heure de début" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "Saisie des résultats" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "Détails des motions" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "%(motions_count)s motion a été enregistrée." msgstr[1] "%(motions_count)s motions ont été enregistrées." -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "Modifier les motions" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "Modifier motions" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "Votre configuration/format nécessite la spécification des motions dans le cadre de la saisie des feuilles. Assurez-vous que vous les ajoutiez avant que les résultats arrivent !" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "Saisir les motions" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "La motion a été enregistrée." - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "Modifier la motion" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "Une motion devrait être ajoutée si vous voulez l'afficher lors des annonces, l'imprimer sur vos feuilles de jugement ou pour l'afficher (plus tard) sur les pages de motions/statistiques publiques." -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "Vous devriez enregistrer une motion si vous voulez l'afficher dans l'auditorium, l'imprimer sur vos feuilles (en utilisant les liens ci-dessous), ou l'afficher (plus tard) sur la page publique pour les motions." - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "Saisir une motion" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "Saisir motions" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "Publication du tirage" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "Vous n'avez pas encore générer un tirage pour cette joute. Il n'y a rien à publier." -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "Le tirage de cette joute est encore un brouillon. Confirmez-le avant de le publier." -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "Retirer le tirage du public" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "Le tirage a été publié." -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "Voir page de tirage publique" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Puisque vous avez publié le tirage, il est possible d'utiliser les formulaires publics afin de soumettre les feuilles ou les évaluations (si ces formulaires sont activés). Cependant, le tirage ne s'affichera pas à moins que le paramètre « affichage public du tirage » soit activé dans la configuration de ce tournoi." -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Vous avez publié le tirage, mais il ne s'affichera pas à moins que la paramètre « affichage public du tirage » soit activée dans la configuration de ce tournoi." -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "Publier le tirage" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Votre tournoi permet aux juges de soumettre en ligne les feuilles et les évaluations. Avant qu'ils puissent le faire, il faut que le tirage soit publié." -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Votre tournoi permet aux juges de soumettre en ligne les feuilles. Avant qu'ils puissent le faire, il faut que le tirage soit publié." -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "Votre tournoi permet aux juges de soumettre en ligne les évaluations. Avant qu'ils puissent le faire, il faut que le tirage soit publié." -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "Votre tournoi est configuré pour afficher publiquement le tirage. La publication du tirage lui permettra de s'afficher sur la page publique." -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "Votre configuration n'a ni de page publique pour le tirage ni les soumissions des feuilles et/ou évaluations. Il n'y a aucune raison de publier le tirage." -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "Publication des motions" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "Publier les motions" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "Publier les motions" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "Retirer les motions du public" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "Retirer les motions" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "Publication de la motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "Publier motions" -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "Publier la motion" - -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "Retirer la motion du public" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "Aucunes motions ne sont définies pour cette joute." -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "Selon la configuration de votre tournoi, les motions peuvent être sélectionnées dans les feuilles, que soumettent les juges. Assurez-vous que vous publiez les motions avant que les débats terminent, sinon les feuilles ne pourront pas être soumisses." -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "Selon la configuration de votre tournoi, les équipes peuvent opposer leur veto aux motions, et les juges soumettent les feuilles. Assurez-vous que vous publiez les motions avant que les débats terminent, sinon les feuilles ne pourront pas être soumisses." -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "Votre tournoi est configuré pour afficher la/les motion(s) de chaque joute sur la page publique. Pour que la/les motion(s) s'y affiche(nt), vous devez la/les publier." - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "Votre tournoi n'est pas configuré pour afficher la/les motion(s) de chaque tour sur la page publique. Vous n'avez pas besoin de la/les publier." +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "Votre tournoi est configuré pour afficher les motions de chaque joute sur la page publique. Pour que les motions s'y affiche, vous devez les publier." -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "Les motions ont été publiées." +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "Votre tournoi n'est pas configuré pour afficher les motions de chaque joute sur la page publique. Vous n'avez pas besoin de les publier." -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "La motion a été publiée." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "Les motions ont été publiées." -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "Voir page de motions publique" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "Vous avez publié les motions, mais elles ne s'afficheront pas à moins que la paramètre « affichage public des motions » soit activée dans la configuration de ce tournoi." -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "(pour la salle d'instructions)" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "Afficher le Tirage rangé par Salle" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "Afficher le Tirage rangé par Équipe" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "Afficher tirages pour Tout les joutes actuelles ordonné par salle" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "Afficher tirages pour tout les joutes actuelles ordonné par équipe" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "Afficher tirage pour %(round)s ordonné par salle" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "Afficher tirage pour %(round)s ordonné par équipe" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "Afficher les Motions" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "Envoyer Motions" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "Envoyer Motion" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "Commence à" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "(pour l'impression)" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "Voir Formulaires de Jugement" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "Voir Formulaires d'Évaluation" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "Vitesse de défilé" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "Vite" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "Moyen" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "Lent" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "Très Lent" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "Cacher Juges" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "Montrer Juges" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "Taille de Texte" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "Minuscule" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "Petit" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "Grand" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "Énorme" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "Arrête le Défilé" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "Le tirage de %(round)s n'a pas encore été publié." -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "Le tirage pour la prochaine joute n'est pas encore publié." -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "Attributions de juges" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "Il y a actuellement moins de juges enregistrés que de salles." -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "Attribuer les juges" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "Modifier les attributions de juges" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "Attribution de salles" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "Repartir les salles" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "Modifier attribution de salles" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "Jurys préformés" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "Il y a %(npanels)s jury préformé disponible pour cette joute." msgstr[1] "Il y a %(npanels)s jurys préformés disponibles pour cette joute." -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "Il n'y a pas de jury préformé disponible pour cette joute" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "Modifier jurys préformés pour %(round)s" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "Répartition des côtés" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "Un débat n'a pas ses côtés confirmés." msgstr[1] "%(ndebates)s débats n'ont pas ses côtés confirmés." -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "Supprimer le tirage" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "Confirmer le Tirage" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "La préséance de classement d'équipes est vide. Cela signifie que les équipes ne sont pas classés par aucun métrique, donc tous les équipes seront dans une seule tranche avec tout le monde. Si vous n'attendiez pas à ça, créez une préséance de classement d'équipes dans la section de classement des options du tournoi, et après supprimer et refaire le tirage. Dans la plupart des tournois, la première métrique devrait être le pointage ou victoires." -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "Les tranches sont formées en utilisant le premier métrique dans la préséance de classement d'équipe, ce qui est actuellement %(metric)s, et non le pointage d'équipe, ce qui est plus usuelle. Si ce n'est pas désiré, vous pouvezmodifier la préséance de classement d'équipe dans la page de configuration des préséances." -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "Le type de tirage pour cette joute est manuelle, donc Tabbycat a créé un tirage vide. Dirigez-vous vers Modifier Côtés/Appariements pour le remplir." -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "L'étendue des notes d'évaluation des juges est 0, donc les scores d'évaluation seront ignorés lors de la repartition. Vous pouvez modifier l'étendue des évaluations de juge dans la page de configuration des évaluations." -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "Tabbycat désigne les côtés dans les joutes éliminatoires aléatoirement. Cependant, parce que plusieurs tournois les désignent en face du public, les côtés seront marqués comme « non-confirmés, » pour que ça n'aura pas l'air comme si les côtés ont été désignés en avance. Après avoir confirmé le tirage, vous aurez besoin de confirmer les côtés dans la page « Modifier Côtés/Appariements », même si vous acceptez l'attribution aléatoire de Tabbycat." -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "Les cellules soulignés concerne des changements dans l'équilibre des positions comme ceci :
  • Les cellules rouges indiquent que l'équipe ne pouvait pas être désigné une position qui maintient l'équilibre.
  • Les cellules jaunes indiquent que l'équipe était déséquilibré et qui a maintenant la meilleur position possible dans le tirage, mais qui reste en déséquilibre.
  • Les cellules vertes indiquent que le déséquilibre antérieur de l'équipe est résolu avec ce tirage.
" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "Un tirage pour %(round)s n'a pas encore été généré. Pour en générer, allez à la section des disponibilités." -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "Il semble que les côtés ne sont pas confirmés pour quelques débats dans cette joute. Ce rapport de l'équilibre des positions est généré avec les « côtés non-confirmés » dans la base de données. Comme conséquence, il se peut qu'il ne fasse pas tant de sens. C'est mieux de confirmer les côtés dans tous les débats avant de regarder ce rapport." -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." -msgstr "Votre fonction de coût de position actuelle est %(cost_func)s, à la puissance %(exponent)s. Lisez d'avantage sur comment les fonctions de coût de position fonctionnent dans la documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "Votre fonction de coût de position actuelle est %(cost_func)s, à la puissance %(exponent)s. Lisez d'avantage sur comment les fonctions de coût de position fonctionnent dans notre documentation." -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "Les rapports sur l'équilibre des positions ne se produisent pas pour les tours éliminatoires." -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "Les rapports sur l'équilibre des positions ne sont disponible que pour les tournois de parlementaire britannique." -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "Un rapport sur l'équilibre des positions ne se produit pas pour le premier tour d'un tournoi." -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "Aucun débat dans cette joute" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "Tirage de %(round)s" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "Tirages pour Joutes Actuelles" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "les débats commencent à %(time)s (%(time_zone)s)" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "heures de début dans le fuseau horaire : %(time_zone)s" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "débat commence à %(time)s" msgstr[1] "débats commencent à %(time)s" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "Le tirage pour cette joute n'a pas été publié." -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "Tous les débats pour toutes les joutes de %(tournament)s" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "Repartitions de Juge" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "Position" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "Appariements d'équipe" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "Aucun tirage" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "Tirage brouillon" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "%(side)s: Rang de qualification" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "RQ" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "Tirage avec Détails" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "Rapport sur l'équilibre des positions" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "Entropie de Rényi de l'ordre %(order)s" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr " (i.e., Entropie de Shannon)" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "Équipes avec déséquilibre de position" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "Aucun équipe avec un déséquilibre de position ! Youpi !" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "Tirage Annoté" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "Ne pouvait pas créer un tirage pour %(round)s, il y avait déjà un tirage !" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "

Le tirage ne pouvait pas être créé pour la raison suivante : %(message)s

\n" "

Veuillez réparer ce problème avant de tenter de créer le tirage.

" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "

Le tirage ne pouvait pas être créé à cause de cette erreur :%(message)s

\n" "

Si le problème persiste et vous ne savez pas le résoudre, contactez les développeurs.

" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "

Le classement d'équipe ne pouvait pas être généré parce que l'erreur suivante s'est produite : %(message)s

\n" "

Parce que la génération de tirage utilise le classement d'équipe actuel, ceci empêche le tirage d'être généré.

" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "Les salles n'ont pas été automatiquement attribués car il y a des juges avec des contraintes de salle. Vous devriez allouer les salles après d'avoir assigné les juges." -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "Supprimé le tirage. Vous pouvez maintenant le récréer comme normal." -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "Publié le tirage." -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "Retiré le tirage." -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "Désolé, « %(input)s » n'est pas un temps valide. Il doit être en format 24-heure avec deux points, pour exemple : « 13:57 »." -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "Pré-Répartition des côtés aux équipes" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "Modifier Appariements" diff --git a/tabbycat/draw/locale/he/LC_MESSAGES/django.po b/tabbycat/draw/locale/he/LC_MESSAGES/django.po index 0914f6ce084..ae4df115b02 100644 --- a/tabbycat/draw/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/he/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:29\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" +"Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" "MIME-Version: 1.0\n" @@ -12,24 +12,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." @@ -38,7 +26,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." @@ -47,416 +39,405 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/apps.py:7 draw/views.py:429 draw/views.py:432 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:26 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:269 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:27 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:28 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:29 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:36 draw/models.py:389 +#: draw/models.py msgid "round" msgstr "סיבוב" -#: draw/models.py:38 -msgid "venue" +#: draw/models.py +msgid "room" msgstr "" -#: draw/models.py:41 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:43 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:49 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:51 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:53 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:54 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:57 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:77 draw/models.py:102 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:89 draw/models.py:106 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "ממשלה 1" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "אופוזיציה 1" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "ממשלה 2" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "אופוזיציה 2" -#: draw/models.py:274 draw/models.py:391 +#: draw/models.py msgid "team" msgstr "קבוצה" -#: draw/models.py:276 draw/models.py:393 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:283 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:311 -msgid "placed 1st" -msgstr "" - -#: draw/models.py:313 -msgid "placed 2nd" -msgstr "" - -#: draw/models.py:315 -msgid "placed 3rd" -msgstr "" - -#: draw/models.py:317 -msgid "placed 4th" +#: draw/models.py +#, python-format +msgid "placed %(place)s" msgstr "" -#: draw/models.py:319 draw/models.py:326 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:322 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:324 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:397 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:398 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." @@ -465,7 +446,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" @@ -474,7 +455,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." @@ -483,7 +464,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." @@ -492,7 +473,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" @@ -501,7 +482,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." @@ -510,7 +491,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" @@ -519,7 +500,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." @@ -528,7 +509,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" @@ -537,7 +518,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." @@ -546,81 +527,77 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." @@ -629,310 +606,321 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." @@ -941,21 +929,20 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." @@ -964,92 +951,92 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:66 draw/views.py:460 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:74 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:76 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:80 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:84 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:122 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" @@ -1058,121 +1045,125 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: draw/views.py:169 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:222 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:380 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:400 +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:426 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:518 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:523 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:548 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:556 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:567 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:570 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:600 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:601 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:604 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:635 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:643 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:651 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:660 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:676 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:703 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:723 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:738 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:751 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:770 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:803 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/hi/LC_MESSAGES/django.po b/tabbycat/draw/locale/hi/LC_MESSAGES/django.po index 17ff9464416..b4108a54ae4 100644 --- a/tabbycat/draw/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/hi/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:28\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" @@ -12,1133 +12,1108 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:429 draw/views.py:432 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:26 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:269 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:27 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:28 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:29 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:36 draw/models.py:389 +#: draw/models.py msgid "round" msgstr "" -#: draw/models.py:38 -msgid "venue" +#: draw/models.py +msgid "room" msgstr "" -#: draw/models.py:41 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:43 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:49 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:51 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:53 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:54 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:57 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:77 draw/models.py:102 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:89 draw/models.py:106 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:391 +#: draw/models.py msgid "team" msgstr "" -#: draw/models.py:276 draw/models.py:393 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:283 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:311 -msgid "placed 1st" -msgstr "" - -#: draw/models.py:313 -msgid "placed 2nd" -msgstr "" - -#: draw/models.py:315 -msgid "placed 3rd" -msgstr "" - -#: draw/models.py:317 -msgid "placed 4th" +#: draw/models.py +#, python-format +msgid "placed %(place)s" msgstr "" -#: draw/models.py:319 draw/models.py:326 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:322 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:324 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:397 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:398 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:66 draw/views.py:460 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:74 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:76 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:80 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:84 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:122 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:169 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:222 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:380 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:400 +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:426 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:518 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:523 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:548 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:556 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:567 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:570 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:600 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:601 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:604 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:635 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:643 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:651 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:660 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:676 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:703 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:723 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:738 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:751 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:770 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:803 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/id/LC_MESSAGES/django.po b/tabbycat/draw/locale/id/LC_MESSAGES/django.po index 94b15aaa41b..efeac1d74aa 100644 --- a/tabbycat/draw/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-12-08 00:20\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,1111 +17,1083 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "%(count)d debate diubah statusnya menjadi %(status)s." - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "Ubah status hasil ke %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "%(count)d debat ditandai sebagai sisinya terkonfirmasi." -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "%(count)d debat ditandai sebagai sisinya tidak terkonfirmasi." -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "Undian" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "Terlalu banyak pertukaran" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "Satu-atas-satu-bawah (histori)" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "Satu-atas-satu-bawah (institusi)" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "Satu-atas-satu-bawah (untuk diakomodasi)" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "Gelembung atas (histori)" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "Gelembung bawah (histori)" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "Gelembung atas (institusi)" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "Gelembung bawah (institusi)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "Gelembung atas (untuk diakomodasi)" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "Gelembung bawah (untuk diakomodasi)" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "Tidak bisa menggelembungkan ke atas/bawah" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "Tim pull-up" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d debat pada ronde sebelumnya tidak memiliki hasil." -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d debat pada ronde sebelumnya tidak memiliki tepat 2 tim yang lolos." -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "Ranking ruangan dari ronde eliminasi parsial mengindikasikan jumlah tim ganjil (%(nbypassing)d) melompatinya." -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "Ranking ruangan dari ronde eliminasi parsial mengindikasikan %(nbypassing)d tim melompatinya, tetapi %(advancing)d tim lolos darinya." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "Jumlah debat (%d) pada ronde sebelumnya tidak berjumlah dua pangkat n." -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "Urutan Rényi tidak bisa negatif, dan saat ini diset ke %(alpha)f." -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "Jumlah tim yang dipresentasikan untuk pengundian bukan kelipatan dari %(num)d." -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "Tidak ada tim untuk pengundian." -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "Hanya ada %d tim breaking pada kategori ini; harus ada paling tidak dua untuk membangkitkan undian ronde eliminasi." -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "Jumlah tim (%d) pada ronde ini bukan kelipatan dua." -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "%(noninteger)d dari %(total)d tim memiliki metrik pertama berupa bukan bilangan bulat pada urutan tim. Bracket intermediate membutuhkan urutan tim pertama berupa bilangan bulat (biasanya poin atau jumlah kemenangan)." -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "Ada %(aff_count)d tim afirmatif tetapi %(neg_count)d tim negatif." -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "Satu atau lebih tim memiliki sisi yang dialokasikan bukan berupa afirmatif atau negatif." -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "Tipe pengundian %(type)s tidak dapat digunakan pada format dua-tim." -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "Tipe pengundian %(type)s tidak dapat digunakan pada British Parliamentary." -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "Opsi \"tim dalam debat\" tidak dikenali: %(option)s" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "Ukuran break (%(size)d) untuk kategori break ini tidak valid. Itu harus enam kali atau empat kali dari dua pangkat n." -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "tidak ada" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "ditunda" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "draf" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "terkonfirmasi" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "ronde" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "ruangan" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "bracket" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "ranking ruangan" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "tingkat kepentingan" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "status hasil" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "sisi terkonfirmasi" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "Jika tidak dicek, sisi yang dilekatkan ke tim pada debat ini hanya berupa pengisi ruang." -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "debat" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "debat" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr " (sisi tidak terkonfirmasi)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr " vs " -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "afirmatif" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "negatif" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "pemerintah pembuka" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "oposisi pembuka" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "pemerintah penutup" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "oposisi penutup" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "tim" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "sisi" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "tim debat" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "tim debat" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "pada posisi %(place)s" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "hasil tidak diketahui" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "menang" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "kalah" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "alokasi sisi tim" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "alokasi sisi tim" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "%(side)s: %(metric)s" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Tim %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "Ranking ruangan pada debat ini" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "Bracket debat ini" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "histori sisi
\n" "(jumlah berapa kali tim berada pada setiap sisi sebelum ronde ini)" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "HS" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "Berubah dari seimbang menjadi tidak seimbang" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "Berubah dari tidak seimbang menjadi seimbang" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "Perbaikan optimal memungkinkan, masih tidak seimbang" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "Sebelumnya tidak seimbang dan masih tidak seimbang" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "Tidak ada metrik pada presedensi urutan tim" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "Sisi" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "Memposisikan ronde ini" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "Sebelum" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "Histori sisi sebelum ronde ini" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "Setelah" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "Histori sisi setelah ronde ini" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "Biaya" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "Biaya Posisi" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "Status" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "Tim dengan poin sebanyak ini diperbolehkan di dalam debat ini
\n" "(bracket ditebalkan)" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s: %(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "histori sisi sebelum ronde ini" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "Sisi" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "biaya posisi" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "BERHENTI!!! Baca ini dahulu! Menghapus tim debat dari basisdata dapat membuat Tabbycat crash!" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "Tabbycat mewajibkan seluruh debat memilik tepat satu tim debat untuk setiap sisi, dan tidak ada tim debat lain, pada setiap saat. Jika Anda menghapus debat tim apapun, maka Anda harus menggantinya masing-masing dengan tim debat baru pada debat yang sama, atau menghapus objek debat tersebut. Jika Anda tidak melakukannya dengan benar, banyak halaman akan crash." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "Ini adalah sumber masalah yang umum. Jika terjadi pada Anda, cek debat-debatnya (seksi Pengundian di dalam area Sunting Basisdata ini) dan pastikan semuanya memiliki tepat satu tim afirmatif dan satu tim negatif." -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "PERHATIAN!!! Jika Anda menyunting tim debat, baca ini dahulu!" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "Tabbycat mewajibkan seluruh debat memilik tepat satu tim debat untuk setiap sisi, dan tidak ada tim debat lain, pada setiap debat. Jika Anda menyunting tim debat pada basisdata, Anda harus memastikan bahwa ini tetap berlaku. Jika Anda tidak melakukannya dengan benar, banyak halaman akan crash." -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "%(ndebates)s debat tidak memiliki ketua." -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "%(nadjs)s juri berikut ini menjurikan lebih dari satu debat: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "%(ndebates)s debat memiliki panelis dengan jumlah juri genap." -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "%(ndebates)s debat memiliki konfilik juri." -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "%(nadjs)s berikut ini tidak tersedia di ronde ini, tetapi ditugaskan pada debat: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "%(ndebates)s juri tersedia tetapi tidak ditugaskan pada sebuah debat." -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "%(nteams)s tim berikut ini bertanding pada lebih dari satu debat: %(teams)s" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "%(ndebates)s debat tidak memiliki ruangan." -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "%(ndebates)s ruangan ini memiliki lebih dari satu debat di dalamnya: %(rooms)s" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "%(ndebates)s debat melanggar batasan ruangan." -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "Ketersediaan" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "Ubah Sisi/Pasangan" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "Lakukan Kembali Pengundian" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "Detail Pengundian" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "Posisikan Keseimbangan" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "Tampilkan Pengundian" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "Konfirmasi pembangkitan ulang undian" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "Kembali ke Pengundian" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "Konfirmasi Penghapusan Pengundian untuk %(round)s" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "Apakah anda benar ingin membuat ulang draw untuk %(round)s? Ini akan menghapus seluruh debat pada ronde tersebut — termasuk balot dan alokasi juri — dan tidak dapat dikembalikan. Anda mungkin tidak ingin melakukan ini apabila sudah ada hasil yang masuk!" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "Ya, saya ingin menghapus pengundian saat ini untuk %(round)s" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "Lihat Pengundian" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "Debat dimulai pada %(start_time)s" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "Tambahkan Waktu Mulai" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "Masukkan Hasil" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "Detail Mosi" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "%(motions_count)s mosi sudah dimasukkan." -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "Sunting mosi" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "Konfigurasi/format anda mewajibkan mosi untuk ditulis dalam balot. Pastikan mosi telah ditambahkan sebelum hasil masuk!" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "Masukkan mosi" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "Mosi telah dimasukkan." - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "Sunting mosinya" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "Mosi harus ditambahkan apabila anda ingin menampilkannya di auditorium atau dicetak pada balot (menggunakan tautan di bawah) atau ditampilkan (nanti) pada laman publik mosi." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "Masukkan mosi" +msgid_plural "Enter motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "Rilis Pengundian" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "Anda belum membangkitkan pengundian untuk ronde ini. Tidak ada yang bisa dirilis." -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "Pengundian untuk ronde ini masih dalam keadaan draf. Konfirmasi Pengundian terlebih dahulu sebelum merilisnya." -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "Tarik kembali rilis pengundian ke publik" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "Pengundian telah dirilis secara publik." -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "Lihat halaman pengundian publik" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Anda telah merilis pengundian, sehingga kertas suara dan/atau umpan balik dapat dikirimkan dari formulir publik (jika dinyalakan). Meskipun demikian, pengundiannya sendiri tidak akan terlihat ke publik kecuali pengaturan \"tampilan publik dari pengundian\" dinyalakan pada konfigurasi turnamen ini." -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Anda telah merilis pengundian, tetapi tidak akan muncul ke publik kecuali pengaturan \"tampilkan pengundian ke publik\" dinyalakan di konfigurasi turnamen ini." -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "Rilis pengundian ke publik" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Turnamen Anda memperbolehkan kertas suara dan umpan balik untuk dikumpulkan secara daring oleh juri. Pengundian harus dirilis sebelum mereka bisa melakukannya." -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Turnamen Anda memperbolehkan kertas suara dikumpulkan secara daring oleh juri. Pengundian harus dirilis sebelum mereka dapat melakukannya." -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "Turnamen Anda memperbolehkan umpan balik untuk dikumpulkan secara daring oleh partisipan. Pengundian harus dirilis sebelum mereka dapat melakukannya." -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "Turnamen Anda dikonfigurasi untuk menampilkan pengundian ke publik. Merilis pengundian akan memperbolehkannya untuk menampilkannya ke halaman publik." -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "Konfigurasi Anda tidak memiliki halaman pengundian publik atau pengumpulan umpan balik/kertas suara. Tidak ada alasan untuk merilis pengundian." -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "Rilis Mosi" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "Rilis mosi ke publik" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "Tarik kembali mosi" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "Rilis Mosi" +msgid_plural "Release Motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "Rilis mosi ke publik" - -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "Tarik kembali mosi" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "Turnamen Anda dikonfigurasi untuk membutuhkan mosi dipilih pada kertas suara dan untuk memperbolehkan kertas suara dikumpulkan oleh juri. Pastikan Anda merilis mosi sebelum debat berakhir. Jika tidak kertas suara tidak akan bisa dikumpulkan." -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "Turnamen Anda dikonfigurasi untuk memperbolehkan mosi diveto dan memperbolehkan kertas suara dikumpulkan oleh juri. Pastikan Anda merilis mosi sebelum debat berakhir. Jika tidak kertas suara tidak akan bisa menominasi veto." -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "Turnamen Anda dikonfigurasi untuk menunjukkan mosi untuk setiap ronde pada situs publik. Anda perlu terlebih dahulu merilis mosinya untuk ditunjukkan di sini." +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "Turnamen Anda tidak dikonfigurasi untuk menampilkan mosi untuk setiap ronde pada situs publik. Tidak ada kebutuhan untuk merilis mosi." +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "Mosi sudah dirilis secara publik." - -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "Mosi sudah dirilis secara publik." +msgid_plural "Motions have been released publicly." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "Lihat halaman mosi publik" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "Anda telah merilis mosi, tetapi mereka tidak akan muncul ke publik kecuali pengaturan \"tampilan publik mosi\" dinyalakan di konfigurasi turnamen ini." -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "(untuk ruangan briefing)" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "Tampilkan Undian diurutkan berdasarkan Ruangan" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "Tampilkan Pengundian diurutkan berdasarkan Tim" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "Tampilkan Pengundian untuk Seluruh Ronde Ini diurutkan berdasarkan Ruangan" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "Tampilkan Pengundian untuk Seluruh Ronde Ini diurutkan berdasarkan Tim" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "Tampilkan Pengundian untuk %(round)s diurutkan berdasarkan Ruangan" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "Tampilkan Pengundian untuk %(round)s diurutkan berdasarkan Tim" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "Tampilkan Mosi" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "Email Mosi" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "Email Mosi" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "Dimulai pada" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "(untuk dicetak)" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "Lihat Form Kerta Suara" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "Lihat Form Umpanbalik" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "Kecepatan Scroll" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "Cepat" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "Sedang" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "Lambat" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "Sangat Lambat" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "Sembunyikan Juri" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "Tampilkan Juri" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "Ukuran Teks" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "Sangat Kecil" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "Kecil" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "Besar" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "Sangat Besar" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "Hentikan Scroll" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "Pengundian untuk %(round)s belum dirilis." -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "Pengundian untuk ronde berikutnya belum dirilis." -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "Alokasi Juri" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "Ada lebih sedikit juri dicek dibanding jumlah ruangan." -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "Alokasikan juri" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "Sunting alokasi juri" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "Alokasi Ruangan" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "Alokasikan ruangan" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "Sunting alokasi ruangan" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "Rancangan Panel" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "Ada %(npanels)s panel prabentukan tersedia untuk ronde ini." -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "Tidak ada panel prabentukan tersedia untuk ronde ini" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "Sunting panel prabentukan untuk %(round)s" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "Alokasi Sisi" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "%(ndebates)s debat tidak memiliki sisi terkonfirmasi." -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "Hapus Pengundian" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "Konfirmasi Pengundian" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "Presedensi urutan tim kosong. Ini berarti bahwa tim tidak di-ranking berdasarkan metrik apapun, maka semua tim berada pada satu bracket yang berisi semuanya. Jika ini tidak seperti yang Anda inginkan, set presedensi urutan tim pada Seksi Urutan pada konfigurasi turnamen ini, lalu hapus dan buat ulang pengundiannya. Pada sebagian besar turnamen, metrik pertama seharusnya jumlah poin atau kemenangan." -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "Bracket dibangun menggunakan metrik pertama pada presedensi, yang saat ini diset ke %(metric)s, alih-alih poin tim, yang merupakan konvensi umum. Jika ini bukan yang Anda inginkan, Anda dapat mengubah presedensi urutan tim pada halaman konfigurasi urutan." -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "Tipe pengundian untuk ronde ini diset ke manual, sehingga Tabbycat baru saja membuat pengundian kosong. Pindahlah ke Sunting Sisi/Matchup untuk mengisinya." -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "Rentang nilai adjudicator adalah 0, maka nilai adjudicator akan diabaikan saat mengalokasikan. Anda dapat mengubah rentang nilai adjudicator pada halaman konfigurasi umpanbalik." -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "Tabbycat menentukan sisi pada ronde eliminasi secara acak. Namun begitu, karena di ronde eliminasi banyak turnamen mengundi banyak sisi di depan audiens, sisi-sisi ditandai sebagai \"tidak terkonfirmasi\", sehingga tidak terlihat seperti sisinya sudah ditentukan sebelumnya. Setelah Anda mengonfirmasi pengundiannya, Anda perlu mengonfirmasi sisi-sisi pada halaman \"Sunting Sisi/Matchup\", walaupun Anda menginginkan untuk menerima penentuan acak dari Tabbycat." -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "Sel yang diwarnai berhubungan dengan perubahan pada keseimbangan posisi, seperti berikut:
  • Sel berwarna merah mengindikasikan bahwa tim tidak dapat dialokasikan ke sebuah posisi yang menjaga keseimbangan.
  • Sel kuning mengindikasikan bahwa tim tersebut sebelumnya tidak seimbang, dan diberikan posisi terbaik yang memungkinkan di pengundian ini, tetapi tetap saja tidak seimbang.
  • Sel berwarna hijau mengindikasikan bahwa ketidakseimbangan tim sebelumnya sudah diperbaiki pada pengundian ini.
" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "Pengundian untuk %(round)s belum dibangkitkan. Untuk membangkitkan, pergi ke seksi Ketersediaan." -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "Sepertinya sisi belum dikonfirmasi pada beberapa debat dalam ronde ini. Laporan keseimbangan posisi ini dibangkitkan menggunakan \"sisi tidak terkonfirmasi\" di dalam basisdata, dan konsekuensinya, mungkin tidak masuk akal. Akan lebih baik untuk mengonfirmasi sisi-sisi di setiap debat sebelum melihat laporan ini." -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." -msgstr "Fungsi biaya posisi Anda saat ini adalah %(cost_func)s, dipangkatkan %(exponent)s. Baca lebih lanjut tentang bagaimana fungsi biaya posisi bekerja di dalam dokumentasi kami." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "Laporan keseimbangan posisi tidak dihitung untuk ronde eliminasi." -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "Laporan keseimbangan posisi hanya tersedia untuk turnamen Parlemen Inggris." -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "Laporan keseimbangan posisi tidak dihitung untuk ronde pertama dari sebuah turnamen." -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "Tidak ada debat dalam ronde ini" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "Pengundian untuk %(round)s" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "Pengundian untuk Ronde Ini" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "debat dimulai pada %(time)s (zona waktu %(time_zone)s)" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "waktu mulai pada zona waktu: %(time_zone)s" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "debat dimulai pada %(time)s" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "Pengundian untuk ronde ini belum dirilis." -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "Seluruh Debat pada Semua Ronde dari %(tournament)s" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "Penugasan Juri" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "Posisi" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "Pemasangan Tim" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "Tidak ada Pengundian" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "Pengundian Draf" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "%(side)s: Ranking break" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "RB" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "Pengundian dengan Detail" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "Laporan Keseimbangan Posisi" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "Entropi Rényi dari urutan %(order)s" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr " (yaitu, entropi Shannon)" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "Tim dengan ketidakseimbangan posisi" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "Tidak ada tim dengan ketidakseimbangan posisi! Mantul!" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "Pengundian dengan catatan" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "Tidak dapat membuat pengundian untuk %(round)s, karena sudah ada pengundian sebelumnya!" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "

Pengundian tidak dapat dibuat, karena alasan berikut: %(message)s

\n" "

Mohon perbaiki masalah ini sebelum mencoba membuat pengundiannya.

" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "

Pengundian tidak dapat dibuat, karena kesalahan ini terjadi: %(message)s

\n" "

Jika masalahnya terus berlanjut dan Anda tidak yakin bagaimana memecahkannya, mohon kontak pengembang.

" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "

Klasemen tim tidak dapat dibangkitkan, karena kesalahan berikut terjadi: %(message)s

\n" "

Karena membangkitkan pengundian menggunakan klasemen tim ini, pengundian tidak dapat dibangkitkan juga.

" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "Ruangan tidak dialokasikan otomatis karena ada satu atau lebih batasan ruangan juri. Anda harus menjalankan alokasi ruangan setelah mengalokasikan juri." -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "Pengundian dihapus. Anda sekarang dapat membuatnya kembali sebagai normal." -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "Pengundian dirilis." -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "Pengundian ditarik kembali." -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "Maaf, \"%(input)s\" bukan waktu yang valid. Waktu harus dalam format 24-jam, dengan titik dua, contohnya: \"13:57\"." -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "Pre-Alokasi Sisi" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "Sunting Matchup" diff --git a/tabbycat/draw/locale/it/LC_MESSAGES/django.mo b/tabbycat/draw/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..c33631fe1bd Binary files /dev/null and b/tabbycat/draw/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/it/LC_MESSAGES/django.po b/tabbycat/draw/locale/it/LC_MESSAGES/django.po index a235eb8d9e8..b9773926e78 100644 --- a/tabbycat/draw/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2022-04-16 17:36\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,1123 +17,1103 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "dibattito" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "squadra" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "Giurie preformate" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/ja/LC_MESSAGES/django.po b/tabbycat/draw/locale/ja/LC_MESSAGES/django.po index 6f45d586cd0..2c0b34022dd 100644 --- a/tabbycat/draw/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-07-02 13:44\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,1107 +17,1079 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "対戦表" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "バブルダウン(インスティチューションのため)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "プルアップチーム" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "下書き状態" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "ラウンド" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "部屋" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "重要度" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "ディベート" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "ディベート" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "(サイドが決まっていません)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "対" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "肯定側" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "否定側" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "Opening Government" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "Opening Opposition" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "Closing Government" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "Closing Opposition" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "チーム" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "サイド" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" -msgstr "" +msgstr "ディベートチーム" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" -msgstr "" +msgstr "ディベートチーム" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "%(place)s位" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "結果不明" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "勝ち" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "負け" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" -msgstr "" +msgstr "チームサイドのアロケーション" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" -msgstr "" +msgstr "チームサイドのアロケーション" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" -msgstr "" +msgstr "チーム%(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" -msgstr "" +msgstr "サイド" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" -msgstr "" +msgstr "このラウンド以前のサイドの履歴" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" -msgstr "" +msgstr "の後" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" -msgstr "" +msgstr "このラウンド後のサイドの履歴" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" -msgstr "" +msgstr "状態" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "注意!データベースからチームを消すことはTabbycatが落ちる可能性があります。" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "対戦表を再度作成する" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "対戦表を公開する" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "対戦表を確認する" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "%(start_time)sにラウンド開始" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "開始時刻を追加する" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "結果入力" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" -msgstr "" +msgstr "モーションの詳細" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "モーションを修正する" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "モーションの修正" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "設定により、バロットを入力する際にモーションが必要です。\n" "試合終了までに入力してください。" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "モーションを入力する" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "モーションが入力されました。" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "モーションを修正する" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "モーションを入力する" +msgid_plural "Enter motions" +msgstr[0] "モーションを入力" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "対戦表を公開する" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "まだこのラウンドの対戦表が作成されていないため、公開するものがありません。" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "対戦表を非公開にする。" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" -msgstr "" +msgstr "参加者向けの対戦表を表示" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" -msgstr "" +msgstr "対戦表を公開する" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "この大会ではオンラインでバロットやフィードバックを提出することができます。可能にするためには、事前に対戦表を公開しておいてください。" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "モーションを公開する" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "モーションを公開" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "モーションを公開する" +msgid_plural "Release Motions" +msgstr[0] "モーションを公開" -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" - -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "この大会では公開用サイトでモーションが見れるように設定されていません。モーションを発表する必要がありません。" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "スクロールの速さ" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "早く" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "普通" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "遅く" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "さらに遅く" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "文字の大きさ" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "さらに小さく" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "小さく" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "大きく" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "さらに大きく" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "スクロールを止める" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "ジャッジのアロケーション" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "ラウンド部屋の配置を修正する" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "事前設定されたパネル" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "%(round)sの対戦表" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "対戦表がありません" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "仮の対戦表" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "詳細付きの対戦表" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "対戦表を公開する。" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "対戦表を非公開にする。" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/kk/LC_MESSAGES/django.mo b/tabbycat/draw/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..40f09d0eed5 Binary files /dev/null and b/tabbycat/draw/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/kk/LC_MESSAGES/django.po b/tabbycat/draw/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..59076683346 --- /dev/null +++ b/tabbycat/draw/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,1119 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides confirmed." +msgid_plural "%(count)d debates were marked as having their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides not confirmed." +msgid_plural "%(count)d debates were marked as having their sides not confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/apps.py draw/views.py +msgid "Draw" +msgstr "" + +#: draw/generator/__init__.py +msgid "Too many swaps" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Can't bubble up/down" +msgstr "" + +#: draw/generator/__init__.py +msgid "Pull-up team" +msgstr "" + +#: draw/generator/bpelimination.py draw/generator/elimination.py +#, python-format +msgid "%d debates in the previous round don't have a result." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "%d debates in the previous round don't have exactly two teams advancing." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The number of debates (%d) in the last round is not a power of two." +msgstr "" + +#: draw/generator/bphungarian.py +#, python-format +msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." +msgstr "" + +#: draw/generator/common.py +#, python-format +msgid "The number of teams presented for the draw was not a multiple of %(num)d." +msgstr "" + +#: draw/generator/common.py +msgid "There were no teams for the draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "The number of teams (%d) in this round is not a power of two." +msgstr "" + +#: draw/generator/powerpair.py +#, python-format +msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." +msgstr "" + +#: draw/generator/random.py +#, python-format +msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." +msgstr "" + +#: draw/generator/random.py +msgid "One or more teams had an allocated side that wasn't affirmative or negative." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with two-team formats." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with British Parliamentary." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "Unrecognised \"teams in debate\" option: %(option)s" +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." +msgstr "" + +#: draw/models.py +msgid "none" +msgstr "" + +#: draw/models.py +msgid "postponed" +msgstr "" + +#: draw/models.py +msgid "draft" +msgstr "" + +#: draw/models.py +msgid "confirmed" +msgstr "" + +#: draw/models.py +msgid "round" +msgstr "ойын" + +#: draw/models.py +msgid "room" +msgstr "" + +#: draw/models.py +msgid "bracket" +msgstr "" + +#: draw/models.py +msgid "room rank" +msgstr "" + +#: draw/models.py +msgid "importance" +msgstr "" + +#: draw/models.py +msgid "result status" +msgstr "" + +#: draw/models.py +msgid "sides confirmed" +msgstr "" + +#: draw/models.py +msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." +msgstr "" + +#: draw/models.py +msgid "debate" +msgstr "пікірсайыс" + +#: draw/models.py +msgid "debates" +msgstr "" + +#. Translators: This is appended to a list of teams, e.g. "Auckland +#. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading +#. space. +#: draw/models.py +msgid " (sides not confirmed)" +msgstr "" + +#. Translators: This goes between teams in a debate, e.g. "Auckland 1 +#. vs Vic Wellington 1". Mind the leading and trailing spaces. +#: draw/models.py +msgid " vs " +msgstr "" + +#: draw/models.py +msgid "affirmative" +msgstr "" + +#: draw/models.py +msgid "negative" +msgstr "" + +#: draw/models.py +msgid "opening government" +msgstr "" + +#: draw/models.py +msgid "opening opposition" +msgstr "" + +#: draw/models.py +msgid "closing government" +msgstr "" + +#: draw/models.py +msgid "closing opposition" +msgstr "" + +#: draw/models.py +msgid "team" +msgstr "топ" + +#: draw/models.py +msgid "side" +msgstr "" + +#: draw/models.py +msgid "debate team" +msgstr "" + +#: draw/models.py +msgid "debate teams" +msgstr "" + +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "" + +#: draw/models.py +msgid "result unknown" +msgstr "" + +#: draw/models.py +msgid "won" +msgstr "" + +#: draw/models.py +msgid "lost" +msgstr "" + +#: draw/models.py +msgid "team side allocation" +msgstr "" + +#: draw/models.py +msgid "team side allocations" +msgstr "" + +#. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", +#. "Opening government: Total speaker score", "Closing opposition: Number of firsts" +#: draw/tables.py +#, python-format +msgid "%(side)s: %(metric)s" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "" + +#: draw/tables.py +msgid "Room rank of this debate" +msgstr "" + +#: draw/tables.py +msgid "Bracket of this debate" +msgstr "" + +#: draw/tables.py +msgid "side history
\n" +"(number of times the team has been on each side before this round)" +msgstr "" + +#. Translators: Abbreviation for "side history" +#: draw/tables.py +msgid "SH" +msgstr "" + +#: draw/tables.py +msgid "Went from balanced to imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Went from imbalanced to balanced" +msgstr "" + +#: draw/tables.py +msgid "Best improvement possible, still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Was imbalanced and still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "No metrics in the team standings precedence" +msgstr "" + +#: draw/tables.py +msgid "Side" +msgstr "" + +#: draw/tables.py +msgid "Position this round" +msgstr "" + +#: draw/tables.py +msgid "Before" +msgstr "" + +#: draw/tables.py +msgid "Side history before this round" +msgstr "" + +#: draw/tables.py +msgid "After" +msgstr "" + +#: draw/tables.py +msgid "Side history after this round" +msgstr "" + +#: draw/tables.py +msgid "Cost" +msgstr "" + +#: draw/tables.py +msgid "Position cost" +msgstr "" + +#: draw/tables.py +msgid "Status" +msgstr "" + +#: draw/tables.py +msgid "Teams with this many points are permitted in this debate
\n" +"(bracket in bold)" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "%(team)s: %(metric)s" +msgstr "" + +#: draw/tables.py +msgid "side history before this round" +msgstr "" + +#: draw/tables.py +msgid "Sides" +msgstr "" + +#: draw/tables.py +msgid "position cost" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "WARNING!!! If you are editing debate teams, read this first!" +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate does not have a chair." +msgid_plural "%(ndebates)s debates do not have a chair." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is adjudicating multiple debates." +msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has a panel with an even number of adjudicators." +msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has an adjudicator conflict." +msgid_plural "%(ndebates)s debates have adjudicator conflicts." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." +msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 adjudicator is available but not assigned to a debate." +msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_teams.html +#, python-format +msgid "%(teams)s is competing in multiple debates." +msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate does not have a room." +msgid_plural "%(ndebates)s debates do not have a room." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "There are multiple debates in %(rooms)s." +msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate has a room constraint violation." +msgid_plural "%(ndebates)s debates have room constraint violations." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_base.html +msgid "Availability" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html +msgid "Edit Sides/Matchups" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Redo Draw" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Draw Details" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Position Balance" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +msgid "Confirm draw regeneration" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html +msgid "Back to Draw" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Confirm Draw Deletion for %(round)s" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Yes, I want to delete the current draw for %(round)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "Debates start at %(start_time)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Add Start Time" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter Results" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Motion Details" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "%(motions_count)s motion has been entered." +msgid_plural "%(motions_count)s motions have been entered." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter a motion" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Draw" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "You have not generated a draw for this round yet. There is nothing to release." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw has been released publicly." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View public draw page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "The motion has been released publicly." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_display_admin.html +msgid "View public motions page" +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "(for the briefing room)" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motions" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Email Motion" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Start at" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "(for printing)" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Ballot Forms" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Feedback Forms" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Scroll Speed" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Fast" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Medium" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Extra Slow" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Hide Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Show Adjudicators" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Text Size" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Tiny" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Small" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Large" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Huge" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Stop Scroll" +msgstr "" + +#: draw/templates/draw_not_released.html +#, python-format +msgid "The draw for %(round)s has yet to be released." +msgstr "" + +#: draw/templates/draw_not_released.html +msgid "The draw for the next round has yet to be released." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Adjudicator Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are currently fewer adjudicators checked in than there are rooms." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate adjudicators" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit adjudicator allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Room Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate rooms" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit room allocation" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Preformed Panels" +msgstr "Алдын-ала бекітілген құрам" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "There is %(npanels)s preformed panel available for this round." +msgid_plural "There are %(npanels)s preformed panels available for this round." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are no preformed panels available for this round" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "Edit preformed panels for %(round)s" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Side Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "1 debate does not have its sides confirmed." +msgid_plural "%(ndebates)s debates do not have their sides confirmed." +msgstr[0] "" +msgstr[1] "" + +#: draw/templates/draw_status_draft.html +msgid "Delete Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Confirm Draw" +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" +msgstr "" + +#: draw/templates/draw_status_none.html +#, python-format +msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." +msgstr "" + +#: draw/templates/position_balance.html +msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." +msgstr "" + +#: draw/templates/position_balance.html +#, python-format +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" + +#: draw/templates/position_balance_break.html +msgid "Position balance reports aren't computed for elimination rounds." +msgstr "" + +#: draw/templates/position_balance_nonbp.html +msgid "Position balance reports are only available for British Parliamentary tournaments." +msgstr "" + +#: draw/templates/position_balance_round1.html +msgid "Position balance reports aren't computed for the first round of a tournament." +msgstr "" + +#: draw/views.py +msgid "No debates in this round" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: draw/views.py +msgid "Draws for Current Rounds" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debates start at %(time)s (in %(time_zone)s)" +msgstr "" + +#: draw/views.py +#, python-format +msgid "start times in time zone: %(time_zone)s" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debate starts at %(time)s" +msgid_plural "debates start at %(time)s" +msgstr[0] "" +msgstr[1] "" + +#: draw/views.py +msgid "The draw for this round hasn't been released." +msgstr "" + +#: draw/views.py +#, python-format +msgid "All Debates for All Rounds of %(tournament)s" +msgstr "" + +#: draw/views.py +msgid "Adjudicator Assignments" +msgstr "" + +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py +msgid "Team Pairings" +msgstr "" + +#: draw/views.py +msgid "No Draw" +msgstr "" + +#: draw/views.py +msgid "Draft Draw" +msgstr "" + +#. Translators: e.g. "Affirmative: Break rank" +#: draw/views.py +#, python-format +msgid "%(side)s: Break rank" +msgstr "" + +#. Translators: "BR" stands for "Break rank" +#: draw/views.py +msgid "BR" +msgstr "" + +#: draw/views.py +msgid "Draw with Details" +msgstr "" + +#: draw/views.py +msgid "Position Balance Report" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Rényi entropy of order %(order)s" +msgstr "" + +#. Translators: This is appended to the string "Rényi entropy of order 1.0" +#: draw/views.py +msgid " (i.e., Shannon entropy)" +msgstr "" + +#: draw/views.py +msgid "Teams with position imbalances" +msgstr "" + +#: draw/views.py +msgid "No teams with position imbalances! Hooray!" +msgstr "" + +#: draw/views.py +msgid "Annotated draw" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Could not create draw for %(round)s, there was already a draw!" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, for the following reason: %(message)s

\n" +"

Please fix this issue before attempting to create the draw.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" +"

If this issue persists and you're not sure how to resolve it, please contact the developers.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" +"

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" +msgstr "" + +#: draw/views.py +msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." +msgstr "" + +#: draw/views.py +msgid "Deleted the draw. You can now recreate it as normal." +msgstr "" + +#: draw/views.py +msgid "Released the draw." +msgstr "" + +#: draw/views.py +msgid "Unreleased the draw." +msgstr "" + +#: draw/views.py +#, python-format +msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." +msgstr "" + +#: draw/views.py +msgid "Side Pre-Allocations" +msgstr "" + +#: draw/views.py +msgid "Edit Matchups" +msgstr "" + diff --git a/tabbycat/draw/locale/ms/LC_MESSAGES/django.po b/tabbycat/draw/locale/ms/LC_MESSAGES/django.po index 051c1cabd13..7d50043e575 100644 --- a/tabbycat/draw/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -17,1106 +17,1078 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "pusingan" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "debat" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "pasukan" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "Panel hakim tetap" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/pt/LC_MESSAGES/django.po b/tabbycat/draw/locale/pt/LC_MESSAGES/django.po index 05bc3c60a13..e2e67d6bbd6 100644 --- a/tabbycat/draw/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -17,1123 +17,1103 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "O debate %(count)dteve seu status configurado para %(status)s." -msgstr[1] "Os debates %(count)d tiverem seus status configurados para %(status)s." - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "Status dos resultados configurados para %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" msgstr[1] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "Muitas mudanças" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d dos debates da rodada anterior não têm um resultado" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d debates da rodada anterior não têm exatamente duas duplas avançando" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "rodada" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "debate" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "dupla" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" msgstr[1] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" msgstr[1] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/ro/LC_MESSAGES/django.po b/tabbycat/draw/locale/ro/LC_MESSAGES/django.po index 49be10ec765..1f24c8f8dc4 100644 --- a/tabbycat/draw/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ro/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" @@ -12,23 +12,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." @@ -36,7 +25,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." @@ -44,416 +37,405 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/apps.py:7 draw/views.py:429 draw/views.py:432 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:26 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:269 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:27 +#: draw/models.py msgid "none" msgstr "" -#: draw/models.py:28 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:29 +#: draw/models.py msgid "draft" msgstr "" -#: draw/models.py:30 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:36 draw/models.py:389 +#: draw/models.py msgid "round" msgstr "" -#: draw/models.py:38 -msgid "venue" +#: draw/models.py +msgid "room" msgstr "" -#: draw/models.py:41 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:43 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:49 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:51 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:53 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:54 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:57 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "debates" msgstr "" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:77 draw/models.py:102 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:89 draw/models.py:106 +#: draw/models.py msgid " vs " msgstr "" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "" -#: draw/models.py:274 draw/models.py:391 +#: draw/models.py msgid "team" msgstr "" -#: draw/models.py:276 draw/models.py:393 +#: draw/models.py msgid "side" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:283 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:311 -msgid "placed 1st" -msgstr "" - -#: draw/models.py:313 -msgid "placed 2nd" -msgstr "" - -#: draw/models.py:315 -msgid "placed 3rd" -msgstr "" - -#: draw/models.py:317 -msgid "placed 4th" +#: draw/models.py +#, python-format +msgid "placed %(place)s" msgstr "" -#: draw/models.py:319 draw/models.py:326 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:322 +#: draw/models.py msgid "won" msgstr "" -#: draw/models.py:324 +#: draw/models.py msgid "lost" msgstr "" -#: draw/models.py:397 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:398 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." @@ -461,7 +443,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" @@ -469,7 +451,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." @@ -477,7 +459,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." @@ -485,7 +467,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" @@ -493,7 +475,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." @@ -501,7 +483,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" @@ -509,7 +491,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." @@ -517,7 +499,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" @@ -525,7 +507,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." @@ -533,81 +515,77 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." @@ -615,310 +593,312 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." @@ -926,21 +906,20 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." @@ -948,92 +927,92 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:66 draw/views.py:460 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:74 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:76 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:80 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:84 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:122 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" @@ -1041,121 +1020,125 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: draw/views.py:169 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:222 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:380 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:400 +#: draw/views.py +msgid "Position" +msgstr "" + +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:426 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:518 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:523 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:548 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:556 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:567 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:570 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "" -#: draw/views.py:600 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:601 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:604 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:635 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:643 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:651 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:660 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:676 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:703 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:723 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:738 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:751 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:770 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:803 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/locale/ru/LC_MESSAGES/django.po b/tabbycat/draw/locale/ru/LC_MESSAGES/django.po index 00315963473..0b98dfd5e30 100644 --- a/tabbycat/draw/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:27\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,21 +17,7 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "%(count)d дебатов установлен статус %(status)s." -msgstr[1] "%(count)d дебатов установлен статус %(status)s." -msgstr[2] "%(count)d дебатов установлен статус %(status)s." -msgstr[3] "%(count)d дебатов установлен статус %(status)s." - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "Установить статус результата в %(status)s" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." @@ -40,7 +26,11 @@ msgstr[1] "%(count)d дебатов были отмечены как имеющ msgstr[2] "%(count)d дебатов были отмечены как имеющие подтвержденные стороны." msgstr[3] "%(count)d дебатов были отмечены как имеющие подтвержденные стороны." -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." @@ -49,406 +39,406 @@ msgstr[1] "%(count)d дебаты были отмечены имеющими н msgstr[2] "%(count)d дебаты были отмечены имеющими неподтвержденные стороны." msgstr[3] "%(count)d дебаты были отмечены имеющими неподтвержденные стороны." -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "Сетка" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "Слишком много перестановок" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "Одна вверх одна вниз (история)" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "Одна вверх, одна вниз (клуб)" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "Одна вверх одна вниз (для размещения)" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "Поднять вверх (история)" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "Опустить вниз (история)" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "Поднять вверх (клуб)" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "Опустить вниз (клуб)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "Поднять вверх (для удобства)" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "Опустить вниз (для удобства)" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "Не удалось переместить вверх/вниз" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "Команда, которая была пулл-апнута" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "%d дебатов в предыдущем раунде не имеют результата." -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d дебатов в предыдущем раунде не имеют двух проходящих дальше команд." -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "Места в частичном брейковом раунде указывают на то, что нечетное количество команд (%(nbypassing)d) пропустили его." -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "Места в частичном брейковом раунде указывают, что %(nbypassing)d команды пропустили его, но %(advancing)d прошли его." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "Количество дебатов (%d) в этом раунде не кратно двум." -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "Порядок Ренье не может быть отрицательным, и он в настоящее время установлен на %(alpha)f." -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "Количество команд, представленных для сетки, не было множеством из %(num)d." -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "Нет команд для создания сетки." -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "В этой категории есть только %d брейкающихся команд, должны быть как минимум две, чтобы создать брейковый раунд." -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "Количество команд (%d) в этом раунде не кратно двум." -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "%(noninteger)d из %(total)d команд имеют не целое число первых показателей в положении команд. Для промежуточного ранжирования необходимо, чтобы первая метрика положения команд была целым числом (обычно баллы или победы)." -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "Было %(aff_count)d команд утверждения, но %(neg_count)d команд отрицания." -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "Одна или несколько команд получили сторону, которая не была утверждением или отрицанием." -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "Тип сетки %(type)s не может быть использован в формате с двумя командами." -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "Тип сетки %(type)s не может быть использован в Британском Парламентском Формате." -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "Опция «команды в дебатах» не распознана: %(option)s" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "Размер брейка (%(size)d) для этой категории не валиден. Он должен быть либо шесть раз либо четыре раза в степени 2." -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "нет" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "отложен" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "черновик" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "подтвержденные" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "раунд" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "аудитория" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "значение баллов команд" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "место команды" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "значение" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "статус результата" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "стороны подтверждены" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "Если не отмечено, то стороны, назначенные командам в этой дискуссии, являются просто заменителями." -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "дебаты" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "дебаты" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr " (стороны не подтверждены)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr " против " -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "утверждение" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "отрицание" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "первое правительство" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "первая оппозиция" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "второе правительство" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "вторая оппозиция" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "команда" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "сторона" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "команда" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "команды" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "заняли %(place)s" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "результат неизвестен" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "выиграли" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "проиграли" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "распределение команды на сторону" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "распределение команд по сторонам" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "%(side)s%(metric)s" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Команда %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "Ранг этой комнаты" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "Значение балов команд в этих дебатах" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "история сторон
\n" "(количество раз, когда команда была на каждой стороне перед этим раундом)" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "ИС" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "Перешел от балансного к несбалансированному" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "Перешел от несбалансированного к сбалансированному" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "Лучшие возможные улучшения, но все ещё несбалансировано" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "Был несбалансированным и все еще остался несбалансированным" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "Нет метрик для определения первичности положения команд" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "Сторона" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "Позиция в этом раунде" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "До" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "История сторон перед этим раундом" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "После" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "История сторон после этого раунда" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "Стоимость" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "Стоимость позиции" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "Статус" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "Команды с таким количеством очков допустимы в этих дебатах
(в скобках жирным шрифтом)" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s:%(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "история сторон перед этим раундом" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "Стороны" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "стоимость позиции" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "СТОП! Сначала прочитайте это! Удаление команд из базы данных может привести к сбою Tabbycat!" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "Tabbycat требует, чтобы все дебаты имели ровно одну команду для каждой стороны, и ни одной другой команды. Если вы удалите любые команды в дебатах, то вы должны либо заменить каждую из них новой командой в тех же дебатах, либо удалить связанные с ними дебаты. Если вы не смогли сделать это правильно, то многие страницы будут выдавать сбой." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "Это распространенный источник ошибок. Если это случится с вами, проверьте дебаты (в разделе «Сетка» в области Правка Базы Данных) и убедитесь, что все они имеют именно одну команду утверждения и одну команду отрицания." -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "ПРЕДУПРЕЖДЕНИЕ! Если вы редактируете команды, сначала прочтите это!" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "Tabbycat требует, чтобы в каждых дебатах была ровно одна команда на одной стороне и никаких других команд. Если вы редактируете команды в базе данных, убедитесь, что это всё ещё так. Если вы не сможете сделать все правильно, многие страницы будутвыдавать сбой." -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." @@ -457,7 +447,7 @@ msgstr[1] "%(ndebates)s дебатов нет чэйра." msgstr[2] "%(ndebates)s дебатов нет чэйра." msgstr[3] "%(ndebates)s дебатов нет чэйра." -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" @@ -466,7 +456,7 @@ msgstr[1] "Следующие %(nadjs)s судьи судят msgstr[2] "Следующие %(nadjs)s судьи судят несколько дебатов: %(adjudicators)s" msgstr[3] "Следующие %(nadjs)s судьи судят несколько дебатов: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." @@ -475,7 +465,7 @@ msgstr[1] "%(ndebates)s дебатов коллегия состоит из че msgstr[2] "%(ndebates)s дебатов коллегия состоит из четного числа судей." msgstr[3] "%(ndebates)s дебатов коллегия состоит из четного числа судей." -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." @@ -484,7 +474,7 @@ msgstr[1] "%(ndebates)s дебатов судейский конфликт." msgstr[2] "%(ndebates)s дебатов судейский конфликт." msgstr[3] "%(ndebates)s дебатов судейский конфликт." -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" @@ -493,7 +483,7 @@ msgstr[1] "Следующие %(nadjs)s судьи недост msgstr[2] "Следующие %(nadjs)s судьи недоступны для этого раунда, но распределены на дебаты: %(adjudicators)s" msgstr[3] "Следующие %(nadjs)s судьи недоступны для этого раунда, но распределены на дебаты: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." @@ -502,7 +492,7 @@ msgstr[1] "%(ndebates)s судей доступно, но не привязан msgstr[2] "%(ndebates)s судей доступно, но не привязано ни к один дебатам." msgstr[3] "%(ndebates)s судей доступно, но не привязано ни к один дебатам." -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" @@ -511,7 +501,7 @@ msgstr[1] "Следующие %(nteams)s команды игр msgstr[2] "Следующие %(nteams)s команды играют в нескольких дебатах: %(teams)s" msgstr[3] "Следующие %(nteams)s команды играют в нескольких дебатах: %(teams)s" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." @@ -520,7 +510,7 @@ msgstr[1] "%(ndebates)s дебатов нет аудитории." msgstr[2] "%(ndebates)s дебатов нет аудитории." msgstr[3] "%(ndebates)s дебатов нет аудитории." -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" @@ -529,7 +519,7 @@ msgstr[1] "В следующих %(ndebates)s аудитори msgstr[2] "В следующих %(ndebates)s аудиториях есть несколько дебатов:%(rooms)s" msgstr[3] "В следующих %(ndebates)s аудиториях есть несколько дебатов:%(rooms)s" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." @@ -538,81 +528,77 @@ msgstr[1] "%(ndebates)s дебатов есть нарушения ограни msgstr[2] "%(ndebates)s дебатов есть нарушения ограничений на аудитории." msgstr[3] "%(ndebates)s дебатов есть нарушения ограничений на аудитории." -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "Доступность" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "Изменить стороны/паросочетания" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "Переделать сетку" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "Детали сетки" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "Баланс позиций" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "Показать сетку" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "Подтвердите регенерацию сетки" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "Вернуться к сетке" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "Подтвердить удаление сетки для %(round)s" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "Вы действительно хотите заново создать сетку для %(round)s? Это удалит все дебаты в текущей сетке — включая их бэллоты и распределение судей — и не может быть отменено. Возможно, вы не захотите этого сделать, если какие-либо результаты уже были введены!" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "Да, я хочу удалить текущую сетку для %(round)s" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "Посмотреть сетку" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "Дебаты начинаются в %(start_time)s" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "Добавить время начала" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "Ввести результаты" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "Детали темы" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." @@ -621,310 +607,321 @@ msgstr[1] "%(motions_count)s темы введены." msgstr[2] "%(motions_count)s темы введены." msgstr[3] "%(motions_count)s темы введены." -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "Редактировать темы" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "Ваша конфигурация/формат требует, чтобы темы были указаны в качестве части введения бэллота. Убедитесь, что они добавлены до того, как будут поступать результаты!" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "Ввести темы" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "Тема введена." - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "Редактировать тему" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "Тема должна быть добавлена, если вы хотите показать её аудитории или распечатать на бэллотах (используя ссылки ниже) или показать её (позже) на публичной странице с темами." +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "Ввести тему" +msgid_plural "Enter motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "Опубликовать сетку" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "Вы еще не создали сетку для этого раунда. Нет ничего, что можно опубликовать." -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "Сетка на этот раунд все ещё в стадии создания. Подтвердите сетку перед опубликованием." -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "Отменить публичную демонстрацию сетки" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "Сетка была опубликована." -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "Посмотреть публичную страницу с сеткой" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Вы выложили сетку, так что бэллоты и обратная связь могут быть отправлены через общедоступные формы (если доступно). Однако сама сетка не будет видна публично, если \"публичный просмотр сетки\" не включен в в настройках турнира." -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "Вы выложили сетку, но она не будет видна публично, если \"публичный просмотр сетки\" не включен в настройках турнира ." -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "Показать сетку публично" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Ваш турнир позволяет отправлять бэллоты и формы обратной связи онлайн. Сетка должна быть опубликована прежде, чем они смогут сделать это." -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "Ваш турнир позволяет судьям отправлять бэллоты онлайн. Сетка должна быть опубликована прежде, чем они смогут сделать это." -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "Ваш турнир позволяет участникам отправлять формы обратной связи онлайн. Сетка должна быть опубликована прежде, чем они смогут сделать это." -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "Ваш турнир настроен на то, чтобы публично показывать сетку. После выпуска сетка появится на публичной странице." -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "В ваших настройках нет публичной страницы для сетки или отправки бэллотов/форм обратной связи. Нет смысла выпускать сетку." -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "Опубликовать темы" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "Показать темы публично" - -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "Отменить публичную демонстрацию тем" - -#: draw/templates/draw_display_admin.html:200 -msgid "Release Motion" -msgstr "Опубликовать тему" - -#: draw/templates/draw_display_admin.html:201 +#: draw/templates/draw_display_admin.html msgid "Release motion to public" -msgstr "Показать тему публично" +msgid_plural "Release motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:202 +#: draw/templates/draw_display_admin.html msgid "Unrelease motion to public" -msgstr "Отменить публичную демонстрацию темы" +msgid_plural "Unrelease motions to public" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "Ваш турнир настроен для того, чтобы темы были указаны в бэллотах, а судьи могли отправлять бэллоты онлайн. Убедитесь, что вы публикуете темы до завершения дебатов, иначе бэллоты не могут быть отправлены." -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "Ваш турнир настроен для того, чтобы разрешить право вето на темы и разрешить судьям отправлять бэллоты. Убедитесь, что вы публикуете темы до завершения дебатов, иначе бэллоты не смогут отражать вето." -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "Ваш турнир настроен для того, чтобы показывать тему каждого раунда публично на сайте. Вы должны сначала опубликовать тему, чтобы она появилась там." - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "Ваш турнир не настроен для отображения тем каждого раунда публично на сайте. Нет необходимости публиковать тему." - -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "Темы были опубликованы." - -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "Тема была опубликована." +msgid_plural "Motions have been released publicly." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "Посмотреть публичную страницу с темами" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "Вы показали темы, но они не будут представлены публично, если параметр \"опубликование тем\" не включен в настройках этого турнира ." -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "(для комнаты брифинга)" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "Отобразить сетку в порядке по аудиториям" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "Отобразить сетку в порядке по командам" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "Показать сетку для всех текущих раундов по порядку аудиторий" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "Показать сетку для всех текущих раундов по порядку команд" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "Показать сетку %(round)s по порядку аудиторий" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "Показать сетку %(round)s по порядку команд" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "Показать темы" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "Отправить темы по email" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "Отправить тему по email" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "Начать в" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "(для печати)" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "Посмотреть формы бэллотов" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "Посмотреть формы обратной связи" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "Скорость прокрутки" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "Быстро" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "Средне" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "Медленно" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "Очень медленно" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "Размер текста" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "Очень маленький" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "Маленький" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "Большой" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "Очень большой" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "Остановить прокрутку" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "Сетка для %(round)s ещё не опубликована." -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "Сетка на следующий раунд ещё не опубликована." -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "Расстановка судей" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "В данный момент судей зарегистрировано меньше, чем румов." -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "Распределить судей" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "Редактировать расстановку судей" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "Распределение аудиторий" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "Распределить аудитории" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "Редактировать распределение аудиторий" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "Заранее сформированные коллегии" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." @@ -933,21 +930,20 @@ msgstr[1] "Количество коллегий для этого раунда: msgstr[2] "Количество коллегий для этого раунда: %(npanels)s." msgstr[3] "Количество коллегий для этого раунда: %(npanels)s." -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "Для этого раунда нет заранее сформированных коллегий" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "Редактировать коллегии для %(round)s" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "Распределение по сторонам" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." @@ -956,92 +952,92 @@ msgstr[1] "В %(ndebates)s дебатах стороны не подтвержд msgstr[2] "В %(ndebates)s дебатах стороны не подтверждены." msgstr[3] "В %(ndebates)s дебатах стороны не подтверждены." -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "Удалить сетку" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "Подтвердить сетку" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "Первенство положения команд пустует. Это означает, что команды не ранжированы ни по одной метрике, то есть все команды в одной группе. Если это не то, что вы хотели, установите первенство положения команд в области Положение настроек турнира , а затем удалите сетку и создайте её заново. Для большинства турниров первой метрикой будет количество баллов или побед." -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "Сочетания команд формируются с использованием первой метрики первенства положения команд, которая в настоящее время установлен на %(metric)s, а не командные баллы, что является чаще применимой метрикой. Если это не то, что вы хотели, вы можете изменить первенство положения команд резервных позиций на странице настроек положения ." -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "Тип сетки на этот раунд установлен ручным, так что Tabbycat просто создало пустую сетку. Перейдите на редактировать стороны/сочетания команд чтобы её заполнить." -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "Балл этого судьи равен 0, и поэтому его оценки будут игнорироваться при распределении. можно изменить баллы этого судьи на странице настройки обратной связи." -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "Tabbycat назначает стороны в брейковых раундах рандомно. Однако, так как в брейковых раундах многие турниры распределяют стороны перед аудиторией, стороны были отмечены как \"неподтвержденные\", чтобы не казалось, что стороны были назначены заранее. После того, как вы подтвердите сетку, вам нужно будет подтвердить стороны на странице \"Редактировать Стороны/Сочетания команд\", даже если вы хотите принять рандомную расстановку сторон Tabbycat." -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "Выделенные ячейки связаны с изменениями в балансе позиций, а именно:
  • Красные ячейки указывают, что команда не может быть распределена на позицию, которая поддерживает баланс позиций.
  • Желтые ячейки указывают, что команда была ранее дисбалансирована, и имеет наилучшее положение, возможное в этой сетке, но тем не менее, все еще дисбалансированное.
  • Зеленые ячейки указывает, что предыдущий дисбаланс команды разрешен в этой сетке.
" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "Сетка для %(round)s ещё не создана. Чтобы её создать, перейдите в раздел доступности ." -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "Похоже, что стороны не подтверждены для некоторых дебатов в этом раунде. Этот отчет о балансе позиций генерируется с использованием \"неподтвержденных сторон\" в базе данных, и, как следствие, может не иметь особого смысла. Лучше всего подтвердить стороны во всех дебатах перед просмотром этого отчета." -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." -msgstr "Ваша текущая функция стоимости позиции составляет %(cost_func)s, возведенная в степень %(exponent)s. Прочтите больше о том, как работают функции стоимости позиции в нашей документации." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "Отчеты о балансе позиций не составлены для брейковых раундов." -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "Отчеты о балансе позиций доступны только для турниров британского парламентского формата." -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "Отчет о балансе позиций не составлен для первого раунда турнира." -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "Нет дебатов в этом раунде" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "Сетка на %(round)s" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "Сетка на текущий раунд" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "дебаты начинаются в %(time)s (в %(time_zone)s)" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "время начала в часовом поясе: %(time_zone)s" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" @@ -1050,128 +1046,128 @@ msgstr[1] "дебаты начнутся в %(time)s" msgstr[2] "дебаты начнутся в %(time)s" msgstr[3] "дебаты начнутся в %(time)s" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "Сетка на этот раунд не была опубликована." -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "Все дебаты во всех раундов %(tournament)s" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "Назначения судей" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "Паросочетания команд" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "Нет сетки" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "Черновик сетки" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "%(side)s Брейковый ранг" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "БР" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "Сетка с деталями" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "Отчет о балансе позиций" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "Энтропия Реньи порядка %(order)s" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr " (т.е., энтропия Шэннона)" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "Команды с дисбалансом позиции" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "Нет команд с дисбалансом позиции! Ура!" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "Аннотированная сетка" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "Не удалось создать сетку для %(round)s, так как сетка уже была создана!" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "

Сетка не может быть создана по следующим причинам:%(message)s

\n" "

Пожалуйста, решите эту проблему перед тем как создавать сетку.

" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "

Сетка не может быть создана, поскольку произошла следующая ошибка: %(message)s

\n" "

Если эта проблема повторяется и вы не знаете, как её решить, пожалуйста, свяжитесь с разработчиками.

" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "

Положение команд не может быть сгенерировано, поскольку произошла следующая ошибка:%(message)s

\n" "

Поскольку генератор сетки использует текущее положение команд, это не дает сетке быть сгенерированной.

" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "Аудитории не были автоматически распределены, так как существуют ограничения на аудитории, связанные с судьями. Распределите аудитории после распределения судей." -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "Сетка удалена. Теперь вы можете создать её заново." -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "Сетка опубликована." -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "Отменить опубликование сетки." -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "Извините, \"%(input)s\"не является корректным временем. Оно должно быть в 24-часовом формате, с двоеточием, например: \"13:57\"." -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "Предварительное распределение по сторонам" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "Изменить паросочетания" diff --git a/tabbycat/draw/locale/tr/LC_MESSAGES/django.po b/tabbycat/draw/locale/tr/LC_MESSAGES/django.po index 4e846c863e8..9094babcb73 100644 --- a/tabbycat/draw/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/tr/LC_MESSAGES/django.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:27\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" +"Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" @@ -12,1133 +12,1113 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" -msgstr[1] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d maçının tarafları onaylandı olarak işaretlendi." +msgstr[1] "%(count)d maçının tarafları onaylandı olarak işaretlendi." + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "Tarafları onaylanmamış olarak işaretle" -#: draw/admin.py:93 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d maçının tarafları onaylanmadı olarak işaretlendi." +msgstr[1] "%(count)d maçının tarafları onaylanmadı olarak işaretlendi." -#: draw/apps.py:7 draw/views.py:429 draw/views.py:432 +#: draw/apps.py draw/views.py msgid "Draw" -msgstr "" +msgstr "Kura" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "Too many swaps" -msgstr "" +msgstr "Çok fazla takas" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" -msgstr "" +msgstr "Bir-yukarı-bir-aşağı (tarihçe)" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" -msgstr "" +msgstr "Bir-yukarı-bir-aşağı (kurum)" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" -msgstr "" +msgstr "Bir-yukarı-bir-aşağı (uyum sağlamak için)" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble up (history)" -msgstr "" +msgstr "Yükselen Takımlar (tarihçe)" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble down (history)" -msgstr "" +msgstr "Düşen Takımlar (geçmiş)" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble up (institution)" -msgstr "" +msgstr "Yükselen Takımlar (kurum)" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble down (institution)" -msgstr "" +msgstr "Düşen Takımlar (kurum)" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" -msgstr "" +msgstr "Yükselen Takımlar (uyum sağlamak için)" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" -msgstr "" +msgstr "Düşen Takımlar (uyum sağlamak için)" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Can't bubble up/down" -msgstr "" +msgstr "Yükselen/Düşen Takımlar yapılamıyor" -#: draw/generator/__init__.py:26 +#: draw/generator/__init__.py msgid "Pull-up team" -msgstr "" +msgstr "Çıkma Takımı" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." -msgstr "" +msgstr "Bir önceki turdaki %d maçın bir sonucu yok." -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." -msgstr "" +msgstr "Bir önceki turdaki %d maçda tam iki takım ilerlemiyor." -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." -msgstr "" +msgstr "Kısmi eleme turunun oda sıralamaları, tek sayıda takımın (%(nbypassing)d) atladığını gösteriyor." -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "" +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "Kısmi eleme turunun oda sıralamaları, %(nbypassing)d takımın bunu atladığını, ancak %(nadvancing)d takımın ondan geçtiğini gösteriyor" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." -msgstr "" +msgstr "Son turdaki maçların sayısı (%d) ikinin katı değil." -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." -msgstr "" +msgstr "Rényi sırası negatif olamaz ve şu anda %(alpha)f olarak ayarlanmıştır." -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." -msgstr "" +msgstr "Kura çekimi için sunulan takım sayısı %(num)d'nin katı değildi." -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." -msgstr "" +msgstr "Kura çekimi için takım yoktu." -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." -msgstr "" +msgstr "Bu kategoride kırılan sadece %d takım var; bir eleme turu kurası oluşturmak için en az iki tane olması gerekir." -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." -msgstr "" +msgstr "Bu turdaki takım sayısı (%d) ikinin katı değil." -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." -msgstr "" +msgstr "%(total)d takımdan %(noninteger)d takım sıralamalarında tamsayı olmayan bir ilk metriğe sahiptir. Ara aşamalar, ilk takım sıralamaları metriğinin bir tamsayı olmasını gerektirir (genellikle puan veya galibiyetler)." -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." -msgstr "" +msgstr "%(aff_count)d olumlu takım vardı ama %(neg_count)d negatif takım vardı." -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." -msgstr "" +msgstr "Bir veya daha fazla takımın olumlu veya olumsuz olmayan tahsis edilmiş bir tarafı vardı." -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." -msgstr "" +msgstr "%(type)s kura türü iki takımlı formatlarla kullanılamaz." -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." -msgstr "" +msgstr "%(type)s kura türü British Parliamentary ile kullanılamaz." -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" -msgstr "" +msgstr "Tanınmayan \"maçdaki takımlar\" seçeneği: %(option)s" -#: draw/manager.py:269 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." -msgstr "" +msgstr "Bu break kategorisi için break boyutu (%(size)d) geçersizdi. İkinin katının ya altı ya da sekiz katı olmalıdır." -#: draw/models.py:27 +#: draw/models.py msgid "none" -msgstr "" +msgstr "hiçbiri" -#: draw/models.py:28 +#: draw/models.py msgid "postponed" -msgstr "" +msgstr "Ertelenen" -#: draw/models.py:29 +#: draw/models.py msgid "draft" -msgstr "" +msgstr "taslak" -#: draw/models.py:30 +#: draw/models.py msgid "confirmed" -msgstr "" +msgstr "onaylanmış" -#: draw/models.py:36 draw/models.py:389 +#: draw/models.py msgid "round" msgstr "tur" -#: draw/models.py:38 -msgid "venue" -msgstr "salon" +#: draw/models.py +msgid "room" +msgstr "oda" -#: draw/models.py:41 +#: draw/models.py msgid "bracket" -msgstr "" +msgstr "aşama" -#: draw/models.py:43 +#: draw/models.py msgid "room rank" -msgstr "" +msgstr "oda sıralaması" -#: draw/models.py:49 +#: draw/models.py msgid "importance" -msgstr "" +msgstr "önem" -#: draw/models.py:51 +#: draw/models.py msgid "result status" -msgstr "" +msgstr "sonuç durumu" -#: draw/models.py:53 +#: draw/models.py msgid "sides confirmed" -msgstr "" +msgstr "taraflar onaylandı" -#: draw/models.py:54 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." -msgstr "" +msgstr "İşaretlenmezse, bu tartışmada takımlara atanan taraflar sadece yer tutucudur." -#: draw/models.py:57 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "maç" -#: draw/models.py:58 +#: draw/models.py msgid "debates" -msgstr "" +msgstr "maçlar" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:77 draw/models.py:102 +#: draw/models.py msgid " (sides not confirmed)" -msgstr "" +msgstr " (taraflar onaylanmadı)" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:89 draw/models.py:106 +#: draw/models.py msgid " vs " -msgstr "" +msgstr " Vs " -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" -msgstr "" +msgstr "Olumlu" -#: draw/models.py:263 +#: draw/models.py msgid "negative" -msgstr "" +msgstr "muhalefet" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" -msgstr "" +msgstr "hükümet açılış" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" -msgstr "" +msgstr "muhalefet açılış" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" -msgstr "" +msgstr "hükümet kapanış" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" -msgstr "" +msgstr "muhalefet kapanış" -#: draw/models.py:274 draw/models.py:391 +#: draw/models.py msgid "team" msgstr "takım" -#: draw/models.py:276 draw/models.py:393 +#: draw/models.py msgid "side" -msgstr "" +msgstr "taraf" -#: draw/models.py:282 +#: draw/models.py msgid "debate team" -msgstr "" +msgstr "tartışma ekibi" -#: draw/models.py:283 +#: draw/models.py msgid "debate teams" -msgstr "" - -#: draw/models.py:311 -msgid "placed 1st" -msgstr "" - -#: draw/models.py:313 -msgid "placed 2nd" -msgstr "" +msgstr "tartışma ekipleri" -#: draw/models.py:315 -msgid "placed 3rd" -msgstr "" - -#: draw/models.py:317 -msgid "placed 4th" -msgstr "" +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "%(place)s oldu" -#: draw/models.py:319 draw/models.py:326 +#: draw/models.py msgid "result unknown" -msgstr "" +msgstr "sonucu bilinmiyor" -#: draw/models.py:322 +#: draw/models.py msgid "won" -msgstr "" +msgstr "Galibiyet" -#: draw/models.py:324 +#: draw/models.py msgid "lost" -msgstr "" +msgstr "Mağlubiyet" -#: draw/models.py:397 +#: draw/models.py msgid "team side allocation" -msgstr "" +msgstr "takım taraf tahsisi" -#: draw/models.py:398 +#: draw/models.py msgid "team side allocations" -msgstr "" +msgstr "takım taraf tahsisleri" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" -msgstr "" +msgstr "%(side)s: %(metric)s" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "Takım %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" -msgstr "" +msgstr "Bu maçın oda sıralaması" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" -msgstr "" +msgstr "Bu maçın aşamaları" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" -msgstr "" +msgstr "Taraf tarihi
\n" +" (takımın bu turdan önce her iki tarafta bulunma sayısı)" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" -msgstr "" +msgstr "SH" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" -msgstr "" +msgstr "Dengeliden dengesizliğe geçti" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" -msgstr "" +msgstr "Dengesizden dengeliye geçti" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" -msgstr "" +msgstr "Mümkün olan en iyi geliştirme, hala dengesiz" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" -msgstr "" +msgstr "Dengesizdi ve hala dengesiz" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" -msgstr "" +msgstr "Takım sıralaması önceliğinde metrik yok" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" -msgstr "" +msgstr "Taraf" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" -msgstr "" +msgstr "Bu turu konumlandırın" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" -msgstr "" +msgstr "Önce" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" -msgstr "" +msgstr "Bu turdan önceki taraf tarihi" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" -msgstr "" +msgstr "Sonra" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" -msgstr "" +msgstr "Bu turdan sonra taraf tarihi" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" -msgstr "" +msgstr "Maliyet" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" -msgstr "" +msgstr "Pozisyon maliyeti" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "Durum" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" -msgstr "" +msgstr "Bu maça bu kadar puana sahip takımlara katılabilir
\n" +"(aşama kalın)" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s: %(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" -msgstr "" +msgstr "bu turdan önceki taraf tarihi" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" -msgstr "" +msgstr "Taraflar" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" -msgstr "" +msgstr "pozisyon maliyeti" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" -msgstr "" +msgstr "DURUN!!! Önce bunu okuyun! Tartışma ekiplerini veritabanından silmek Tabbycat'i çökertebilir!" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." -msgstr "" +msgstr "Tabbycat, tüm maçların her iki tarafı için sadece bir takımın olmasını ve başka hiçbir takımın asla olmamasını gerektirir. Herhangi bir takımı silerseniz, her birini ya aynı maçtaki yeni bir takımla değiştirmeniz veya ilişkili maç nesnelerini silmeniz gerekir. Bunu doğru bir şekilde yapmazsanız, birçok sayfa çökebilir." -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." -msgstr "" +msgstr "Bu sık sık hataya sebep olur. Başınıza gelirse, maçları kontrol edin (Veritabanını Düzenle alanındaki Çizim bölümünün altında) ve hepsinin tam olarak bir olumlu ve bir olumsuz ekibe sahip olduğundan emin olun." -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" -msgstr "" +msgstr "UYARI!!! maç ekiplerini düzenliyorsanız, önce bunu okuyun!" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." -msgstr "" +msgstr "Tabbycat, tüm maçların her iki tarafı için sadece bir takımın olmasını ve başka hiçbir takımın asla olmamasını gerektirir. Herhangi bir takımı silerseniz bunun böyle kalmasını sağlamalısınız. Bunu doğru bir şekilde yapmazsanız, birçok sayfa çökebilir." -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçın başkanı yoktur." +msgstr[1] "%(ndebates)s maçın başkanı yoktur." -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(adjudicators)s birden fazla maçta jürilik yapıyor." +msgstr[1] "Aşağıdaki %(nadjs)s birden fazla maçta jürilik yapıyor: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçta çift sayıda jüriden oluşan bir panel var." +msgstr[1] "%(ndebates)s' maçta çift sayıda jüriden oluşan bir panel var." -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçta jüri conflicti var." +msgstr[1] "%(ndebates)s maçta jüri conflicti var." -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(adjudicators)s bu turda kullanılamaz, ancak bir maça atanmış." +msgstr[1] "Aşağıdaki %(nadjs)s jüriler bu turda kullanılamaz, ancak maçlara atanmış: %(adjudicators)s" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 jüri uygun ancak bir maça atanmamış." +msgstr[1] "%(ndebates)s jüri uygun ancak bir maça atanmamış." -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(teams)s birden fazla maçta yarışıyor." +msgstr[1] "Aşağıdaki %(nteams)s takım birden fazla maçta yarışıyor: %(teams)s" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçın odası yok." +msgstr[1] "%(ndebates)s maçın odası yok." -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(rooms)s odada birden fazla maç var." +msgstr[1] "Aşağıdaki %(rooms)s odada birden fazla maç var: %(rooms)s" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçta oda kısıtlaması ihlali var." +msgstr[1] "%(ndebates)s maçta oda kısıtlaması ihlali var." -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" -msgstr "" +msgstr "Uygunluk" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" -msgstr "" +msgstr "Tarafları/Eşleşmeleri Düzenle" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" -msgstr "" +msgstr "Kurayı Yeniden Çek" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" -msgstr "" +msgstr "Kura Detayları" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" -msgstr "" +msgstr "Taraf Dengesi" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" -msgstr "" +msgstr "Kurayı Göster" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" -msgstr "" +msgstr "Kura yeniden çekilmesini onayla" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" -msgstr "" +msgstr "Kuraya geri dön" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" -msgstr "" +msgstr "%(round)s için Kura Silme İşlemini Onayla" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" -msgstr "" +msgstr "%(round)s için kurayı yeniden oluşturmak istiyor musunuz? Bu, mevcut kuradaki tüm maçları ballotları ve jüri tahsisleri dahil siler ve geri alınamaz. Eğer sonuçlar girildiyse yüksek ihtimalle bunu yapmak istemiyorsunuz!" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" -msgstr "" +msgstr "Evet, %(round)s için geçerli kurayı silmek istiyorum" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" -msgstr "" +msgstr "Kurayı Görüntüle" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" -msgstr "" +msgstr "Maçlar %(start_time)s'da başlar" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" -msgstr "" +msgstr "Başlangıç Saati Ekle" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" -msgstr "" +msgstr "Sonuç Gir" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" -msgstr "" +msgstr "Önerge Detayları" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(motions_count)s önerge girildi." +msgstr[1] "%(motions_count)s önerge girildi." -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "Önergeyi Düzenle" +msgstr[1] "Önergeleri Düzenle" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" -msgstr "" +msgstr "Yapılandırmanız/formatınız, önergelerin ballotun bir parçası olarak belirtilmesini gerektirir. Sonuçlar gelmeden önce eklendiğinden emin olun!" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "Duyurular sırasında görüntülemek, ballotlara yazdırmak veya (daha sonra) herkese açık önergeler/istatistik sayfalarında görüntülemek istiyorsanız bir önerge eklenmelidir." -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "Önerge gir" +msgstr[1] "Önerge gir" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" -msgstr "" +msgstr "Kurayı Yayınla" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." -msgstr "" +msgstr "Bu tur için henüz bir kura oluşturmadınız. Yayınlanacak bir şey yok." -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." -msgstr "" +msgstr "Bu tur için kura çekimi hala taslak halinde. Yayınlamadan önce kurayı onaylayın." -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" -msgstr "" +msgstr "Kurayı yayından kaldır" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." -msgstr "" +msgstr "Kura çekimi herkese açıklandı." -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" -msgstr "" +msgstr "Herkese açık kura sayfasını görüntüle" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." -msgstr "" +msgstr "Kurayı yayınladınız, böylece ballotlar ve/veya geri bildirimler açık formlardan gönderilebilir (etkinleştirilmişse). Ancak, bu turnuvanın ayarlarında \"Çekiliş Herkese Açık\" ayarı etkinleştirilmediği sürece çekilişin kendisi herkese gösterilmez." -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." -msgstr "" +msgstr "Kurayı yayınladınız ancak, bu turnuvanın ayarlarında \"Kura Herkese Açık\" ayarı etkinleştirilmediği sürece çekilişin kendisi herkese gösterilmez." -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" -msgstr "" +msgstr "Kurayı Herkese Açık Yayınla" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." -msgstr "" +msgstr "Turnuvanız, ballotların ve geri bildirimlerin jüriler tarafından çevrimiçi olarak gönderilmesine izin verir. Bunu yapabilmeleri için kuranın yayınlanması gerekir." -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." -msgstr "" +msgstr "Turnuvanız, ballotların jüriler tarafından çevrimiçi olarak gönderilmesine izin verir. Bunu yapabilmeleri için kuranın yayınlanması gerekir." -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." -msgstr "" +msgstr "Turnuvanız, geri bildirimin katılımcılar tarafından çevrimiçi olarak gönderilmesine izin verir. Bunu yapabilmeleri için kuranın yayınlanması gerekir." -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." -msgstr "" +msgstr "Turnuvanız, kurayı herkese açık olarak gösterecek şekilde ayarlıdır. Bir kuranın yayınlanması, genel sayfada gösterilmesine izin verecektir." -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." -msgstr "" +msgstr "Ayarlarınızda herkese açık bir kura sayfası veya geri bildirim/ballot gönderimi yok. Kurayı yayınlamak için hiçbir neden yok." -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "Önergeyi halka açık hale getirin" +msgstr[1] "Önergeleri halka açık hale getirin" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "Önergeyi halka açık halden çıkartın" +msgstr[1] "Önergeleri halka açık halden çıkartın" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "Önergeyi Yayınla" +msgstr[1] "Önergeleri Yayınla" -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" - -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "Bu tur için herhangi bir önerge belirlenmemiştir." +msgstr[1] "Bu tur için herhangi bir önerge belirlenmemiştir." -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." -msgstr "" +msgstr "Turnuvanız, ballotlarda önergelerin seçilmesi zorunlu ve ballotların jüriler tarafından gönderilebileceği şekilde ayarlanmıştır. Maçlar bitmeden önce önergeleri yayınladığınızdan emin olun, aksi takdirde ballotlar gönderilemez." -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." -msgstr "" - -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" +msgstr "Turnuvanız, önergelerin veto edilebileceği ve ballotların jüriler tarafından gönderilebileceği şekilde ayarlanmıştır. Maçlar bitmeden önce önergeleri yayınladığınızdan emin olun, aksi takdirde ballotlar veto hakkı veremez." -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "Turnuvanız, herkese açık sitede her turun önergesini gösterecek şekilde ayarlanmıştır. Orada gösterilmesi için önce önergeyi yayınlamanız gerekir." +msgstr[1] "Turnuvanız, herkese açık sitede her turun önergesini gösterecek şekilde ayarlanmıştır. Orada gösterilmesi için önce önergeyi yayınlamanız gerekir." -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "Turnuvanız, herkese açık sitede her turun önergesini gösterilmeyecek şekilde ayarlanmıştır. Önergeyi yayınlamaya gerek yok." +msgstr[1] "Turnuvanız, herkese açık sitede her turun önergesini gösterilmeyecek şekilde ayarlanmıştır. Önergeleri yayınlamaya gerek yok." -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "Önerge herkese açık yayınlandı." +msgstr[1] "Önergeler herkese açık yayınlandı." -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" -msgstr "" +msgstr "Açık önergeler sayfasını görüntüle" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." -msgstr "" +msgstr "Önergeleri yayınladınız, ancak bu turnuvanın ayarlarında \"önergelerin herkese açık görünümü\" ayarı etkinleştirilmediği sürece herkese gösterilmez." -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" -msgstr "" +msgstr "(brifing odası için)" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" -msgstr "" +msgstr "Kuraları odaya göre sıralı göster" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" -msgstr "" +msgstr "Kuraları takıma göre sıralı göster" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" -msgstr "" +msgstr "Tüm Maçların Kuralarını odaya göre sıralı göster" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" -msgstr "" +msgstr "Tüm Maçların Kuralarını takıma göre sıralı göster" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" -msgstr "" +msgstr "%(round)s İçin Kuraları odaya göre sıralı göster" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" -msgstr "" +msgstr "%(round)s İçin Kuraları takıma göre sıralı göster" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" -msgstr "" +msgstr "Önergeleri Görüntüle" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" -msgstr "" +msgstr "Önergeleri E-postala" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" -msgstr "" +msgstr "Önergeyi E-postala" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" -msgstr "" +msgstr "Şuradan başla:" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" -msgstr "" +msgstr "(baskı için)" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" -msgstr "" +msgstr "Ballot Formlarını Görüntüle" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" -msgstr "" +msgstr "Geri bildirim formlarını görüntüle" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" -msgstr "" +msgstr "Kaydırma Hızı" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" -msgstr "" +msgstr "Hızlı" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" -msgstr "" +msgstr "Orta" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" -msgstr "" +msgstr "Yavaş" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" -msgstr "" +msgstr "Ekstra Yavaş" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" -msgstr "" +msgstr "Jürileri Gizle" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" -msgstr "" +msgstr "Jürileri Göster" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" -msgstr "" +msgstr "Metin Boyutu" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" -msgstr "" +msgstr "Küçücük" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" -msgstr "" +msgstr "Küçük" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" -msgstr "" +msgstr "Büyük" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" -msgstr "" +msgstr "Kocaman" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" -msgstr "" +msgstr "Kaydırmayı Durdur" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." -msgstr "" +msgstr "%(round)s için kura henüz açıklanmadı." -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." -msgstr "" +msgstr "Bir sonraki tur için kura henüz açıklanmadı." -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" -msgstr "" +msgstr "Hakem Tahsisleri" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." -msgstr "" +msgstr "Şu anda giriş yapılan jürilerin sayısı odalardan daha azdır." -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" -msgstr "" +msgstr "Jürileri tahsis et" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" -msgstr "" +msgstr "Jüri tahsisini düzenle" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" -msgstr "" +msgstr "Oda Tahsisleri" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" -msgstr "" +msgstr "Oda tahsis et" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" -msgstr "" +msgstr "Oda tahsisini düzenle" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" -msgstr "" +msgstr "Önceden kurulmuş paneller" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Bu tur için %(npanels)s önceden kurulmuş panel var." +msgstr[1] "Bu tur için %(npanels)s önceden kurulmuş panel var." -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" -msgstr "" +msgstr "Bu tur için önceden kurulmuş panel yok" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" -msgstr "" +msgstr "%(round)s için önceden kurulmuş panelleri düzenle" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" -msgstr "" +msgstr "Taraf Tahsisleri" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 maçın tarafları doğrulanmamıştır." +msgstr[1] "%(ndebates)s maçın tarafları doğrulanmamıştır." -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" -msgstr "" +msgstr "Kurayı Sil" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" -msgstr "" +msgstr "Kurayı Onayla" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." -msgstr "" +msgstr "Takım sıralama önceliği girilmemiş. Bu, takımların herhangi bir metriğe göre sıralanmadığı anlamına gelir, bu nedenle tüm takımlar herkesi içeren tek bir aşamadadır. Bunu istemiyorsanız, bu turuvananın ayarlarının sıralama kısmından takım sıralama önceliklerini girebilirsiniz, ardından kurayı silin ve yeniden oluşturun. Çoğu turnuvada, ilk metrik puan veya galibiyet olmalıdır." -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." -msgstr "" +msgstr "Aşamalar daha sık kullanılan takım puanları yerine takım sıralama önceliğindeki ilk metriğe göre, şuan %(metric)s, hazırlanır. Eğer bunu istemiyorsanız sıralama ayarlama sayfasında takım sıralama önceliğini. değiştirebilirsiniz." -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." -msgstr "" +msgstr "Bu tur için kura türü manuel olarak ayarlandı, bu nedenle Tabbycat kurayı doldurmadı. Doldurmak için Taraf/Karşılaşmalar Ayarla adresine gidin." -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." -msgstr "" +msgstr "Jüri puan aralığı 0 ve bu nedenle tahsis sırasında jüri puanları göz ardı edilir. geri bildirim düzenleme sayfasında jüri puan aralığını değiştirebilirsiniz.." -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." -msgstr "" +msgstr "Tabbycat, eleme turlarında rastgele taraflar atar. Bununla birlikte, eleme turlarında, birçok turnuva bir izleyicinin önünde taraflar için kura çektiğinden, taraflar \"onaylanmamış\" olarak işaretlenir, böylece taraflar önceden atanmış gibi görünmez. Kurayı onayladıktan sonra, Tabbycat'in rastgele atamasını kabul etmek isteseniz bile, \"Tarafları / Eşleşmeleri Düzenle\" sayfasında tarafları onaylamanız gerekir." -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" -msgstr "" +msgstr "Hücreler pozisyon dengesindeki değişikliklere göre şu şekilde işaretlidir:
  • Kırmızı hücreler takıma pozisyon dengesini koruyan bir pozisyon tahsis edilemediğini gösterir.
  • Sarı hücreler takımın pozisyonunun daha önce dengesiz olduğunu ve bu çekilişte mümkün olan en iyi pozisyonun verildiğini ancak yine de dengesiz kaldığını gösterir.
  • Yeşil hücreler, takımın önceki dengesizliğinin bu kurada çözüldüğünü gösterir.
" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." -msgstr "" +msgstr "%(round)s için bir kura henüz oluşturulmadı. Oluşturmak için uygunluk bölümüne gidin." -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." -msgstr "" +msgstr "Bu turdaki bazı maçlar için taraflar doğrulanmamış. Bu pozisyon dengesi raporu, veritabanındaki \"onaylanmamış taraflar\" kullanılarak oluşturulur ve sonuç olarak çok mantıklı olmayabilir. Bu rapora bakmadan önce tüm maçlardaki tarafların onaylanması tavsiye edilir." -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." -msgstr "" +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "Mevcut pozisyon maliyet fonksiyonunuz %(exponent)s üssüne yükseltilmiş %(cost_func)sdir. Pozisyon maliyeti işlevlerinin nasıl çalıştığı hakkında daha fazla bilgi edinmek için tıklayın." -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." -msgstr "" +msgstr "Pozisyon dengesi raporları eleme turları için hesaplanmaz." -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." -msgstr "" +msgstr "Pozisyon dengesi raporları sadece İngiliz Parlamento turnuvalarında bulunur." -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." -msgstr "" +msgstr "Pozisyon dengesi raporları bir turnuvanın ilk turu için hesaplanmaz." -#: draw/views.py:66 draw/views.py:460 +#: draw/views.py msgid "No debates in this round" -msgstr "" +msgstr "Bu turda maç yok" -#: draw/views.py:74 +#: draw/views.py #, python-format msgid "Draw for %(round)s" -msgstr "" +msgstr "%(round)s için kura" -#: draw/views.py:76 +#: draw/views.py msgid "Draws for Current Rounds" -msgstr "" +msgstr "Mevcut Turlar için Kuralar" -#: draw/views.py:80 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" -msgstr "" +msgstr "maçlar %(time)s saatinde (%(time_zone)s zaman dilimi) başlar" -#: draw/views.py:84 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" -msgstr "" +msgstr "belirtilen zaman diliminde başlangıç saatleri: %(time_zone)s" -#: draw/views.py:122 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "maç %(time)s'da başlar" +msgstr[1] "maçlar %(time)s'da başlar" -#: draw/views.py:169 +#: draw/views.py msgid "The draw for this round hasn't been released." -msgstr "" +msgstr "Bu turun kurası henüz açıklanmadı." -#: draw/views.py:222 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" -msgstr "" +msgstr "%(tournament)s'ın tüm turları için tüm maçlar" -#: draw/views.py:380 +#: draw/views.py msgid "Adjudicator Assignments" -msgstr "" +msgstr "Jüri Tahsisleri" -#: draw/views.py:400 +#: draw/views.py +msgid "Position" +msgstr "Konum" + +#: draw/views.py msgid "Team Pairings" -msgstr "" +msgstr "Takım Eşleştirmeleri" -#: draw/views.py:424 +#: draw/views.py msgid "No Draw" -msgstr "" +msgstr "Kura Yok" -#: draw/views.py:426 +#: draw/views.py msgid "Draft Draw" -msgstr "" +msgstr "Taslak Kura" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:518 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" -msgstr "" +msgstr "%(side)s: Break olan taraf" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:523 +#: draw/views.py msgid "BR" -msgstr "" +msgstr "BT" -#: draw/views.py:548 +#: draw/views.py msgid "Draw with Details" -msgstr "" +msgstr "Detaylı Kura" -#: draw/views.py:556 +#: draw/views.py msgid "Position Balance Report" -msgstr "" +msgstr "Pozisyon Denge Raporu" -#: draw/views.py:567 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" -msgstr "" +msgstr "%(order)s düzeninin Rényi entropisi" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:570 +#: draw/views.py msgid " (i.e., Shannon entropy)" -msgstr "" +msgstr " (yani., Shannon entropisi)" -#: draw/views.py:600 +#: draw/views.py msgid "Teams with position imbalances" -msgstr "" +msgstr "Pozisyon dengesizlikleri olan takımlar" -#: draw/views.py:601 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" -msgstr "" +msgstr "Pozisyon dengesizliği olan takım yok! Yaşasın!" -#: draw/views.py:604 +#: draw/views.py msgid "Annotated draw" -msgstr "" +msgstr "Açıklamalı çizim" -#: draw/views.py:635 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" -msgstr "" +msgstr "%(round)s için kura oluşturamadı, zaten kura oluşturulmuş!" -#: draw/views.py:643 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" -msgstr "" +msgstr "

Aşağıdaki nedenlerden dolayı kura oluşturulamadı:%(message)s

\n" +"

Kurayı oluşturmayı denemeden önce lütfen problemi cözün.

" -#: draw/views.py:651 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" -msgstr "" +msgstr "

Aşağıdaki hatadan dolayı kura oluşturulamadı:%(message)s

\n" +"

Sorun devam ederse ve nasıl çözeceğinizden emin değilseniz yapımcılar ile iletişime geçin.

" -#: draw/views.py:660 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" -msgstr "" +msgstr "

Aşağıdaki hatadan dolayı takım sıralamaları oluşturulamadı:%(message)s

\n" +"

Kura güncel takım sıralamalarını kullandığı için üretilemiyor.

" -#: draw/views.py:676 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." -msgstr "" +msgstr "Odalar otomatik olarak tahsis edilmedi çünkü bir veya daha fazla jüri odası kısıtlaması var. Oda tahsislerini jüri tahsis ettikten sonra yapmalısınız." -#: draw/views.py:703 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." -msgstr "" +msgstr "Kura silindi. Normal şekilde yeniden oluşturabilirsiniz." -#: draw/views.py:723 +#: draw/views.py msgid "Released the draw." -msgstr "" +msgstr "Kura yayınlandı." -#: draw/views.py:738 +#: draw/views.py msgid "Unreleased the draw." -msgstr "" +msgstr "Kura yayınlanmadı." -#: draw/views.py:751 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." -msgstr "" +msgstr "Maalesef, \"%(input)s\" geçerli bir zaman değil. 24 saat biçiminde, ortasında iki nokta ile formatlanmalıdır. Örneğin: \"13:57\"." -#: draw/views.py:770 +#: draw/views.py msgid "Side Pre-Allocations" -msgstr "" +msgstr "Taraf Ön Tahsis" -#: draw/views.py:803 +#: draw/views.py msgid "Edit Matchups" -msgstr "" +msgstr "Eşleşmeleri Düzenle" diff --git a/tabbycat/draw/locale/tzl/LC_MESSAGES/django.po b/tabbycat/draw/locale/tzl/LC_MESSAGES/django.po index 6d4f126c4c9..eb8354d159d 100644 --- a/tabbycat/draw/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" "Last-Translator: \n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -17,1123 +17,1103 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "crwdns29942:1%(count)dcrwdnd29942:1%(status)scrwdne29942:1" -msgstr[1] "crwdns29942:5%(count)dcrwdnd29942:5%(status)scrwdne29942:5" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "crwdns29944:0%(status)scrwdne29944:0" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "crwdns29946:1%(count)dcrwdne29946:1" msgstr[1] "crwdns29946:5%(count)dcrwdne29946:5" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "crwdns52157:0crwdne52157:0" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "crwdns29948:1%(count)dcrwdne29948:1" msgstr[1] "crwdns29948:5%(count)dcrwdne29948:5" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "crwdns29950:0crwdne29950:0" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "crwdns29952:0crwdne29952:0" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "crwdns29954:0crwdne29954:0" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "crwdns29956:0crwdne29956:0" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "crwdns29958:0crwdne29958:0" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "crwdns29960:0crwdne29960:0" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "crwdns29962:0crwdne29962:0" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "crwdns29964:0crwdne29964:0" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "crwdns29966:0crwdne29966:0" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "crwdns29968:0crwdne29968:0" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "crwdns29970:0crwdne29970:0" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "crwdns29972:0crwdne29972:0" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "crwdns29974:0crwdne29974:0" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "crwdns29976:0%dcrwdne29976:0" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "crwdns29978:0%dcrwdne29978:0" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "crwdns29980:0%(nbypassing)dcrwdne29980:0" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." -msgstr "crwdns29982:0%(nbypassing)dcrwdnd29982:0%(advancing)dcrwdne29982:0" +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "crwdns52159:0%(nbypassing)dcrwdnd52159:0%(nadvancing)dcrwdne52159:0" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "crwdns29984:0%dcrwdne29984:0" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "crwdns29986:0%(alpha)crwdne29986:0" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "crwdns29988:0%(num)dcrwdne29988:0" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "crwdns29990:0crwdne29990:0" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "crwdns29992:0%dcrwdne29992:0" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "crwdns29994:0%dcrwdne29994:0" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "crwdns29996:0%(noninteger)dcrwdnd29996:0%(total)dcrwdne29996:0" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "crwdns29998:0%(aff_count)dcrwdnd29998:0%(neg_count)dcrwdne29998:0" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "crwdns30000:0crwdne30000:0" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "crwdns30002:0%(type)scrwdne30002:0" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "crwdns30004:0%(type)scrwdne30004:0" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "crwdns30006:0%(option)scrwdne30006:0" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "crwdns30008:0%(size)dcrwdne30008:0" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "crwdns30010:0crwdne30010:0" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "crwdns30012:0crwdne30012:0" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "crwdns30014:0crwdne30014:0" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "crwdns30016:0crwdne30016:0" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "crwdns30018:0crwdne30018:0" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "crwdns51656:0crwdne51656:0" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "crwdns30024:0crwdne30024:0" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "crwdns30026:0crwdne30026:0" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "crwdns30032:0crwdne30032:0" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "crwdns30034:0crwdne30034:0" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "crwdns30036:0crwdne30036:0" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "crwdns30038:0crwdne30038:0" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "crwdns30040:0crwdne30040:0" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "crwdns30042:0crwdne30042:0" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "crwdns30044:0crwdne30044:0" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "crwdns30046:0crwdne30046:0" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "crwdns30048:0crwdne30048:0" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "crwdns30050:0crwdne30050:0" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "crwdns30052:0crwdne30052:0" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "crwdns30054:0crwdne30054:0" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "crwdns30056:0crwdne30056:0" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "crwdns30058:0crwdne30058:0" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "crwdns30060:0crwdne30060:0" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "crwdns30062:0crwdne30062:0" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "crwdns30064:0crwdne30064:0" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "crwdns30066:0crwdne30066:0" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "crwdns51666:0%(place)scrwdne51666:0" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "crwdns30076:0crwdne30076:0" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "crwdns30078:0crwdne30078:0" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "crwdns30080:0crwdne30080:0" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "crwdns30082:0crwdne30082:0" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "crwdns30084:0crwdne30084:0" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "crwdns51190:0%(side)scrwdnd51190:0%(metric)scrwdne51190:0" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "crwdns30088:0%(num)dcrwdne30088:0" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "crwdns30090:0crwdne30090:0" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "crwdns30092:0crwdne30092:0" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "crwdns30098:0crwdne30098:0" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "crwdns30100:0crwdne30100:0" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "crwdns30102:0crwdne30102:0" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "crwdns30104:0crwdne30104:0" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "crwdns30106:0crwdne30106:0" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "crwdns30108:0crwdne30108:0" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "crwdns35166:0crwdne35166:0" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "crwdns30110:0crwdne30110:0" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "crwdns30112:0crwdne30112:0" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "crwdns30114:0crwdne30114:0" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "crwdns30116:0crwdne30116:0" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "crwdns30118:0crwdne30118:0" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "crwdns30120:0crwdne30120:0" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "crwdns30122:0crwdne30122:0" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "crwdns30124:0crwdne30124:0" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "crwdns30126:0crwdne30126:0" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "crwdns30128:0crwdne30128:0" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "crwdns30130:0%(team)scrwdnd30130:0%(metric)scrwdne30130:0" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "crwdns30132:0crwdne30132:0" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "crwdns30134:0crwdne30134:0" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "crwdns30136:0crwdne30136:0" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "crwdns30138:0crwdne30138:0" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "crwdns30140:0crwdne30140:0" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "crwdns30142:0crwdne30142:0" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "crwdns30144:0crwdne30144:0" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "crwdns30146:0crwdne30146:0" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "crwdns30154:1crwdne30154:1" msgstr[1] "crwdns30154:5%(ndebates)scrwdne30154:5" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "crwdns30156:1%(adjudicators)scrwdne30156:1" msgstr[1] "crwdns30156:5%(nadjs)scrwdnd30156:5%(adjudicators)scrwdne30156:5" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "crwdns30158:1crwdne30158:1" msgstr[1] "crwdns30158:5%(ndebates)scrwdne30158:5" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "crwdns30160:1crwdne30160:1" msgstr[1] "crwdns30160:5%(ndebates)scrwdne30160:5" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "crwdns34040:1%(adjudicators)scrwdne34040:1" msgstr[1] "crwdns34040:5%(nadjs)scrwdnd34040:5%(adjudicators)scrwdne34040:5" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "crwdns34042:1crwdne34042:1" msgstr[1] "crwdns34042:5%(ndebates)scrwdne34042:5" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "crwdns30162:1%(teams)scrwdne30162:1" msgstr[1] "crwdns30162:5%(nteams)scrwdnd30162:5%(teams)scrwdne30162:5" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "crwdns51192:1crwdne51192:1" msgstr[1] "crwdns51192:5%(ndebates)scrwdne51192:5" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "crwdns51194:1%(rooms)scrwdne51194:1" msgstr[1] "crwdns51194:5%(ndebates)scrwdnd51194:5%(rooms)scrwdne51194:5" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "crwdns51196:1crwdne51196:1" msgstr[1] "crwdns51196:5%(ndebates)scrwdne51196:5" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "crwdns34044:0crwdne34044:0" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "crwdns30174:0crwdne30174:0" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "crwdns30176:0crwdne30176:0" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "crwdns30178:0crwdne30178:0" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "crwdns30180:0crwdne30180:0" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "crwdns30182:0crwdne30182:0" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "crwdns30184:0crwdne30184:0" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "crwdns30150:0crwdne30150:0" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "crwdns51198:0%(round)scrwdne51198:0" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "crwdns51200:0%(round)scrwdne51200:0" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "crwdns51202:0%(round)scrwdne51202:0" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "crwdns30192:0crwdne30192:0" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "crwdns30194:0%(start_time)scrwdne30194:0" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "crwdns30196:0crwdne30196:0" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "crwdns30200:0crwdne30200:0" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "crwdns30202:0crwdne30202:0" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "crwdns30204:1%(motions_count)scrwdne30204:1" msgstr[1] "crwdns30204:5%(motions_count)scrwdne30204:5" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "crwdns30206:0crwdne30206:0" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "crwdns52161:1crwdne52161:1" +msgstr[1] "crwdns52161:5crwdne52161:5" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "crwdns30208:0crwdne30208:0" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" -msgstr "crwdns30210:0crwdne30210:0" - -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "crwdns30212:0crwdne30212:0" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "crwdns30214:0crwdne30214:0" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "crwdns52163:0crwdne52163:0" -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "crwdns30216:0crwdne30216:0" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "crwdns30218:0crwdne30218:0" +msgid_plural "Enter motions" +msgstr[0] "crwdns52165:1crwdne52165:1" +msgstr[1] "crwdns52165:5crwdne52165:5" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "crwdns30220:0crwdne30220:0" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "crwdns30222:0crwdne30222:0" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "crwdns30224:0crwdne30224:0" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "crwdns30226:0crwdne30226:0" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "crwdns30228:0crwdne30228:0" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "crwdns30230:0crwdne30230:0" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "crwdns30232:0%(alert_link)scrwdne30232:0" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "crwdns30234:0%(alert_link)scrwdne30234:0" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "crwdns30236:0crwdne30236:0" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "crwdns30240:0crwdne30240:0" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "crwdns30242:0crwdne30242:0" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "crwdns30244:0crwdne30244:0" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "crwdns30246:0crwdne30246:0" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "crwdns30248:0crwdne30248:0" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "crwdns30250:0crwdne30250:0" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "crwdns30252:0crwdne30252:0" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "crwdns52167:1crwdne52167:1" +msgstr[1] "crwdns52167:5crwdne52167:5" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "crwdns30254:0crwdne30254:0" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "crwdns52169:1crwdne52169:1" +msgstr[1] "crwdns52169:5crwdne52169:5" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "crwdns30256:0crwdne30256:0" +msgid_plural "Release Motions" +msgstr[0] "crwdns52171:1crwdne52171:1" +msgstr[1] "crwdns52171:5crwdne52171:5" -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "crwdns30258:0crwdne30258:0" - -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "crwdns30260:0crwdne30260:0" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "crwdns52269:1crwdne52269:1" +msgstr[1] "crwdns52269:5crwdne52269:5" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "crwdns30262:0crwdne30262:0" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "crwdns30264:0crwdne30264:0" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "crwdns30266:0crwdne30266:0" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "crwdns30268:0crwdne30268:0" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "crwdns52175:1crwdne52175:1" +msgstr[1] "crwdns52175:5crwdne52175:5" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "crwdns30270:0crwdne30270:0" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "crwdns52177:1crwdne52177:1" +msgstr[1] "crwdns52177:5crwdne52177:5" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "crwdns30272:0crwdne30272:0" +msgid_plural "Motions have been released publicly." +msgstr[0] "crwdns52179:1crwdne52179:1" +msgstr[1] "crwdns52179:5crwdne52179:5" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "crwdns30274:0crwdne30274:0" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "crwdns30276:0%(alert_link)scrwdne30276:0" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "crwdns34050:0crwdne34050:0" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "crwdns51204:0crwdne51204:0" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "crwdns34054:0crwdne34054:0" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "crwdns51206:0crwdne51206:0" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "crwdns34058:0crwdne34058:0" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "crwdns51208:0%(round)scrwdne51208:0" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "crwdns51210:0%(round)scrwdne51210:0" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "crwdns34064:0crwdne34064:0" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "crwdns34066:0crwdne34066:0" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "crwdns34068:0crwdne34068:0" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "crwdns30278:0crwdne30278:0" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "crwdns34070:0crwdne34070:0" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "crwdns34072:0crwdne34072:0" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "crwdns34074:0crwdne34074:0" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "crwdns30280:0crwdne30280:0" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "crwdns30282:0crwdne30282:0" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "crwdns30284:0crwdne30284:0" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "crwdns30286:0crwdne30286:0" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "crwdns30288:0crwdne30288:0" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "crwdns51212:0crwdne51212:0" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "crwdns51214:0crwdne51214:0" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "crwdns30290:0crwdne30290:0" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "crwdns30292:0crwdne30292:0" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "crwdns30294:0crwdne30294:0" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "crwdns30296:0crwdne30296:0" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "crwdns30298:0crwdne30298:0" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "crwdns30300:0crwdne30300:0" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "crwdns51216:0%(round)scrwdne51216:0" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "crwdns34076:0crwdne34076:0" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "crwdns30312:0crwdne30312:0" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "crwdns34078:0crwdne34078:0" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "crwdns30316:0crwdne30316:0" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "crwdns30318:0crwdne30318:0" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "crwdns51218:0crwdne51218:0" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "crwdns51220:0crwdne51220:0" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "crwdns51222:0crwdne51222:0" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "crwdns35168:0crwdne35168:0" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "crwdns35170:1%(npanels)scrwdne35170:1" msgstr[1] "crwdns35170:5%(npanels)scrwdne35170:5" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "crwdns35172:0crwdne35172:0" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "crwdns51224:0%(round)scrwdne51224:0" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "crwdns30326:0crwdne30326:0" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "crwdns30328:1crwdne30328:1" msgstr[1] "crwdns30328:5%(ndebates)scrwdne30328:5" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "crwdns30330:0crwdne30330:0" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "crwdns30332:0crwdne30332:0" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "crwdns35176:0%(standings_config_url)scrwdne35176:0" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "crwdns30334:0%(metric)scrwdnd30334:0%(standings_config_url)scrwdne30334:0" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "crwdns30336:0%(edit_matchups_url)scrwdne30336:0" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "crwdns34088:0%(feedback_config_url)scrwdne34088:0" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "crwdns30338:0crwdne30338:0" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "crwdns30340:0crwdne30340:0" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "crwdns51226:0%(round)scrwdnd51226:0%(availability_url)scrwdne51226:0" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "crwdns30346:0crwdne30346:0" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." -msgstr "crwdns30348:0%(cost_func)scrwdnd30348:0%(exponent)scrwdne30348:0" +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "crwdns52181:0%(cost_func)scrwdnd52181:0%(exponent)scrwdne52181:0" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "crwdns30350:0crwdne30350:0" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "crwdns30352:0crwdne30352:0" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "crwdns30354:0crwdne30354:0" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "crwdns34090:0crwdne34090:0" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "crwdns30374:0%(round)scrwdne30374:0" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "crwdns34092:0crwdne34092:0" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "crwdns30376:0%(time)scrwdnd30376:0%(time_zone)scrwdne30376:0" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "crwdns34094:0%(time_zone)scrwdne34094:0" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "crwdns34096:1%(time)scrwdne34096:1" msgstr[1] "crwdns34096:5%(time)scrwdne34096:5" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "crwdns34098:0crwdne34098:0" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "crwdns30378:0%(tournament)scrwdne30378:0" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "crwdns34100:0crwdne34100:0" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "crwdns51708:0crwdne51708:0" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "crwdns34102:0crwdne34102:0" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "crwdns30380:0crwdne30380:0" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "crwdns30382:0crwdne30382:0" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "crwdns51228:0%(side)scrwdne51228:0" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "crwdns30388:0crwdne30388:0" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "crwdns30390:0crwdne30390:0" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "crwdns30392:0crwdne30392:0" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "crwdns30394:0%(order)scrwdne30394:0" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "crwdns30396:0crwdne30396:0" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "crwdns30398:0crwdne30398:0" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "crwdns30400:0crwdne30400:0" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "crwdns30402:0crwdne30402:0" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "crwdns30404:0%(round)scrwdne30404:0" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "crwdns30406:0%(message)scrwdne30406:0" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "crwdns35178:0%(message)scrwdne35178:0" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "crwdns30410:0%(message)scrwdne30410:0" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "crwdns51230:0crwdne51230:0" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "crwdns30414:0crwdne30414:0" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "crwdns30422:0crwdne30422:0" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "crwdns30424:0crwdne30424:0" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "crwdns30426:0%(input)scrwdne30426:0" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "crwdns30428:0crwdne30428:0" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "crwdns34104:0crwdne34104:0" diff --git a/tabbycat/draw/locale/vi/LC_MESSAGES/django.mo b/tabbycat/draw/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..3f534d37c99 Binary files /dev/null and b/tabbycat/draw/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/draw/locale/vi/LC_MESSAGES/django.po b/tabbycat/draw/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a8ce81f8b4e --- /dev/null +++ b/tabbycat/draw/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,1094 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-03-25 13:46\n" +"Last-Translator: \n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 930\n" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides confirmed." +msgid_plural "%(count)d debates were marked as having their sides confirmed." +msgstr[0] "" + +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py +#, python-format +msgid "%(count)d debate was marked as having its sides not confirmed." +msgid_plural "%(count)d debates were marked as having their sides not confirmed." +msgstr[0] "" + +#: draw/apps.py draw/views.py +msgid "Draw" +msgstr "Bảng đấu" + +#: draw/generator/__init__.py +msgid "Too many swaps" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "One-up-one-down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (history)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (institution)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble up (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Bubble down (to accommodate)" +msgstr "" + +#: draw/generator/__init__.py +msgid "Can't bubble up/down" +msgstr "" + +#: draw/generator/__init__.py +msgid "Pull-up team" +msgstr "" + +#: draw/generator/bpelimination.py draw/generator/elimination.py +#, python-format +msgid "%d debates in the previous round don't have a result." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "%d debates in the previous round don't have exactly two teams advancing." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." +msgstr "" + +#: draw/generator/bpelimination.py +#, python-format +msgid "The number of debates (%d) in the last round is not a power of two." +msgstr "" + +#: draw/generator/bphungarian.py +#, python-format +msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." +msgstr "" + +#: draw/generator/common.py +#, python-format +msgid "The number of teams presented for the draw was not a multiple of %(num)d." +msgstr "" + +#: draw/generator/common.py +msgid "There were no teams for the draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." +msgstr "" + +#: draw/generator/elimination.py +#, python-format +msgid "The number of teams (%d) in this round is not a power of two." +msgstr "" + +#: draw/generator/powerpair.py +#, python-format +msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." +msgstr "" + +#: draw/generator/random.py +#, python-format +msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." +msgstr "" + +#: draw/generator/random.py +msgid "One or more teams had an allocated side that wasn't affirmative or negative." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with two-team formats." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The draw type %(type)s can't be used with British Parliamentary." +msgstr "" + +#: draw/manager.py +#, python-format +msgid "Unrecognised \"teams in debate\" option: %(option)s" +msgstr "" + +#: draw/manager.py +#, python-format +msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." +msgstr "" + +#: draw/models.py +msgid "none" +msgstr "" + +#: draw/models.py +msgid "postponed" +msgstr "" + +#: draw/models.py +msgid "draft" +msgstr "" + +#: draw/models.py +msgid "confirmed" +msgstr "đã xác nhận" + +#: draw/models.py +msgid "round" +msgstr "vòng" + +#: draw/models.py +msgid "room" +msgstr "phòng" + +#: draw/models.py +msgid "bracket" +msgstr "" + +#: draw/models.py +msgid "room rank" +msgstr "xếp hạng phòng" + +#: draw/models.py +msgid "importance" +msgstr "mức độ quan trọng" + +#: draw/models.py +msgid "result status" +msgstr "" + +#: draw/models.py +msgid "sides confirmed" +msgstr "" + +#: draw/models.py +msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." +msgstr "" + +#: draw/models.py +msgid "debate" +msgstr "trận tranh biện" + +#: draw/models.py +msgid "debates" +msgstr "các trận tranh biện" + +#. Translators: This is appended to a list of teams, e.g. "Auckland +#. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading +#. space. +#: draw/models.py +msgid " (sides not confirmed)" +msgstr "" + +#. Translators: This goes between teams in a debate, e.g. "Auckland 1 +#. vs Vic Wellington 1". Mind the leading and trailing spaces. +#: draw/models.py +msgid " vs " +msgstr " đối đầu với " + +#: draw/models.py +msgid "affirmative" +msgstr "" + +#: draw/models.py +msgid "negative" +msgstr "" + +#: draw/models.py +msgid "opening government" +msgstr "ủng hộ thượng viện" + +#: draw/models.py +msgid "opening opposition" +msgstr "phản đối thượng viện" + +#: draw/models.py +msgid "closing government" +msgstr "ủng hộ hạ viện" + +#: draw/models.py +msgid "closing opposition" +msgstr "phản đối hạ viện" + +#: draw/models.py +msgid "team" +msgstr "đội" + +#: draw/models.py +msgid "side" +msgstr "" + +#: draw/models.py +msgid "debate team" +msgstr "đội" + +#: draw/models.py +msgid "debate teams" +msgstr "các đội" + +#: draw/models.py +#, python-format +msgid "placed %(place)s" +msgstr "" + +#: draw/models.py +msgid "result unknown" +msgstr "" + +#: draw/models.py +msgid "won" +msgstr "thắng" + +#: draw/models.py +msgid "lost" +msgstr "thua" + +#: draw/models.py +msgid "team side allocation" +msgstr "" + +#: draw/models.py +msgid "team side allocations" +msgstr "" + +#. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", +#. "Opening government: Total speaker score", "Closing opposition: Number of firsts" +#: draw/tables.py +#, python-format +msgid "%(side)s: %(metric)s" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "Đội %(num)d" + +#: draw/tables.py +msgid "Room rank of this debate" +msgstr "Xếp hạng phòng của trận tranh biện này" + +#: draw/tables.py +msgid "Bracket of this debate" +msgstr "" + +#: draw/tables.py +msgid "side history
\n" +"(number of times the team has been on each side before this round)" +msgstr "" + +#. Translators: Abbreviation for "side history" +#: draw/tables.py +msgid "SH" +msgstr "" + +#: draw/tables.py +msgid "Went from balanced to imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Went from imbalanced to balanced" +msgstr "" + +#: draw/tables.py +msgid "Best improvement possible, still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "Was imbalanced and still imbalanced" +msgstr "" + +#: draw/tables.py +msgid "No metrics in the team standings precedence" +msgstr "" + +#: draw/tables.py +msgid "Side" +msgstr "Phe" + +#: draw/tables.py +msgid "Position this round" +msgstr "Vị trí trong vòng này" + +#: draw/tables.py +msgid "Before" +msgstr "Trước" + +#: draw/tables.py +msgid "Side history before this round" +msgstr "" + +#: draw/tables.py +msgid "After" +msgstr "Sau" + +#: draw/tables.py +msgid "Side history after this round" +msgstr "" + +#: draw/tables.py +msgid "Cost" +msgstr "Chi phí" + +#: draw/tables.py +msgid "Position cost" +msgstr "" + +#: draw/tables.py +msgid "Status" +msgstr "Trạng thái" + +#: draw/tables.py +msgid "Teams with this many points are permitted in this debate
\n" +"(bracket in bold)" +msgstr "" + +#: draw/tables.py +#, python-format +msgid "%(team)s: %(metric)s" +msgstr "" + +#: draw/tables.py +msgid "side history before this round" +msgstr "" + +#: draw/tables.py +msgid "Sides" +msgstr "" + +#: draw/tables.py +msgid "position cost" +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" +msgstr "CHÚ Ý: Xóa các đội trong trận tranh biện trong dữ liệu có thể khiến Tabbycat gặp sự cố." + +#: draw/templates/admin/draw/debateteam/delete_warning.html +msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." +msgstr "" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "WARNING!!! If you are editing debate teams, read this first!" +msgstr "CHÚ Ý: Nếu như bạn đang chỉnh sửa các đội, đọc" + +#: draw/templates/admin/draw/debateteam/edit_warning.html +msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." +msgstr "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate does not have a chair." +msgid_plural "%(ndebates)s debates do not have a chair." +msgstr[0] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is adjudicating multiple debates." +msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" +msgstr[0] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has a panel with an even number of adjudicators." +msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." +msgstr[0] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 debate has an adjudicator conflict." +msgid_plural "%(ndebates)s debates have adjudicator conflicts." +msgstr[0] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." +msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" +msgstr[0] "" + +#: draw/templates/draw_alerts_adjudicators.html +#, python-format +msgid "1 adjudicator is available but not assigned to a debate." +msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." +msgstr[0] "" + +#: draw/templates/draw_alerts_teams.html +#, python-format +msgid "%(teams)s is competing in multiple debates." +msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" +msgstr[0] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate does not have a room." +msgid_plural "%(ndebates)s debates do not have a room." +msgstr[0] "Có %(ndebates)s trận tranh biện không có phòng." + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "There are multiple debates in %(rooms)s." +msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" +msgstr[0] "" + +#: draw/templates/draw_alerts_venues.html +#, python-format +msgid "1 debate has a room constraint violation." +msgid_plural "%(ndebates)s debates have room constraint violations." +msgstr[0] "" + +#: draw/templates/draw_base.html +msgid "Availability" +msgstr "Tính khả dụng" + +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html +msgid "Edit Sides/Matchups" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Redo Draw" +msgstr "" + +#: draw/templates/draw_base.html +msgid "Draw Details" +msgstr "Chi tiết bảng đấu" + +#: draw/templates/draw_base.html +msgid "Position Balance" +msgstr "" + +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw" +msgstr "Hiện thị bảng đấu" + +#: draw/templates/draw_confirm_regeneration.html +msgid "Confirm draw regeneration" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html +msgid "Back to Draw" +msgstr "Quay lại bảng đấu" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Confirm Draw Deletion for %(round)s" +msgstr "Xác nhận xóa bảng đấu ở vòng %(round)s" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" +msgstr "" + +#: draw/templates/draw_confirm_regeneration.html +#, python-format +msgid "Yes, I want to delete the current draw for %(round)s" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "View Draw" +msgstr "Xem bảng đấu" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "Debates start at %(start_time)s" +msgstr "Trận tranh biện bắt đầu từ %(start_time)s" + +#: draw/templates/draw_display_admin.html +msgid "Add Start Time" +msgstr "Thêm thời gian bắt đầu" + +#: draw/templates/draw_display_admin.html +msgid "Enter Results" +msgstr "Nhập kết quả" + +#: draw/templates/draw_display_admin.html +msgid "Motion Details" +msgstr "Chi tiết kiến nghị" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "%(motions_count)s motion has been entered." +msgid_plural "%(motions_count)s motions have been entered." +msgstr[0] "Có %(motions_count)s kiến nghị đã được nhập." + +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Enter a motion" +msgid_plural "Enter motions" +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Draw" +msgstr "Công bố bảng đấu" + +#: draw/templates/draw_display_admin.html +msgid "You have not generated a draw for this round yet. There is nothing to release." +msgstr "Bạn chưa tạo bảng đấu cho vòng này. Không có gì để công bố." + +#: draw/templates/draw_display_admin.html +msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease draw to public" +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "The draw has been released publicly." +msgstr "Bảng đấu đã được công khai." + +#: draw/templates/draw_display_admin.html +msgid "View public draw page" +msgstr "Xem bảng đấu công khai" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release draw to public" +msgstr "Công khai bảng đấu" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Release Motion" +msgid_plural "Release Motions" +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." +msgstr "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "The motion has been released publicly." +msgid_plural "Motions have been released publicly." +msgstr[0] "" + +#: draw/templates/draw_display_admin.html +msgid "View public motions page" +msgstr "Xem trang công khai kiến nghị" + +#: draw/templates/draw_display_admin.html +#, python-format +msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "(for the briefing room)" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Room" +msgstr "Hiển thị bảng đấu xắp xếp theo phòng" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draw ordered by Team" +msgstr "Hiển thị bảng đấu xắp xếp theo đội" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Draws for All Current Rounds ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Room" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +#, python-format +msgid "Display Draw for %(round)s ordered by Team" +msgstr "" + +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html +msgid "Display Motions" +msgstr "Hiển thị các kiến nghị" + +#: draw/templates/draw_display_admin.html +msgid "Email Motions" +msgstr "Email các kiến nghị" + +#: draw/templates/draw_display_admin.html +msgid "Email Motion" +msgstr "Email kiến nghị" + +#: draw/templates/draw_display_admin.html +msgid "Start at" +msgstr "Bắt đầu từ" + +#: draw/templates/draw_display_assistant.html +msgid "(for printing)" +msgstr "(cho in ấn)" + +#: draw/templates/draw_display_assistant.html +msgid "View Ballot Forms" +msgstr "" + +#: draw/templates/draw_display_assistant.html +msgid "View Feedback Forms" +msgstr "" + +#: draw/templates/draw_display_by.html +msgid "Scroll Speed" +msgstr "Tốc độ cuộn" + +#: draw/templates/draw_display_by.html +msgid "Fast" +msgstr "Nhanh" + +#: draw/templates/draw_display_by.html +msgid "Medium" +msgstr "Vừa" + +#: draw/templates/draw_display_by.html +msgid "Slow" +msgstr "Chậm" + +#: draw/templates/draw_display_by.html +msgid "Extra Slow" +msgstr "Rất chậm" + +#: draw/templates/draw_display_by.html +msgid "Hide Adjudicators" +msgstr "Ẩn giám khảo" + +#: draw/templates/draw_display_by.html +msgid "Show Adjudicators" +msgstr "Hiện giám khảo" + +#: draw/templates/draw_display_by.html +msgid "Text Size" +msgstr "Cỡ chữ" + +#: draw/templates/draw_display_by.html +msgid "Tiny" +msgstr "Rất nhỏ" + +#: draw/templates/draw_display_by.html +msgid "Small" +msgstr "Nhỏ" + +#: draw/templates/draw_display_by.html +msgid "Large" +msgstr "Lớn" + +#: draw/templates/draw_display_by.html +msgid "Huge" +msgstr "Rất lớn" + +#: draw/templates/draw_display_by.html +msgid "Stop Scroll" +msgstr "Dừng cuộn" + +#: draw/templates/draw_not_released.html +#, python-format +msgid "The draw for %(round)s has yet to be released." +msgstr "Bảng đấu cho vòng %(round)s chưa được công bố." + +#: draw/templates/draw_not_released.html +msgid "The draw for the next round has yet to be released." +msgstr "Bảng đấu cho vòng sau chưa được công bố." + +#: draw/templates/draw_status_confirmed.html +msgid "Adjudicator Allocations" +msgstr "Phân bổ giám khảo" + +#: draw/templates/draw_status_confirmed.html +msgid "There are currently fewer adjudicators checked in than there are rooms." +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate adjudicators" +msgstr "Phân bổ giám khảo" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit adjudicator allocation" +msgstr "Chỉnh sửa phân bổ giám khảo" + +#: draw/templates/draw_status_confirmed.html +msgid "Room Allocations" +msgstr "Phân bổ phòng" + +#: draw/templates/draw_status_confirmed.html +msgid "Allocate rooms" +msgstr "Phân bổ phòng" + +#: draw/templates/draw_status_confirmed.html +msgid "Edit room allocation" +msgstr "Chỉnh sửa phân bổ phòng" + +#: draw/templates/draw_status_confirmed.html +msgid "Preformed Panels" +msgstr "Bàn giám khảo chỉ định" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "There is %(npanels)s preformed panel available for this round." +msgid_plural "There are %(npanels)s preformed panels available for this round." +msgstr[0] "" + +#: draw/templates/draw_status_confirmed.html +msgid "There are no preformed panels available for this round" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "Edit preformed panels for %(round)s" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +msgid "Side Allocations" +msgstr "" + +#: draw/templates/draw_status_confirmed.html +#, python-format +msgid "1 debate does not have its sides confirmed." +msgid_plural "%(ndebates)s debates do not have their sides confirmed." +msgstr[0] "" + +#: draw/templates/draw_status_draft.html +msgid "Delete Draw" +msgstr "Xóa bảng đấu" + +#: draw/templates/draw_status_draft.html +msgid "Confirm Draw" +msgstr "Xác nhận bảng đấu" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." +msgstr "" + +#: draw/templates/draw_status_draft.html +#, python-format +msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." +msgstr "" + +#: draw/templates/draw_status_draft.html +msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" +msgstr "" + +#: draw/templates/draw_status_none.html +#, python-format +msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." +msgstr "" + +#: draw/templates/position_balance.html +msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." +msgstr "" + +#: draw/templates/position_balance.html +#, python-format +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgstr "" + +#: draw/templates/position_balance_break.html +msgid "Position balance reports aren't computed for elimination rounds." +msgstr "" + +#: draw/templates/position_balance_nonbp.html +msgid "Position balance reports are only available for British Parliamentary tournaments." +msgstr "" + +#: draw/templates/position_balance_round1.html +msgid "Position balance reports aren't computed for the first round of a tournament." +msgstr "" + +#: draw/views.py +msgid "No debates in this round" +msgstr "Không có trận tranh biện nào trong vòng này" + +#: draw/views.py +#, python-format +msgid "Draw for %(round)s" +msgstr "Bảng đấu cho vòng %(round)s" + +#: draw/views.py +msgid "Draws for Current Rounds" +msgstr "Bảng đấu cho các vòng hiện tại" + +#: draw/views.py +#, python-format +msgid "debates start at %(time)s (in %(time_zone)s)" +msgstr "trận tranh biện bắt đầu từ %(time)s (ở %(time_zone)s)" + +#: draw/views.py +#, python-format +msgid "start times in time zone: %(time_zone)s" +msgstr "" + +#: draw/views.py +#, python-format +msgid "debate starts at %(time)s" +msgid_plural "debates start at %(time)s" +msgstr[0] "trận tranh biện bắt đầu từ %(time)s" + +#: draw/views.py +msgid "The draw for this round hasn't been released." +msgstr "Bảng đấu cho vòng này chưa được công bố." + +#: draw/views.py +#, python-format +msgid "All Debates for All Rounds of %(tournament)s" +msgstr "" + +#: draw/views.py +msgid "Adjudicator Assignments" +msgstr "" + +#: draw/views.py +msgid "Position" +msgstr "Vị trí" + +#: draw/views.py +msgid "Team Pairings" +msgstr "" + +#: draw/views.py +msgid "No Draw" +msgstr "" + +#: draw/views.py +msgid "Draft Draw" +msgstr "" + +#. Translators: e.g. "Affirmative: Break rank" +#: draw/views.py +#, python-format +msgid "%(side)s: Break rank" +msgstr "" + +#. Translators: "BR" stands for "Break rank" +#: draw/views.py +msgid "BR" +msgstr "" + +#: draw/views.py +msgid "Draw with Details" +msgstr "" + +#: draw/views.py +msgid "Position Balance Report" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Rényi entropy of order %(order)s" +msgstr "" + +#. Translators: This is appended to the string "Rényi entropy of order 1.0" +#: draw/views.py +msgid " (i.e., Shannon entropy)" +msgstr "" + +#: draw/views.py +msgid "Teams with position imbalances" +msgstr "" + +#: draw/views.py +msgid "No teams with position imbalances! Hooray!" +msgstr "" + +#: draw/views.py +msgid "Annotated draw" +msgstr "" + +#: draw/views.py +#, python-format +msgid "Could not create draw for %(round)s, there was already a draw!" +msgstr "Không thể tạo bảng đấu cho vòng %(round)s, đã có bảng đấu có sẵn!" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, for the following reason: %(message)s

\n" +"

Please fix this issue before attempting to create the draw.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" +"

If this issue persists and you're not sure how to resolve it, please contact the developers.

" +msgstr "" + +#: draw/views.py +#, python-format +msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" +"

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" +msgstr "" + +#: draw/views.py +msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." +msgstr "" + +#: draw/views.py +msgid "Deleted the draw. You can now recreate it as normal." +msgstr "" + +#: draw/views.py +msgid "Released the draw." +msgstr "Công bố bảng đấu." + +#: draw/views.py +msgid "Unreleased the draw." +msgstr "" + +#: draw/views.py +#, python-format +msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." +msgstr "" + +#: draw/views.py +msgid "Side Pre-Allocations" +msgstr "" + +#: draw/views.py +msgid "Edit Matchups" +msgstr "" + diff --git a/tabbycat/draw/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/draw/locale/zh_Hans/LC_MESSAGES/django.po index 5e0d39087b2..b92f405c435 100644 --- a/tabbycat/draw/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:15\n" +"POT-Creation-Date: 2023-02-12 02:25-0400\n" +"PO-Revision-Date: 2023-02-12 06:28\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,1106 +17,1078 @@ msgstr "" "X-Crowdin-File: /develop/tabbycat/draw/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 930\n" -#: draw/admin.py:67 -#, python-format -msgid "%(count)d debate had its status set to %(status)s." -msgid_plural "%(count)d debates had their statuses set to %(status)s." -msgstr[0] "" - -#: draw/admin.py:74 -#, python-format -msgid "Set result status to %(status)s" -msgstr "" - -#: draw/admin.py:84 +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides confirmed." msgid_plural "%(count)d debates were marked as having their sides confirmed." msgstr[0] "" -#: draw/admin.py:93 +#: draw/admin.py +msgid "Mark sides as not confirmed" +msgstr "" + +#: draw/admin.py #, python-format msgid "%(count)d debate was marked as having its sides not confirmed." msgid_plural "%(count)d debates were marked as having their sides not confirmed." msgstr[0] "" -#: draw/apps.py:7 draw/views.py:452 draw/views.py:455 +#: draw/apps.py draw/views.py msgid "Draw" msgstr "" -#: draw/generator/__init__.py:14 +#: draw/generator/__init__.py msgid "Too many swaps" msgstr "" -#: draw/generator/__init__.py:15 +#: draw/generator/__init__.py msgid "One-up-one-down (history)" msgstr "" -#: draw/generator/__init__.py:16 +#: draw/generator/__init__.py msgid "One-up-one-down (institution)" msgstr "" -#: draw/generator/__init__.py:17 +#: draw/generator/__init__.py msgid "One-up-one-down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:18 +#: draw/generator/__init__.py msgid "Bubble up (history)" msgstr "" -#: draw/generator/__init__.py:19 +#: draw/generator/__init__.py msgid "Bubble down (history)" msgstr "" -#: draw/generator/__init__.py:20 +#: draw/generator/__init__.py msgid "Bubble up (institution)" msgstr "" -#: draw/generator/__init__.py:21 +#: draw/generator/__init__.py msgid "Bubble down (institution)" msgstr "" -#: draw/generator/__init__.py:22 +#: draw/generator/__init__.py msgid "Bubble up (to accommodate)" msgstr "" -#: draw/generator/__init__.py:23 +#: draw/generator/__init__.py msgid "Bubble down (to accommodate)" msgstr "" -#: draw/generator/__init__.py:24 +#: draw/generator/__init__.py msgid "Can't bubble up/down" msgstr "" -#: draw/generator/__init__.py:25 +#: draw/generator/__init__.py msgid "Pull-up team" msgstr "" -#: draw/generator/bpelimination.py:36 draw/generator/elimination.py:68 +#: draw/generator/bpelimination.py draw/generator/elimination.py #, python-format msgid "%d debates in the previous round don't have a result." msgstr "" -#: draw/generator/bpelimination.py:38 +#: draw/generator/bpelimination.py #, python-format msgid "%d debates in the previous round don't have exactly two teams advancing." msgstr "%d个辩论在以前的赛没有二在推进的队伍。" -#: draw/generator/bpelimination.py:71 +#: draw/generator/bpelimination.py #, python-format msgid "The room ranks of the partial elimination round indicate that an odd number of teams (%(nbypassing)d) bypassed it." msgstr "" -#: draw/generator/bpelimination.py:75 +#: draw/generator/bpelimination.py #, python-format -msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(advancing)d teams advanced from it." +msgid "The room ranks of the partial elimination round indicate that %(nbypassing)d teams bypassed it, but %(nadvancing)d teams advanced from it." msgstr "" -#: draw/generator/bpelimination.py:122 +#: draw/generator/bpelimination.py #, python-format msgid "The number of debates (%d) in the last round is not a power of two." msgstr "" -#: draw/generator/bphungarian.py:171 +#: draw/generator/bphungarian.py #, python-format msgid "The Rényi order can't be negative, and it's currently set to %(alpha)f." msgstr "" -#: draw/generator/common.py:51 +#: draw/generator/common.py #, python-format msgid "The number of teams presented for the draw was not a multiple of %(num)d." msgstr "" -#: draw/generator/common.py:54 +#: draw/generator/common.py msgid "There were no teams for the draw." msgstr "" -#: draw/generator/elimination.py:43 +#: draw/generator/elimination.py #, python-format msgid "There are only %d teams breaking in this category; there need to be at least two to generate an elimination round draw." msgstr "" -#: draw/generator/elimination.py:75 +#: draw/generator/elimination.py #, python-format msgid "The number of teams (%d) in this round is not a power of two." msgstr "" -#: draw/generator/powerpair.py:78 +#: draw/generator/powerpair.py #, python-format msgid "%(noninteger)d out of %(total)d teams have a noninteger first metric in the team standings. Intermediate brackets require the first team standings metric to be an integer (typically points or wins)." msgstr "" -#: draw/generator/random.py:97 +#: draw/generator/random.py #, python-format msgid "There were %(aff_count)d affirmative teams but %(neg_count)d negative teams." msgstr "" -#: draw/generator/random.py:100 +#: draw/generator/random.py msgid "One or more teams had an allocated side that wasn't affirmative or negative." msgstr "" -#: draw/manager.py:41 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with two-team formats." msgstr "" -#: draw/manager.py:43 +#: draw/manager.py #, python-format msgid "The draw type %(type)s can't be used with British Parliamentary." msgstr "" -#: draw/manager.py:45 +#: draw/manager.py #, python-format msgid "Unrecognised \"teams in debate\" option: %(option)s" msgstr "" -#: draw/manager.py:276 +#: draw/manager.py #, python-format msgid "The break size (%(size)d) for this break category was invalid. It must be either six times or four times a power of two." msgstr "" -#: draw/models.py:29 draw/models.py:35 +#: draw/models.py msgid "none" msgstr "无" -#: draw/models.py:30 +#: draw/models.py msgid "postponed" msgstr "" -#: draw/models.py:31 draw/models.py:36 +#: draw/models.py msgid "draft" msgstr "草稿" -#: draw/models.py:32 draw/models.py:37 +#: draw/models.py msgid "confirmed" msgstr "" -#: draw/models.py:43 draw/models.py:375 +#: draw/models.py msgid "round" msgstr "赛" -#: draw/models.py:45 +#: draw/models.py msgid "room" msgstr "" -#: draw/models.py:48 +#: draw/models.py msgid "bracket" msgstr "" -#: draw/models.py:50 +#: draw/models.py msgid "room rank" msgstr "" -#: draw/models.py:56 +#: draw/models.py msgid "importance" msgstr "" -#: draw/models.py:58 +#: draw/models.py msgid "result status" msgstr "" -#: draw/models.py:60 +#: draw/models.py msgid "sides confirmed" msgstr "" -#: draw/models.py:61 +#: draw/models.py msgid "If unchecked, the sides assigned to teams in this debate are just placeholders." msgstr "" -#: draw/models.py:64 draw/models.py:272 +#: draw/models.py msgid "debate" msgstr "辩论" -#: draw/models.py:65 +#: draw/models.py msgid "debates" msgstr "辩论" #. Translators: This is appended to a list of teams, e.g. "Auckland #. 1, Vic Wellington 1 (sides not confirmed)". Mind the leading #. space. -#: draw/models.py:84 draw/models.py:109 +#: draw/models.py msgid " (sides not confirmed)" msgstr "" #. Translators: This goes between teams in a debate, e.g. "Auckland 1 #. vs Vic Wellington 1". Mind the leading and trailing spaces. -#: draw/models.py:96 draw/models.py:113 +#: draw/models.py msgid " vs " msgstr "对" -#: draw/models.py:262 +#: draw/models.py msgid "affirmative" msgstr "" -#: draw/models.py:263 +#: draw/models.py msgid "negative" msgstr "" -#: draw/models.py:264 +#: draw/models.py msgid "opening government" msgstr "上议院政府" -#: draw/models.py:265 +#: draw/models.py msgid "opening opposition" msgstr "上议院反对党" -#: draw/models.py:266 +#: draw/models.py msgid "closing government" msgstr "下议院政府" -#: draw/models.py:267 +#: draw/models.py msgid "closing opposition" msgstr "下议院反对党" -#: draw/models.py:274 draw/models.py:377 +#: draw/models.py msgid "team" msgstr "队伍" -#: draw/models.py:276 draw/models.py:379 +#: draw/models.py msgid "side" msgstr "方" -#: draw/models.py:281 +#: draw/models.py msgid "debate team" msgstr "" -#: draw/models.py:282 +#: draw/models.py msgid "debate teams" msgstr "" -#: draw/models.py:303 +#: draw/models.py #, python-format msgid "placed %(place)s" msgstr "" -#: draw/models.py:305 draw/models.py:312 +#: draw/models.py msgid "result unknown" msgstr "" -#: draw/models.py:308 +#: draw/models.py msgid "won" msgstr "获胜了" -#: draw/models.py:310 +#: draw/models.py msgid "lost" msgstr "败北了" -#: draw/models.py:383 +#: draw/models.py msgid "team side allocation" msgstr "" -#: draw/models.py:384 +#: draw/models.py msgid "team side allocations" msgstr "" #. Translators: e.g. "Affirmative: Rank", "Government: Draw strength", #. "Opening government: Total speaker score", "Closing opposition: Number of firsts" -#: draw/tables.py:33 +#: draw/tables.py #, python-format msgid "%(side)s: %(metric)s" msgstr "" -#: draw/tables.py:76 +#: draw/tables.py #, python-format msgid "Team %(num)d" msgstr "队伍 %(num)d" -#: draw/tables.py:88 +#: draw/tables.py msgid "Room rank of this debate" msgstr "" -#: draw/tables.py:96 +#: draw/tables.py msgid "Bracket of this debate" msgstr "" -#: draw/tables.py:165 +#: draw/tables.py msgid "side history
\n" "(number of times the team has been on each side before this round)" msgstr "" #. Translators: Abbreviation for "side history" -#: draw/tables.py:167 +#: draw/tables.py msgid "SH" msgstr "" -#: draw/tables.py:232 +#: draw/tables.py msgid "Went from balanced to imbalanced" msgstr "" -#: draw/tables.py:233 +#: draw/tables.py msgid "Went from imbalanced to balanced" msgstr "" -#: draw/tables.py:234 +#: draw/tables.py msgid "Best improvement possible, still imbalanced" msgstr "" -#: draw/tables.py:235 +#: draw/tables.py msgid "Was imbalanced and still imbalanced" msgstr "" -#: draw/tables.py:256 draw/tables.py:378 +#: draw/tables.py msgid "No metrics in the team standings precedence" msgstr "" -#: draw/tables.py:282 +#: draw/tables.py msgid "Side" msgstr "方" -#: draw/tables.py:283 +#: draw/tables.py msgid "Position this round" msgstr "" -#: draw/tables.py:287 +#: draw/tables.py msgid "Before" msgstr "之前" -#: draw/tables.py:288 +#: draw/tables.py msgid "Side history before this round" msgstr "" -#: draw/tables.py:292 +#: draw/tables.py msgid "After" msgstr "之后" -#: draw/tables.py:293 +#: draw/tables.py msgid "Side history after this round" msgstr "" -#: draw/tables.py:303 draw/tables.py:398 +#: draw/tables.py msgid "Cost" msgstr "" -#: draw/tables.py:303 +#: draw/tables.py msgid "Position cost" msgstr "" -#: draw/tables.py:316 +#: draw/tables.py msgid "Status" msgstr "" -#: draw/tables.py:360 +#: draw/tables.py msgid "Teams with this many points are permitted in this debate
\n" "(bracket in bold)" msgstr "" -#: draw/tables.py:386 +#: draw/tables.py #, python-format msgid "%(team)s: %(metric)s" msgstr "%(team)s:%(metric)s" -#: draw/tables.py:393 +#: draw/tables.py msgid "side history before this round" msgstr "" -#: draw/tables.py:393 +#: draw/tables.py msgid "Sides" msgstr "方" -#: draw/tables.py:398 +#: draw/tables.py msgid "position cost" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:5 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "STOP!!! Read this first! Deleting debate teams from the database may crash Tabbycat!" msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:10 +#: draw/templates/admin/draw/debateteam/delete_warning.html msgid "Tabbycat requires that all debates have exactly one debate team for each side, and no other debate teams, at all times. If you delete any debate teams, you must then either replace each one with a new debate team in the same debate, or delete the associated debate objects. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/admin/draw/debateteam/delete_warning.html:15 -#: draw/templates/admin/draw/debateteam/edit_warning.html:15 +#: draw/templates/admin/draw/debateteam/delete_warning.html +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "This is a common source of errors. If it happens to you, check the debates (under the Draw section in this Edit Database area) and ensure that all of them have exactly one affirmative and one negative team." msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:5 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "WARNING!!! If you are editing debate teams, read this first!" msgstr "" -#: draw/templates/admin/draw/debateteam/edit_warning.html:10 +#: draw/templates/admin/draw/debateteam/edit_warning.html msgid "Tabbycat requires that there be exactly one debate team for each side, and no other debate teams, in each debate. If you edit debate teams in the database, you must ensure that this remains the case. If you don't do this correctly, many pages will crash." msgstr "" -#: draw/templates/draw_alerts_adjudicators.html:6 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate does not have a chair." msgid_plural "%(ndebates)s debates do not have a chair." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:15 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is adjudicating multiple debates." msgid_plural "The following %(nadjs)s adjudicators are adjudicating multiple debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:24 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has a panel with an even number of adjudicators." msgid_plural "%(ndebates)s debates have panels with an even number of adjudicators." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:33 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 debate has an adjudicator conflict." msgid_plural "%(ndebates)s debates have adjudicator conflicts." msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:42 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "%(adjudicators)s is unavailable this round, but is assigned to a debate." msgid_plural "The following %(nadjs)s adjudicators are unavailable this round, but are assigned to debates: %(adjudicators)s" msgstr[0] "" -#: draw/templates/draw_alerts_adjudicators.html:51 +#: draw/templates/draw_alerts_adjudicators.html #, python-format msgid "1 adjudicator is available but not assigned to a debate." msgid_plural "%(ndebates)s adjudicators are available but not assigned to a debate." msgstr[0] "" -#: draw/templates/draw_alerts_teams.html:6 +#: draw/templates/draw_alerts_teams.html #, python-format msgid "%(teams)s is competing in multiple debates." msgid_plural "The following %(nteams)s teams are competing in multiple debates: %(teams)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:5 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate does not have a room." msgid_plural "%(ndebates)s debates do not have a room." msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:14 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "There are multiple debates in %(rooms)s." msgid_plural "The following %(ndebates)s rooms have multiple debates in them: %(rooms)s" msgstr[0] "" -#: draw/templates/draw_alerts_venues.html:23 +#: draw/templates/draw_alerts_venues.html #, python-format msgid "1 debate has a room constraint violation." msgid_plural "%(ndebates)s debates have room constraint violations." msgstr[0] "" -#: draw/templates/draw_base.html:6 +#: draw/templates/draw_base.html msgid "Availability" msgstr "" -#: draw/templates/draw_base.html:11 draw/templates/draw_status_draft.html:9 +#: draw/templates/draw_base.html draw/templates/draw_status_draft.html msgid "Edit Sides/Matchups" msgstr "" -#: draw/templates/draw_base.html:16 +#: draw/templates/draw_base.html msgid "Redo Draw" msgstr "" -#: draw/templates/draw_base.html:19 +#: draw/templates/draw_base.html msgid "Draw Details" msgstr "" -#: draw/templates/draw_base.html:23 +#: draw/templates/draw_base.html msgid "Position Balance" msgstr "" -#: draw/templates/draw_base.html:31 draw/templates/draw_display_admin.html:4 -#: draw/templates/draw_display_admin.html:5 -#: draw/templates/draw_display_assistant.html:4 -#: draw/templates/draw_display_assistant.html:5 +#: draw/templates/draw_base.html draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:5 +#: draw/templates/draw_confirm_regeneration.html msgid "Confirm draw regeneration" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:10 -#: draw/templates/draw_subpage.html:6 +#: draw/templates/draw_confirm_regeneration.html +#: draw/templates/draw_subpage.html msgid "Back to Draw" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:16 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Confirm Draw Deletion for %(round)s" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:22 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Do you really want to regenerate the draw for %(round)s? This will delete all the debates in the current draw — including their ballots and adjudicator allocations — and cannot be undone. You probably don't want to do this if any results have been entered!" msgstr "" -#: draw/templates/draw_confirm_regeneration.html:33 +#: draw/templates/draw_confirm_regeneration.html #, python-format msgid "Yes, I want to delete the current draw for %(round)s" msgstr "" -#: draw/templates/draw_display_admin.html:17 +#: draw/templates/draw_display_admin.html msgid "View Draw" msgstr "" -#: draw/templates/draw_display_admin.html:23 +#: draw/templates/draw_display_admin.html #, python-format msgid "Debates start at %(start_time)s" msgstr "" -#: draw/templates/draw_display_admin.html:27 +#: draw/templates/draw_display_admin.html msgid "Add Start Time" msgstr "" -#: draw/templates/draw_display_admin.html:34 +#: draw/templates/draw_display_admin.html msgid "Enter Results" msgstr "" -#: draw/templates/draw_display_admin.html:46 +#: draw/templates/draw_display_admin.html msgid "Motion Details" msgstr "" -#. Translators: Used when only one motion is expected, but there is more than one. -#: draw/templates/draw_display_admin.html:54 -#: draw/templates/draw_display_admin.html:80 +#: draw/templates/draw_display_admin.html #, python-format msgid "%(motions_count)s motion has been entered." msgid_plural "%(motions_count)s motions have been entered." msgstr[0] "" -#: draw/templates/draw_display_admin.html:60 -msgid "Edit motions" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Edit the motion" +msgid_plural "Edit motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:63 +#: draw/templates/draw_display_admin.html msgid "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" msgstr "" -#: draw/templates/draw_display_admin.html:65 -msgid "Enter motions" +#: draw/templates/draw_display_admin.html +msgid "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." msgstr "" -#: draw/templates/draw_display_admin.html:75 -msgid "The motion has been entered." -msgstr "" - -#: draw/templates/draw_display_admin.html:87 -msgid "Edit the motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:90 -msgid "A motion should be added if you want to display it to the auditorium or print in on your ballots (using the links below) or to display it (later) on the public motions page." -msgstr "" - -#: draw/templates/draw_display_admin.html:92 +#: draw/templates/draw_display_admin.html msgid "Enter a motion" -msgstr "" +msgid_plural "Enter motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:106 +#: draw/templates/draw_display_admin.html msgid "Release Draw" msgstr "" -#: draw/templates/draw_display_admin.html:112 +#: draw/templates/draw_display_admin.html msgid "You have not generated a draw for this round yet. There is nothing to release." msgstr "" -#: draw/templates/draw_display_admin.html:117 +#: draw/templates/draw_display_admin.html msgid "The draw for this round is still in a draft state. Confirm the draw before releasing it." msgstr "" -#: draw/templates/draw_display_admin.html:122 +#: draw/templates/draw_display_admin.html msgid "Unrelease draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:127 +#: draw/templates/draw_display_admin.html msgid "The draw has been released publicly." msgstr "" -#: draw/templates/draw_display_admin.html:130 +#: draw/templates/draw_display_admin.html msgid "View public draw page" msgstr "" -#: draw/templates/draw_display_admin.html:139 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, so ballots and/or feedback can be submitted from the public forms (if enabled). However, the draw itself will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:144 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the draw, but it will not show to the public unless the \"public view of draw\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:154 +#: draw/templates/draw_display_admin.html msgid "Release draw to public" msgstr "" -#: draw/templates/draw_display_admin.html:160 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots and feedback to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:163 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows ballots to be submitted online by adjudicators. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:166 +#: draw/templates/draw_display_admin.html msgid "Your tournament allows feedback to be submitted online by participants. The draw must be released before they can do so." msgstr "" -#: draw/templates/draw_display_admin.html:170 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to show the draw publicly. Releasing a draw will allow it to show it on the public page." msgstr "" -#: draw/templates/draw_display_admin.html:178 +#: draw/templates/draw_display_admin.html msgid "Your configuration doesn't have a public draw page or feedback/ballot submissions. There's no reason to release the draw." msgstr "" -#: draw/templates/draw_display_admin.html:196 -msgid "Release Motions" -msgstr "" - -#: draw/templates/draw_display_admin.html:197 -msgid "Release motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Release motion to public" +msgid_plural "Release motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:198 -msgid "Unrelease motions to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Unrelease motion to public" +msgid_plural "Unrelease motions to public" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:200 +#: draw/templates/draw_display_admin.html msgid "Release Motion" -msgstr "" - -#: draw/templates/draw_display_admin.html:201 -msgid "Release motion to public" -msgstr "" +msgid_plural "Release Motions" +msgstr[0] "" -#: draw/templates/draw_display_admin.html:202 -msgid "Unrelease motion to public" -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "No motion is currently set for this round." +msgid_plural "No motions are currently set for this round." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:216 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." msgstr "" -#: draw/templates/draw_display_admin.html:220 +#: draw/templates/draw_display_admin.html msgid "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." msgstr "" -#: draw/templates/draw_display_admin.html:224 -msgid "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." -msgstr "" - -#: draw/templates/draw_display_admin.html:228 -msgid "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there." +msgid_plural "Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:240 -msgid "Motions have been released publicly." -msgstr "" +#: draw/templates/draw_display_admin.html +msgid "Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion." +msgid_plural "Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:242 +#: draw/templates/draw_display_admin.html msgid "The motion has been released publicly." -msgstr "" +msgid_plural "Motions have been released publicly." +msgstr[0] "" -#: draw/templates/draw_display_admin.html:245 +#: draw/templates/draw_display_admin.html msgid "View public motions page" msgstr "" -#: draw/templates/draw_display_admin.html:250 +#: draw/templates/draw_display_admin.html #, python-format msgid "You have released the motions, but they will not show to the public unless the \"public view of motions\" setting is enabled in this tournament's configuration." msgstr "" -#: draw/templates/draw_display_admin.html:272 -#: draw/templates/draw_display_assistant.html:13 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "(for the briefing room)" msgstr "" -#: draw/templates/draw_display_admin.html:277 -#: draw/templates/draw_display_assistant.html:18 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:281 -#: draw/templates/draw_display_assistant.html:22 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draw ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:287 -#: draw/templates/draw_display_assistant.html:28 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:291 -#: draw/templates/draw_display_assistant.html:32 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Draws for All Current Rounds ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:295 -#: draw/templates/draw_display_assistant.html:38 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Room" msgstr "" -#: draw/templates/draw_display_admin.html:301 -#: draw/templates/draw_display_assistant.html:44 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html #, python-format msgid "Display Draw for %(round)s ordered by Team" msgstr "" -#: draw/templates/draw_display_admin.html:309 -#: draw/templates/draw_display_assistant.html:55 +#: draw/templates/draw_display_admin.html +#: draw/templates/draw_display_assistant.html msgid "Display Motions" msgstr "" -#: draw/templates/draw_display_admin.html:328 +#: draw/templates/draw_display_admin.html msgid "Email Motions" msgstr "" -#: draw/templates/draw_display_admin.html:330 +#: draw/templates/draw_display_admin.html msgid "Email Motion" msgstr "" -#: draw/templates/draw_display_admin.html:350 +#: draw/templates/draw_display_admin.html msgid "Start at" msgstr "" -#: draw/templates/draw_display_assistant.html:62 +#: draw/templates/draw_display_assistant.html msgid "(for printing)" msgstr "" -#: draw/templates/draw_display_assistant.html:66 +#: draw/templates/draw_display_assistant.html msgid "View Ballot Forms" msgstr "" -#: draw/templates/draw_display_assistant.html:71 +#: draw/templates/draw_display_assistant.html msgid "View Feedback Forms" msgstr "" -#: draw/templates/draw_display_by.html:17 +#: draw/templates/draw_display_by.html msgid "Scroll Speed" msgstr "" -#: draw/templates/draw_display_by.html:20 +#: draw/templates/draw_display_by.html msgid "Fast" msgstr "快" -#: draw/templates/draw_display_by.html:23 -#: draw/templates/draw_display_by.html:53 +#: draw/templates/draw_display_by.html msgid "Medium" msgstr "" -#: draw/templates/draw_display_by.html:26 +#: draw/templates/draw_display_by.html msgid "Slow" msgstr "慢" -#: draw/templates/draw_display_by.html:29 +#: draw/templates/draw_display_by.html msgid "Extra Slow" msgstr "" -#: draw/templates/draw_display_by.html:35 +#: draw/templates/draw_display_by.html msgid "Hide Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:38 +#: draw/templates/draw_display_by.html msgid "Show Adjudicators" msgstr "" -#: draw/templates/draw_display_by.html:44 +#: draw/templates/draw_display_by.html msgid "Text Size" msgstr "" -#: draw/templates/draw_display_by.html:47 +#: draw/templates/draw_display_by.html msgid "Tiny" msgstr "微细" -#: draw/templates/draw_display_by.html:50 +#: draw/templates/draw_display_by.html msgid "Small" msgstr "小" -#: draw/templates/draw_display_by.html:56 +#: draw/templates/draw_display_by.html msgid "Large" msgstr "大" -#: draw/templates/draw_display_by.html:59 +#: draw/templates/draw_display_by.html msgid "Huge" msgstr "巨大" -#: draw/templates/draw_display_by.html:65 +#: draw/templates/draw_display_by.html msgid "Stop Scroll" msgstr "" -#: draw/templates/draw_not_released.html:7 +#: draw/templates/draw_not_released.html #, python-format msgid "The draw for %(round)s has yet to be released." msgstr "" -#: draw/templates/draw_not_released.html:11 +#: draw/templates/draw_not_released.html msgid "The draw for the next round has yet to be released." msgstr "" -#: draw/templates/draw_status_confirmed.html:18 +#: draw/templates/draw_status_confirmed.html msgid "Adjudicator Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:26 +#: draw/templates/draw_status_confirmed.html msgid "There are currently fewer adjudicators checked in than there are rooms." msgstr "" -#: draw/templates/draw_status_confirmed.html:37 +#: draw/templates/draw_status_confirmed.html msgid "Allocate adjudicators" msgstr "" -#: draw/templates/draw_status_confirmed.html:40 +#: draw/templates/draw_status_confirmed.html msgid "Edit adjudicator allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:54 +#: draw/templates/draw_status_confirmed.html msgid "Room Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:62 +#: draw/templates/draw_status_confirmed.html msgid "Allocate rooms" msgstr "" -#: draw/templates/draw_status_confirmed.html:65 +#: draw/templates/draw_status_confirmed.html msgid "Edit room allocation" msgstr "" -#: draw/templates/draw_status_confirmed.html:78 +#: draw/templates/draw_status_confirmed.html msgid "Preformed Panels" msgstr "" -#: draw/templates/draw_status_confirmed.html:84 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "There is %(npanels)s preformed panel available for this round." msgid_plural "There are %(npanels)s preformed panels available for this round." msgstr[0] "" -#: draw/templates/draw_status_confirmed.html:91 +#: draw/templates/draw_status_confirmed.html msgid "There are no preformed panels available for this round" msgstr "" -#: draw/templates/draw_status_confirmed.html:96 -#: draw/templates/draw_status_confirmed.html:103 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "Edit preformed panels for %(round)s" msgstr "" -#: draw/templates/draw_status_confirmed.html:120 +#: draw/templates/draw_status_confirmed.html msgid "Side Allocations" msgstr "" -#: draw/templates/draw_status_confirmed.html:125 +#: draw/templates/draw_status_confirmed.html #, python-format msgid "1 debate does not have its sides confirmed." msgid_plural "%(ndebates)s debates do not have their sides confirmed." msgstr[0] "" -#: draw/templates/draw_status_draft.html:6 +#: draw/templates/draw_status_draft.html msgid "Delete Draw" msgstr "" -#: draw/templates/draw_status_draft.html:17 +#: draw/templates/draw_status_draft.html msgid "Confirm Draw" msgstr "" -#: draw/templates/draw_status_draft.html:25 +#: draw/templates/draw_status_draft.html #, python-format msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so all teams are in a single bracket containing everyone. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration, then delete and recreate the draw. In most tournaments, the first metric should be points or wins." msgstr "" -#: draw/templates/draw_status_draft.html:41 +#: draw/templates/draw_status_draft.html #, python-format msgid "Brackets are formed using the first metric in the team standings precedence, which is currently set to %(metric)s, rather than team points, which is the more usual convention. If this isn't what you wanted, you can change the team standings precedence in the standings configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:53 +#: draw/templates/draw_status_draft.html #, python-format msgid "The draw type for this round is set to manual, so Tabbycat has just made a blank draw. Head on over to Edit Sides/Matchups to fill it in." msgstr "" -#: draw/templates/draw_status_draft.html:64 +#: draw/templates/draw_status_draft.html #, python-format msgid "The adjudicator score range is 0, and so adjudicator scores will be ignored when allocating. You can change the adjudicator score range in the feedback configuration page." msgstr "" -#: draw/templates/draw_status_draft.html:74 +#: draw/templates/draw_status_draft.html msgid "Tabbycat assigns sides in elimination rounds randomly. However, because in elimination rounds, many tournaments draw lots for sides in front of an audience, the sides are marked as \"unconfirmed\", so that it doesn't look like sides have been pre-assigned. After you confirm the draw, you'll need to confirm sides on the \"Edit Sides/Matchups\" page, even if you wish to accept Tabbycat's random assignment." msgstr "" -#: draw/templates/draw_status_draft.html:81 +#: draw/templates/draw_status_draft.html msgid "Highlighted cells relate to changes in position balance, as follows:
  • Red cells indicates that the team could not be allocated a position that maintains position balance.
  • Yellow cells indicate that the team was previously imbalanced, and is given the best position possible in this draw, but is nonetheless still imbalanced.
  • Green cells indicate that the team's previous imbalance is resolved with this draw.
" msgstr "" -#: draw/templates/draw_status_none.html:6 +#: draw/templates/draw_status_none.html #, python-format msgid "A draw for %(round)s hasn't yet been generated. To generate one, go to the Availability section." msgstr "" -#: draw/templates/position_balance.html:6 +#: draw/templates/position_balance.html msgid "It looks like sides aren't confirmed for some debates in this round. This position balance report is generated using the \"unconfirmed sides\" in the database, and as a consequence, may not make much sense. It's best to confirm sides in all debates before looking at this report." msgstr "" -#: draw/templates/position_balance.html:15 +#: draw/templates/position_balance.html #, python-format -msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." +msgid "Your current position cost function is %(cost_func)s, raised to an exponent of %(exponent)s. Read more about how position cost functions work in our documentation." msgstr "" -#: draw/templates/position_balance_break.html:6 +#: draw/templates/position_balance_break.html msgid "Position balance reports aren't computed for elimination rounds." msgstr "" -#: draw/templates/position_balance_nonbp.html:6 +#: draw/templates/position_balance_nonbp.html msgid "Position balance reports are only available for British Parliamentary tournaments." msgstr "" -#: draw/templates/position_balance_round1.html:6 +#: draw/templates/position_balance_round1.html msgid "Position balance reports aren't computed for the first round of a tournament." msgstr "" -#: draw/views.py:68 draw/views.py:483 +#: draw/views.py msgid "No debates in this round" msgstr "" -#: draw/views.py:76 +#: draw/views.py #, python-format msgid "Draw for %(round)s" msgstr "" -#: draw/views.py:78 +#: draw/views.py msgid "Draws for Current Rounds" msgstr "" -#: draw/views.py:82 +#: draw/views.py #, python-format msgid "debates start at %(time)s (in %(time_zone)s)" msgstr "" -#: draw/views.py:86 +#: draw/views.py #, python-format msgid "start times in time zone: %(time_zone)s" msgstr "" -#: draw/views.py:124 +#: draw/views.py #, python-format msgid "debate starts at %(time)s" msgid_plural "debates start at %(time)s" msgstr[0] "" -#: draw/views.py:171 +#: draw/views.py msgid "The draw for this round hasn't been released." msgstr "" -#: draw/views.py:224 +#: draw/views.py #, python-format msgid "All Debates for All Rounds of %(tournament)s" msgstr "" -#: draw/views.py:382 +#: draw/views.py msgid "Adjudicator Assignments" msgstr "" -#: draw/views.py:404 +#: draw/views.py msgid "Position" msgstr "" -#: draw/views.py:424 +#: draw/views.py msgid "Team Pairings" msgstr "" -#: draw/views.py:447 +#: draw/views.py msgid "No Draw" msgstr "" -#: draw/views.py:449 +#: draw/views.py msgid "Draft Draw" msgstr "" #. Translators: e.g. "Affirmative: Break rank" -#: draw/views.py:541 +#: draw/views.py #, python-format msgid "%(side)s: Break rank" msgstr "" #. Translators: "BR" stands for "Break rank" -#: draw/views.py:546 +#: draw/views.py msgid "BR" msgstr "" -#: draw/views.py:571 +#: draw/views.py msgid "Draw with Details" msgstr "" -#: draw/views.py:579 +#: draw/views.py msgid "Position Balance Report" msgstr "" -#: draw/views.py:590 +#: draw/views.py #, python-format msgid "Rényi entropy of order %(order)s" msgstr "" #. Translators: This is appended to the string "Rényi entropy of order 1.0" -#: draw/views.py:593 +#: draw/views.py msgid " (i.e., Shannon entropy)" msgstr "(也就是Shannon的熵)" -#: draw/views.py:623 +#: draw/views.py msgid "Teams with position imbalances" msgstr "" -#: draw/views.py:624 +#: draw/views.py msgid "No teams with position imbalances! Hooray!" msgstr "" -#: draw/views.py:627 +#: draw/views.py msgid "Annotated draw" msgstr "" -#: draw/views.py:658 +#: draw/views.py #, python-format msgid "Could not create draw for %(round)s, there was already a draw!" msgstr "" -#: draw/views.py:666 +#: draw/views.py #, python-format msgid "

The draw could not be created, for the following reason: %(message)s

\n" "

Please fix this issue before attempting to create the draw.

" msgstr "" -#: draw/views.py:674 +#: draw/views.py #, python-format msgid "

The draw could not be created, because the following error occurred: %(message)s

\n" "

If this issue persists and you're not sure how to resolve it, please contact the developers.

" msgstr "" -#: draw/views.py:683 +#: draw/views.py #, python-format msgid "

The team standings could not be generated, because the following error occurred: %(message)s

\n" "

Because generating the draw uses the current team standings, this prevents the draw from being generated.

" msgstr "" -#: draw/views.py:699 +#: draw/views.py msgid "Rooms were not auto-allocated because there are one or more adjudicator room constraints. You should run room allocations after allocating adjudicators." msgstr "" -#: draw/views.py:726 +#: draw/views.py msgid "Deleted the draw. You can now recreate it as normal." msgstr "" -#: draw/views.py:746 +#: draw/views.py msgid "Released the draw." msgstr "" -#: draw/views.py:761 +#: draw/views.py msgid "Unreleased the draw." msgstr "" -#: draw/views.py:774 +#: draw/views.py #, python-format msgid "Sorry, \"%(input)s\" isn't a valid time. It must be in 24-hour format, with a colon, for example: \"13:57\"." msgstr "" -#: draw/views.py:793 +#: draw/views.py msgid "Side Pre-Allocations" msgstr "" -#: draw/views.py:826 +#: draw/views.py msgid "Edit Matchups" msgstr "" diff --git a/tabbycat/draw/management/commands/generatesideallocations.py b/tabbycat/draw/management/commands/generatesideallocations.py index eb2b718ec2f..58147eb15d4 100644 --- a/tabbycat/draw/management/commands/generatesideallocations.py +++ b/tabbycat/draw/management/commands/generatesideallocations.py @@ -35,6 +35,6 @@ def handle_round(self, round, **options): self.stdout.write("{0:30} {1:30}".format(aff.short_name, neg.short_name)) for team in affs: - team.teamsideallocation_set.create(round=round, side=DebateTeam.SIDE_AFF) + team.teamsideallocation_set.create(round=round, side=DebateTeam.Side.AFF) for team in negs: - team.teamsideallocation_set.create(round=round, side=DebateTeam.SIDE_NEG) + team.teamsideallocation_set.create(round=round, side=DebateTeam.Side.NEG) diff --git a/tabbycat/draw/manager.py b/tabbycat/draw/manager.py index fc17a01926c..71b7565e904 100644 --- a/tabbycat/draw/manager.py +++ b/tabbycat/draw/manager.py @@ -1,10 +1,13 @@ import logging import random +from operator import add +from typing import List, Tuple, TYPE_CHECKING from django.utils.translation import gettext as _ -from draw.generator.powerpair import PowerPairedDrawGenerator +from draw.generator.powerpair import BasePowerPairedDrawGenerator from participants.utils import get_side_history +from results.models import BallotSubmission, TeamScore from standings.teams import TeamStandingsGenerator from tournaments.models import Round @@ -12,6 +15,10 @@ from .generator.utils import ispow2 from .models import Debate, DebateTeam +if TYPE_CHECKING: + from participants.models import Team + from .generator.pairing import BasePairing + logger = logging.getLogger(__name__) OPTIONS_TO_CONFIG_MAPPING = { @@ -19,6 +26,9 @@ "avoid_history" : "draw_rules__avoid_team_history", "history_penalty" : "draw_rules__team_history_penalty", "institution_penalty" : "draw_rules__team_institution_penalty", + "pullup_debates_penalty": "draw_rules__pullup_debates_penalty", + "side_penalty" : "draw_rules__side_penalty", + "pairing_penalty" : "draw_rules__pairing_penalty", "side_allocations" : "draw_rules__draw_side_allocations", "avoid_conflicts" : "draw_rules__draw_avoid_conflicts", "odd_bracket" : "draw_rules__draw_odd_bracket", @@ -59,18 +69,38 @@ def __init__(self, round, active_only=True): def get_relevant_options(self): if self.teams_in_debate == 'two': - return ["avoid_institution", "avoid_history", "history_penalty", "institution_penalty"] + return [ + "avoid_institution", + "avoid_history", + "history_penalty", + "institution_penalty", + "pullup_debates_penalty", + "side_penalty", + "pairing_penalty", + "avoid_conflicts", + ] else: return [] + def n_byes(self, n_teams): + if self.round.tournament.pref('bye_team_selection') != 'off': + return n_teams % len(self.round.tournament.sides) + return 0 + def get_generator_type(self): return self.generator_type - def get_teams(self): + def get_teams(self) -> Tuple[List['Team'], List['Team']]: if self.active_only: - return self.round.active_teams.all() + teams = self.round.active_teams.all() else: - return self.round.tournament.team_set.all() + teams = self.round.tournament.team_set.all() + + teams = list(teams) + n_byes = self.n_byes(len(teams)) + if n_byes: + return teams[:-n_byes], teams[-n_byes:] + return teams, [] def get_results(self): # Only needed for EliminationDrawManager @@ -100,7 +130,7 @@ def _populate_team_side_allocations(self, teams): if team in tsas: team.allocated_side = tsas[team] - def _make_debates(self, pairings): + def _make_debates(self, pairings: List['BasePairing']) -> None: random.shuffle(pairings) # to avoid IDs indicating room ranks debates = {} @@ -124,13 +154,27 @@ def _make_debates(self, pairings): DebateTeam.objects.bulk_create(debateteams) logger.debug("Created %d debate teams", len(debateteams)) + def _make_bye_debates(self, byes: List['Team'], room_rank: int) -> None: + """We'd want the room rank as to always show byes at the bottom""" + for i, bye in enumerate(byes, start=room_rank + 1): + debate = Debate(round=self.round, bracket=-1, room_rank=i) + debate.save() + + dt = DebateTeam(debate=debate, team=bye, side=DebateTeam.Side.BYE) + dt.save() + + if self.round.tournament.pref('bye_team_results') == 'points': + bs = BallotSubmission(submitter_type=BallotSubmission.Submitter.AUTOMATION, confirmed=True, debate=debate) + bs.save() + TeamScore.objects.create(ballot_submission=bs, debate_team=dt, points=1, win=True) + def delete(self): self.round.debate_set.all().delete() def create(self): """Generates a draw and populates the database with it.""" - if self.round.draw_status != Round.STATUS_NONE: + if self.round.draw_status != Round.Status.NONE: raise RuntimeError("Tried to create a draw on round that already has a draw") self.delete() @@ -141,7 +185,7 @@ def create(self): if options.get("side_allocations") == "manual-ballot": options["side_allocations"] = "balance" - teams = self.get_teams() + teams, byes = self.get_teams() results = self.get_results() rrseq = self.get_rrseq() @@ -155,7 +199,10 @@ def create(self): results=results, rrseq=rrseq, **options) pairings = drawer.generate() self._make_debates(pairings) - self.round.draw_status = Round.STATUS_DRAFT + + self._make_bye_debates(byes, max([p.room_rank for p in pairings])) + + self.round.draw_status = Round.Status.DRAFT self.round.save() @@ -190,33 +237,86 @@ def get_relevant_options(self): options.extend(["pullup", "position_cost", "assignment_method", "renyi_order", "exponent"]) return options - def get_teams(self): + def get_teams(self) -> Tuple[List['Team'], List['Team']]: """Get teams in ranked order.""" - teams = super().get_teams() + teams = add(*super().get_teams()) + teams = self.round.tournament.team_set.filter(id__in=[t.id for t in teams]) metrics = self.round.tournament.pref('team_standings_precedence') - pullup_metric = PowerPairedDrawGenerator.PULLUP_RESTRICTION_METRICS[self.round.tournament.pref('draw_pullup_restriction')] + pullup_metric = BasePowerPairedDrawGenerator.PULLUP_RESTRICTION_METRICS[self.round.tournament.pref('draw_pullup_restriction')] + extra_metrics = {pullup_metric} if pullup_metric is not None else set() + + pullup_debates_penalty = self.round.tournament.pref("pullup_debates_penalty") + if pullup_debates_penalty > 0: + extra_metrics.add("pullup_debates") + extra_metrics -= set(metrics) - generator = TeamStandingsGenerator(metrics, ('rank', 'subrank'), tiebreak="random", - extra_metrics=(pullup_metric,) if pullup_metric and pullup_metric not in metrics else ()) + generator = TeamStandingsGenerator(metrics, ('rank', 'subrank'), tiebreak="random", extra_metrics=list(extra_metrics)) standings = generator.generate(teams, round=self.round.prev) ranked = [] for standing in standings: team = standing.team team.points = next(standing.itermetrics(), 0) or 0 + team.subrank = standing.get_ranking('subrank') + if pullup_debates_penalty > 0: + team.pullup_debates = standing.metrics.get("pullup_debates", 0) if pullup_metric: setattr(team, pullup_metric, standing.metrics[pullup_metric]) ranked.append(team) - return ranked + n_byes = self.n_byes(len(ranked)) + if n_byes: + if self.round.tournament.pref('bye_team_selection') == 'random': + byes = [] + for i in range(n_byes): + byes.append(ranked.pop(random.randrange(len(ranked)))) + return ranked, byes + elif self.round.tournament.pref('bye_team_selection') == 'lowest': + return ranked[:-n_byes], ranked[-n_byes:] + else: + raise RuntimeError("Bye team(s) created without recognized selection option") + + return ranked, [] + + +class SeededDrawManager(BaseDrawManager): + generator_type = "power_paired" + + def get_relevant_options(self): + options = super().get_relevant_options() + if self.teams_in_debate == 'two': + options.extend(["avoid_conflicts", "pairing_method", "side_allocations"]) + elif self.teams_in_debate == 'bp': + options.extend(["assignment_method"]) + return options + + def get_teams(self) -> Tuple[List['Team'], List['Team']]: + """Get teams in seeded order.""" + teams = add(*super().get_teams()) + random.shuffle(teams) + teams.sort(key=lambda t: -t.seed) + + byes = [] + n_byes = self.n_byes(len(teams)) + if n_byes: + if self.round.tournament.pref('bye_team_selection') == 'lowest': + teams, byes = teams[:-n_byes], teams[-n_byes:] + else: + for i in range(n_byes): + byes.append(teams.pop(random.randrange(len(teams)))) + + for team in teams: + team.points = 0 + + return teams, byes class RoundRobinDrawManager(BaseDrawManager): generator_type = "round_robin" def get_rrseq(self): - prior_rrs = list(self.round.tournament.round_set.filter(draw_type=Round.DRAW_ROUNDROBIN).order_by('seq')) + prior_rrs = list(self.round.tournament.round_set.filter(draw_type=Round.DrawType.ROUNDROBIN).order_by('seq')) try: rr_seq = prior_rrs.index(self.round) + 1 # Dont 0-index except ValueError: @@ -228,10 +328,10 @@ def get_rrseq(self): class BaseEliminationDrawManager(BaseDrawManager): result_pairing_class = None - def get_teams(self): + def get_teams(self) -> Tuple[List['Team'], List['Team']]: breaking_teams = self.round.break_category.breakingteam_set_competing.order_by( 'break_rank').select_related('team') - return [bt.team for bt in breaking_teams] + return [bt.team for bt in breaking_teams], [] def get_results(self): if self.round.prev is not None and self.round.prev.is_break_round: @@ -278,13 +378,14 @@ def get_generator_type(self): DRAW_MANAGER_CLASSES = { - ('two', Round.DRAW_RANDOM): RandomDrawManager, - ('two', Round.DRAW_POWERPAIRED): PowerPairedDrawManager, - ('two', Round.DRAW_ROUNDROBIN): RoundRobinDrawManager, - ('two', Round.DRAW_MANUAL): ManualDrawManager, - ('two', Round.DRAW_ELIMINATION): EliminationDrawManager, - ('bp', Round.DRAW_RANDOM): RandomDrawManager, - ('bp', Round.DRAW_MANUAL): ManualDrawManager, - ('bp', Round.DRAW_POWERPAIRED): PowerPairedDrawManager, - ('bp', Round.DRAW_ELIMINATION): BPEliminationDrawManager, + ('two', Round.DrawType.RANDOM): RandomDrawManager, + ('two', Round.DrawType.POWERPAIRED): PowerPairedDrawManager, + ('two', Round.DrawType.ROUNDROBIN): RoundRobinDrawManager, + ('two', Round.DrawType.MANUAL): ManualDrawManager, + ('two', Round.DrawType.ELIMINATION): EliminationDrawManager, + ('two', Round.DrawType.SEEDED): SeededDrawManager, + ('bp', Round.DrawType.RANDOM): RandomDrawManager, + ('bp', Round.DrawType.MANUAL): ManualDrawManager, + ('bp', Round.DrawType.POWERPAIRED): PowerPairedDrawManager, + ('bp', Round.DrawType.ELIMINATION): BPEliminationDrawManager, } diff --git a/tabbycat/draw/migrations/0008_alter_debateteam_side_alter_teamsideallocation_side.py b/tabbycat/draw/migrations/0008_alter_debateteam_side_alter_teamsideallocation_side.py new file mode 100644 index 00000000000..8f7c567308b --- /dev/null +++ b/tabbycat/draw/migrations/0008_alter_debateteam_side_alter_teamsideallocation_side.py @@ -0,0 +1,46 @@ +# Generated by Django 4.1.7 on 2023-09-03 01:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("draw", "0007_auto_20201003_0205"), + ] + + operations = [ + migrations.AlterField( + model_name="debateteam", + name="side", + field=models.CharField( + choices=[ + ("aff", "affirmative"), + ("neg", "negative"), + ("og", "opening government"), + ("oo", "opening opposition"), + ("cg", "closing government"), + ("co", "closing opposition"), + ("bye", "bye"), + ], + max_length=3, + verbose_name="side", + ), + ), + migrations.AlterField( + model_name="teamsideallocation", + name="side", + field=models.CharField( + choices=[ + ("aff", "affirmative"), + ("neg", "negative"), + ("og", "opening government"), + ("oo", "opening opposition"), + ("cg", "closing government"), + ("co", "closing opposition"), + ("bye", "bye"), + ], + max_length=3, + verbose_name="side", + ), + ), + ] diff --git a/tabbycat/draw/models.py b/tabbycat/draw/models.py index bea4301ab39..7b40c420413 100644 --- a/tabbycat/draw/models.py +++ b/tabbycat/draw/models.py @@ -185,12 +185,14 @@ def debateteams_ordered(self): aff_team = _team_property('aff_team') neg_team = _team_property('neg_team') + bye_team = _team_property('bye_team') og_team = _team_property('og_team') oo_team = _team_property('oo_team') cg_team = _team_property('cg_team') co_team = _team_property('co_team') aff_dt = _team_property('aff_dt') neg_dt = _team_property('neg_dt') + bye_dt = _team_property('bye_dt') og_dt = _team_property('og_dt') oo_dt = _team_property('oo_dt') cg_dt = _team_property('cg_dt') @@ -244,6 +246,12 @@ def adjudicators(self): self._adjudicators = AdjudicatorAllocation(self, from_db=True) return self._adjudicators + @property + def is_bye(self): + if not hasattr(self, '_team_properties'): + self._populate_teams() + return 'bye_dt' in self._team_properties + class DebateTeamManager(models.Manager): use_for_related_fields = True @@ -253,18 +261,15 @@ def get_queryset(self): class DebateTeam(models.Model): - SIDE_AFF = 'aff' - SIDE_NEG = 'neg' - SIDE_OG = 'og' - SIDE_OO = 'oo' - SIDE_CG = 'cg' - SIDE_CO = 'co' - SIDE_CHOICES = ((SIDE_AFF, _("affirmative")), - (SIDE_NEG, _("negative")), - (SIDE_OG, _("opening government")), - (SIDE_OO, _("opening opposition")), - (SIDE_CG, _("closing government")), - (SIDE_CO, _("closing opposition"))) + + class Side(models.TextChoices): + AFF = 'aff', _("affirmative") + NEG = 'neg', _("negative") + OG = 'og', _("opening government") + OO = 'oo', _("opening opposition") + CG = 'cg', _("closing government") + CO = 'co', _("closing opposition") + BYE = 'bye', _("bye") objects = DebateTeamManager() @@ -272,7 +277,7 @@ class DebateTeam(models.Model): verbose_name=_("debate")) team = models.ForeignKey('participants.Team', models.PROTECT, verbose_name=_("team")) - side = models.CharField(max_length=3, choices=SIDE_CHOICES, + side = models.CharField(max_length=3, choices=Side.choices, verbose_name=_("side")) flags = ChoiceArrayField(base_field=models.CharField(max_length=15, choices=DRAW_FLAG_DESCRIPTIONS), blank=True, default=list) @@ -289,6 +294,10 @@ def opponent(self): try: return self._opponent except AttributeError: + if self.side == self.Side.BYE: + self._opponent = None + return self._opponent + try: self._opponent = DebateTeam.objects.exclude(side=self.side).select_related( 'team', 'team__institution').get(debate=self.debate) @@ -375,7 +384,7 @@ class TeamSideAllocation(models.Model): verbose_name=_("round")) team = models.ForeignKey('participants.Team', models.CASCADE, verbose_name=_("team")) - side = models.CharField(max_length=3, choices=DebateTeam.SIDE_CHOICES, + side = models.CharField(max_length=3, choices=DebateTeam.Side.choices, verbose_name=_("side")) class Meta: diff --git a/tabbycat/draw/tables.py b/tabbycat/draw/tables.py index 3003ef6a2f5..7626fe2f1a5 100644 --- a/tabbycat/draw/tables.py +++ b/tabbycat/draw/tables.py @@ -51,7 +51,7 @@ def _side_history_by_team(self, side_histories, teams): returns cells that can be used to show the side history for each team in `teams`.""" # Note that the spaces used in the separator are nonbreaking spaces, not normal spaces - return [{'text': self.side_history_separator.join(map(str, side_histories[team.id]))} + return [{'text': self.side_history_separator.join(map(str, side_histories[team.id])) if team is not None else self.BLANK_TEXT} for team in teams] @@ -65,13 +65,20 @@ def add_debate_team_columns(self, debates, highlight=[]): if self.tournament.pref('teams_in_debate') == 'bp': side_name = get_side_name(self.tournament, side, 'abbr') else: - side_name = get_side_name(self.tournament, side, 'full') + side_name = get_side_name(self.tournament, side, 'full').title() team_data = [] for debate, hl in zip_longest(debates, highlight): - team = debate.get_team(side) - subtext = None if (all_sides_confirmed or not debate.sides_confirmed) else side_name - team_data.append(self._team_cell(team, subtext=subtext, show_emoji=True, highlight=team == hl)) + if debate.is_bye: + if i == 1: # 1-indexed loop + team = debate.get_team('bye') + team_data.append(self._team_cell(team, subtext=_("Bye"), show_emoji=True, highlight=team == hl)) + else: + team_data.append({'text': self.BLANK_TEXT}) + else: + team = debate.get_team(side) + subtext = None if (all_sides_confirmed or not debate.sides_confirmed) else side_name + team_data.append(self._team_cell(team, subtext=subtext, show_emoji=True, highlight=team == hl)) title = side_name if all_sides_confirmed else _("Team %(num)d") % {'num': i} header = {'key': side, 'title': title} @@ -114,18 +121,22 @@ def _debate_standings_headers(self, standings, info_method, limit=None): def _add_debate_standing_columns(self, debates, standings, itermethod, infomethod, formattext, formatsort, limit=None): standings_by_debate = [standings.get_standings( - [d.get_team(side) for side in self.tournament.sides]) for d in debates] + [d.get_team(side) for side in self.tournament.sides]) if not d.is_bye else None for d in debates] cells = [] + ncols = len(list(getattr(standings, infomethod)())) * len(self.tournament.sides) for debate in standings_by_debate: - row = [] - iterators = [islice(getattr(standing, itermethod)(), limit) for standing in debate] - for metrics in zip(*iterators): - for i, metric in enumerate(metrics): - cell = {'text': formattext(metric), 'sort': formatsort(metric)} - if i == 0: - cell['class'] = 'highlight-col' - row.append(cell) + if debate is None: + row = [self.BLANK_TEXT] * ncols + else: + row = [] + iterators = [islice(getattr(standing, itermethod)(), limit) for standing in debate] + for metrics in zip(*iterators): + for i, metric in enumerate(metrics): + cell = {'text': formattext(metric), 'sort': formatsort(metric)} + if i == 0: + cell['class'] = 'highlight-col' + row.append(cell) cells.append(row) headers = self._debate_standings_headers(standings, infomethod, limit) @@ -157,7 +168,7 @@ def formatsort(x): def add_debate_side_history_columns(self, debates, round): # Teams should be prefetched in debates, so don't use a new Team queryset to collate teams - teams_by_side = [[d.get_team(side) for d in debates] for side in self.tournament.sides] + teams_by_side = [[d.get_team(side) if not d.is_bye else None for d in debates] for side in self.tournament.sides] all_teams = [team for d in debates for team in d.teams] side_histories = get_side_history(all_teams, self.tournament.sides, round.seq) diff --git a/tabbycat/draw/templates/EditDebateTeamsContainer.vue b/tabbycat/draw/templates/EditDebateTeamsContainer.vue index bbf7526d65b..bbd76f8e752 100644 --- a/tabbycat/draw/templates/EditDebateTeamsContainer.vue +++ b/tabbycat/draw/templates/EditDebateTeamsContainer.vue @@ -99,7 +99,7 @@ export default { teamChanges.push({ id: dropData.assignment, teams: toDebateTeams }) } this.$store.dispatch('updateDebatesOrPanelsAttribute', { teams: teamChanges }) - this.$store.dispatch('updateAllocableItemModified', [dragData.item]) + this.$store.dispatch('updateAllocatableItemModified', [dragData.item]) }, getUnallocatedItemFromDebateOrPanel (debateOrPanel) { // Provide an array of IDs representing teams in this debate diff --git a/tabbycat/draw/templates/draw_display_admin.html b/tabbycat/draw/templates/draw_display_admin.html index 0b3f883cf70..7904f726021 100644 --- a/tabbycat/draw/templates/draw_display_admin.html +++ b/tabbycat/draw/templates/draw_display_admin.html @@ -47,52 +47,32 @@
{% trans "Motion Details" %}
{% roundurl 'motions-edit' round as url %} - {% if pref.enable_motions %} - - {# Motions enabled, so we expect there to be several. #} - {% if round.motion_set.exists %} - {% blocktrans trimmed asvar text count motions_count=round.motion_set.count %} - {{ motions_count }} motion has been entered. - {% plural %} - {{ motions_count }} motions have been entered. - {% endblocktrans %} - {% include "components/item-info.html" with nopad=True type="secondary" %} - {% trans "Edit motions" as edit_text %} - {% include "components/item-action.html" with text=edit_text type="primary" %} - {% else %} - {% trans "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" as text %} - {% include "components/item-info.html" with nopad=True type="danger" %} - {% trans "Enter motions" as enter_text %} - {% include "components/item-action.html" with text=enter_text type="success" to_complete=True %} - {% endif %} - + {% if round.motion_set.exists %} + {% blocktrans trimmed asvar text count motions_count=round.motion_set.count %} + {{ motions_count }} motion has been entered. + {% plural %} + {{ motions_count }} motions have been entered. + {% endblocktrans %} + {% include "components/item-info.html" with nopad=True type="secondary" %} + {% blocktrans trimmed asvar edit_text count counter=expected_nmotions %} + Edit the motion + {% plural %} + Edit motions + {% endblocktrans %} + {% include "components/item-action.html" with text=edit_text type="primary" %} {% else %} - - {# Motions disabled, so we expect there to be exactly one. #} - {% if round.motion_set.exists %} - {% if round.motion_set.count == 1 %} - {# As expected. #} - {% trans "The motion has been entered." as text %} - {% include "components/item-info.html" with nopad=True type="" %} - {% else %} - {# The singular below never gets used, but is required for i18n. #} - {# Translators: Used when only one motion is expected, but there is more than one. #} - {% blocktrans trimmed asvar text count motions_count=round.motion_set.count %} - {{ motions_count }} motion has been entered. - {% plural %} - {{ motions_count }} motions have been entered. - {% endblocktrans %} - {% include "components/item-info.html" with nopad=True type="secondary" %} - {% endif %} - {% trans "Edit the motion" as edit_text %} - {% include "components/item-action.html" with text=edit_text type="primary" %} + {% if pref.enable_motions %} + {% trans "Your configuration/format requires motions to be specified as part of ballot entry. Make sure they are added before results come in!" as text %} {% else %} {% trans "A motion should be added if you want to display it during announcements, print it on your ballots, or to display it (later) on the public motions/statistics pages." as text %} - {% include "components/item-info.html" with nopad=True type="warning" %} - {% trans "Enter a motion" as enter_text %} - {% include "components/item-action.html" with text=enter_text type="success" to_complete=True %} {% endif %} - + {% include "components/item-info.html" with nopad=True type=pref.enable_motions|yesno:"danger,warning" %} + {% blocktranslate trimmed asvar enter_text count counter=expected_nmotions %} + Enter a motion + {% plural %} + Enter motions + {% endblocktranslate %} + {% include "components/item-action.html" with text=enter_text type="success" to_complete=True %} {% endif %}
@@ -107,17 +87,17 @@
{% trans "Release Draw" %}
- {% if round.draw_status == round.STATUS_NONE %} + {% if round.draw_status == round.Status.NONE %} {% trans "You have not generated a draw for this round yet. There is nothing to release." as text %} {% include "components/item-info.html" with nopad=True type="info" %} - {% elif round.draw_status == round.STATUS_DRAFT %} + {% elif round.draw_status == round.Status.DRAFT %} {% trans "The draw for this round is still in a draft state. Confirm the draw before releasing it." as text %} {% include "components/item-info.html" with nopad=True type="warning" %} - {% elif round.draw_status == round.STATUS_RELEASED %} + {% elif round.draw_status == round.Status.RELEASED %} {% trans "Unrelease draw to public" as un_release_text %}
{% csrf_token %}
@@ -192,42 +172,69 @@
{% trans "Release Draw" %}
- {% if pref.enable_motions or pref.motion_vetoes_enabled %} - {% trans "Release Motions" as release_motions_title %} - {% trans "Release motions to public" as release_text %} - {% trans "Unrelease motions to public" as unrelease_text %} - {% else %} - {% trans "Release Motion" as release_motions_title %} - {% trans "Release motion to public" as release_text %} - {% trans "Unrelease motion to public" as unrelease_text %} - {% endif %} + {% blocktranslate trimmed count counter=expected_nmotions asvar release_text %} + Release motion to public + {% plural %} + Release motions to public + {% endblocktranslate %} + {% blocktranslate trimmed count counter=expected_nmotions asvar unrelease_text %} + Unrelease motion to public + {% plural %} + Unrelease motions to public + {% endblocktranslate %}
-
{{ release_motions_title }}
+
+ {% blocktranslate trimmed count counter=expected_nmotions %} + Release Motion + {% plural %} + Release Motions + {% endblocktranslate %} +
+ {% if not round.motion_set.exists %} + {% blocktranslate trimmed count counter=expected_nmotions asvar text %} + No motion is currently set for this round. + {% plural %} + No motions are currently set for this round. + {% endblocktranslate %} + {% include "components/item-info.html" with nopad=True type="warning" %} + {% endif %} + {% if not round.motions_released %} - {% if pref.participant_ballots != 'off' and pref.enable_motions %} {% trans "Your tournament is configured to require motions to be selected in ballots and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to be submitted." as text %} {% include "components/item-info.html" with nopad=True type="danger" %} - {% include "components/item-action.html" with type="success" id="triggerReleaseMotionsForm" text=release_text url="" to_complete=True %} {% elif pref.participant_ballots != 'off' and pref.motion_vetoes_enabled %} {% trans "Your tournament is configured to allow motions to be vetoed and to allow ballots to be submitted by adjudicators. Ensure that you release the motions before debates finish, otherwise ballots will not be able to nominate vetoes." as text %} {% include "components/item-info.html" with nopad=True type="danger" %} - {% include "components/item-action.html" with type="success" id="triggerReleaseMotionsForm" text=release_text url="" to_complete=True %} {% elif pref.public_motions %} - {% trans "Your tournament is configured to show the motion(s) for each round on the public site. You'll need to first release the motion(s) for it to show there." as text %} + {% blocktranslate trimmed count counter=expected_nmotions asvar text %} + Your tournament is configured to show the motion for each round on the public site. You'll need to first release the motion for it to show there. + {% plural %} + Your tournament is configured to show the motions for each round on the public site. You'll need to first release the motions for it to show there. + {% endblocktranslate %} {% include "components/item-info.html" with nopad=True type="" %} - {% include "components/item-action.html" with type="success" id="triggerReleaseMotionsForm" text=release_text url="" to_complete=True %} {% else %} - {% trans "Your tournament is not configured to show the motion(s) for each round on the public site. There's no need to release the motion(s)." as text %} + {% blocktranslate trimmed count counter=expected_nmotions asvar text %} + Your tournament is not configured to show the motion for each round on the public site. There's no need to release the motion. + {% plural %} + Your tournament is not configured to show the motions for each round on the public site. There's no need to release the motions. + {% endblocktranslate %} {% include "components/item-info.html" with nopad=True type="secondary" %} - {% include "components/item-action.html" with id="triggerReleaseMotionsForm" text=release_text url="" %} + {% endif %} + + {% if round.motion_set.exists %} + {% if pref.enable_motions or pref.motion_vetoes_enabled or pref.public_motions %} + {% include "components/item-action.html" with type="success" id="triggerReleaseMotionsForm" text=release_text url="" to_complete=True %} + {% else %} + {% include "components/item-action.html" with id="triggerReleaseMotionsForm" text=release_text url="" %} + {% endif %} {% endif %} {% else %} @@ -236,11 +243,13 @@
{{ release_motions_title }}
action="{% roundurl 'motions-unrelease' %}">{% csrf_token %} {# "and" takes precedence over "or" #} {% if pref.public_motions or pref.participant_ballots != 'off' and pref.enable_motions or pref.participant_ballots != 'off' and pref.motion_vetoes_enabled %} - {% if pref.enable_motions or pref.motion_vetoes_enabled %} - {% trans "Motions have been released publicly." as text %} - {% else %} - {% trans "The motion has been released publicly." as text %} - {% endif %} + + {% blocktranslate trimmed count counter=expected_nmotions asvar text %} + The motion has been released publicly. + {% plural %} + Motions have been released publicly. + {% endblocktranslate %} + {% include "components/item-info.html" with nopad=True type="" %} {% trans "View public motions page" as text %} {% tournamenturl 'motions-public' as public_link %} @@ -348,7 +357,7 @@
{{ release_motions_title }}
- +
@@ -366,7 +375,7 @@
{{ release_motions_title }}
{% block js %} {{ block.super }} -{% endblock js %} diff --git a/tabbycat/options/templates/preferences_state.html b/tabbycat/options/templates/preferences_state.html index cdafee86cc3..04d2b5dfa23 100644 --- a/tabbycat/options/templates/preferences_state.html +++ b/tabbycat/options/templates/preferences_state.html @@ -1,9 +1,10 @@ +{% load add_field_css %}

- {{ title }} ({{ preferences|length }}) + {{ title }}

@@ -12,26 +13,16 @@

{% for preference in preferences %}
  • -
    - {{ preference.name }} - {% if not no_change %} -
    {{ preference.help_text }} +
    + +
    {{ preference.help_text }}
    + + {% if preference.errors %} + {{ preference.errors }} {% endif %}
    -
    -
    - - - -
    +
    + {{ preference|addcss:"form-control" }}
  • diff --git a/tabbycat/options/templates/preset_edit.html b/tabbycat/options/templates/preset_edit.html new file mode 100644 index 00000000000..3fc15d95d84 --- /dev/null +++ b/tabbycat/options/templates/preset_edit.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} +{% load debate_tags i18n %} + +{% block page-subnav-sections %} + + {% trans "Back to Configuration" %} + +{% endblock %} + +{% block content %} + +{% if form.errors %} + {% include "components/form-errors.html" with errors=form.non_field_errors %} +{% endif %} + +
    + {% csrf_token %} + + {% regroup form.visible_fields|dictsort:"changed" by changed as preferences_grouped %} + {% for changed, preferences in preferences_grouped reversed %} + {% if preferences|length > 0 %} + {% if changed %} + {% blocktranslate trimmed count counter=preferences|length asvar title %} + This preference will be changed + {% plural %} + These {{ counter }} preferences will be changed + {% endblocktranslate %} + {% else %} + {% blocktranslate trimmed count counter=preferences|length asvar title %} + This preference will not change + {% plural %} + These {{ counter }} preferences will not change + {% endblocktranslate %} + {% endif %} + {% include "preferences_state.html" %} + {% endif %} + {% endfor %} + + + +
    + {% trans "Apply Changes" as title %} + {% trans "Presets are provided as a convenience only and may not be up to date with a debating format's rules or the expectations of your circuit. Please double-check everything to ensure it matches your needs." as subtitle %} + {% include "components/form-submit.html" %} +
    +
    +{% endblock content %} diff --git a/tabbycat/options/tests/__init__.py b/tabbycat/options/tests/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tabbycat/options/tests/management/__init__.py b/tabbycat/options/tests/management/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tabbycat/options/tests/management/commands/__init__.py b/tabbycat/options/tests/management/commands/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tabbycat/options/tests/management/commands/test_applypreset.py b/tabbycat/options/tests/management/commands/test_applypreset.py new file mode 100644 index 00000000000..3c87903dc11 --- /dev/null +++ b/tabbycat/options/tests/management/commands/test_applypreset.py @@ -0,0 +1,45 @@ +from unittest.mock import patch + +from django.core.management import call_command +from django.core.management.base import CommandError +from django.test import TestCase + +from options.management.commands.applypreset import Command +from options.presets import PreferencesPreset +from tournaments.models import Tournament + + +class TestPreset(PreferencesPreset): + name = "Test Rules" + description = "Used for unit tests" + show_in_list = False + + # Scoring + scoring__score_min = 70 + scoring__score_max = 80 + + +class ApplyPresetTests(TestCase): + @patch('options.management.commands.applypreset.all_presets', return_value=[TestPreset]) + def test_preset_options(self, mock_all_presets): + with self.assertRaises(CommandError) as cm: + Command().create_parser('', '').parse_args(['notvalidpreset']) + self.assertEqual(str(cm.exception), "Error: argument preset: invalid choice: 'notvalidpreset' (choose from 'testpreset')") + + @patch('options.management.commands.applypreset.all_presets', return_value=[TestPreset]) + def test_set_invalid_preset(self, mock_all_presets): + tournament = Tournament.objects.create(slug="command", name="Command Testing") + with self.assertRaises(CommandError) as cm: + call_command('applypreset', ['-t', 'command', 'notvalidpreset']) + self.assertEqual(str(cm.exception), "Error: argument preset: invalid choice: 'notvalidpreset' (choose from 'testpreset')") + tournament.delete() + + @patch('options.management.commands.applypreset.all_presets', return_value=[TestPreset]) + def test_set_valid_preset(self, mock_all_presets): + tournament = Tournament.objects.create(slug="command", name="Command Testing") + tournament.preferences['scoring__score_min'] = 0 + tournament.preferences['scoring__score_max'] = 100 + + call_command('applypreset', ['-t', 'command', 'testpreset']) + for pref, val in [('scoring__score_min', 70), ('scoring__score_max', 80)]: + self.assertEqual(tournament.preferences[pref], val) diff --git a/tabbycat/options/tests/test_fields.py b/tabbycat/options/tests/test_fields.py new file mode 100644 index 00000000000..727bd24d2a8 --- /dev/null +++ b/tabbycat/options/tests/test_fields.py @@ -0,0 +1,22 @@ +import unittest +from unittest.mock import patch + +from options.fields import EMPTY_CHOICE, MultiSelect, MultiValueChoiceField + + +class MultiWidgetTest(unittest.TestCase): + + @patch('options.fields.MultiWidget.render') + def test_appends_empty_for_render(self, mock_render): + MultiSelect(nfields=5).render('test', ['a']) + mock_render.assert_called_with('test', ['a'] + ([EMPTY_CHOICE] * 4), attrs=None) + + +class MultiValueChoiceFieldTest(unittest.TestCase): + + def test_compresses_empty(self): + field = MultiValueChoiceField(choices=[('a', 'a'), ('b', 'b')], allow_empty=True) + self.assertEqual( + field.compress(['a', EMPTY_CHOICE, 'b']), + ['a', 'b'], + ) diff --git a/tabbycat/options/tests/test_forms.py b/tabbycat/options/tests/test_forms.py new file mode 100644 index 00000000000..c50bfb8900d --- /dev/null +++ b/tabbycat/options/tests/test_forms.py @@ -0,0 +1,53 @@ +import unittest +from unittest.mock import patch + +from django.core.exceptions import ValidationError +from django.test import TestCase +from dynamic_preferences.forms import GlobalPreferenceForm + +from options.forms import tournament_preference_form_builder +from tournaments.models import Tournament + + +class FormBuilderTest(unittest.TestCase): + + @patch('options.forms.preference_form_builder') + def test_create_global_form(self, mock_builder): + tournament_preference_form_builder(None, section='global') + mock_builder.assert_called_with(GlobalPreferenceForm, [], section='global') + + +class TournamentPreferenceFormTests(TestCase): + + def setUp(self): + self.tournament = Tournament.objects.create() + + def tearDown(self): + self.tournament.delete() + + def test_falsy_preference_change(self): + # Test that get_pref() doesn't get the current value if falsy in the posted data + form = tournament_preference_form_builder(self.tournament, section='data_entry')() + self.tournament.preferences['data_entry__public_use_password'] = False + form.cleaned_data = {'data_entry__public_use_password': True, 'data_entry__public_password': ''} + with self.assertRaises(ValidationError) as cm: + form.clean() + self.assertIsNotNone(cm.exception.args[0].get('data_entry__public_password')) + + def test_validation_between_prefs(self): + tests = [ + ('scoring', (('score_min', 100), ('score_max', 0))), + ('scoring', (('reply_score_min', 100), ('reply_score_max', 0))), + ('feedback', (('adj_min_score', 100), ('adj_max_score', 0))), + ('draw_rules', (('draw_side_allocations', 'balance'), ('draw_odd_bracket', 'intermediate1'))), + ('debate_rules', (('ballots_per_debate_prelim', 'per-adj'), ('teams_in_debate', 'bp'))), + ('data_entry', (('public_use_password', True), ('public_password', ''))), + ('ui_options', (('team_code_names', 'everywhere'), ('show_team_institutions', True))), + ] + for section, prefs in tests: + with self.subTest(section=section, prefs=[p[0] for p in prefs]): + form = tournament_preference_form_builder(self.tournament, section=section)() + form.cleaned_data = {section + "__" + pref: val for pref, val in prefs} + with self.assertRaises(ValidationError) as cm: + form.clean() + self.assertIsNotNone(cm.exception.args[0].get(section + "__" + prefs[-1][0])) diff --git a/tabbycat/options/tests/test_preferences.py b/tabbycat/options/tests/test_preferences.py new file mode 100644 index 00000000000..28ce6201005 --- /dev/null +++ b/tabbycat/options/tests/test_preferences.py @@ -0,0 +1,27 @@ +import unittest +from unittest.mock import patch + +from django.forms import ValidationError + +from options.preferences import SpeakerStandingsPrecedence, TeamStandingsPrecedence + + +class PrefValidationTests(unittest.TestCase): + + @patch('options.preferences.validate_metric_duplicates') + def test_allow_empty(self, mock_validate_metric_duplicates): + for preference in (SpeakerStandingsPrecedence, TeamStandingsPrecedence): + with self.subTest(preference=preference): + self.assertIsNone(preference().validate([])) + + @patch('options.preferences.validate_metric_duplicates') + def test_disallow_wrong_value(self, mock_validate_metric_duplicates): + for preference in (SpeakerStandingsPrecedence, TeamStandingsPrecedence): + with self.subTest(preference=preference), self.assertRaises(ValidationError): + preference().validate(['invalidkey']) + + @patch('options.preferences.validate_metric_duplicates') + def test_number_of_fields(self, mock_validate_metric_duplicates): + for preference in (SpeakerStandingsPrecedence, TeamStandingsPrecedence): + with self.subTest(preference=preference): + self.assertEqual(preference().get_field_kwargs()['nfields'], preference.nfields) diff --git a/tabbycat/options/tests/test_presets.py b/tabbycat/options/tests/test_presets.py new file mode 100644 index 00000000000..a0cd2ab5bc5 --- /dev/null +++ b/tabbycat/options/tests/test_presets.py @@ -0,0 +1,78 @@ +from unittest.mock import patch + +from django.test import TestCase + +from options.presets import get_preset_from_slug, PreferencesPreset +from tournaments.models import Tournament + + +class TestPreset(PreferencesPreset): + name = "Test Rules" + description = "Used for unit tests" + show_in_list = False + + # Scoring + scoring__score_min = 70 + scoring__score_max = 80 + + +class TestPresets(TestCase): + def set_up_tournament(self): + tournament = Tournament.objects.create(slug="preset", name="Preset Testing") + tournament.preferences['scoring__score_min'] = 0 + tournament.preferences['scoring__score_max'] = 100 + return tournament + + @patch('options.presets.all_presets', return_value=[TestPreset]) + def test_get_preset_good_slug(self, mock_all_presets): + self.assertEqual(get_preset_from_slug('testpreset'), TestPreset) + + @patch('options.presets.all_presets', return_value=[]) + def test_get_preset_slug_invalid(self, mock_all_presets): + with self.assertRaises(ValueError): + get_preset_from_slug('testpreset') + + @patch('options.presets.all_presets', return_value=[TestPreset, TestPreset]) + def test_get_preset_many_presets(self, mock_all_presets): + with self.assertLogs('options.presets', level='WARNING') as cm: + self.assertEqual(get_preset_from_slug('testpreset'), TestPreset) + self.assertEqual(cm.output, ['WARNING:options.presets:Found more than one preset for testpreset']) + + def test_preferences_does_not_include_meta(self): + self.assertFalse('name' in list(TestPreset.get_preferences())) + + def test_preferences_includes_all_preferences(self): + self.assertTrue(set(TestPreset.get_preferences()) == {'scoring__score_min', 'scoring__score_max'}) + + def test_can_save_preset(self): + tournament = self.set_up_tournament() + TestPreset.save(tournament) + + for pref, new_val in [('scoring__score_min', 70), ('scoring__score_max', 80)]: + self.assertEqual(tournament.preferences[pref], new_val) + + tournament.delete() + + def test_can_create_form(self): + tournament = self.set_up_tournament() + + form = TestPreset.get_form(tournament) + + for pref, new_val in [('scoring__score_min', 70), ('scoring__score_max', 80)]: + self.assertTrue(pref in form.fields) + self.assertEqual(form[pref].initial, new_val) + self.assertEqual(form[pref].changed, True) + + tournament.delete() + + def test_can_save_preset_form(self): + tournament = self.set_up_tournament() + + form = TestPreset.get_form(tournament, data={'scoring__score_min': 70, 'scoring__score_max': 80}) + form.is_valid() + form.update_preferences() + + for pref, new_val in [('scoring__score_min', 70), ('scoring__score_max', 80)]: + self.assertEqual(tournament.preferences[pref], new_val) + + tournament.delete() diff --git a/tabbycat/options/tests/test_utils.py b/tabbycat/options/tests/test_utils.py new file mode 100644 index 00000000000..d6013454271 --- /dev/null +++ b/tabbycat/options/tests/test_utils.py @@ -0,0 +1,55 @@ +from itertools import product + +from django.forms import ValidationError +from django.test import TestCase + +from options.preferences import TeamCodeNames +from options.utils import use_team_code_names, use_team_code_names_data_entry, validate_metric_duplicates +from standings.teams import TeamStandingsGenerator +from tournaments.models import Tournament + + +class UseTeamCodeNamesTests(TestCase): + + def setUp(self): + Tournament.objects.create(slug="unittest", name="Unit Testing") + + def tearDown(self): + Tournament.objects.filter(slug='unittest').delete() + + def test_use_codes_if_setting(self): + tournament = Tournament.objects.get(slug='unittest') + for setting, admin in product([c[0] for c in TeamCodeNames.choices], (False, True)): + with self.subTest(setting=setting, admin=admin): + tournament._prefs['team_code_names'] = setting + + if setting in ['admin-tooltips-real', 'everywhere'] or (setting == 'admin-tooltips-code' and not admin): + self.assertTrue(use_team_code_names(tournament, admin)) + else: + self.assertFalse(use_team_code_names(tournament, admin)) + + def test_use_codes_data_entry(self): + tournament = Tournament.objects.get(slug='unittest') + for setting, tabroom in product([c[0] for c in TeamCodeNames.choices], (False, True)): + with self.subTest(setting=setting, tabroom=tabroom): + tournament._prefs['team_code_names'] = setting + + if setting in ['off', 'all-tooltips']: + self.assertEqual(use_team_code_names_data_entry(tournament, tabroom), 'off') + elif setting in ['admin-tooltips-code', 'admin-tooltips-real'] and tabroom: + self.assertEqual(use_team_code_names_data_entry(tournament, tabroom), 'both') + elif setting == 'everywhere' or (setting in ['admin-tooltips-code', 'admin-tooltips-real'] and not tabroom): + self.assertEqual(use_team_code_names_data_entry(tournament, tabroom), 'code') + + +class DuplicatePreferencesTest(TestCase): + + def test_unique_metrics(self): + self.assertIsNone(validate_metric_duplicates(TeamStandingsGenerator, ['wins', 'speaks_sum'])) + + def test_repeatable_metrics(self): + self.assertIsNone(validate_metric_duplicates(TeamStandingsGenerator, ['wins', 'wbw', 'speaks_sum', 'wbw'])) + + def test_non_repeatable_metrics(self): + with self.assertRaises(ValidationError): + validate_metric_duplicates(TeamStandingsGenerator, ['wins', 'speaks_sum', 'wins']) diff --git a/tabbycat/options/tests/test_views.py b/tabbycat/options/tests/test_views.py new file mode 100644 index 00000000000..674fe8e1c57 --- /dev/null +++ b/tabbycat/options/tests/test_views.py @@ -0,0 +1,133 @@ +from unittest.mock import patch + +from django.contrib.auth import get_user_model +from django.http.response import Http404 +from django.test import RequestFactory, TestCase + +from options.preferences import scoring +from options.presets import PreferencesPreset, PublicInformation +from options.views import SetPresetPreferencesView, TournamentConfigIndexView, TournamentPreferenceFormView +from tournaments.models import Tournament +from utils.misc import reverse_tournament + + +class TestPreset(PreferencesPreset): + name = "Test Rules" + description = "Used for unit tests" + show_in_list = False + + # Scoring + scoring__score_min = 70 + scoring__score_max = 80 + + +class TournamentConfigIndexViewTests(TestCase): + + def test_order_presets(self): + view = TournamentConfigIndexView() + view.setup(RequestFactory()) + + presets = view.get_context_data()['presets'] + self.assertEqual(presets[0], PublicInformation) + + +class TournamentPreferenceFormViewTests(TestCase): + + @patch('options.views.tournament_preference_form_builder') + def test_gets_correct_form(self, mock_builder): + tournament = Tournament.objects.create(slug="optionform", name="Option Form Testing") + view = TournamentPreferenceFormView() + view.setup(RequestFactory().get( + reverse_tournament('options-tournament-section', tournament, kwargs={'section': 'scoring'})), tournament_slug=tournament.slug, section='scoring', + ) + view.get_form_class() + mock_builder.assert_called_with(instance=tournament, section='scoring') + tournament.delete() + + def test_section_does_not_exist(self): + tournament = Tournament.objects.create(slug="optionform", name="Option Form Testing") + tournament.round_set.create(seq=1, name='1', abbreviation='1', draw_type='M') + request = RequestFactory().get(reverse_tournament('options-tournament-section', tournament, kwargs={'section': 'invalidsection'})) + request.user = get_user_model()(is_superuser=True) + + view = TournamentPreferenceFormView() + view.setup(request, tournament_slug=tournament.slug, section='invalidsection') + + with self.assertRaises(Http404): + view.dispatch(request, section='invalidsection') + + tournament.delete() + + @patch('options.views.messages.success') + @patch('django.views.generic.edit.HttpResponseRedirect') + def test_save_form(self, mock_redirect, mock_success): + tournament = Tournament.objects.create(slug="optionform", name="Option Form Testing") + request = RequestFactory().get(reverse_tournament('options-tournament-section', tournament, kwargs={'section': 'scoring'})) + view = TournamentPreferenceFormView() + view.setup(request, tournament_slug=tournament.slug, section='scoring') + view.section = scoring + + form = TestPreset.get_form(tournament, data={'scoring__score_min': 70, 'scoring__score_max': 80}) + form.is_valid() + view.form_valid(form) + mock_success.assert_called() + mock_redirect.assert_called_with(reverse_tournament('options-tournament-index', tournament)) + + tournament.delete() + + +class TestSetPresetPreferencesView(TestCase): + def set_up_tournament(self): + tournament = Tournament.objects.create(slug="preset", name="Preset Testing") + tournament.preferences['scoring__score_min'] = 0 + tournament.preferences['scoring__score_max'] = 100 + return tournament + + @patch('options.presets.all_presets', return_value=[TestPreset]) + def test_title_with_preset(self, mock_all_presets): + tournament = self.set_up_tournament() + request = RequestFactory().get(reverse_tournament('options-presets-confirm', tournament, kwargs={'preset_name': 'testpreset'})) + view = SetPresetPreferencesView() + view.setup(request, preset_name='testpreset') + + self.assertEqual(view.get_page_title(), 'Apply Preset: Test Rules') + tournament.delete() + + @patch('options.presets.all_presets', return_value=[TestPreset]) + def test_404_with_invalid_preset(self, mock_all_presets): + tournament = self.set_up_tournament() + request = RequestFactory().get(reverse_tournament('options-presets-confirm', tournament, kwargs={'preset_name': 'testpreset'})) + view = SetPresetPreferencesView() + view.setup(request, preset_name='invalidpreset') + + with self.assertRaises(Http404): + view.get_page_title() + tournament.delete() + + @patch('options.presets.all_presets', return_value=[TestPreset]) + @patch('options.views.messages.success') + @patch('django.views.generic.edit.HttpResponseRedirect') + def test_save_form(self, mock_redirect, mock_success, mock_all_presets): + tournament = self.set_up_tournament() + request = RequestFactory().get(reverse_tournament('options-presets-confirm', tournament, kwargs={'preset_name': 'testpreset'})) + view = SetPresetPreferencesView() + view.setup(request, tournament_slug=tournament.slug, preset_name='testpreset') + + form = TestPreset.get_form(tournament, data={'scoring__score_min': 70, 'scoring__score_max': 80}) + form.is_valid() + view.form_valid(form) + mock_redirect.assert_called_with(reverse_tournament('options-tournament-index', tournament)) + + tournament.delete() + + @patch('options.presets.all_presets', return_value=[TestPreset]) + def test_gets_correct_form(self, mock_all_presets): + tournament = self.set_up_tournament() + request = RequestFactory().get(reverse_tournament('options-presets-confirm', tournament, kwargs={'preset_name': 'testpreset'})) + view = SetPresetPreferencesView() + view.setup(request, tournament_slug=tournament.slug, preset_name='testpreset') + + form = view.get_form() + for pref in ['scoring__score_min', 'scoring__score_max']: + self.assertIn(pref, form.fields) + tournament.delete() diff --git a/tabbycat/options/types.py b/tabbycat/options/types.py index b7b417c6185..4d20ba1fb45 100644 --- a/tabbycat/options/types.py +++ b/tabbycat/options/types.py @@ -1,20 +1,22 @@ -from dynamic_preferences.types import BasePreferenceType +from dynamic_preferences.types import ChoicePreference from .fields import MultiValueChoiceField from .serializers import MultiValueSerializer -class MultiValueChoicePreference(BasePreferenceType): +class MultiValueChoicePreference(ChoicePreference): - choices = () nfields = 5 allow_empty = False field_class = MultiValueChoiceField serializer = MultiValueSerializer def get_field_kwargs(self): - field_kwargs = super(MultiValueChoicePreference, self).get_field_kwargs() + field_kwargs = super().get_field_kwargs() field_kwargs['nfields'] = self.nfields - field_kwargs['choices'] = self.choices or self.field_attribute['initial'] field_kwargs['allow_empty'] = self.allow_empty return field_kwargs + + def validate(self, value): + for v in value: + super().validate(v) diff --git a/tabbycat/options/urls.py b/tabbycat/options/urls.py index 069e86c44d8..7d64191b541 100644 --- a/tabbycat/options/urls.py +++ b/tabbycat/options/urls.py @@ -10,7 +10,7 @@ # Presets path('presets//confirm/', - views.ConfirmTournamentPreferencesView.as_view(), + views.SetPresetPreferencesView.as_view(), name="options-presets-confirm"), # Per Type diff --git a/tabbycat/options/utils.py b/tabbycat/options/utils.py index d3b4d758d8a..9d4744678e6 100644 --- a/tabbycat/options/utils.py +++ b/tabbycat/options/utils.py @@ -1,5 +1,9 @@ import logging +from django.forms import ValidationError +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + logger = logging.getLogger(__name__) @@ -29,6 +33,13 @@ def use_team_code_names_data_entry(tournament, tabroom): return 'both' if tabroom else 'code' elif pref == 'everywhere': return 'code' - else: - logger.error("Unrecognized team code name preference: %s", pref) - return 'code' + + +def validate_metric_duplicates(generator, value): + # Check that non-repeatable metrics aren't listed twice + classes = [generator.metric_annotator_classes[metric] for metric in value] + duplicates = [c for c in classes if not c.repeatable and classes.count(c) > 1] + if duplicates: + duplicates_str = ", ".join(list(set(force_str(c.name) for c in duplicates))) + raise ValidationError(_("The following metrics can't be listed twice: " + "%(duplicates)s") % {'duplicates': duplicates_str}) diff --git a/tabbycat/options/views.py b/tabbycat/options/views.py index 4efdd910dba..5eeb43b0c3c 100644 --- a/tabbycat/options/views.py +++ b/tabbycat/options/views.py @@ -5,6 +5,7 @@ from django.utils.text import slugify from django.utils.translation import gettext as _ from django.views.generic import TemplateView +from django.views.generic.edit import FormView from dynamic_preferences.registries import global_preferences_registry from dynamic_preferences.views import PreferenceFormView @@ -16,7 +17,7 @@ from .forms import tournament_preference_form_builder from .preferences import tournament_preferences_registry -from .presets import all_presets, get_preferences_data, save_presets +from .presets import all_presets, get_preset_from_slug logger = logging.getLogger(__name__) @@ -74,44 +75,29 @@ def get_form_class(self, *args, **kwargs): return form_class -class ConfirmTournamentPreferencesView(AdministratorMixin, TournamentMixin, TemplateView): - template_name = "preferences_presets_confirm.html" +class SetPresetPreferencesView(AdministratorMixin, LogActionMixin, TournamentMixin, FormView): + template_name = "preset_edit.html" + page_emoji = '❔' + + action_log_type = ActionLogEntry.ACTION_TYPE_OPTIONS_EDIT + + def get_page_title(self): + return _("Apply Preset: %s") % self.get_selected_preset().name + + def get_form(self): + return self.get_selected_preset().get_form(self.tournament, **self.get_form_kwargs()) def get_selected_preset(self): - preset_name = self.kwargs["preset_name"] - # Retrieve the class that matches the name - selected_presets = [x for x in all_presets() if slugify(x.__name__) == preset_name] - if len(selected_presets) == 0: - logger.warning("Could not find preset: %s", preset_name) - raise Http404("Preset {!r} no found.".format(preset_name)) - elif len(selected_presets) > 1: - logger.warning("Found more than one preset for %s", preset_name) - return selected_presets[0] + try: + return get_preset_from_slug(self.kwargs["preset_name"]) + except ValueError as e: + raise Http404(str(e)) - def get_context_data(self, **kwargs): - selected_preset = self.get_selected_preset() - preset_preferences = get_preferences_data(selected_preset, self.tournament) - kwargs["preset_title"] = selected_preset.name - kwargs["preset_name"] = self.kwargs["preset_name"] - kwargs["changed_preferences"] = [p for p in preset_preferences if p['changed']] - kwargs["unchanged_preferences"] = [p for p in preset_preferences if not p['changed']] - return super().get_context_data(**kwargs) + def get_success_url(self): + return reverse_tournament('options-tournament-index', self.tournament) - def get_template_names(self): - if self.request.method == 'GET': - return ["preferences_presets_confirm.html"] - else: - return ["preferences_presets_complete.html"] - - def save_presets(self): - selected_preset = self.get_selected_preset() - save_presets(self.tournament, selected_preset) - ActionLogEntry.objects.log(type=ActionLogEntry.ACTION_TYPE_OPTIONS_EDIT, - user=self.request.user, tournament=self.tournament, content_object=self.tournament) - messages.success(self.request, _("Tournament options saved according to preset " - "%(name)s.") % {'name': selected_preset.name}) - - def post(self, request, *args, **kwargs): - context = self.get_context_data(**kwargs) - self.save_presets() - return self.render_to_response(context) + def form_valid(self, form): + form.update_preferences() + messages.success(self.request, _("Tournament options saved based on preset " + "%(name)s.") % {'name': self.get_selected_preset().name}) + return super().form_valid(form) diff --git a/tabbycat/participants/admin.py b/tabbycat/participants/admin.py index 249db11c07c..a2838a98261 100644 --- a/tabbycat/participants/admin.py +++ b/tabbycat/participants/admin.py @@ -118,7 +118,7 @@ def formfield_for_foreignkey(self, db_field, request, **kwargs): @admin.register(Team) class TeamAdmin(ModelAdmin): form = TeamForm - list_display = ('long_name', 'short_name', 'emoji', 'institution', + list_display = ('long_name', 'short_name', 'emoji_code', 'institution', 'tournament') search_fields = ('reference', 'short_name', 'code_name', 'institution__name', 'institution__code', 'tournament__name') @@ -132,6 +132,10 @@ def get_queryset(self, request): # can't use select_related, because TeamManager always puts a select_related on this return super().get_queryset(request).select_related('tournament') + @admin.display(description=_("Emoji & Code")) + def emoji_code(self, obj): + return "%s %s" % (obj.emoji or '-', obj.code_name) + def formfield_for_choice_field(self, db_field, request, **kwargs): if db_field.name == 'emoji' and kwargs.get("initial") is None: kwargs["initial"] = pick_unused_emoji()[0] @@ -143,6 +147,7 @@ def formfield_for_manytomany(self, db_field, request, **kwargs): kwargs["initial"] = BreakCategory.objects.filter(is_general=True) return super().formfield_for_manytomany(db_field, request, **kwargs) + @admin.display(description=_("Delete URL Key")) def delete_url_key(self, request, queryset): num_speakers = Speaker.objects.filter(team__in=queryset).update(url_key=None) for obj in queryset: @@ -152,8 +157,8 @@ def delete_url_key(self, request, queryset): "%(count)d speakers had their URL keys removed.", num_speakers) % {'count': num_speakers} self.message_user(request, message) - delete_url_key.short_description = _("Delete URL key") + @admin.display(description=_("Reset emoji")) def assign_emoji(self, request, queryset): count = queryset.update(emoji=None) for tournament, teams in groupby(queryset.select_related('tournament').order_by('tournament_id'), lambda t: t.tournament): @@ -166,8 +171,8 @@ def assign_emoji(self, request, queryset): "%(count)d teams had their emojis reset.", count) % {'count': count} self.message_user(request, message) - assign_emoji.short_description = _("Reset emoji") + @admin.display(description=_("Reset code name")) def assign_code_names(self, request, queryset): count = populate_code_names_from_emoji(queryset, overwrite=True) for obj in queryset: @@ -178,7 +183,6 @@ def assign_code_names(self, request, queryset): "%(count)d teams had their code names reset.", count) % {'count': count} self.message_user(request, message) - assign_code_names.short_description = _("Reset code name") # ============================================================================== @@ -229,6 +233,7 @@ def get_queryset(self, request): # can't use select_related, because TeamManager always puts a select_related on this return super().get_queryset(request).select_related('tournament') + @admin.display(description=_("Delete URL Key")) def delete_url_key(self, request, queryset): updated = queryset.update(url_key=None) for obj in queryset: @@ -239,4 +244,3 @@ def delete_url_key(self, request, queryset): updated, ) % {'count': updated} self.message_user(request, message) - delete_url_key.short_description = _("Delete URL key") diff --git a/tabbycat/participants/emoji.py b/tabbycat/participants/emoji.py index 27691a179a6..8a6e6cab0c8 100644 --- a/tabbycat/participants/emoji.py +++ b/tabbycat/participants/emoji.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import random import logging +from typing import Tuple, Optional logger = logging.getLogger(__name__) @@ -24,17 +25,19 @@ def set_emoji(teams, tournament): team.save() -def pick_unused_emoji(): +def pick_unused_emoji(tournament_id=None) -> Tuple[Optional[str], Optional[str]]: """Picks an emoji that is not already in use by any team in the database. If no emoji are left, it returns `None`.""" from .models import Team - used_emoji = Team.objects.filter(emoji__isnull=False).values_list('emoji', flat=True) - unused_emoji = [e for e in EMOJI_RANDOM_OPTIONS if e[0] not in used_emoji] + teams = Team.objects.filter(emoji__isnull=False) + if tournament_id is not None: + teams = teams.filter(tournament_id=tournament_id) + unused_emoji = [e for e in EMOJI_RANDOM_OPTIONS if e[0] not in teams.values_list('emoji', flat=True)] try: return random.choice(unused_emoji) except IndexError: - return None + return None, None def populate_code_names_from_emoji(teams, overwrite=True): @@ -1355,7 +1358,7 @@ def populate_code_names_from_emoji(teams, overwrite=True): ("🦃", True , "Turkey"), ("🦀", True , "Crab"), ("🦂", True , "Scorpion"), - ("🧀", True , "Mouse Trap"), + ("🧀", True , "Cheese"), ("🌭", False, "Hot Dog"), # dull ("🌮", True , "Taco"), ("🌯", True , "Burrito"), @@ -1570,6 +1573,126 @@ def populate_code_names_from_emoji(teams, overwrite=True): ("🧼", True , "Soap"), ("🧽", True , "Fun sponge"), ("🧯", True , "Anti-fire Can"), + + # Unicode Version 12.0 + ("🥱", True , "Yawning Face"), + ("🤎", False, "Brown Heart"), # too similar to another + ("🤍", False, "White Heart"), # too similar to another + ("🤏", True , "Pinching Hand"), + ("🦾", False, "Mechanical Arm"), # potentially offensive + ("🦿", False, "Mechanical Leg"), # potentially offensive + ("🦻", False, "Ear with Hearing Aid"), # potentially offensive + ("🧏", False, "Deaf Person"), # potentially offensive + ("🧍", False, "Person Standing"), # too similar to another + ("🧎", False, "Person Kneeling"), # dull + ("🦧", False, "Orangutan"), # potentially offensive + ("🦮", True , "Guide Dog"), + ("🦥", True , "Lazy Tree Dog"), + ("🦦", True , "Water Dog"), + ("🦨", True , "Stinky dog"), + ("🦩", True , "Pink Dog"), + ("🧄", False, "Garlic"), # dull + ("🧅", False, "Onion"), # dull + ("🧇", True , "Waffle"), + ("🧆", True , "Falafel"), + ("🧈", True , "Butter"), + ("🦪", True , "Oyster"), + ("🧃", True , "Beverage Box"), + ("🧉", False, "Mate"), # too similar to another + ("🧊", True , "Cold Cuboid"), + ("🛕", False, "Hindu Temple"), # potentially offensive + ("🦽", False, "Manual Wheelchair"), # potentially offensive + ("🦼", False, "Motorized Wheelchair"), # potentially offensive + ("🛺", True , "Auto Rickshaw"), + ("🪂", True , "Parachute"), + ("🪐", True , "Ringed Planet"), + ("🤿", True , "Diving Mask"), + ("🪀", False, "Yo-Yo"), # too similar to another + ("🪁", True , "Kite"), + ("🦺", True , "Safety Vest"), + ("🥻", True , "Sari"), + ("🩱", False, "One-Piece Swimsuit"), # potentially offensive + ("🩲", False, "Briefs"), # potentially offensive + ("🩳", True , "Shorts"), + ("🩰", True , "Ballet Shoes"), + ("🪕", True , "Banjo"), + ("🪔", False, "Diya Lamp"), # dull + ("🪓", True , "Axe"), + ("🦯", False, "White Cane"), # potentially offensive + ("🩸", False, "Drop of Blood"), # potentially offensive + ("🩹", False, "Adhesive Bandage"), # dull + ("🩺", True , "Stethoscope"), + ("🪑", True , "Chair"), + ("🪒", True , "Razor"), + ("🟠", False, "Orange Circle"), # dull + ("🟡", False, "Yellow Circle"), # dull + ("🟢", False, "Green Circle"), # dull + ("🟣", False, "Purple Circle"), # dull + ("🟤", False, "Brown Circle"), # dull + ("🟥", False, "Red Square"), # dull + ("🟧", False, "Orange Square"), # dull + ("🟨", False, "Yellow Square"), # dull + ("🟩", False, "Green Square"), # dull + ("🟦", False, "Blue Square"), # dull + ("🟪", False, "Purple Square"), # dull + ("🟫", False, "Brown Square"), # dull + + # Unicode Version 13.0 + ("🥲", False, "Smiling Face with Tear"), # too similar to another + ("🥸", True , "Disguised Face"), + ("🤌", False, "Pinched Fingers"), # potentially offensive + ("🫀", True , "Anatomical Heart"), + ("🫁", True , "Lungs"), + ("🥷", True , "Ninja"), + ("🫂", True , "People Hugging"), + ("🦬", True , "Bison"), + ("🦣", True , "Mammoth"), + ("🦫", True , "Beaver"), + ("🦤", True , "Dodo"), + ("🪶", True , "Feather"), + ("🦭", True , "Seal"), + ("🪲", False, "Beetle"), # potentially offensive + ("🪳", False, "Cockroach"), # potentially offensive + ("🪰", False, "Fly"), # potentially offensive + ("🪱", False, "Worm"), # potentially offensive + ("🪴", True , "Potted Plant"), + ("🫐", True , "Blueberries"), + ("🫒", True , "Olive"), + ("🫑", True , "Bell Pepper"), + ("🫓", True , "Flatbread"), + ("🫔", True , "Tamale"), + ("🫕", False, "Fondue"), # too similar to another + ("🫖", True , "Teapot"), + ("🧋", True , "Bubble Tea"), + ("🪨", True , "Rock"), + ("🪵", True , "Wood"), + ("🛖", False, "Hut"), # potentially offensive + ("🛻", True , "Pickup Truck"), + ("🛼", True , "Roller Skate"), + ("🪄", True , "Magic Wand"), + ("🪅", True , "Piñata"), + ("🪆", True , "Nesting Dolls"), + ("🪡", False, "Sewing Needle"), # dull + ("🪢", True , "Knot"), + ("🩴", True , "Thong Sandal"), + ("🪖", False, "Military Helmet"), # potentially offensive + ("🪗", True , "Accordion"), + ("🪘", True , "Long Drum"), + ("🪙", True , "Coin"), + ("🪃", True , "Boomerang"), + ("🪚", True , "Carpentry Saw"), + ("🪛", True , "Screwdriver"), + ("🪝", True , "Hook"), + ("🪜", True , "Ladder"), + ("🛗", False, "Elevator"), # dull + ("🪞", False, "Mirror"), # dull + ("🪟", False, "Window"), # dull + ("🪠", True , "Plunger"), + ("🪤", True , "Mouse Trap"), + ("🪣", True , "Bucket"), + ("🪥", True , "Toothbrush"), + ("🪦", False, "Headstone"), # potentially offensive + ("🪧", False, "Placard"), # dull ) # The field choices are the permissible values diff --git a/tabbycat/participants/locale/ar/LC_MESSAGES/django.po b/tabbycat/participants/locale/ar/LC_MESSAGES/django.po index d0c4d5cf479..87a780e5381 100644 --- a/tabbycat/participants/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:59\n" "Last-Translator: philip_tc\n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -18,12 +18,20 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." @@ -34,11 +42,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "حذف عنوان URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." @@ -49,11 +57,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." @@ -64,11 +72,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." @@ -79,450 +83,436 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "المشاركون" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "الاسم" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "منطقة " -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "المناطق " #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "الاسم الكامل للمؤسسة ، على سبيل المثال ، \"جامعة كامبريدج\" ، \"جامعة فيكتوريا في ويلينغتون\"" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "الشفرة" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "ما يُطلق عليه اسم المؤسسة عادةً ، على سبيل المثال \"كامبريدج\" " -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "مؤسسة" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "المؤسسات " -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "البطولة" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "الاسم الذي سيتم عرضه ، على سبيل المثال ، \"المبتدئ\" و \"ESL\"" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "اختصار" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "تطبيق Slug لعناوين URL ، على سبيل المثال ، \"novice\" و \"esl\"" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "رقم التسلسل " -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "الترتيب الذي يتم فيها عرض القضايا" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "أقصى حد " -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "على الأكثر ، سيتم عرض العديد من المتحدثين في التاب العامة لهذه الفئة ، أو يستخدمون 0 كقيمة للاشخاص الذي ليس لهم حدود" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "عام" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "اذا تم اختياره، سيتم إظهار هذه الفئة مع نتائج المتحدثين للعموم." -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "نقاط المتحدث" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "نقاط المتحدثين" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "الهاتف " -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "مستخدم مجهول" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "سيتم تحديد أسماء وفريق المجهولين في إصدارات علامات التبويب العامة" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "اسم الكود " + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "مفتاح الرابط " -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "ذكر " -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "أنثى" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "أخرى" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "الجنس" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "سيتم عرض الجنس في واجهة تخصيص الحكام" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "ضمير " -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "في حالة طباعة بطاقات الاقتراع باستخدام Tabbycat ، هناك خيار للضمائر قبل الطباعة" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "شخص " -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "الأشخاص " -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "الاسم بالكامل " -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "لا تقم بوضع اسم المنتخب (قم باختيار \"وضع اسم الفريق مع اسم المنتخب ؟\" بدل ذلك)" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "اسم قصير" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "اسم الكود " - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "الاسم المستخدم لإخفاء الهوية المؤسسية على الصفحات العامة" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "اسم قصير" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "الاسم الكامل " -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "اسم الفريق الذي سيتظمن اسم المؤسسة (قم باختيار \"وضع اسم الفريق مع اسم المنتخب ؟\" بدل ذلك)" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "يستخدم البادئة المؤسسية" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "تنوية يمكنك تسمية فريق \"1\" من فكتوريا ليظهر \" فكتوريا 1 \" " -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "الفئة المتأهلة" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "تعارضات (منتخب)" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "لا شيء " -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "تأرجح" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "مركب " -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "وداعا " -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "نوع" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "رمز تعبيري" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "فريق" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "فرق" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "يجب أن يكون لدى الفرق مؤسسة إذا كانت تستخدم البادئة المؤسسية." -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "يجب أن يكون للفرق اسم طويل إذا لم تستخدم البادئة المؤسسية." -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "يجب أن يكون للفرق اسم قصير إذا لم تستخدم البادئة المؤسسية." -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "متحدث " -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "متحدثون " -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "المحكمون الذين لم يتم تعيينهم في أي بطولة يمكن أن تكون مشتركة بين البطولات " -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "تعارضات (فريق)" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "المتدربين" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "في حالة تحديده ، لن يتم تخصيص حق التصويت التلقائي لموضع التصويت ، بغض النظر عن درجاته" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "المتأهلون" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "مستقل " -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "محكم" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "محكم" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "المحكمين" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "النقاط بعد المناظرة " -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "الفوز بعد المناظرة " -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "درجات المتحدث
    (حسب ترتيب التحدث)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "الخطاب " -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "عن %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "منتخب" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "غير منتسبين" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "منطقة " -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "لا يوجد" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "القاعات المقيدة:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr " لا تنسى إذا كان يجب أن يتعارض هذا الحكم ضد المؤسسة الخاصة به ، يجب عليك إضافة هذا التعارض الان في التاب تعارض-الحكم-- مؤسسة ، أعلاه ، لأن تعارض المؤسسة الخاصة مره أخرى يتم إنشاؤه تلقائيًا عند استخدام هذا النموذج." -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "تحذير اذا كان هناك \"فريق مناظرة\" فوق هذه القائمة من المحتمل عليك أن لا تحذف هذه المناظرة %(object_name)s " -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "تحذير اذا كان هناك \"فريق مناظرة\" فوق هذه القائمة من المحتمل عليك أن لا تحذف هذه المناظرة %(objects_name)s" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "لاحظ أن حذف مؤسسة ما يحذف أيضًا جميع الفرق من تلك المؤسسة." -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "إذا كنت متأكدًا تمامًا من حذف %(object_name)s ، فالرجاء حذف الكائنات الواردة أعلاه أولاً ، وتأكد من الاستجابة للتحذير الذي ستراه في صفحة كائنات \"فريق المناظرة \" قبل المتابعة." -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "إذا كنت متأكدًا تمامًا من حذف %(objects_name)s ، فالرجاء حذف الكائنات الواردة أعلاه أولاً ، وتأكد من الاستجابة للتحذير الذي ستراه في صفحة كائنات \"فريق المناظرة \" قبل المتابعة." -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "تبدأ الجولة %(start_time)s" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "الفرق : " -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" @@ -532,275 +522,273 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "لا يوجد قوائم للمدربين لهذه المناظرة " -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "القضايا الغير معلنة " -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "قضايا" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "قضايا المناظرة %(seq)s :" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "القضية ( القضايا ) لهذه المناظرة لم يتم استلامها " -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "المحكم %(adjudicator)s هو رئيس الجلسة في المناظرة بين %(aff)s و%(neg)s في قاعة %(room)s" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "المحكم %(adjudicator)s هو رئيس الجلسة في المناظرة بين %(aff)s و%(neg)s في قاعة %(room)s" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s هو %(type)s يحكم بين %(aff)s و%(neg)s في القاعة %(room)s." -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s هو %(type)s يحكم بين %(aff)s و%(neg)s في القاعة %(room)s." -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s يحكم بين %(aff)s و%(neg)s في %(room)s" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s يحكم بين %(aff)s و%(neg)s في %(room)s" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "المحكم %(adjudicator)s هو رئيس الجلسة في %(room)s" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "المحكم %(adjudicator)s هو رئيس الجلسة في %(room)s" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s يحكم في %(room)s " -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "يبدو أنه لا توجد أي فئات المتحدثين محددة. إذا كنت ترغب في إنتاج علامات تاب المتحدث الخاصة بالفئة ، مثل علامة تبويب مبتدئ ، فاستخدم صفحة فئات المتحدث لتعريفها ، ثم ارجع إلى هذه الصفحة لتعيين أهلية المتحدث." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "العودة إلى التغذية الراجعة " -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "تم اعتماد التغذية الراجعة من %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "لم يقدم التغذية الراجعة : %(adjudicators)s ( قام بتقديمها شفهياً ) " -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "لا يوجد تغذية راجعة لــ%(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "العديد من التغذية الراجعة تم تقديمها لهذه المناظرة : " -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "لا يوجد تغذية راجعة معتمدة من \n" "%(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "%(name)s لا يملك اي تغذية راجعةمعتمدة " -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "في هذه الجولة ( %(round)s )" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "( لم يتم الإعلان ) " -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "القاعة غير معروفة " -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "%(adjudicator)s لن يحكم هذه الجولة" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." @@ -811,181 +799,180 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "%(team)s ليس لدية مناظر في هذه الجولة" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "لم يتم إعلان القرعة حتى الآن " -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "قائمة المشاركون" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "نقاط المتحدث" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "المتأهلون" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "تسمح فئات المتحدث بإنتاج علامات تاب المتحدث الخاصة بالفئة ، على سبيل المثال ، للفئات المبتدئة أو غير الناطقين . في هذه الصفحة ، يمكنك تحديد فئات المتحدثين الموجودة. بعد تحديد الفئات ، يمكنك تعيين أهلية المتحدث على صفحة أهلية المتحدث." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "اذا كنت تريد حذف المتناظر ، تعديد البيانات المنطقة " -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "حفظ نقاط المتحدث " -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "اسم الكود " -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "متحدثون " -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "تعديل الفواصل " -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "%(code_name)s(%(real_name)s)" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "المحكمين" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "متحدثون " -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "الفرق" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "النتائج" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "تسجيل لـ%(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "العودة إلى الجولات " -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" @@ -996,11 +983,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "المتأهلون" diff --git a/tabbycat/participants/locale/bg/LC_MESSAGES/django.mo b/tabbycat/participants/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..cdb599dce37 Binary files /dev/null and b/tabbycat/participants/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/bg/LC_MESSAGES/django.po b/tabbycat/participants/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..b265c497812 --- /dev/null +++ b/tabbycat/participants/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,964 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:59\n" +"Last-Translator: philip_tc\n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" + +#: participants/admin.py +#, python-format +msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" +msgstr "" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d speaker had their URL key removed." +msgid_plural "%(count)d speakers had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +#, python-format +msgid "%(count)d adjudicator had their URL key removed." +msgid_plural "%(count)d adjudicators had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/apps.py participants/views.py +msgid "Participants" +msgstr "" + +#: participants/models.py +msgid "name" +msgstr "" + +#: participants/models.py +msgid "region" +msgstr "" + +#: participants/models.py +msgid "regions" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" +msgstr "" + +#: participants/models.py +msgid "code" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" +msgstr "" + +#: participants/models.py +msgid "institution" +msgstr "" + +#: participants/models.py +msgid "institutions" +msgstr "" + +#: participants/models.py +msgid "tournament" +msgstr "" + +#. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" +msgstr "" + +#: participants/models.py +msgid "slug" +msgstr "" + +#. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Slug for URLs, e.g., \"novice\", \"esl\"" +msgstr "" + +#: participants/models.py +msgid "sequence number" +msgstr "" + +#: participants/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: participants/models.py +msgid "limit" +msgstr "" + +#: participants/models.py +msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: participants/models.py +msgid "public" +msgstr "" + +#: participants/models.py +msgid "If checked, this category will be included in the speaker category tabs shown to the public" +msgstr "" + +#: participants/models.py +msgid "speaker category" +msgstr "" + +#: participants/models.py +msgid "speaker categories" +msgstr "" + +#: participants/models.py +msgid "email address" +msgstr "" + +#: participants/models.py +msgid "phone" +msgstr "" + +#: participants/models.py +msgid "anonymous" +msgstr "" + +#: participants/models.py +msgid "Anonymous persons will have their name and team redacted on public tab releases" +msgstr "" + +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "URL key" +msgstr "" + +#: participants/models.py +msgid "male" +msgstr "" + +#: participants/models.py +msgid "female" +msgstr "" + +#: participants/models.py +msgid "other" +msgstr "" + +#: participants/models.py +msgid "gender" +msgstr "" + +#: participants/models.py +msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" +msgstr "" + +#: participants/models.py +msgid "pronoun" +msgstr "" + +#: participants/models.py +msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" +msgstr "" + +#: participants/models.py +msgid "person" +msgstr "" + +#: participants/models.py +msgid "persons" +msgstr "" + +#: participants/models.py +msgid "full name/suffix" +msgstr "" + +#: participants/models.py +msgid "Do not include institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "short name/suffix" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure institutional identity on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "short name" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "long name" +msgstr "" + +#: participants/models.py +msgid "The full name of the team, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "Uses institutional prefix" +msgstr "" + +#: participants/models.py +msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" +msgstr "" + +#: participants/models.py +msgid "break categories" +msgstr "" + +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py +msgid "none" +msgstr "" + +#: participants/models.py +msgid "swing" +msgstr "" + +#: participants/models.py +msgid "composite" +msgstr "" + +#: participants/models.py +msgid "bye" +msgstr "" + +#: participants/models.py +msgid "type" +msgstr "" + +#: participants/models.py +msgid "emoji" +msgstr "" + +#: participants/models.py +msgid "team" +msgstr "" + +#: participants/models.py +msgid "teams" +msgstr "" + +#: participants/models.py +msgid "Teams must have an institution if they are using the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a full name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a short name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "speaker" +msgstr "" + +#: participants/models.py +msgid "speakers" +msgstr "" + +#: participants/models.py +msgid "Adjudicators not assigned to any tournament can be shared between tournaments" +msgstr "" + +#: participants/models.py +msgid "base score" +msgstr "" + +#: participants/models.py +msgid "team conflicts" +msgstr "" + +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "" + +#: participants/models.py +msgid "always trainee" +msgstr "" + +#: participants/models.py +msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" +msgstr "" + +#: participants/models.py +msgid "breaking" +msgstr "" + +#: participants/models.py +msgid "independent" +msgstr "" + +#: participants/models.py +msgid "adjudication core" +msgstr "" + +#: participants/models.py +msgid "adjudicator" +msgstr "" + +#: participants/models.py +msgid "adjudicators" +msgstr "" + +#: participants/tables.py +msgid "Points after this debate" +msgstr "" + +#: participants/tables.py +msgid "Wins after this debate" +msgstr "" + +#: participants/tables.py +msgid "Speaker scores
    (in speaking order)" +msgstr "" + +#: participants/tables.py +msgid "Speaks" +msgstr "" + +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html +#, python-format +msgid "About %(name)s" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Independent adjudicator" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Member of the adjudication core" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institution:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Unaffiliated" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Region:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "The institutional affiliations of adjudicators are not public at this tournament." +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institutional Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "; " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "None" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Team Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid ", " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Adjudicator Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Room Constraints:" +msgstr "" + +#: participants/templates/admin/participants/adjudicator/change_form.html +msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "" + +#. Translators: This follows the above sentence in the same paragraph. +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "Note that deleting an institution also deletes all teams from that institution." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/team/change_form.html +msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "The round begins at %(start_time)s" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Teams:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Adjudicator:" +msgid_plural "Adjudicators:" +msgstr[0] "" +msgstr[1] "" + +#: participants/templates/current_round/common.html +msgctxt "chair icon" +msgid "Ⓒ" +msgstr "" + +#: participants/templates/current_round/common.html +msgctxt "trainee icon" +msgid "Ⓣ" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "There are no panellists or trainees assigned to this debate." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motions are not released to public." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motion:" +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "Motion %(seq)s:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "The motion(s) for this round haven't yet been released." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/edit_speaker_eligibility.html +#, python-format +msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "Feedback Returns" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "More feedback submissions than expected for this debate:" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Unexpected feedback submission for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "%(name)s doesn't have any feedback to submit." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "In This Round (%(round)s)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "(Not Released to Public)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "Room TBA" +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(adjudicator)s is not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You are not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." +msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." +msgstr[0] "" +msgstr[1] "" + +#: participants/templates/in_this_round.html +msgid "If this is an error, please contact a tab director immediately." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(team)s does not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You do not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "The draw for this round hasn't yet been released." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Participants List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Institutions List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Emails have already been sent." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Email Team Registrations" +msgstr "" + +#: participants/templates/participants_subnav.html participants/views.py +msgid "Code Names" +msgstr "" + +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html +msgid "Speaker Categories" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Speaker Eligibility" +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +#, python-format +msgid "If you want to delete speaker categories, use the Edit Database area." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Save Speaker Categories" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Code name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speakers:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Eligible for break categories:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speaker categories:" +msgstr "" + +#: participants/templatetags/team_name_for_data_entry.py +#, python-format +msgid "%(code_name)s (%(real_name)s)" +msgstr "" + +#: participants/views.py +msgid "Adjudicators" +msgstr "" + +#: participants/views.py +msgid "Speakers" +msgstr "" + +#: participants/views.py +msgid "Institutions" +msgstr "" + +#: participants/views.py +msgid "Code" +msgstr "" + +#: participants/views.py +msgid "Full name" +msgstr "" + +#: participants/views.py +msgid "Region" +msgstr "" + +#: participants/views.py +msgid "Teams" +msgstr "" + +#: participants/views.py +msgid "Number of teams" +msgstr "" + +#: participants/views.py +msgid "Adjs" +msgstr "" + +#: participants/views.py +msgid "Number of adjudicators, excluding independents" +msgstr "" + +#: participants/views.py +msgid "IAs" +msgstr "" + +#: participants/views.py +msgid "Number of independent adjudicators" +msgstr "" + +#: participants/views.py +msgid "Code name" +msgstr "" + +#: participants/views.py +msgid "Team Registration" +msgstr "" + +#: participants/views.py +msgid "Results" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Record for %(name)s" +msgstr "" + +#: participants/views.py +msgid "Previous Rounds" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Saved category: %(list)s" +msgid_plural "Saved categories: %(list)s" +msgstr[0] "" +msgstr[1] "" + +#: participants/views.py +msgid "No changes were made to the categories." +msgstr "" + +#: participants/views.py +msgid "Speaker Category Eligibility" +msgstr "" + diff --git a/tabbycat/participants/locale/bn/LC_MESSAGES/django.po b/tabbycat/participants/locale/bn/LC_MESSAGES/django.po index 527d3c497b9..c4263d9e92c 100644 --- a/tabbycat/participants/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "অংশগ্রহণকারী" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "নাম" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "প্রতিষ্ঠান" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "প্রতিযোগিতা" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "ক্রম সংখ্যা" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "নামবিহীন" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "সাংকেতিক নাম" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "সাংকেতিক নাম" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "ধরন / ছাপার অক্ষর" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "দল" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "দলসমূহ" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "বক্তা" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "মূল স্কোর" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "ব্রেকিং" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "বিচারক" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "প্রতিষ্ঠান:" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "দলসমূহ:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "প্রস্তাব:" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "সাংকেতিক নাম:" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "দলসমূহ" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "সাংকেতিক নাম" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "ফলাফল" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/ca/LC_MESSAGES/django.mo b/tabbycat/participants/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..0c1e47717d8 Binary files /dev/null and b/tabbycat/participants/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/ca/LC_MESSAGES/django.po b/tabbycat/participants/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..facae240e97 --- /dev/null +++ b/tabbycat/participants/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,964 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-02 21:50\n" +"Last-Translator: philip_tc\n" +"Language-Team: Catalan\n" +"Language: ca_ES\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" + +#: participants/admin.py +#, python-format +msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" +msgstr "" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d speaker had their URL key removed." +msgid_plural "%(count)d speakers had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +#, python-format +msgid "%(count)d adjudicator had their URL key removed." +msgid_plural "%(count)d adjudicators had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/apps.py participants/views.py +msgid "Participants" +msgstr "Participants" + +#: participants/models.py +msgid "name" +msgstr "nom" + +#: participants/models.py +msgid "region" +msgstr "" + +#: participants/models.py +msgid "regions" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" +msgstr "" + +#: participants/models.py +msgid "code" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" +msgstr "" + +#: participants/models.py +msgid "institution" +msgstr "Institució" + +#: participants/models.py +msgid "institutions" +msgstr "" + +#: participants/models.py +msgid "tournament" +msgstr "" + +#. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" +msgstr "" + +#: participants/models.py +msgid "slug" +msgstr "" + +#. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Slug for URLs, e.g., \"novice\", \"esl\"" +msgstr "" + +#: participants/models.py +msgid "sequence number" +msgstr "número de seqüència" + +#: participants/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: participants/models.py +msgid "limit" +msgstr "" + +#: participants/models.py +msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: participants/models.py +msgid "public" +msgstr "" + +#: participants/models.py +msgid "If checked, this category will be included in the speaker category tabs shown to the public" +msgstr "" + +#: participants/models.py +msgid "speaker category" +msgstr "" + +#: participants/models.py +msgid "speaker categories" +msgstr "" + +#: participants/models.py +msgid "email address" +msgstr "" + +#: participants/models.py +msgid "phone" +msgstr "" + +#: participants/models.py +msgid "anonymous" +msgstr "" + +#: participants/models.py +msgid "Anonymous persons will have their name and team redacted on public tab releases" +msgstr "" + +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "URL key" +msgstr "" + +#: participants/models.py +msgid "male" +msgstr "" + +#: participants/models.py +msgid "female" +msgstr "" + +#: participants/models.py +msgid "other" +msgstr "" + +#: participants/models.py +msgid "gender" +msgstr "" + +#: participants/models.py +msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" +msgstr "" + +#: participants/models.py +msgid "pronoun" +msgstr "" + +#: participants/models.py +msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" +msgstr "" + +#: participants/models.py +msgid "person" +msgstr "" + +#: participants/models.py +msgid "persons" +msgstr "" + +#: participants/models.py +msgid "full name/suffix" +msgstr "" + +#: participants/models.py +msgid "Do not include institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "short name/suffix" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure institutional identity on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "short name" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "long name" +msgstr "" + +#: participants/models.py +msgid "The full name of the team, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "Uses institutional prefix" +msgstr "" + +#: participants/models.py +msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" +msgstr "" + +#: participants/models.py +msgid "break categories" +msgstr "" + +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py +msgid "none" +msgstr "Cap" + +#: participants/models.py +msgid "swing" +msgstr "" + +#: participants/models.py +msgid "composite" +msgstr "" + +#: participants/models.py +msgid "bye" +msgstr "" + +#: participants/models.py +msgid "type" +msgstr "" + +#: participants/models.py +msgid "emoji" +msgstr "" + +#: participants/models.py +msgid "team" +msgstr "equip" + +#: participants/models.py +msgid "teams" +msgstr "" + +#: participants/models.py +msgid "Teams must have an institution if they are using the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a full name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a short name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "speaker" +msgstr "" + +#: participants/models.py +msgid "speakers" +msgstr "" + +#: participants/models.py +msgid "Adjudicators not assigned to any tournament can be shared between tournaments" +msgstr "" + +#: participants/models.py +msgid "base score" +msgstr "puntuació de l'examen" + +#: participants/models.py +msgid "team conflicts" +msgstr "" + +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "" + +#: participants/models.py +msgid "always trainee" +msgstr "" + +#: participants/models.py +msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" +msgstr "" + +#: participants/models.py +msgid "breaking" +msgstr "" + +#: participants/models.py +msgid "independent" +msgstr "" + +#: participants/models.py +msgid "adjudication core" +msgstr "" + +#: participants/models.py +msgid "adjudicator" +msgstr "jutges" + +#: participants/models.py +msgid "adjudicators" +msgstr "" + +#: participants/tables.py +msgid "Points after this debate" +msgstr "Punts després d'aquest debat" + +#: participants/tables.py +msgid "Wins after this debate" +msgstr "" + +#: participants/tables.py +msgid "Speaker scores
    (in speaking order)" +msgstr "Punts d'orador
    (en ordre)" + +#: participants/tables.py +msgid "Speaks" +msgstr "Punts d'Orador" + +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html +#, python-format +msgid "About %(name)s" +msgstr "Sobre %(name)s" + +#: participants/templates/adjudicator_registration_card.html +msgid "Independent adjudicator" +msgstr "Jutge Independent" + +#: participants/templates/adjudicator_registration_card.html +msgid "Member of the adjudication core" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institution:" +msgstr "Institució:" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Unaffiliated" +msgstr "Independent" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Region:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "The institutional affiliations of adjudicators are not public at this tournament." +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institutional Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "; " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "None" +msgstr "Cap" + +#: participants/templates/adjudicator_registration_card.html +msgid "Team Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid ", " +msgstr ", " + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Adjudicator Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Room Constraints:" +msgstr "" + +#: participants/templates/admin/participants/adjudicator/change_form.html +msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "" + +#. Translators: This follows the above sentence in the same paragraph. +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "Note that deleting an institution also deletes all teams from that institution." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/team/change_form.html +msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "The round begins at %(start_time)s" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Teams:" +msgstr "Equips:" + +#: participants/templates/current_round/common.html +msgid "Adjudicator:" +msgid_plural "Adjudicators:" +msgstr[0] "Jutge:" +msgstr[1] "Grup de Jutges:" + +#: participants/templates/current_round/common.html +msgctxt "chair icon" +msgid "Ⓒ" +msgstr "Ⓟ" + +#: participants/templates/current_round/common.html +msgctxt "trainee icon" +msgid "Ⓣ" +msgstr "Ⓐ" + +#: participants/templates/current_round/common.html +msgid "There are no panellists or trainees assigned to this debate." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motions are not released to public." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motion:" +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "Motion %(seq)s:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "The motion(s) for this round haven't yet been released." +msgstr "La moció d'aquesta ronda encara no s'han publicat." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "%(adjudicator)s és principal jutjant la %(room)s." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team." +msgstr "%(team)s està debatent com l'equip de %(side)s." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "El Debat de %(team)s succeeix a %(room)s." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/edit_speaker_eligibility.html +#, python-format +msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "Feedback Returns" +msgstr "Devolució de retroalimentacions" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has submitted feedback for %(adjudicator)s" +msgstr "Ha enviat retroalimentació per a %(adjudicator)s" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" +msgstr "No ha enviat retroalimentació per a un de: %(adjudicators)s (qualsevol que hagi donat retroalimentació oral)" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "More feedback submissions than expected for this debate:" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Unexpected feedback submission for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "%(name)s doesn't have any feedback to submit." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "In This Round (%(round)s)" +msgstr "En aquesta ronda (%(round)s)" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "En aquesta ronda" + +#: participants/templates/in_this_round.html +msgid "(Not Released to Public)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "Room TBA" +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(adjudicator)s is not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You are not adjudicating this round." +msgstr "No estàs jutjant aquesta ronda." + +#: participants/templates/in_this_round.html +#, python-format +msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." +msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." +msgstr[0] "" +msgstr[1] "" + +#: participants/templates/in_this_round.html +msgid "If this is an error, please contact a tab director immediately." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(team)s does not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You do not have a debate this round." +msgstr "No teniu debat aquesta ronda." + +#: participants/templates/in_this_round.html +msgid "The draw for this round hasn't yet been released." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Participants List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Institutions List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Emails have already been sent." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Email Team Registrations" +msgstr "" + +#: participants/templates/participants_subnav.html participants/views.py +msgid "Code Names" +msgstr "" + +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html +msgid "Speaker Categories" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Speaker Eligibility" +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +#, python-format +msgid "If you want to delete speaker categories, use the Edit Database area." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Save Speaker Categories" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Team name:" +msgstr "Nom de l'equip:" + +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Code name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speakers:" +msgstr "Oradors:" + +#: participants/templates/team_registration_card.html +msgid "Eligible for break categories:" +msgstr "Elegibilitat per al tall de les categories:" + +#: participants/templates/team_registration_card.html +msgid "Speaker categories:" +msgstr "Categories d'orador:" + +#: participants/templatetags/team_name_for_data_entry.py +#, python-format +msgid "%(code_name)s (%(real_name)s)" +msgstr "" + +#: participants/views.py +msgid "Adjudicators" +msgstr "Grup de Jutges" + +#: participants/views.py +msgid "Speakers" +msgstr "Oradors" + +#: participants/views.py +msgid "Institutions" +msgstr "Institucions" + +#: participants/views.py +msgid "Code" +msgstr "" + +#: participants/views.py +msgid "Full name" +msgstr "" + +#: participants/views.py +msgid "Region" +msgstr "" + +#: participants/views.py +msgid "Teams" +msgstr "" + +#: participants/views.py +msgid "Number of teams" +msgstr "" + +#: participants/views.py +msgid "Adjs" +msgstr "" + +#: participants/views.py +msgid "Number of adjudicators, excluding independents" +msgstr "" + +#: participants/views.py +msgid "IAs" +msgstr "" + +#: participants/views.py +msgid "Number of independent adjudicators" +msgstr "" + +#: participants/views.py +msgid "Code name" +msgstr "" + +#: participants/views.py +msgid "Team Registration" +msgstr "" + +#: participants/views.py +msgid "Results" +msgstr "Resultats" + +#: participants/views.py +#, python-format +msgid "Record for %(name)s" +msgstr "Recorregut per a %(name)s" + +#: participants/views.py +msgid "Previous Rounds" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Saved category: %(list)s" +msgid_plural "Saved categories: %(list)s" +msgstr[0] "" +msgstr[1] "" + +#: participants/views.py +msgid "No changes were made to the categories." +msgstr "" + +#: participants/views.py +msgid "Speaker Category Eligibility" +msgstr "" + diff --git a/tabbycat/participants/locale/cs/LC_MESSAGES/django.mo b/tabbycat/participants/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..ecbc9151136 Binary files /dev/null and b/tabbycat/participants/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/cs/LC_MESSAGES/django.po b/tabbycat/participants/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..5121f7de5b7 --- /dev/null +++ b/tabbycat/participants/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,978 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:59\n" +"Last-Translator: philip_tc\n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" + +#: participants/admin.py +#, python-format +msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" +msgstr "" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d speaker had their URL key removed." +msgid_plural "%(count)d speakers had their URL keys removed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/admin.py +#, python-format +msgid "%(count)d adjudicator had their URL key removed." +msgid_plural "%(count)d adjudicators had their URL keys removed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/apps.py participants/views.py +msgid "Participants" +msgstr "" + +#: participants/models.py +msgid "name" +msgstr "" + +#: participants/models.py +msgid "region" +msgstr "" + +#: participants/models.py +msgid "regions" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" +msgstr "" + +#: participants/models.py +msgid "code" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" +msgstr "" + +#: participants/models.py +msgid "institution" +msgstr "" + +#: participants/models.py +msgid "institutions" +msgstr "" + +#: participants/models.py +msgid "tournament" +msgstr "turnaje" + +#. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" +msgstr "" + +#: participants/models.py +msgid "slug" +msgstr "" + +#. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Slug for URLs, e.g., \"novice\", \"esl\"" +msgstr "" + +#: participants/models.py +msgid "sequence number" +msgstr "" + +#: participants/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: participants/models.py +msgid "limit" +msgstr "" + +#: participants/models.py +msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: participants/models.py +msgid "public" +msgstr "" + +#: participants/models.py +msgid "If checked, this category will be included in the speaker category tabs shown to the public" +msgstr "" + +#: participants/models.py +msgid "speaker category" +msgstr "" + +#: participants/models.py +msgid "speaker categories" +msgstr "" + +#: participants/models.py +msgid "email address" +msgstr "" + +#: participants/models.py +msgid "phone" +msgstr "" + +#: participants/models.py +msgid "anonymous" +msgstr "" + +#: participants/models.py +msgid "Anonymous persons will have their name and team redacted on public tab releases" +msgstr "" + +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "URL key" +msgstr "" + +#: participants/models.py +msgid "male" +msgstr "" + +#: participants/models.py +msgid "female" +msgstr "" + +#: participants/models.py +msgid "other" +msgstr "" + +#: participants/models.py +msgid "gender" +msgstr "" + +#: participants/models.py +msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" +msgstr "" + +#: participants/models.py +msgid "pronoun" +msgstr "" + +#: participants/models.py +msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" +msgstr "" + +#: participants/models.py +msgid "person" +msgstr "" + +#: participants/models.py +msgid "persons" +msgstr "rozhodčí" + +#: participants/models.py +msgid "full name/suffix" +msgstr "" + +#: participants/models.py +msgid "Do not include institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "short name/suffix" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure institutional identity on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "short name" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "long name" +msgstr "" + +#: participants/models.py +msgid "The full name of the team, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "Uses institutional prefix" +msgstr "" + +#: participants/models.py +msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" +msgstr "" + +#: participants/models.py +msgid "break categories" +msgstr "" + +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py +msgid "none" +msgstr "" + +#: participants/models.py +msgid "swing" +msgstr "" + +#: participants/models.py +msgid "composite" +msgstr "" + +#: participants/models.py +msgid "bye" +msgstr "" + +#: participants/models.py +msgid "type" +msgstr "" + +#: participants/models.py +msgid "emoji" +msgstr "" + +#: participants/models.py +msgid "team" +msgstr "tým" + +#: participants/models.py +msgid "teams" +msgstr "týmy" + +#: participants/models.py +msgid "Teams must have an institution if they are using the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a full name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a short name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "speaker" +msgstr "" + +#: participants/models.py +msgid "speakers" +msgstr "" + +#: participants/models.py +msgid "Adjudicators not assigned to any tournament can be shared between tournaments" +msgstr "" + +#: participants/models.py +msgid "base score" +msgstr "" + +#: participants/models.py +msgid "team conflicts" +msgstr "" + +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "" + +#: participants/models.py +msgid "always trainee" +msgstr "" + +#: participants/models.py +msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" +msgstr "" + +#: participants/models.py +msgid "breaking" +msgstr "" + +#: participants/models.py +msgid "independent" +msgstr "" + +#: participants/models.py +msgid "adjudication core" +msgstr "" + +#: participants/models.py +msgid "adjudicator" +msgstr "rozhodčí" + +#: participants/models.py +msgid "adjudicators" +msgstr "rozhodčí" + +#: participants/tables.py +msgid "Points after this debate" +msgstr "" + +#: participants/tables.py +msgid "Wins after this debate" +msgstr "" + +#: participants/tables.py +msgid "Speaker scores
    (in speaking order)" +msgstr "" + +#: participants/tables.py +msgid "Speaks" +msgstr "" + +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html +#, python-format +msgid "About %(name)s" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Independent adjudicator" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Member of the adjudication core" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institution:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Unaffiliated" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Region:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "The institutional affiliations of adjudicators are not public at this tournament." +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institutional Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "; " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "None" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Team Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid ", " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Adjudicator Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Room Constraints:" +msgstr "" + +#: participants/templates/admin/participants/adjudicator/change_form.html +msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "" + +#. Translators: This follows the above sentence in the same paragraph. +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "Note that deleting an institution also deletes all teams from that institution." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/team/change_form.html +msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "The round begins at %(start_time)s" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Teams:" +msgstr "Týmy:" + +#: participants/templates/current_round/common.html +msgid "Adjudicator:" +msgid_plural "Adjudicators:" +msgstr[0] "Rozhodčí:" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/templates/current_round/common.html +msgctxt "chair icon" +msgid "Ⓒ" +msgstr "" + +#: participants/templates/current_round/common.html +msgctxt "trainee icon" +msgid "Ⓣ" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "There are no panellists or trainees assigned to this debate." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motions are not released to public." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motion:" +msgstr "Teze:" + +#: participants/templates/current_round/common.html +#, python-format +msgid "Motion %(seq)s:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "The motion(s) for this round haven't yet been released." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/edit_speaker_eligibility.html +#, python-format +msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "Feedback Returns" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "More feedback submissions than expected for this debate:" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Unexpected feedback submission for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "%(name)s doesn't have any feedback to submit." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "In This Round (%(round)s)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "(Not Released to Public)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "Room TBA" +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(adjudicator)s is not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You are not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." +msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/templates/in_this_round.html +msgid "If this is an error, please contact a tab director immediately." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(team)s does not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You do not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "The draw for this round hasn't yet been released." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Participants List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Institutions List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Emails have already been sent." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Email Team Registrations" +msgstr "" + +#: participants/templates/participants_subnav.html participants/views.py +msgid "Code Names" +msgstr "" + +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html +msgid "Speaker Categories" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Speaker Eligibility" +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +#, python-format +msgid "If you want to delete speaker categories, use the Edit Database area." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Save Speaker Categories" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Code name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speakers:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Eligible for break categories:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speaker categories:" +msgstr "" + +#: participants/templatetags/team_name_for_data_entry.py +#, python-format +msgid "%(code_name)s (%(real_name)s)" +msgstr "" + +#: participants/views.py +msgid "Adjudicators" +msgstr "Rozhodčí" + +#: participants/views.py +msgid "Speakers" +msgstr "" + +#: participants/views.py +msgid "Institutions" +msgstr "" + +#: participants/views.py +msgid "Code" +msgstr "" + +#: participants/views.py +msgid "Full name" +msgstr "" + +#: participants/views.py +msgid "Region" +msgstr "" + +#: participants/views.py +msgid "Teams" +msgstr "Týmy" + +#: participants/views.py +msgid "Number of teams" +msgstr "" + +#: participants/views.py +msgid "Adjs" +msgstr "" + +#: participants/views.py +msgid "Number of adjudicators, excluding independents" +msgstr "" + +#: participants/views.py +msgid "IAs" +msgstr "" + +#: participants/views.py +msgid "Number of independent adjudicators" +msgstr "" + +#: participants/views.py +msgid "Code name" +msgstr "" + +#: participants/views.py +msgid "Team Registration" +msgstr "" + +#: participants/views.py +msgid "Results" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Record for %(name)s" +msgstr "" + +#: participants/views.py +msgid "Previous Rounds" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Saved category: %(list)s" +msgid_plural "Saved categories: %(list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/views.py +msgid "No changes were made to the categories." +msgstr "" + +#: participants/views.py +msgid "Speaker Category Eligibility" +msgstr "" + diff --git a/tabbycat/participants/locale/de/LC_MESSAGES/django.po b/tabbycat/participants/locale/de/LC_MESSAGES/django.po index a46e316f57a..ef3de6b19af 100644 --- a/tabbycat/participants/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:33\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: German\n" "Language: de_DE\n" @@ -15,845 +15,950 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" -#: participants/admin.py:94 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:211 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:206 +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:40 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:20 participants/models.py:36 -#: participants/models.py:65 participants/models.py:95 +#: participants/models.py msgid "name" msgstr "name" -#: participants/models.py:23 participants/models.py:44 +#: participants/models.py msgid "region" msgstr "Region" -#: participants/models.py:24 +#: participants/models.py msgid "regions" msgstr "Regionen" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:38 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:40 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:42 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:54 participants/models.py:154 -#: participants/models.py:340 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:55 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:63 participants/models.py:156 -#: participants/models.py:343 +#: participants/models.py msgid "tournament" msgstr "Turnier" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:67 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:69 +#: participants/models.py msgid "slug" msgstr "URL-Kürzel" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:71 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:73 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:76 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:79 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:86 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:87 participants/models.py:321 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:97 -msgid "e-mail address" +#: participants/models.py +msgid "email address" msgstr "" -#: participants/models.py:99 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:101 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:105 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:110 +#: participants/models.py msgid "male" msgstr "männlich" -#: participants/models.py:111 +#: participants/models.py msgid "female" msgstr "weiblich" -#: participants/models.py:112 +#: participants/models.py msgid "other" msgstr "andere" -#: participants/models.py:114 +#: participants/models.py msgid "gender" msgstr "Geschlecht" -#: participants/models.py:115 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:117 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:121 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:137 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:140 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:141 -msgid "The name shown in the draw. Do not include institution name (see \"uses institutional prefix\" below)" +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:143 -msgid "code name" -msgstr "" - -#: participants/models.py:144 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:147 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:148 -msgid "The name shown in the draw, including institution name. (This is autogenerated.)" +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:150 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:158 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:161 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:172 +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:173 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:174 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:175 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "type" msgstr "typ" -#: participants/models.py:182 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:196 participants/models.py:319 +#: participants/models.py msgid "team" msgstr "Team" -#: participants/models.py:197 +#: participants/models.py msgid "teams" msgstr "Teams" -#: participants/models.py:302 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:304 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:306 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:324 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:325 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:344 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:346 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:352 -msgid "institution conflicts" +#: participants/models.py +msgid "team conflicts" msgstr "" -#: participants/models.py:356 -msgid "team conflicts" +#: participants/models.py +msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:360 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:362 +#: participants/models.py msgid "breaking" msgstr "Breakend" -#: participants/models.py:364 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:366 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "adjudicator" msgstr "Juror" -#: participants/models.py:376 +#: participants/models.py msgid "adjudicators" msgstr "Juroren" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" -msgstr "RednerInnenpunkte" +msgstr "Einzelrednerpunkte" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "Über %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:26 -#: participants/templates/team_registration_card.html:57 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:30 -#: participants/templates/team_registration_card.html:61 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:34 -#: participants/templates/team_registration_card.html:65 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Region:" -#: participants/templates/adjudicator_registration_card.html:40 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:47 -#: participants/templates/team_registration_card.html:74 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:49 -#: participants/templates/team_registration_card.html:76 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:51 -#: participants/templates/adjudicator_registration_card.html:58 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:79 -#: participants/templates/team_registration_card.html:30 -#: participants/templates/team_registration_card.html:41 -#: participants/templates/team_registration_card.html:49 -#: participants/templates/team_registration_card.html:78 -#: participants/templates/team_registration_card.html:85 -#: participants/templates/team_registration_card.html:95 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" -msgstr "" +msgstr "Leer" -#: participants/templates/adjudicator_registration_card.html:54 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:56 -#: participants/templates/adjudicator_registration_card.html:64 -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/adjudicator_registration_card.html:77 -#: participants/templates/team_registration_card.html:28 -#: participants/templates/team_registration_card.html:39 -#: participants/templates/team_registration_card.html:47 -#: participants/templates/team_registration_card.html:83 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:61 -#: participants/templates/team_registration_card.html:81 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:75 -#: participants/templates/team_registration_card.html:91 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:13 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format -msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete these %(objects_name)s." +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:20 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:32 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:40 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:46 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Teams:" -#: participants/templates/current_round/common.html:30 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Juror:" msgstr[1] "Juroren:" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:46 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:56 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:59 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Thema:" -#: participants/templates/current_round/common.html:63 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Thema %(seq)s:" -#: participants/templates/current_round/common.html:71 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:13 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:17 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:23 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:27 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:33 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:37 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:48 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:52 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating against %(opponent)s in %(room)s." +msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating against %(opponent)s in %(room)s." +msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:37 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:41 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:47 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:51 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:39 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:48 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:55 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:8 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:12 +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:19 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:31 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:50 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:56 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:71 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:87 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:134 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:14 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:14 -msgid "Full name:" +#: participants/templates/team_registration_card.html +msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:18 +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:26 +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:37 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:45 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:45 +#: participants/views.py msgid "Adjudicators" msgstr "Juroren" -#: participants/views.py:54 +#: participants/views.py msgid "Speakers" -msgstr "RednerInnen" +msgstr "Redner" -#: participants/views.py:85 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:101 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:104 +#: participants/views.py msgid "Region" msgstr "Region" -#: participants/views.py:106 +#: participants/views.py msgid "Teams" msgstr "Teams" -#: participants/views.py:106 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:108 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:111 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:142 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:162 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:208 +#: participants/views.py msgid "Results" msgstr "Ergebnisse" -#: participants/views.py:213 participants/views.py:247 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:244 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:333 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:339 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:352 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/en/LC_MESSAGES/django.po b/tabbycat/participants/locale/en/LC_MESSAGES/django.po index 1959a2f7f52..82ed19a0435 100644 --- a/tabbycat/participants/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/en/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" "PO-Revision-Date: 2019-07-11 23:49\n" "Last-Translator: philip_tc\n" "Language-Team: English\n" @@ -16,959 +16,954 @@ msgstr "" "X-Crowdin-Language: en\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py +msgid "seed" +msgstr "" + +#: participants/models.py +msgid "Used as initial ranking to power-pair the first round" +msgstr "" + +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/es/LC_MESSAGES/django.po b/tabbycat/participants/locale/es/LC_MESSAGES/django.po index be68d32daaa..6ede92380c5 100644 --- a/tabbycat/participants/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:59\n" "Last-Translator: philip_tc\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "El equipo no puede estar en una categoría de break en un torneo diferente. Por favor elimina: %(category)s" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "Borrar clave URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "a %(count)d juez se le ha quitado su clave URL" msgstr[1] "a %(count)d jueces se les han quitado sus claves URL" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "Participantes" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nombre" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "región" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "regiones" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "El nombre completo de la institución, ej: \"Universidad del Rosario\", \"Universidad de Cambridge\"" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "código" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "Cómo es llamada la institución típicamente, ej: \"El Rosario\", \"Cambridge\"" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "institución" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "instituciones" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "torneo" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "Nombre para mostrar, ej: \"Novato\", \"ESL\"" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "número de secuencia" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "El orden en que se muestran las categorías" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "limite" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "Se mostrarán como máximo este número de oradores en el tab público, o use 0 para no poner un límite" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "público" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "Si está marcada, esta categoría se incluirá en las pestañas de la categoría del orador que se muestran al público" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "categoría del orador" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "categorías del orador" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "teléfono" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "anónimo" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "Las personas anónimas tendrán su nombre y equipo redactado en las publicaciones de tab públicas" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "clave URL" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "hombre" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "mujer" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "otro" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "género" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "El género solo se muestra en la interfaz de jueces, y en ningún otro lugar" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "pronombre" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "Si imprime las ballots usando Tabbycat, existe la opción de preimprimir pronombres" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "persona" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "personas" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "nombre/sufijo completo" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "No incluya el nombre de la institución (consulte \"usos del prefijo institucional\" más adelante)" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "nombre/sufijo corto" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "nombre corto" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "nombre largo" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "El nombre completo del equipo, incluyendo el nombre de la institución. (Esto es autogenerado.)" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "Usos del prefijo institucional" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "Si está marcado, un equipo llamado \"1\" de Victoria se mostrará como \"Victoria 1\"" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "categorias de break" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "conflictos de institución" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "ninguna" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "compuesto" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "adiós" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "tipo" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "equipo" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "equipos" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "Los equipos deben tener una institución si están usando el prefijo institucional." -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "Los equipos deben tener un nombre completo si no usan el prefijo institucional." -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "Los equipos deben tener un nombre corto si no usan el prefijo institucional." -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "orador" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "oradores" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "Los jueces que no están asignados a ningún torneo pueden compartirse entre torneos" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "conflictos de equipo" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "trainee siempre (a.k.a. PittaⓉ)" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "Si se selecciona, este juez nunca se asignará automáticamente a un puesto con voto, independientemente de su puntaje" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "pasando el break" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "independiente" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "adjudicación" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "juez" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "jueces" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "Puntos luego de este debate" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "Rondas ganadas después de este debate" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "Puntajes de orador
    (en orden de intervención)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "Discursos" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "Sobre %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "Institución:" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Región:" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "Limitaciones de sala:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "Alerta: si hay objetos que pertenezcan al grupo “equipo de debate”, tal vez no deberías borrar este%(object_name)s" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "Alerta: si hay objetos que pertenezcan al grupo “equipo de debate”, tal vez no deberías borrar estos %(objects_name)s." #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "Note que borrar una institución también borra todos los equipos de esta institución." -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Si está muy seguro de borrar este%(object_name)s, por favor borre los objetos de arriba primero, y asegúrese de prestar especial atención a la advertencia que verá la página de objetos “equipo de debate” antes de proceder. " -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Si está muy seguro de borrar estos %(objects_name)s, por favor borre los objetos de arriba primero, y asegúrese de prestar especial atención a la advertencia que verá la página de objetos “equipo de debate” antes de proceder. " -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "La ronda empieza en %(start_time)s" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Equipos:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Juez" msgstr[1] "Jueces:" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "No hay jueces panelistas o trainees asignados a este debate." -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "Las mociones no son liberadas al público" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Moción:" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Moción %(seq)s:" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "La moción (o mociones) para esta ronda no ha sido liberada." -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s es el juez principal y adjudica a %(aff)s contra %(neg)s en %(room)s." -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s es el juez principal y adjudica a %(aff)scontra%(neg)sen %(room)s." -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s es juez %(type)s y adjudica a %(aff)s contra %(neg)s en %(room)s." -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s es juez %(type)s y adjudica a %(aff)scontra%(neg)sen%(room)s." -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s adjudica a %(aff)s contra %(neg)s en %(room)s." -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s adjudica a %(aff)s contra %(neg)s en %(room)s." -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s es el juez principal y adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s es el juez principal y adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s es juez %(type)s y adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s es juez %(type)s y adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s adjudica en %(room)s." -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "Parece que no hay ninguna categoría de oradores definida. Si quisiera producir tabs por categorías de los oradores, tales como novato o ESL, use la página Categorías de Oradores para definirlas, lego regrese a esta página para configurar la elegibilidad del orador." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "Devoluciones de retroalimentación" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "Ha enviado retroalimentación para %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "No ha enviado retroalimentación para uno de: %(adjudicators)s(el que dio la retroalimentación oral)" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "No ha enviado retroalimentación para %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "Hay más envíos de retroalimentación de los esperados para este debate:" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "envío de retroalimentación inesperado para %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "%(name)s no tiene ninguna retroalimentación por enviar." -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "En Esta Ronda (%(round)s)" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "(No Lanzado al Público)" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "%(adjudicator)s no adjudicará en esta ronda." -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "%(team)s no tiene debate esta ronda." -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "El enfrentamiento de esta ronda aún no se ha lanzado." -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "Lista de Participantes" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "Nombres en clave" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "Categorías de Orador" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "Elegibilidad del Orador" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "Las categorías de orador permiten producir tabs específicos por categoría, ej., para las categorías novatos o ESL. En esta página, puede definir que categorías de orador existen. DEspués de definir las categorías, puede configurar la elegibilidad del orador en la página de Eligibilidad del Orador." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "Si quiere eliminar categorías de oradores, use la área Editar Base de Datos." -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "Guardar Categorías de Orador" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Oradores:" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "Elegible para categorías de break:" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "Jueces" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "Oradores" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "Instituciones" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "Equipos" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "Resultados" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "Registro para %(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "Rondas Previas" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "Categoría guardada: %(list)s" msgstr[1] "Categorías guardadas: %(list)s" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "Ningún cambio fue hecho a las categorías." -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "Elegibilidad de Categorías de Oradores" diff --git a/tabbycat/participants/locale/fr/LC_MESSAGES/django.po b/tabbycat/participants/locale/fr/LC_MESSAGES/django.po index 9a65795b0e5..0693616eb3a 100644 --- a/tabbycat/participants/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2022-08-08 17:01\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-12 15:51\n" "Last-Translator: philip_tc\n" "Language-Team: French\n" "Language: fr_FR\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "L’équipe ne peut pas être dans la catégorie de qualification d’un autre tournoi. Veuillez enlever : %(category)s" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "Émoji & Code" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "Supprimer clé d’URL" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "%(count)d orateur a eu leur clé d’URL supprimé." msgstr[1] "%(count)d orateurs ont eu leurs clés d’URL supprimés." -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "Supprimer clé d’URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "Réinitialiser émoji" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "%(count)d équipe a fait réinitialiser leur émoji." msgstr[1] "%(count)d équipes ont eu leurs émoji réinitialisés." -#: participants/admin.py:164 -msgid "Reset emoji" -msgstr "Réinitialiser émoji" +#: participants/admin.py +msgid "Reset code name" +msgstr "Réinitialiser nom code" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "%(count)d équipe a fait réinitialiser leur nom code." msgstr[1] "%(count)d équipes ont eu leurs noms code réinitialisés." -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "Réinitialiser nom code" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "%(count)d juge a eu leur clé d’URL supprimé." msgstr[1] "%(count)d juges ont eu leurs clés d’URL supprimés." -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "Participants" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nom" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "région" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "régions" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "Le nom complet d'institution, par ex., « Université de Montréal », « Institut d'études politiques de Paris »" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "code" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "Ce que s'appelle l'institution typiquement, par ex., « Montréal », « Sciences Po »" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "institution " -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "institutions" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "tournoi" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "Nom à être affiché, e.g. « Novice », « FLS »" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "slug" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "Slug pour les URLs, e.g., « novice », « fls »" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "numéro de séquence" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "L’ordre dans laquelle les catégories sont affichées" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "limite" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "Au plus, ce montant d’orateurs sera montré sur le classement public de cette catégorie, ou 0 pour aucune limite" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "publique" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "Si coché, cette catégorie sera inclus dans les onglets des catégories d’orateur montré au public" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "catégorie d'orateurs" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "catégories d'orateurs" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "téléphone" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "anonyme" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "Les noms et les équipes des personnes anonymes sera caviardé sur les tabs publics" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "nom de code" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "clé d'URL" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "homme" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "femme" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "autre" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "genre" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "Le genre est affiché dans l’interface d’attribution de juges" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "pronom" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "Si vous imprimez les feuilles avec Tabbycat, il y a un option à pré-imprimer les pronoms" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "personne" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "personnes" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "nom/suffixe complet" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "N'incluez pas le nom d'institution (voyez « utilise le préfixe institutionnel » ci-dessous)" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "nom/suffixe court" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "Le nom décodé qui est affiché dans le tirage, n'incluant pas le nom d'institution (voyez « utilise le préfixe institutionnel » ci-dessous)" -#: participants/models.py:144 -msgid "code name" -msgstr "nom de code" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "Un nom pour masquer l'identité institutionnelle sur les pages publiques" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "nom court" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "Le nom décodé montré dans le tirage, y compris le nom de l’institution. (Généré automatiquement.)" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "nom long" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "Le nom complet d'équipe, y compris le nom d'institution. (Généré automatiquement.)" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "Utilise le préfixe institutionnel" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "Si cochée, une équipe appelée « 1 » de Victoria sera indiquée par « Victoria 1 »" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "catégories de qualification" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "conflits avec institutions" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "aucun" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "substitut" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "composée" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "sans adversaire" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "type" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "emoji" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "équipe" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "équipes" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "Si une équipe utilise le préfixe institutionnel, il faut qu'elle ait une institution." -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "Si une équipe n'utilise pas le préfixe institutionnel, il faut qu'elle ait un nom complet." -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "Si une équipe n'utilise pas le préfixe institutionnel, il faut qu'elle ait un nom court." -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "orateur" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "orateurs" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "Les juges qui ne sont attribués à aucun tournoi peuvent être partagé entre les tournois" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "note de base" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "conflits avec équipes" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "conflits de juge" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "toujours stagiaire" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "Si coché, ce juge ne sera jamais placé automatiquement dans un rôle votante, n’importe leur score" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "qualifiant" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "indépendant" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "sein des juges" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "juge" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "juges" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "Points après ce débat" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "Victoires après ce débat" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "Scores d'orateurs
    (dans l'ordre d'intervention)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "Scores" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "À propos de %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "Juge indépendant" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "Membre du sein des juges" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "Institution :" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "Non-affilié" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Région :" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "Les affiliations institutionnels des juges ne sont pas publics dans ce tournoi." -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "Conflits avec institutions :" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr " ; " -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "Aucun" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "Conflits avec équipes :" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr ", " -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "Conflits avec juges :" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "Contraintes de salle:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "N’oubliez pas : Si ce juge devrait être en conflit avec son propre institution, vous devriez ajouter cette contrainte maintenant dans l’onglet des conflits entre juge et institution parce que cette contrainte n’est pas automatiquement créée en utilisant cette formulaire." -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "Avertissement : S’il y a des objets « débat-équipe » dans la liste ci-dessus, vous ne devrait pas probablement supprimer ce %(object_name)s." -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "Avertissement : S’il y a des objets « débat-équipe » dans la liste ci-dessus, vous ne devrait pas probablement supprimer ces %(objects_name)s." #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "C’est particulièrement le cas si une équipe qui aurait été supprimé a déjà participé à un débat. Si une équipe a déjà un résultat, la suppression de cette équipe supprimera aussi ces résultats, et cette dernière suppression casse normalement les classements, même si vous pensez que vous n’avez plus besoin de ces résultats. Si une équipe a débattu et se retire du tournoi, vous ne devriez pas le supprimer. Marquez simplement l’équipe inactive dans la section « Enregistrement », dans la zone d’administration de Tabbycat." -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "Notez que la suppression d’une institution supprimera également toutes les équipes de cette institution." -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Si vous êtes très sûr(e) que vous voulez supprimer ce %(object_name)s, veuillez supprimer tout d’abord les objets ci-dessus et n’oubliez pas de tenir compte de l’avertissement que vous verrez sur la page d’objets « débat-équipe » avant de procéder." -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Si vous êtes très sûr(e) que vous voulez supprimer ces %(objects_name)s, veuillez supprimer tout d’abord les objets ci-dessus et n’oubliez pas de tenir compte de l’avertissement que vous verrez sur la page d’objets « débat-équipe » avant de procéder." -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "N’oubliez pas : Si cette équipe devrait être en conflit avec son propre institution, vous devriez ajouter cette contrainte maintenant dans l’onglet des conflits entre équipe et institution parce que cette contrainte n’est pas automatiquement créée en utilisant cette formulaire." -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "La joute commence à %(start_time)s" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Équipes :" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Juge :" msgstr[1] "Juges :" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "Ⓟ" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "Ⓢ" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "Il n'y a pas de panellistes ou de stagiaires attribués à ce débat." -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "Les motions ne sont pas publiées." -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Motion :" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Motion %(seq)s :" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "La motion/les motions de cette joute n'est (ne sont) pas encore publiée(s)." -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s est le/la président(e) du jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s est le/la président(e) du jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous êtes le/la président(e) du jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous êtes le/la président(e) du jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s est un(e) %(type)s dans le jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s est un(e) %(type)s dans le jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous êtes un(e) %(type)s dans le jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous êtes un(e) %(type)s dans le jury du débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s juge le débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s juge le débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous jugez le débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Vous jugez le débat entre %(aff)s et %(neg)s à %(room)s." -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s est le/la président(e) du jury à %(room)s." -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s est le/la président(e) du jury à %(room)s." -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Vous êtes le/la président(e) du jury à %(room)s." -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Vous êtes le/la président(e) du jury à %(room)s." -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s est un(e) %(type)s dans le jury à %(room)s." -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s est un(e) %(type)s dans le jury à %(room)s." -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Vous êtes un(e) %(type)s dans le jury à %(room)s." -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Vous êtes un(e) %(type)s dans le jury à %(room)s." -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s juge le débat à %(room)s." -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s juge le débat à %(room)s." -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Vous jugez à %(room)s." -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Vous jugez à %(room)s." -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "%(team)s débat comme équipe %(side)s contre %(opponent)s." -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "Vous débattez comme équipe %(side)s contre %(opponent)s." -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "%(team)s débat contre %(opponent)s." -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "Vous débattez contre %(opponent)s." -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "%(team)s débat comme équipe %(side)s." -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "Vous débattez comme équipe %(side)s." -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "%(team)s débat à %(room)s." -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "%(team)s débat à %(room)s." -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "Votre débattez à %(room)s." -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "Vous débattez à %(room)s." -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "Ça a l’air qu’il n’y a aucun catégorie d’orateur de défini. Si vous voulez générer des classements basées sur les catégories, tels pour les novices ou FLS, utilisez la page de Catégories d’orateur pour en définir, puis retournez à cette page pour en fixer." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "Retours d’évaluations" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "A présenté une évaluation de %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "N’a pas présenté d’évaluation pour un d’entre eux : %(adjudicators)s (celui qui a rendu la décision)" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "N’a pas présenté d’evaluation pour %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "Plus d’évaluations que prévu pour ce débat :" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "Évaluation inattendue pour %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "%(name)s n’a pas d’évaluations à présenter." -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "Dans cette Joute (%(round)s)" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "Dans cette joute" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "(Non publié)" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "Salle ÀD" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "%(adjudicator)s ne juge pas cette joute." -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "Vous ne jugez pas cette joute." -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "Ça parait que %(team)s est dans %(ndebates)s débat cette joute." msgstr[1] "Ça parait que %(team)s est dans %(ndebates)s débats cette joute." -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "Si c’est une erreur, veuillez contacter un rapporteur immédiatement." -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "%(team)s n'a pas de débat cette joute." -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "Vous n'avez pas de débat cette joute." -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "Le tirage de cette joute n'est pas encore publié." -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "Liste de participants" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "Liste d’institutions" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "Les courriels ont déjà été envoyés." -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "Envoyer enregistrement d’équipe" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "Noms de code" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "Enregistrer les catégories d'orateurs" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "Éligibilité d’orateur" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "Les catégories d’orateur permet la génération de classements basées sur des catégories, e.g., pour les catégories de novices ou FLS. Sur cette page, vous pouvez les définir. Après les avoir faits, vous pouvez fixer l’éligibilité des orateurs sur la page du même nom." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "Si vous voulez supprimer des catégories d’orateur, utilisez l’aire de modification de la base de données." -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "Catégories d'orateurs" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "Nom d’équipe :" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "Nom complet de l'équipe :" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "Nom court de l'équipe :" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "Nom de code :" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "Émoji :" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" -msgstr "" +msgstr "Aucun émoji attribué" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Orateurs :" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "Admissible aux catégories de qualification :" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "Catégories d'orateurs :" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "%(code_name)s (%(real_name)s)" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "Juges" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "Orateurs" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "Institutions" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "Code" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "Nom complet" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "Région" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "Équipes" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "Nombre d’équipes" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "Juges" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "Nombre de juges moins ceux indépendants" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "JIs" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "Nombre de juges indépendants" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "Nom de code" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "Enregistrement d’équipe" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "Résultats" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "Résumé pour %(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "Tours précédents" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "Sauvegardé catégorie : %(list)s" msgstr[1] "Sauvegardé catégories : %(list)s" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "Aucun modification n’a été faite aux catégories." -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "Éligibilité dans les catégories d’orateur" diff --git a/tabbycat/participants/locale/he/LC_MESSAGES/django.po b/tabbycat/participants/locale/he/LC_MESSAGES/django.po index 11bc31ce9e5..97cbf53e6f2 100644 --- a/tabbycat/participants/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:34\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -15,13 +15,23 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" -#: participants/admin.py:94 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." @@ -30,11 +40,33 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/admin.py:152 participants/admin.py:211 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:206 +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." @@ -43,446 +75,436 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/apps.py:7 participants/views.py:40 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:20 participants/models.py:36 -#: participants/models.py:65 participants/models.py:95 +#: participants/models.py msgid "name" msgstr "" -#: participants/models.py:23 participants/models.py:44 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:24 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:38 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:40 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:42 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:54 participants/models.py:154 -#: participants/models.py:340 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:55 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:63 participants/models.py:156 -#: participants/models.py:343 +#: participants/models.py msgid "tournament" msgstr "טורניר" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:67 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:69 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:71 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:73 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:76 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:79 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:86 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:87 participants/models.py:321 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:97 -msgid "e-mail address" +#: participants/models.py +msgid "email address" msgstr "" -#: participants/models.py:99 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:101 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:105 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:110 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:114 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:117 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:121 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:137 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:140 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:141 -msgid "The name shown in the draw. Do not include institution name (see \"uses institutional prefix\" below)" -msgstr "" - -#: participants/models.py:143 -msgid "code name" +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:147 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:148 -msgid "The name shown in the draw, including institution name. (This is autogenerated.)" +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:150 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:158 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:161 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:172 +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:173 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:174 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:175 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:182 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:196 participants/models.py:319 +#: participants/models.py msgid "team" msgstr "קבוצה" -#: participants/models.py:197 +#: participants/models.py msgid "teams" msgstr "קבוצות" -#: participants/models.py:302 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:304 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:306 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:324 +#: participants/models.py msgid "speaker" msgstr "דובר/ת" -#: participants/models.py:325 +#: participants/models.py msgid "speakers" msgstr "דובר/תים" -#: participants/models.py:344 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:346 +#: participants/models.py msgid "base score" -msgstr "" +msgstr "ניקוד בסיסי" -#: participants/models.py:352 -msgid "institution conflicts" +#: participants/models.py +msgid "team conflicts" msgstr "" -#: participants/models.py:356 -msgid "team conflicts" +#: participants/models.py +msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:360 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:362 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:364 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:366 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "adjudicator" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:26 -#: participants/templates/team_registration_card.html:57 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:30 -#: participants/templates/team_registration_card.html:61 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:34 -#: participants/templates/team_registration_card.html:65 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:40 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:47 -#: participants/templates/team_registration_card.html:74 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:49 -#: participants/templates/team_registration_card.html:76 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:51 -#: participants/templates/adjudicator_registration_card.html:58 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:79 -#: participants/templates/team_registration_card.html:30 -#: participants/templates/team_registration_card.html:41 -#: participants/templates/team_registration_card.html:49 -#: participants/templates/team_registration_card.html:78 -#: participants/templates/team_registration_card.html:85 -#: participants/templates/team_registration_card.html:95 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:56 -#: participants/templates/adjudicator_registration_card.html:64 -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/adjudicator_registration_card.html:77 -#: participants/templates/team_registration_card.html:28 -#: participants/templates/team_registration_card.html:39 -#: participants/templates/team_registration_card.html:47 -#: participants/templates/team_registration_card.html:83 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:61 -#: participants/templates/team_registration_card.html:81 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:75 -#: participants/templates/team_registration_card.html:91 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:13 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format -msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete these %(objects_name)s." +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:20 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:32 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:40 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:46 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "קבוצות:" -#: participants/templates/current_round/common.html:30 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" @@ -490,200 +512,272 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:46 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:56 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:59 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:63 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:71 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:13 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:17 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:23 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:27 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:33 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:37 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:48 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:52 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating against %(opponent)s in %(room)s." +msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating against %(opponent)s in %(room)s." +msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:37 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:41 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:47 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:51 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:39 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:48 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:55 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:8 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:12 +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:19 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:31 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:50 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." @@ -692,165 +786,180 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/templates/in_this_round.html:56 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:71 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:87 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:134 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:14 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:14 -msgid "Full name:" +#: participants/templates/team_registration_card.html +msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:18 +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:26 +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "דובר/תים:" -#: participants/templates/team_registration_card.html:37 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:45 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:45 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:54 +#: participants/views.py msgid "Speakers" msgstr "דובר/תים" -#: participants/views.py:85 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:101 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:104 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:106 +#: participants/views.py msgid "Teams" msgstr "קבוצות" -#: participants/views.py:106 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:108 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:111 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:142 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:162 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:208 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:213 participants/views.py:247 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:244 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:333 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" @@ -859,11 +968,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/views.py:339 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:352 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/hi/LC_MESSAGES/django.po b/tabbycat/participants/locale/hi/LC_MESSAGES/django.po index 141811c72f7..8c849bf33b1 100644 --- a/tabbycat/participants/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/hi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -15,845 +15,950 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" -#: participants/admin.py:94 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:211 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:206 +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:40 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:20 participants/models.py:36 -#: participants/models.py:65 participants/models.py:95 +#: participants/models.py msgid "name" msgstr "" -#: participants/models.py:23 participants/models.py:44 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:24 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:38 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:40 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:42 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:54 participants/models.py:154 -#: participants/models.py:340 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:55 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:63 participants/models.py:156 -#: participants/models.py:343 +#: participants/models.py msgid "tournament" msgstr "" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:67 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:69 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:71 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:73 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:76 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:79 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:86 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:87 participants/models.py:321 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:97 -msgid "e-mail address" +#: participants/models.py +msgid "email address" msgstr "" -#: participants/models.py:99 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:101 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:105 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:110 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:114 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:117 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:121 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:137 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:140 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:141 -msgid "The name shown in the draw. Do not include institution name (see \"uses institutional prefix\" below)" -msgstr "" - -#: participants/models.py:143 -msgid "code name" +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:147 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:148 -msgid "The name shown in the draw, including institution name. (This is autogenerated.)" +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:150 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:158 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:161 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:172 +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:173 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:174 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:175 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:182 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:196 participants/models.py:319 +#: participants/models.py msgid "team" msgstr "" -#: participants/models.py:197 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:302 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:304 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:306 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:324 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:325 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:344 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:346 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:352 -msgid "institution conflicts" +#: participants/models.py +msgid "team conflicts" msgstr "" -#: participants/models.py:356 -msgid "team conflicts" +#: participants/models.py +msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:360 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:362 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:364 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:366 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "adjudicator" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:26 -#: participants/templates/team_registration_card.html:57 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:30 -#: participants/templates/team_registration_card.html:61 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:34 -#: participants/templates/team_registration_card.html:65 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:40 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:47 -#: participants/templates/team_registration_card.html:74 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:49 -#: participants/templates/team_registration_card.html:76 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:51 -#: participants/templates/adjudicator_registration_card.html:58 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:79 -#: participants/templates/team_registration_card.html:30 -#: participants/templates/team_registration_card.html:41 -#: participants/templates/team_registration_card.html:49 -#: participants/templates/team_registration_card.html:78 -#: participants/templates/team_registration_card.html:85 -#: participants/templates/team_registration_card.html:95 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:56 -#: participants/templates/adjudicator_registration_card.html:64 -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/adjudicator_registration_card.html:77 -#: participants/templates/team_registration_card.html:28 -#: participants/templates/team_registration_card.html:39 -#: participants/templates/team_registration_card.html:47 -#: participants/templates/team_registration_card.html:83 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:61 -#: participants/templates/team_registration_card.html:81 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:75 -#: participants/templates/team_registration_card.html:91 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:13 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format -msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete these %(objects_name)s." +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:20 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:32 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:40 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:46 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:30 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:46 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:56 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:59 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:63 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:71 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:13 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:17 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:23 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:27 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:33 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:37 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:48 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:52 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating against %(opponent)s in %(room)s." +msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating against %(opponent)s in %(room)s." +msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:37 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:41 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:47 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:51 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:39 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:48 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:55 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:8 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:12 +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:19 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:31 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:50 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:56 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:71 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:87 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:134 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:14 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:14 -msgid "Full name:" +#: participants/templates/team_registration_card.html +msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:18 +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:26 +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:37 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:45 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:45 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:54 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:85 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:101 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:104 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:106 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:106 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:108 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:111 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:142 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:162 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:208 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:213 participants/views.py:247 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:244 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:333 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:339 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:352 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/id/LC_MESSAGES/django.po b/tabbycat/participants/locale/id/LC_MESSAGES/django.po index 569b9f8fbf9..768385f1bb9 100644 --- a/tabbycat/participants/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -18,954 +18,941 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "Tim ini tidak dapat berada pada kategori break dari turnamen yang berbeda. Harap hapus %(category)s" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "Sebanyak %(count)d pembicara sudah menghapus kunci URL mereka." -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "Hapus kunci URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "Reset emoji" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "Sebanyak %(count)d tim me-reset emoji mereka." -#: participants/admin.py:164 -msgid "Reset emoji" -msgstr "Reset emoji" +#: participants/admin.py +msgid "Reset code name" +msgstr "Reset kode nama" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "Sebanyak %(count)d tim me-reset kode nama mereka." -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "Reset kode nama" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "Sebanyak %(count)d juri sudah menghapus kunci URL mereka." -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "Partisipan" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nama" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "wilayah" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "wilayah" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "Nama panjang dari insitusi, seperti \"University of Cambridge\", \"Victoria University of Wellington\"" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "kode" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "Nama institusi secara pendek yang biasa digunakan, seperti \"Cambridge\", \"Vic Wellington\"" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "institusi" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "institusi" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "turnamen" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "Nama untuk ditampilkan, misal, \"ESL\"" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "slug" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "Slug untuk URL, misal, \"esl\"" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "nomor urut" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "Urutan kategori ditampilkan" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "batas" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "Maksimal sejumlah pembicara ini akan muncul pada tab publik untuk kategori ini, atau gunakan 0 untuk tidak dibatasi" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "publik" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "Apabila ditandai, kategori ini akan ditampilkan pada publik pada bagian tabulasi pembicara per kategori" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "kategori pembicara" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "kategori pembicara" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "nomor telepon" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "anonim" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "Nama dan tim para peserta anonim akan disunting pada rilis tab publik" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "kode nama" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "Kunci URL" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "pria" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "wanita" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "lainnya" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "jenis kelamin" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "Jenis kelamin akan ditampilkan pada alokasi tampilan untuk juri, dan tidak di tempat lain" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "kata ganti" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "Jika melakukan cetak kertas suara menggunakan Tabbycat, ada pilihan untuk pracetak kata ganti" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "orang" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "orang" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "nama lengkap/nama belakang" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "Harap tidak menyertakan nama institusi (lihat \"penggunaan prefiks institusional\" di bawah)" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "nama pendek/nama belakang" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "Nama yang diterjemahkan yang ditampilkan dalam undian, tanpa termasuk nama institusi. (Ini dibuat secara otomatis.)" -#: participants/models.py:144 -msgid "code name" -msgstr "kode nama" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "Nama yang digunakan untuk menyamarkan identitas institusi pada halaman publik" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "nama pendek" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "Nama yang diterjemahkan yang ditampilkan dalam undian, termasuk nama institusi. (Ini dibuat secara otomatis.)" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "nama panjang" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "Nama lengkap dari tim, termasuk nama institusi. (Ini dibuat secara otomatis.)" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "Menggunakan nama depan institusi" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "Jika ditandai, tim yang dipanggil \"1\" dari Victoria akan tertulis sebagai \"Victoria 1\"" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "kategori break" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "konflik institusi" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "tidak ada" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "swing" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "komposit" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "tipe" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "emoji" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "tim" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "tim" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "Tim harus memiliki institusi jika mereka menggunakan nama depan institusi." -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "Tim harus memiliki nama lengkap jika mereka tidak menggunakan nama depan institusi." -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "Tim harus memiliki nama pendek jika mereka tidak menggunakan nama depan institusi." -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "pembicara" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "pembicara" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "Juri yang tidak terdaftar pada turnamen apapun dapat digunakan antar turnamen" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "nilai basis" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "konflik tim" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "konflik juri" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "selalu trainee" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "Apabila ditandai, draw tidak akan mengalokasikan juri ini untuk mendapatkan hak suara, berapapun nilai yang didapat" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "breaking" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "independen" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "juri inti" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "juri debat" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "juri" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "Poin sesudah debat ini" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "Jumlah menang sesudah debat ini" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "Nilai Pembicara
    (sesuai urutan giliran berbicara)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "Berbicara" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "Tentang %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "Juri independen" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "Anggota tim penjurian inti" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "Institusi:" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "Tidak terafiliasi" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Wilayah:" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "Afiliasi untuk institusi para juri tidak bersifat publik pada turnamen ini." -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "Konflik Institusi:" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "; " -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "Tidak ada" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "Konflik Tim:" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr ", " -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "Konflik Juri:" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "Batasan-batasan Ruangan:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "Jangan lupa: Jika juri ini memiliki konflik dengan institusinya, anda sebaiknya menambahkan konflik ini sekarang di bagian tab Konflik Juri dengan institusi, karena konflik ini tidak dibuat secara otomatis ketika menggunakan formulir ini." -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "Peringatan:Jika ada objek \"tim debat\" pada daftar di atas, mungkin sebaiknya anda jangan menghapus objek %(object_name)s." -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "Peringatan:Jika ada objek \"tim debat\" pada daftar di atas, mungkin sebaiknya anda jangan menghapus objek %(objects_name)s yang sudah dipilih." #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "Terutama pada kasus jika ada tim yang akan dihapus ternyata sudah berpartisipasi pada sebuah debat. Jika tim tersebut sudah memiliki hasil yang tercatat, menghapus tim tersebut juga akan menghapus hasil tersebut, dimana biasanya juga menghapus tab yang ada, bahkan jika anda sudah tidak membutuhkan lagi hasil tersebut. Jika sebuah tim sudah mengikuti pertandingan dan sedang menunggu hasil dari turnamen tersebut, anda sebaiknya tidak menghapus tim tersebut. Anda cukup menandai tim tersebut tidak aktif pada bagian \"Ketersediaan\" di area admin Tabbycat." -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "Mohon diingat bahwa menghapus sebuah institusi juga akan menghapus seluruh tim dari institusi tersebut." -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Jika anda merasa yakin untuk menghapus objek %(object_name)s, harap hapus objek yang berada di atasnya terlebih dahulu, dan pastikan untuk memperhatikan peringatan yang akan anda lihat pada halaman objek \"tim debat\" sebelum melanjutkan." -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Jika anda merasa yakin untuk menghapus objek %(objects_name)s ini, harap hapus objek yang berada di atasnya terlebih dahulu, dan pastikan untuk memperhatikan peringatan yang akan anda lihat pada halaman objek \"tim debat\" sebelum melanjutkan." -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "Jangan lupa: Jika timini memiliki konflik dengan institusinya, anda sebaiknya menambahkan konflik ini sekarang di bagian tab Konflik Tim dengan institusi, karena konflik ini tidak dibuat secara otomatis ketika menggunakan formulir ini." -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "Ronde akan dimulai pada %(start_time)s" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Tim:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Juri:" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "Ⓒ" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "Ⓣ" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "Tidak ada panelis atau asisten yang didaftarkan pada debat ini." -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "Mosi tidak dirilis ke publik." -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Mosi:" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Mosi %(seq)s:" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "Mosi untuk ronde ini belum dirilis." -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s adalah ketua juri yang sedang menjadi juri pada %(aff)s vs%(neg)s pada tautan %(room)s." -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s adalah ketua juriyang sedang menjadi juri %(aff)s vs %(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda adalah ketua juri yang sedang menjadi juri %(aff)s vs %(neg)s pada tautan %(room)s." -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda adalah ketua juri yang sedang menjadi juri %(aff)s vs %(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Juri %(adjudicator)s adalah tipe juri %(type)s yang sedang menjadi juri %(aff)s vs %(neg)s di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Juri %(adjudicator)s adalah tipe juri %(type)s yang sedang menjadi juri %(aff)s vs %(neg)s di \n" " %(room)s." -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda adalah tipe juri %(type)s yang sedang menjadi juri %(aff)s vs%(neg)s di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda adalah tipe juri %(type)s yang sedang menjadi juri %(aff)s vs%(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s sedang menjadi juri pada debat %(aff)s vs%(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s sedang menjadi juri pada debat %(aff)s vs %(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda sedang menjadi juri pada debat %(aff)s vs %(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Anda sedang menjadi juri pada debat %(aff)s vs %(neg)s di %(room)s." -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s adalah juri ketua yang sedang menjadi juri di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "Juri %(adjudicator)s adalah juri ketua yang sedang menjadi juri di %(room)s." -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Anda adalah juri ketua yang sedang menjadi juri di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Anda adalah juri ketua yang menjadi juri di %(room)s." -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "Juri %(adjudicator)s adalah tipe juri %(type)s yang sedang menjadi juri di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "Juri %(adjudicator)s adalah tipe juri %(type)s yang sedang menjadi juri di %(room)s." -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Anda adalah tipe juri %(type)s yang sedang menjadi juri di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Anda adalah tipe juri %(type)s yang menjadi juri di %(room)s." -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "juri %(adjudicator)s sedang menjadi juri di tautan %(room)s." -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s sedang menjadi juri di ruang %(room)s." -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Anda sedang menjadi juri pada %(room)s." -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Anda sedang menjadi juri di ruang %(room)s." -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "%(team)s sedang melakukan debat sebagai tim %(side)s melawan %(opponent)s." -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "Anda sedang melakukan debat sebagai tim %(side)s melawan %(opponent)s." -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "Tim %(team)s sedang melakukan debat melawan %(opponent)s." -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "Anda sedang melakukan debat melawan %(opponent)s." -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "%(team)s sedang melakukan debat sebagai tim %(side)s." -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "Anda sedang melakukan debat sebagai tim %(side)s." -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "Debat untuk %(team)s berada di tautan %(room)s." -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "Debat tim %(team)s berada di %(room)s." -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "Debat anda berada di tautan %(room)s." -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "Debat anda berada di ruang %(room)s." -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "Sepertinya belum ada kategori pembicara yang sudah ditentukan. JIka anda ingin membuat tab untuk kategori pembicara yang spesifik, seperti tab pemula atau ESL, gunakan halaman Kategori Pembicara untuk membuat kategori tersebut, lalu kembali ke halaman ini untuk menentukan kelayakan pembicara." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "Umpan Balik kembali" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "Sudah memberikan umpan balik untuk %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "Belum mengumpulkan umpan balik untuk salah satu dari juri: %(adjudicators)s (Untuk siapapun juri yang berbicara)" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "Belum memberikan umpan balik untuk %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "Pengumpulan umpan balik melebihi batas yang diijinkan untuk debat ini:" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "Ada pengumpulan umpan balik untuk %(adjudicator)s yang tidak diduga" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "%(name)s tidak memiliki umpan balik untuk diberikan." -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "Pada Ronde Ini (%(round)s)" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "Pada Ronde Ini" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "(Tidak dirilis ke Publik)" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "Ruangan TBA" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "Juri %(adjudicator)s tidak menjadi juri pada ronde ini." -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "Anda tidak menjadi juri pada ronde ini." -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "Sepertinya tim %(team)s sedang bertanding di debat %(ndebates)s pada ronde ini." -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "Jika terdapat kesalahan, mohon hubungi pimpinan debat secepatnya." -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "Tim %(team)s sedang tidak berdebat pada ronde ini." -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "Anda sedang tidak memiliki debat pada ronde ini." -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "Pengundian untuk ronde ini belum dirilis." -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "Daftar Partisipan" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "Daftar Institusi" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "Email sudah dikirim." -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "Registrasi Email Tim" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "Nama Terkode" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "Kategori Pembicara" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "Kelayakan Pembicara" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "Kategori pembicara membolehkan pembicara pada kategori-spesifik untuk diproduksi, contoh, untuk kategori pemula atau ESL. Pada halaman ini, Anda dapat mendefinisikan apa saja kategori pembicara yang tersedia. Setelah Anda mendefinisikan kategori, Anda dapat mengisi kelayakan pada halaman Kelayakan." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "Jika Anda ingin menghapus kategori pembicara, gunakan area Sunting Basisdata." -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "Menyimpan Kategori Pembicara" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "Nama tim:" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "Kode nama:" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Pembicara:" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "Memenuhi syarat untuk kategori break:" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "Kategori pembicara:" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "%(code_name)s(%(real_name)s)" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "Juri" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "Pembicara" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "Institusi" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "Kode" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "Nama lengkap" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "Wilayah" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "Tim" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "Jumlah tim" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "Juri" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "Jumlah juri, kecuali juri independen" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "JI" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "Banyak juri independen" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "Kode nama" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "Registrasi Tim" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "Hasil" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "Catatan Rekor untuk %(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "Ronde sebelumnya" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "Kategori yang tersimpan: %(list)s" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "Tidak ada perubahan yang dilakukan pada kategori." -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "Eligibilitas Kategori Pembicara" diff --git a/tabbycat/participants/locale/it/LC_MESSAGES/django.mo b/tabbycat/participants/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..f54133a321f Binary files /dev/null and b/tabbycat/participants/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/it/LC_MESSAGES/django.po b/tabbycat/participants/locale/it/LC_MESSAGES/django.po index 3b0642dc5b5..914a047640d 100644 --- a/tabbycat/participants/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2022-04-17 08:28\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nome" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "istituzione" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "numero sequenziale" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "squadra" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "punteggio base" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "giudice" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr ", " -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/ja/LC_MESSAGES/django.po b/tabbycat/participants/locale/ja/LC_MESSAGES/django.po index a61f7ccf39b..f5724295944 100644 --- a/tabbycat/participants/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -18,953 +18,940 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "参加者" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "インスティチューション" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "トーナメント" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "スラグ" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "制限" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "匿名" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "男性" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "人" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "大学・団体コンフリクト" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "タイプ" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "絵文字" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "チーム" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "チーム" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "ジャッジ" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "チーム:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "参加者リスト" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "コード名" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "ジャッジ" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "スピーカー" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "大学・団体" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "チーム" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "結果" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/kk/LC_MESSAGES/django.mo b/tabbycat/participants/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..5ce7cef6871 Binary files /dev/null and b/tabbycat/participants/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/kk/LC_MESSAGES/django.po b/tabbycat/participants/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..69c6c5fe87f --- /dev/null +++ b/tabbycat/participants/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,964 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-27 09:26\n" +"Last-Translator: philip_tc\n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" + +#: participants/admin.py +#, python-format +msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" +msgstr "" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d speaker had their URL key removed." +msgid_plural "%(count)d speakers had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" + +#: participants/admin.py +#, python-format +msgid "%(count)d adjudicator had their URL key removed." +msgid_plural "%(count)d adjudicators had their URL keys removed." +msgstr[0] "" +msgstr[1] "" + +#: participants/apps.py participants/views.py +msgid "Participants" +msgstr "" + +#: participants/models.py +msgid "name" +msgstr "" + +#: participants/models.py +msgid "region" +msgstr "" + +#: participants/models.py +msgid "regions" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" +msgstr "" + +#: participants/models.py +msgid "code" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" +msgstr "" + +#: participants/models.py +msgid "institution" +msgstr "қауымдастық" + +#: participants/models.py +msgid "institutions" +msgstr "" + +#: participants/models.py +msgid "tournament" +msgstr "турнир" + +#. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" +msgstr "" + +#: participants/models.py +msgid "slug" +msgstr "" + +#. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Slug for URLs, e.g., \"novice\", \"esl\"" +msgstr "" + +#: participants/models.py +msgid "sequence number" +msgstr "" + +#: participants/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: participants/models.py +msgid "limit" +msgstr "" + +#: participants/models.py +msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: participants/models.py +msgid "public" +msgstr "" + +#: participants/models.py +msgid "If checked, this category will be included in the speaker category tabs shown to the public" +msgstr "" + +#: participants/models.py +msgid "speaker category" +msgstr "" + +#: participants/models.py +msgid "speaker categories" +msgstr "" + +#: participants/models.py +msgid "email address" +msgstr "" + +#: participants/models.py +msgid "phone" +msgstr "" + +#: participants/models.py +msgid "anonymous" +msgstr "жасырын түрде" + +#: participants/models.py +msgid "Anonymous persons will have their name and team redacted on public tab releases" +msgstr "" + +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "URL key" +msgstr "" + +#: participants/models.py +msgid "male" +msgstr "" + +#: participants/models.py +msgid "female" +msgstr "" + +#: participants/models.py +msgid "other" +msgstr "" + +#: participants/models.py +msgid "gender" +msgstr "" + +#: participants/models.py +msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" +msgstr "" + +#: participants/models.py +msgid "pronoun" +msgstr "" + +#: participants/models.py +msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" +msgstr "" + +#: participants/models.py +msgid "person" +msgstr "" + +#: participants/models.py +msgid "persons" +msgstr "" + +#: participants/models.py +msgid "full name/suffix" +msgstr "" + +#: participants/models.py +msgid "Do not include institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "short name/suffix" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure institutional identity on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "short name" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "long name" +msgstr "" + +#: participants/models.py +msgid "The full name of the team, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "Uses institutional prefix" +msgstr "" + +#: participants/models.py +msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" +msgstr "" + +#: participants/models.py +msgid "break categories" +msgstr "" + +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py +msgid "none" +msgstr "" + +#: participants/models.py +msgid "swing" +msgstr "" + +#: participants/models.py +msgid "composite" +msgstr "" + +#: participants/models.py +msgid "bye" +msgstr "" + +#: participants/models.py +msgid "type" +msgstr "" + +#: participants/models.py +msgid "emoji" +msgstr "" + +#: participants/models.py +msgid "team" +msgstr "топ" + +#: participants/models.py +msgid "teams" +msgstr "" + +#: participants/models.py +msgid "Teams must have an institution if they are using the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a full name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a short name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "speaker" +msgstr "" + +#: participants/models.py +msgid "speakers" +msgstr "" + +#: participants/models.py +msgid "Adjudicators not assigned to any tournament can be shared between tournaments" +msgstr "" + +#: participants/models.py +msgid "base score" +msgstr "" + +#: participants/models.py +msgid "team conflicts" +msgstr "" + +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "" + +#: participants/models.py +msgid "always trainee" +msgstr "" + +#: participants/models.py +msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" +msgstr "" + +#: participants/models.py +msgid "breaking" +msgstr "" + +#: participants/models.py +msgid "independent" +msgstr "" + +#: participants/models.py +msgid "adjudication core" +msgstr "" + +#: participants/models.py +msgid "adjudicator" +msgstr "төреші" + +#: participants/models.py +msgid "adjudicators" +msgstr "" + +#: participants/tables.py +msgid "Points after this debate" +msgstr "" + +#: participants/tables.py +msgid "Wins after this debate" +msgstr "" + +#: participants/tables.py +msgid "Speaker scores
    (in speaking order)" +msgstr "" + +#: participants/tables.py +msgid "Speaks" +msgstr "" + +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html +#, python-format +msgid "About %(name)s" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Independent adjudicator" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Member of the adjudication core" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institution:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Unaffiliated" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Region:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "The institutional affiliations of adjudicators are not public at this tournament." +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institutional Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "; " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "None" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Team Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid ", " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Adjudicator Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Room Constraints:" +msgstr "" + +#: participants/templates/admin/participants/adjudicator/change_form.html +msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "" + +#. Translators: This follows the above sentence in the same paragraph. +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "Note that deleting an institution also deletes all teams from that institution." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/team/change_form.html +msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "The round begins at %(start_time)s" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Teams:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Adjudicator:" +msgid_plural "Adjudicators:" +msgstr[0] "" +msgstr[1] "" + +#: participants/templates/current_round/common.html +msgctxt "chair icon" +msgid "Ⓒ" +msgstr "" + +#: participants/templates/current_round/common.html +msgctxt "trainee icon" +msgid "Ⓣ" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "There are no panellists or trainees assigned to this debate." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motions are not released to public." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motion:" +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "Motion %(seq)s:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "The motion(s) for this round haven't yet been released." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/edit_speaker_eligibility.html +#, python-format +msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "Feedback Returns" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "More feedback submissions than expected for this debate:" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Unexpected feedback submission for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "%(name)s doesn't have any feedback to submit." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "In This Round (%(round)s)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "(Not Released to Public)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "Room TBA" +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(adjudicator)s is not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You are not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." +msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." +msgstr[0] "" +msgstr[1] "" + +#: participants/templates/in_this_round.html +msgid "If this is an error, please contact a tab director immediately." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(team)s does not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You do not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "The draw for this round hasn't yet been released." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Participants List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Institutions List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Emails have already been sent." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Email Team Registrations" +msgstr "" + +#: participants/templates/participants_subnav.html participants/views.py +msgid "Code Names" +msgstr "" + +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html +msgid "Speaker Categories" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Speaker Eligibility" +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +#, python-format +msgid "If you want to delete speaker categories, use the Edit Database area." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Save Speaker Categories" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Code name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speakers:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Eligible for break categories:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speaker categories:" +msgstr "" + +#: participants/templatetags/team_name_for_data_entry.py +#, python-format +msgid "%(code_name)s (%(real_name)s)" +msgstr "" + +#: participants/views.py +msgid "Adjudicators" +msgstr "" + +#: participants/views.py +msgid "Speakers" +msgstr "" + +#: participants/views.py +msgid "Institutions" +msgstr "" + +#: participants/views.py +msgid "Code" +msgstr "" + +#: participants/views.py +msgid "Full name" +msgstr "" + +#: participants/views.py +msgid "Region" +msgstr "" + +#: participants/views.py +msgid "Teams" +msgstr "" + +#: participants/views.py +msgid "Number of teams" +msgstr "" + +#: participants/views.py +msgid "Adjs" +msgstr "" + +#: participants/views.py +msgid "Number of adjudicators, excluding independents" +msgstr "" + +#: participants/views.py +msgid "IAs" +msgstr "" + +#: participants/views.py +msgid "Number of independent adjudicators" +msgstr "" + +#: participants/views.py +msgid "Code name" +msgstr "" + +#: participants/views.py +msgid "Team Registration" +msgstr "" + +#: participants/views.py +msgid "Results" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Record for %(name)s" +msgstr "" + +#: participants/views.py +msgid "Previous Rounds" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Saved category: %(list)s" +msgid_plural "Saved categories: %(list)s" +msgstr[0] "" +msgstr[1] "" + +#: participants/views.py +msgid "No changes were made to the categories." +msgstr "" + +#: participants/views.py +msgid "Speaker Category Eligibility" +msgstr "" + diff --git a/tabbycat/participants/locale/ms/LC_MESSAGES/django.po b/tabbycat/participants/locale/ms/LC_MESSAGES/django.po index 727246f476b..d72452c4a42 100644 --- a/tabbycat/participants/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -18,953 +18,940 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "%(count)d Pautan URL pendebat telah dibuang." -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "Buang pautan URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nama" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "Nama penuh institusi, contoh; \"Universiti Islam Antarabangsa Malaysia, Institut Pendidikan Guru Malaysia\"" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "kod" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "institusi" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "institusi" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "pertandingan" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "kategori pendebat" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "kategori pendebat" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "jenis" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "pasukan" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "hakim" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "Senarai Institusi" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "Bilangan pasukan" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "Para hakim" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "Bilangan hakim, tidak termasuk hakim jemputan" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "Bilangan hakim jemputan" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "Pendaftaran pasukan" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "Keputusan" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "Rekod untuk %(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "Pusingan Lalu" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/pt/LC_MESSAGES/django.po b/tabbycat/participants/locale/pt/LC_MESSAGES/django.po index 0d600c1b09b..60978a8ce1f 100644 --- a/tabbycat/participants/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" msgstr[1] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" msgstr[1] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "nome" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "instituição" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "torneio" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "número sequencial" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "anônimo" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "tipo" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "dupla" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "juiz" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "Nenhum" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" msgstr[1] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" msgstr[1] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/ro/LC_MESSAGES/django.po b/tabbycat/participants/locale/ro/LC_MESSAGES/django.po index 5615a043392..14824987d47 100644 --- a/tabbycat/participants/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/ro/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:32\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 00:59\n" "Last-Translator: philip_tc\n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -15,13 +15,23 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" -#: participants/admin.py:94 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." @@ -29,11 +39,31 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: participants/admin.py:152 participants/admin.py:211 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:206 +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." @@ -41,646 +71,708 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: participants/apps.py:7 participants/views.py:40 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:20 participants/models.py:36 -#: participants/models.py:65 participants/models.py:95 +#: participants/models.py msgid "name" msgstr "" -#: participants/models.py:23 participants/models.py:44 +#: participants/models.py msgid "region" msgstr "" -#: participants/models.py:24 +#: participants/models.py msgid "regions" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:38 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:40 +#: participants/models.py msgid "code" msgstr "" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:42 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:54 participants/models.py:154 -#: participants/models.py:340 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:55 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:63 participants/models.py:156 -#: participants/models.py:343 +#: participants/models.py msgid "tournament" msgstr "" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:67 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:69 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:71 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:73 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:76 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:79 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:86 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:87 participants/models.py:321 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:97 -msgid "e-mail address" +#: participants/models.py +msgid "email address" msgstr "" -#: participants/models.py:99 +#: participants/models.py msgid "phone" msgstr "" -#: participants/models.py:101 +#: participants/models.py msgid "anonymous" msgstr "" -#: participants/models.py:102 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:105 +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:110 +#: participants/models.py msgid "male" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "female" msgstr "" -#: participants/models.py:112 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:114 +#: participants/models.py msgid "gender" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:117 +#: participants/models.py msgid "pronoun" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:121 +#: participants/models.py msgid "person" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "persons" msgstr "" -#: participants/models.py:137 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:138 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:140 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:141 -msgid "The name shown in the draw. Do not include institution name (see \"uses institutional prefix\" below)" +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:143 -msgid "code name" -msgstr "" - -#: participants/models.py:144 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:147 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:148 -msgid "The name shown in the draw, including institution name. (This is autogenerated.)" +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:150 +#: participants/models.py msgid "long name" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:158 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:161 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:172 +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py msgid "none" msgstr "" -#: participants/models.py:173 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:174 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:175 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:182 +#: participants/models.py msgid "emoji" msgstr "" -#: participants/models.py:196 participants/models.py:319 +#: participants/models.py msgid "team" msgstr "" -#: participants/models.py:197 +#: participants/models.py msgid "teams" msgstr "" -#: participants/models.py:302 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:304 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:306 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:324 +#: participants/models.py msgid "speaker" msgstr "vorbitor" -#: participants/models.py:325 +#: participants/models.py msgid "speakers" msgstr "vorbitori" -#: participants/models.py:344 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:346 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:352 -msgid "institution conflicts" +#: participants/models.py +msgid "team conflicts" msgstr "" -#: participants/models.py:356 -msgid "team conflicts" +#: participants/models.py +msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:360 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:362 +#: participants/models.py msgid "breaking" msgstr "" -#: participants/models.py:364 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:366 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "adjudicator" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "adjudicators" msgstr "" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:26 -#: participants/templates/team_registration_card.html:57 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:30 -#: participants/templates/team_registration_card.html:61 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:34 -#: participants/templates/team_registration_card.html:65 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:40 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:47 -#: participants/templates/team_registration_card.html:74 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:49 -#: participants/templates/team_registration_card.html:76 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "" -#: participants/templates/adjudicator_registration_card.html:51 -#: participants/templates/adjudicator_registration_card.html:58 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:79 -#: participants/templates/team_registration_card.html:30 -#: participants/templates/team_registration_card.html:41 -#: participants/templates/team_registration_card.html:49 -#: participants/templates/team_registration_card.html:78 -#: participants/templates/team_registration_card.html:85 -#: participants/templates/team_registration_card.html:95 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "" -#: participants/templates/adjudicator_registration_card.html:54 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:56 -#: participants/templates/adjudicator_registration_card.html:64 -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/adjudicator_registration_card.html:77 -#: participants/templates/team_registration_card.html:28 -#: participants/templates/team_registration_card.html:39 -#: participants/templates/team_registration_card.html:47 -#: participants/templates/team_registration_card.html:83 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "" -#: participants/templates/adjudicator_registration_card.html:61 -#: participants/templates/team_registration_card.html:81 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:75 -#: participants/templates/team_registration_card.html:91 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:13 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format -msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete these %(objects_name)s." +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:20 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:32 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:40 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:46 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "" -#: participants/templates/current_round/common.html:30 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "" -#: participants/templates/current_round/common.html:46 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:56 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:59 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "" -#: participants/templates/current_round/common.html:63 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "" -#: participants/templates/current_round/common.html:71 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:13 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:17 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:23 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:27 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:33 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:37 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:48 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:52 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team against %(opponent)s in %(room)s." +msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating against %(opponent)s in %(room)s." +msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating against %(opponent)s in %(room)s." +msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:37 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:41 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team in %(room)s." +msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:47 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:51 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating in %(room)s." +msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:39 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:48 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:55 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:8 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:12 +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:19 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:31 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:50 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." @@ -688,165 +780,180 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: participants/templates/in_this_round.html:56 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:71 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:87 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:134 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:14 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "" -#: participants/templates/team_registration_card.html:14 -msgid "Full name:" +#: participants/templates/team_registration_card.html +msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:18 +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "" -#: participants/templates/team_registration_card.html:26 +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Vorbitori:" -#: participants/templates/team_registration_card.html:37 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:45 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "" -#: participants/views.py:45 +#: participants/views.py msgid "Adjudicators" msgstr "" -#: participants/views.py:54 +#: participants/views.py msgid "Speakers" msgstr "Vorbitori" -#: participants/views.py:85 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:101 +#: participants/views.py msgid "Code" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Full name" msgstr "" -#: participants/views.py:104 +#: participants/views.py msgid "Region" msgstr "" -#: participants/views.py:106 +#: participants/views.py msgid "Teams" msgstr "" -#: participants/views.py:106 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:108 +#: participants/views.py msgid "Adjs" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:111 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:142 +#: participants/views.py msgid "Code name" msgstr "" -#: participants/views.py:162 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:208 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:213 participants/views.py:247 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:244 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:333 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" @@ -854,11 +961,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: participants/views.py:339 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:352 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/locale/ru/LC_MESSAGES/django.po b/tabbycat/participants/locale/ru/LC_MESSAGES/django.po index 2509021439f..99d16a6528d 100644 --- a/tabbycat/participants/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -18,12 +18,20 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "Команда не может быть в брейковой категории на другом турнире. Пожалуйста, удалите: %(category)s" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." @@ -32,11 +40,11 @@ msgstr[1] "%(count)d URL-ключ этих спикеров был удален. msgstr[2] "%(count)d URL-ключ этих спикеров был удален." msgstr[3] "%(count)d URL-ключ этих спикеров был удален." -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "Удалить ключ URL" +#: participants/admin.py +msgid "Reset emoji" +msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." @@ -45,11 +53,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." @@ -58,11 +66,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." @@ -71,450 +75,436 @@ msgstr[1] "%(count)d URL-ключ этих судей был удален." msgstr[2] "%(count)d URL-ключ этих судей был удален." msgstr[3] "%(count)d URL-ключ этих судей был удален." -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "Участники" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "название" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "регион" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "регионы" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "Полное название клуба, например \"Университет Кембриджа\" или \"Университет Виктории в Веллингтоне\"" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "код" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "Как обычно кратко называют клуб, например \"Кембридж\" или \"Вик Веллингтон\"" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "клуб" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "клубы" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "турнир" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "Отображаемое название, например, \"ESL\", \"Новички\"" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "краткое название" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "Краткое название для URL, например, \"esl\", \"новички\"" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "порядковый номер" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "Порядок, в котором демонстрируются категории" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "лимит" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "Такое максимальное количество спикеров будет показано в публичном тэбе для этой категории или используйте 0 для отсутствия лимита" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "публично" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "При этом выборе эта категория будет включена в категории спикерских тэбов, которые будут показаны публично" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "категория спикера" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "категории спикеров" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "номер телефона" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "анонимно" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "Имена анонимных людей и названия их команд будут отредактированы при публикации тэба" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "кодовое имя" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "Ключ URL" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "мужской" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "женский" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "другой" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "гендер" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "Гендер отображается в интерфейсе расстановки судей и больше нигде" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "произношение" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "Если печатать бэллоты с помощью Tabbycat, то есть возможность предварительно распечатать произношения" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "человек" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "люди" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "полное имя" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "Не указывать название клуба (см. \"Клуб в названии команды\" ниже)" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "краткое название" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "кодовое имя" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "Кодовое название, которое используется для того, чтобы скрыть, к какому клубу относится команда (на страницах в открытом доступе)" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "краткое название" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "длинное имя" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "Полное название команды, включая название клуба (генерируется автоматически)" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "Клуб в названии команды" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "Если стоит отметка, команда \"1\" из Виктории будет показана как \"Виктория 1\"" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "категории брейка" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "конфликты с клубами" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "нет" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "свинг" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "составной" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "тип" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "эмоджи" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "команда" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "команды" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "Если в названии команды указывается название клуба, для таких команд должен быть указан клуб." -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "Если в названии команды не указывается название клуба, у команды должно быть полное название." -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "Если в названии команды не указывается название клуба, у команды должно быть краткое название." -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "спикер" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "спикеры" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "Аудитории, не привязанные ни к одному турниру, могут быть разделены между турнирами" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "исходный рейтинг" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "конфликты команд" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "всегда винг без права голоса" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "При этом выборе этот судья никогда не будет автоматически распределен на позицию с правом голоса, независимо от его балла" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "брейкающиеся" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "независимый" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "судейский пул" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "судья" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "судьи" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "Баллов после этого раунда" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "Побед после этого раунда" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "Спикерские баллы
    (в порядке выступления)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "Спикерские" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "О %(name)s" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "Независимый судья" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "Член судейского пула" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "Клуб:" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "Неаффилированный" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Регион:" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "Конфликты с клубами:" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "; " -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "Нет" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "Конфликты команд:" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr ", " -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "Конфликты судей:" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "Ограничения аудиторий:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "Не забудьте: Если у этого судьи должен быть конфликт с его клубом, его нужно сейчас добавить на вкладке \"Конфликты между судьями и клубами\", поскольку эта форма не добавляет судье конфликт с его клубом автоматически." -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "Предупреждение:Если в списке выше объекты \"команда\", вам, возможно, не стоит удалять это %(object_name)s." -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "Предупреждение:Если в списке выше объекты \"команда\", вам, возможно, не стоит удалять это %(objects_name)s." #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "Это особенно важна в случаях, если какая-то команда, которая уже участвует в дебатах, будет удалена. Если результаты команды уже вбиты, удаление этой команды также удаляет эти результаты, что обычно приводит к сбоям тэба, даже если вы думаете, что вам больше не нужны эти результаты. Если команда дебатировала, но покинула турнир, вам не нужно её удалять. Просто отметьте эту команду как неактивную в секции \"Доступность\" в области администратора в Tabbycat." -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "Обратите внимание, что при удалении клуба также удаляются все команды из этого клуба." -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Если вы очень уверены, что хотите удалить это %(object_name)s, пожалуйста, сначала удалите вышеупомянутые объекты и будьте уверены, что вы увидите на странице «команда дебатов» объектов перед продолжением." -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "Если вы точно уверены, что хотите удалить эти объекты %(objects_name)s, пожалуйста, сначала удалите объекты, расположенные выше и внимательно отнеситесь к предупреждению, которую вы увидите на странице объектов \"дебатирующие команды\" перед продолжением." -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "Не забудьте: Если у этой команды должен быть конфликт с её клубом, его нужно сейчас добавить на вкладке \"Конфликты между командами и клубами\", поскольку эта форма не добавляет команде конфликт с её клубом автоматически." -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "Раунд начинается в %(start_time)s" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Команды:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Судья:" @@ -522,274 +512,272 @@ msgstr[1] "Судьи:" msgstr[2] "Судьи:" msgstr[3] "Судьи:" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "Ⓒ" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "Ⓣ" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "В этих дебатах нет вингов или вингов без права голоса." -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "Темы не публикуются." -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Тема:" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Тема %(seq)s:" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "Тема(ы) на этот раунд ещё не опубликованы." -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s в качестве чэйра судит %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s в качестве чэйра судит %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы судитечэйром%(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы судитечэйром%(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s в качестве %(type)sсудит%(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s в качестве %(type)sсудит%(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы в качестве %(type)s судите %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы в качестве %(type)s судите %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s судит %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "%(adjudicator)s судит %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы судите %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "Вы судите %(aff)s против %(neg)s в %(room)s." -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s - чэйр в %(room)s." -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "%(adjudicator)s - чэйр в %(room)s." -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Вы чэйр в %(room)s." -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "Вы чэйрв%(room)s." -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s является%(type)sсудьей в %(room)s." -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "%(adjudicator)s является%(type)sсудьей в %(room)s." -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Вы %(type)sсудите в %(room)s." -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "Вы %(type)sсудите в %(room)s." -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s судит в %(room)s." -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "%(adjudicator)s судит в %(room)s." -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Вы судите в %(room)s." -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "Вы судите в %(room)s." -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "Вы играете на позиции %(side)s против %(opponent)s." -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "Похоже что категории спикеров не были заданы. Если вы хотите создать отдельные спикерские тэбы для каждой категории, например, ESL-тэб или тэб молодых команд, используйте страницу Категории спикеров, чтобы задать их, а затем вернитесь на эту страницу, чтобы установить доступность спикеров." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "Возвраты обратной связи" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "Обратная связь отправлена на %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "Обратная связь не отправлена на одного из %(adjudicators)s (того, кто давал разбор)" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "Обратная связь не отправлена на %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "Получено больше форм обратной связи, чем ожидалось для этих дебатов:" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "Непредвиденная форма обратной связи на %(adjudicator)s" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "%(name)s не имеет формы обратной связи для отправки." -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "В этом раунде (%(round)s)" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "(Не выпущено публично)" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "Аудитория будет анонсирована позже" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "%(adjudicator)s не судит этот раунд." -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "Вы не судите этот раунд." -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." @@ -798,181 +786,180 @@ msgstr[1] "Похоже что %(team)s участвует в %(ndebates)s де msgstr[2] "Похоже что %(team)s участвует в %(ndebates)s дебатах в этом раунде." msgstr[3] "Похоже что %(team)s участвует в %(ndebates)s дебатах в этом раунде." -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "Если это ошибка, немедленно свяжитесь с тэбмастером." -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "%(team)s не дебатировала в этом раунде." -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "В этом раунде нет дебатов." -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "Сетка на этот раунд ещё не была опубликована." -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "Список участников" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "Список клубов" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "Email уже были отправлены." -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "Отправить регистрации команд по email" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "Кодовые имена" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "Категории спикеров" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "Доступность спикеров" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "Категории спикеров позволяют создавать тэбы, специфичные для каждой категории например для ESL или молодых команд. На этой странице вы можете задать, какие будут категории спикеров. После задания категорий вы можете установить доступность спикеров для них на странице Доступность Спикеров." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "Если вы хотите удалить категории спикеров, используйте область Редактировать базу данных." -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "Сохранить категории спикеров" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "Название команды:" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "Кодовое имя:" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Спикеры:" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "Доступны для брейковых категорий:" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "Категории спикеров:" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "%(code_name)s(%(real_name)s)" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "Судьи" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "Спикеры" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "Клубы" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "Код" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "Полное имя" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "Регион" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "Команды" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "Количество команд" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "Судьи" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "Количество судей, за исключением независимых" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "НС" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "Количество независимых судей" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "Кодовое имя" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "Регистрация команд" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "Результаты" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "Запись для %(name)s" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "Предыдущие раунды" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" @@ -981,11 +968,11 @@ msgstr[1] "Сохранена категории: %(list)s" msgstr[2] "Сохранена категории: %(list)s" msgstr[3] "Сохранена категории: %(list)s" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "В категории не было внесено никаких изменений." -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "Доступность спикера для категории" diff --git a/tabbycat/participants/locale/tr/LC_MESSAGES/django.po b/tabbycat/participants/locale/tr/LC_MESSAGES/django.po index 48fc0446259..30c729e86ac 100644 --- a/tabbycat/participants/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:33\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" "Last-Translator: philip_tc\n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -15,845 +15,950 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" -#: participants/admin.py:94 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" -msgstr "" +msgstr "Takım farklı bir turnuvanın break kategorisinde olamaz. Lütfen şunu kaldırın: %(category)s" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "Emoji ve Kod" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Delete URL Key" +msgstr "URL Anahtarını Sil" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d konuşmacısının URL anahtarı kaldırılmıştır." +msgstr[1] "%(count)d konuşmacılarının URL anahtarları kaldırıldı." -#: participants/admin.py:152 participants/admin.py:211 -msgid "Delete URL key" -msgstr "" +#: participants/admin.py +msgid "Reset emoji" +msgstr "Emojiyi sıfırla" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "%(count)d takımının emojisi sıfırlandı." +msgstr[1] "%(count)d takımlarının emojileri sıfırlandı." + +#: participants/admin.py +msgid "Reset code name" +msgstr "Kod ad sıfırla" -#: participants/admin.py:206 +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "%(count)d takımının kod adı sıfırlandı." +msgstr[1] "%(count)d takımlarının kod adları sıfırlandı." + +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(count)d jürisinin URL anahtarı kaldırılmıştır." +msgstr[1] "%(count)d jürilerinin URL anahtarları kaldırıldı." -#: participants/apps.py:7 participants/views.py:40 +#: participants/apps.py participants/views.py msgid "Participants" -msgstr "" +msgstr "Katılımcılar" -#: participants/models.py:20 participants/models.py:36 -#: participants/models.py:65 participants/models.py:95 +#: participants/models.py msgid "name" msgstr "isim" -#: participants/models.py:23 participants/models.py:44 +#: participants/models.py msgid "region" msgstr "bölge" -#: participants/models.py:24 +#: participants/models.py msgid "regions" msgstr "bölgeler" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:38 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" -msgstr "" +msgstr "Kurumun tam adı, örneğin, \"Cambridge Üniversitesi\", \"Wellington Victoria Üniversitesi\"" -#: participants/models.py:40 +#: participants/models.py msgid "code" -msgstr "" +msgstr "kod" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:42 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" -msgstr "" +msgstr "Kurumun tipik olarak kısa adı, örneğin, \"Cambridge\", \"Vic Wellington\"" -#: participants/models.py:54 participants/models.py:154 -#: participants/models.py:340 +#: participants/models.py msgid "institution" -msgstr "" +msgstr "kurum" -#: participants/models.py:55 +#: participants/models.py msgid "institutions" -msgstr "" +msgstr "kurumlar" -#: participants/models.py:63 participants/models.py:156 -#: participants/models.py:343 +#: participants/models.py msgid "tournament" msgstr "turnuva" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:67 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" -msgstr "" +msgstr "Görüntülenecek ad, örneğin \"Acemi\", \"ESL\"" -#: participants/models.py:69 +#: participants/models.py msgid "slug" -msgstr "" +msgstr "jeton" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:71 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" -msgstr "" +msgstr "URL'ler için jeton, örneğin \"acemi\", \"esl\"" -#: participants/models.py:73 +#: participants/models.py msgid "sequence number" -msgstr "" +msgstr "sıra numarası" -#: participants/models.py:74 +#: participants/models.py msgid "The order in which the categories are displayed" -msgstr "" +msgstr "Kategorilerin görüntülenme sırası" -#: participants/models.py:76 +#: participants/models.py msgid "limit" -msgstr "" +msgstr "sınır" -#: participants/models.py:77 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" -msgstr "" +msgstr "En fazla bu kadar konuşmacı bu kategorinin herkese açık tabında gösterilir veya sınır olmaması için 0 kullanın" -#: participants/models.py:79 +#: participants/models.py msgid "public" -msgstr "" +msgstr "herkese açık" -#: participants/models.py:80 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" -msgstr "" +msgstr "İşaretlenirse, bu kategori herkese gösterilen konuşmacı kategorisi tablarına dahil edilecektir." -#: participants/models.py:86 +#: participants/models.py msgid "speaker category" -msgstr "" +msgstr "konuşmacı kategorisi" -#: participants/models.py:87 participants/models.py:321 +#: participants/models.py msgid "speaker categories" -msgstr "" +msgstr "konuşmacı kategorileri" -#: participants/models.py:97 -msgid "e-mail address" +#: participants/models.py +msgid "email address" msgstr "" -#: participants/models.py:99 +#: participants/models.py msgid "phone" -msgstr "" +msgstr "Telefon" -#: participants/models.py:101 +#: participants/models.py msgid "anonymous" -msgstr "" +msgstr "anonim" -#: participants/models.py:102 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" -msgstr "" +msgstr "Anonim kişilerin adları ve takımları herkese açık tab yayınlamalarında redakte edilecektir" -#: participants/models.py:105 +#: participants/models.py +msgid "code name" +msgstr "kod ad" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "Herkese açık sayfalarda gerçek adı gizlemek için kullanılan ad" + +#: participants/models.py msgid "URL key" -msgstr "" +msgstr "URL anahtarı" -#: participants/models.py:110 +#: participants/models.py msgid "male" msgstr "erkek" -#: participants/models.py:111 +#: participants/models.py msgid "female" -msgstr "fişi" +msgstr "kadın" -#: participants/models.py:112 +#: participants/models.py msgid "other" msgstr "diğer" -#: participants/models.py:114 +#: participants/models.py msgid "gender" msgstr "cinsiyet" -#: participants/models.py:115 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" -msgstr "" +msgstr "Cinsiyet, jüri tahsisat arayüzünde görüntülenir ve başka hiçbir yerde görüntülenmez" -#: participants/models.py:117 +#: participants/models.py msgid "pronoun" -msgstr "" +msgstr "zamir" -#: participants/models.py:118 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" -msgstr "" +msgstr "Tabbycat kullanarak ballot yazdırıyorsanız, zamirleri önceden yazdırma seçeneği vardır." -#: participants/models.py:121 +#: participants/models.py msgid "person" -msgstr "" +msgstr "kişi" -#: participants/models.py:122 +#: participants/models.py msgid "persons" -msgstr "" +msgstr "kişi" -#: participants/models.py:137 +#: participants/models.py msgid "full name/suffix" -msgstr "" +msgstr "tam ad/sonek" -#: participants/models.py:138 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" -msgstr "" +msgstr "Kurum adını eklemeyin (aşağıdaki \"kurumsal önek kullan\" bölümüne bakın)" -#: participants/models.py:140 +#: participants/models.py msgid "short name/suffix" -msgstr "" +msgstr "kısa ad/sonek" -#: participants/models.py:141 -msgid "The name shown in the draw. Do not include institution name (see \"uses institutional prefix\" below)" -msgstr "" +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "Kurada gösterilen kodsuz ad, kurum adını içermez (aşağıdaki \"kurumsal önek kullan\" bölümüne bakın)" -#: participants/models.py:143 -msgid "code name" -msgstr "" - -#: participants/models.py:144 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" -msgstr "" +msgstr "Herkese açık sayfalarda kurumsal kimliği gizlemek için kullanılan ad" -#: participants/models.py:147 +#: participants/models.py msgid "short name" -msgstr "" +msgstr "kısa ad" -#: participants/models.py:148 -msgid "The name shown in the draw, including institution name. (This is autogenerated.)" -msgstr "" +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "Kurum adı da dahil olmak üzere kurada gösterilen kodsuz ad. (Bu otomatik olarak oluşturulur.)" -#: participants/models.py:150 +#: participants/models.py msgid "long name" -msgstr "" +msgstr "uzun isim" -#: participants/models.py:151 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" -msgstr "" +msgstr "Kurum adı da dahil olmak üzere takımın tam adı. (Bu otomatik olarak oluşturulur.)" -#: participants/models.py:158 +#: participants/models.py msgid "Uses institutional prefix" -msgstr "" +msgstr "Kurumsal önek kullan" -#: participants/models.py:159 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" -msgstr "" +msgstr "İşaretlenirse, Victoria'dan \"1\" adlı bir takım \"Victoria 1\" olarak gösterilecektir." -#: participants/models.py:161 +#: participants/models.py msgid "break categories" -msgstr "" +msgstr "break kategorileri" + +#: participants/models.py +msgid "institution conflicts" +msgstr "kurum conflictleri" -#: participants/models.py:172 +#: participants/models.py msgid "none" -msgstr "" +msgstr "hiçbiri" -#: participants/models.py:173 +#: participants/models.py msgid "swing" -msgstr "" +msgstr "swing" -#: participants/models.py:174 +#: participants/models.py msgid "composite" -msgstr "" +msgstr "terkip" -#: participants/models.py:175 +#: participants/models.py msgid "bye" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "type" -msgstr "" +msgstr "tür" -#: participants/models.py:182 +#: participants/models.py msgid "emoji" -msgstr "" +msgstr "emoji" -#: participants/models.py:196 participants/models.py:319 +#: participants/models.py msgid "team" msgstr "takım" -#: participants/models.py:197 +#: participants/models.py msgid "teams" msgstr "takımlar" -#: participants/models.py:302 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." -msgstr "" +msgstr "Kurumsal önek kullanan takımların bir kurumu olmalıdır." -#: participants/models.py:304 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." -msgstr "" +msgstr "Kurumsal önek kullanmayan takımların tam adı olmalıdır." -#: participants/models.py:306 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." -msgstr "" +msgstr "Kurumsal önek kullanmayan takımların kısa adı olmalıdır." -#: participants/models.py:324 +#: participants/models.py msgid "speaker" msgstr "konuşmacı" -#: participants/models.py:325 +#: participants/models.py msgid "speakers" msgstr "konuşmacılar" -#: participants/models.py:344 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" -msgstr "" +msgstr "Herhangi bir turnuvaya atanmayan jüriler turnuvalar arasında paylaşılabilir" -#: participants/models.py:346 +#: participants/models.py msgid "base score" -msgstr "" +msgstr "temel puan" -#: participants/models.py:352 -msgid "institution conflicts" -msgstr "" - -#: participants/models.py:356 +#: participants/models.py msgid "team conflicts" -msgstr "" +msgstr "takım conflictleri" -#: participants/models.py:359 +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "jüri conflictleri" + +#: participants/models.py msgid "always trainee" -msgstr "" +msgstr "her zaman acemi" -#: participants/models.py:360 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" -msgstr "" +msgstr "İşaretlenirse, bu jüriye, puanlarından bağımsız olarak asla otomatik olarak bir oy pozisyonu tahsis edilmeyecektir." -#: participants/models.py:362 +#: participants/models.py msgid "breaking" -msgstr "" +msgstr "break olan" -#: participants/models.py:364 +#: participants/models.py msgid "independent" -msgstr "" +msgstr "bağımsız" -#: participants/models.py:366 +#: participants/models.py msgid "adjudication core" -msgstr "" +msgstr "jüri komitesi" -#: participants/models.py:375 +#: participants/models.py msgid "adjudicator" msgstr "jüri" -#: participants/models.py:376 +#: participants/models.py msgid "adjudicators" msgstr "jüriler" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" -msgstr "" +msgstr "Bu tartışmadan sonra puanlar" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" -msgstr "" +msgstr "Bu tartışmadan sonra galibiyetler" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" -msgstr "" +msgstr "Konuşmacı puanları
    (konuşma sırasına göre)" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" -msgstr "" +msgstr "Konuşuyor" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" -msgstr "" +msgstr "%(name)s hakkında" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" -msgstr "" +msgstr "Bağımsız jüri" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" -msgstr "" +msgstr "jüri komitesi üyesi" -#: participants/templates/adjudicator_registration_card.html:26 -#: participants/templates/team_registration_card.html:57 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" -msgstr "" +msgstr "Kurum:" -#: participants/templates/adjudicator_registration_card.html:30 -#: participants/templates/team_registration_card.html:61 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" -msgstr "" +msgstr "Bağımsız" -#: participants/templates/adjudicator_registration_card.html:34 -#: participants/templates/team_registration_card.html:65 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "Bölge:" -#: participants/templates/adjudicator_registration_card.html:40 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." -msgstr "" +msgstr "Jürilerim kurumsal bağlantıları bu turnuvada herkese açık değildir." -#: participants/templates/adjudicator_registration_card.html:47 -#: participants/templates/team_registration_card.html:74 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" -msgstr "" +msgstr "Kurumsal Conflictler:" -#: participants/templates/adjudicator_registration_card.html:49 -#: participants/templates/team_registration_card.html:76 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "; " -#: participants/templates/adjudicator_registration_card.html:51 -#: participants/templates/adjudicator_registration_card.html:58 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:79 -#: participants/templates/team_registration_card.html:30 -#: participants/templates/team_registration_card.html:41 -#: participants/templates/team_registration_card.html:49 -#: participants/templates/team_registration_card.html:78 -#: participants/templates/team_registration_card.html:85 -#: participants/templates/team_registration_card.html:95 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" -msgstr "" +msgstr "Hiçbiri" -#: participants/templates/adjudicator_registration_card.html:54 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" -msgstr "" +msgstr "Takım Conflictleri:" -#: participants/templates/adjudicator_registration_card.html:56 -#: participants/templates/adjudicator_registration_card.html:64 -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/adjudicator_registration_card.html:77 -#: participants/templates/team_registration_card.html:28 -#: participants/templates/team_registration_card.html:39 -#: participants/templates/team_registration_card.html:47 -#: participants/templates/team_registration_card.html:83 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr ", " -#: participants/templates/adjudicator_registration_card.html:61 -#: participants/templates/team_registration_card.html:81 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" -msgstr "" +msgstr "Hakem Conflictleri:" -#: participants/templates/adjudicator_registration_card.html:75 -#: participants/templates/team_registration_card.html:91 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" -msgstr "" +msgstr "Oda Kısıtlamaları:" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." -msgstr "" +msgstr "Unutmayın: Bu jürinin kendi kurumuyla conflictli olması gerekiyorsa, bu conflicti şimdi yukarıdaki Jüri-kurum conflictleri sekmesine eklemelisiniz, çünkü kendi kurum conflicti bu formu kullanırken otomatik olarak yaratılmamıştır." -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." -msgstr "" +msgstr "Uyarı: Yukarıdaki listede \"tartışma takımı\" nesneleri varsa, muhtemelen bu %(object_name)s öğesini silmemelisiniz." -#: participants/templates/admin/participants/delete_debateteam_warning.html:13 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format -msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete these %(objects_name)s." -msgstr "" +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "Uyarı: Yukarıdaki listede \"tartışma takımı\" nesneleri varsa, muhtemelen seçili %(object_name)s öğesini silmemelisiniz." #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:20 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." -msgstr "" +msgstr "Bu, özellikle silinecek herhangi bir takım önceden bir maça katılmışsa geçerlidir. Bir takımın önceden girilmiş bir sonucu varsa, takımı silmek, artık bu sonuçlara ihtiyacınız olmadığını düşünseniz bile, bu sonuçları da siler, normalde tabı bozar. Bir takım tartıştıysa ve turnuvadan çekiliyorsa, silmemelisiniz. Tabbycat yönetici alanının \"Kullanılabilirlik\" bölümünün altında takımı etkin değil olarak işaretlemeniz yeterlidir." -#: participants/templates/admin/participants/delete_debateteam_warning.html:32 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." -msgstr "" +msgstr "Bir kurumu silmenin, o kurumdaki tüm takımları da sileceğini unutmayın." -#: participants/templates/admin/participants/delete_debateteam_warning.html:40 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." -msgstr "" +msgstr "Bu %(object_name)s'i silme konusunda kararlıysanız, lütfen önce yukarıdaki nesneleri silin ve devam etmeden önce \"tartışma takımı\" nesneleri sayfasında göreceğiniz uyarıyı dikkate aldığınızdan emin olun." -#: participants/templates/admin/participants/delete_debateteam_warning.html:46 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." -msgstr "" +msgstr "Bu %(object_name)s'i silme konusunda kararlıysanız, lütfen önce yukarıdaki nesneleri silin ve devam etmeden önce \"tartışma takımı\" nesneleri sayfasında göreceğiniz uyarıyı dikkate aldığınızdan emin olun." -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." -msgstr "" +msgstr "Unutmayın: Bu takımın kendi kurumuyla conflictli olması gerekiyorsa, bu conflicti şimdi yukarıdaki takım-kurum conflictleri sekmesine eklemelisiniz, çünkü kendi kurum conflicti bu formu kullanırken otomatik olarak yaratılmamıştır." -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" -msgstr "" +msgstr "Tur %(start_time)s saatinde başlar" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "Takımlar:" -#: participants/templates/current_round/common.html:30 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "Jüri:" msgstr[1] "Jüriler:" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" -msgstr "Ⓑ" +msgstr "Ⓒ" -#: participants/templates/current_round/common.html:39 -#: participants/templates/current_round/common.html:41 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" -msgstr "" +msgstr "Ⓣ" -#: participants/templates/current_round/common.html:46 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." -msgstr "" +msgstr "Bu maça atanmış panelist veya acemi yoktur." -#: participants/templates/current_round/common.html:56 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." -msgstr "" +msgstr "Önergeler herkese yayınlanmaz." -#: participants/templates/current_round/common.html:59 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "Önerge:" -#: participants/templates/current_round/common.html:63 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "Önerge %(seq)s:" -#: participants/templates/current_round/common.html:71 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." -msgstr "" +msgstr "Bu tur için önerge(ler) henüz yayınlanmadı." -#: participants/templates/current_round/round_adj.html:13 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "%(adjudicator)s %(aff)s vs %(neg)s için %(room)s odada jürilik yapak başkandır." + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "%(adjudicator)s %(aff)s vs %(neg)s için %(room)s odada jürilik yapak başkandır." -#: participants/templates/current_round/round_adj.html:17 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "Siz %(aff)s vs %(neg)s için %(room)s odada jürilik yapak başkandır." + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "Siz %(aff)s vs %(neg)s için %(room)s odada jürilik yapan başkansinız." -#: participants/templates/current_round/round_adj.html:23 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "%(adjudicator)s, /strong< >strong(aff)s ile %(neg)s%(room)s. karar veren bir s'dir." + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "%(adjudicator)s, /strong< >strong(aff)s ile %(neg)s /strong< > karar veren bir s'dir." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "Siz %(room)s odasında %(aff)s vs %(neg)s maçında jüri olarak göver alan bir %(type)s" -#: participants/templates/current_round/round_adj.html:27 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "Siz %(room)s odasında %(aff)s vs %(neg)s maçında jüri olarak göver alan bir %(type)s" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "%(adjudicator)s %(room)s odasındaki %(aff)s vs %(neg)s maçında görev alıyor" -#: participants/templates/current_round/round_adj.html:33 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "%(adjudicator)s (room)s odasındaki %(aff)s vs %(neg)s maçında görev alıyor" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "Siz %(room)s odasındaki %(aff)s vs %(neg)s maçında görevlisiniz." -#: participants/templates/current_round/round_adj.html:37 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." -msgstr "" +msgstr "Siz (room)s odasındaki %(aff)s vs %(neg)s maçında görevlisiniz." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "%(adjudicator)s %(room)s odasında başkan olarak görev alıyor." -#: participants/templates/current_round/round_adj.html:48 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." -msgstr "" +msgstr "%(adjudicator)s %(room)s odasında başkan olarak görev alıyor." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "%(room)s odasında başkan olarak görev alıyorsunuz." -#: participants/templates/current_round/round_adj.html:52 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." -msgstr "" +msgstr "%(room)s odasında başkan olarak görev alıyorsunuz." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "%(adjudicator)s bir %(type)s olarak %(room)s odasında görevli." -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." -msgstr "" +msgstr "%(adjudicator)s bir %(type)s olarak %(room)s odasında görevli." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "Siz bir %(type)s olarak %(room)s odasında görevlisiniz." -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." -msgstr "" +msgstr "Siz bir %(type)s olarak %(room)s odasında görevlisiniz." -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "%(adjudicator)s %(room)s odasında görevli." + +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." -msgstr "" +msgstr "%(adjudicator)s %(room)s odasında görevli." -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "%(room)s odasında görevlisiniz." + +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." -msgstr "" +msgstr "%(room)s odasında görevlisiniz." -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team against %(opponent)s in %(room)s." -msgstr "" +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "%(team)s takımı maçında %(side)s takımı olarak %(opponent)s takımına karşı." -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team against %(opponent)s in %(room)s." -msgstr "" +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "Siz maçınızda %(side)s takımı olarak %(opponent)s takımına karşısınız." -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating against %(opponent)s in %(room)s." -msgstr "" +msgid "%(team)s is debating against %(opponent)s." +msgstr "%(team)s maçta %(opponent)s rakibine karşı." -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating against %(opponent)s in %(room)s." -msgstr "" +msgid "You are debating against %(opponent)s." +msgstr "Maçınız %(opponent)s rakibine karşı." -#: participants/templates/current_round/round_team.html:37 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating as the %(side)s team in %(room)s." -msgstr "" +msgid "%(team)s is debating as the %(side)s team." +msgstr "%(team)s takımı %(side)s takımı olarak maçta." -#: participants/templates/current_round/round_team.html:41 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating as the %(side)s team in %(room)s." -msgstr "" +msgid "You are debating as the %(side)s team." +msgstr "%(side)s olarak maçtasınız." -#: participants/templates/current_round/round_team.html:47 +#: participants/templates/current_round/round_team.html #, python-format -msgid "%(team)s is debating in %(room)s." -msgstr "" +msgid "%(team)s's debate is in %(room)s." +msgstr "%(team)s takımının maçı %(room)s odasında." -#: participants/templates/current_round/round_team.html:51 +#: participants/templates/current_round/round_team.html #, python-format -msgid "You are debating in %(room)s." -msgstr "" +msgid "%(team)s's debate is in %(room)s." +msgstr "%(team)s takımının tartışması %(room)s odasında." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "Tartışmanız %(room)s odasında." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "Tartışmanız %(room)s odasında." -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." -msgstr "" +msgstr "Herhangi bir konuşmacı kategorisi tanımlanmamış gibi görünüyor. Acemi veya ESL tabı gibi kategoriye özgü konuşmacı tabları oluşturmak istiyorsanız bunları tanımlamak için Konuşmacı Kategorileri sayfasını kullanın, ardından konuşmacı uygunluğunu ayarlamak için bu sayfaya dönün." -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" -msgstr "" +msgstr "Geri Bildirim İadeleri" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" -msgstr "" +msgstr "%(adjudicator)s için geri bildirim gönderdi" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" -msgstr "" +msgstr "Aşağıdakilerden biri için geri bildirim göndermedi: %(adjudicators)s (sözlü kararı kim verdiyse)" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" -msgstr "" +msgstr "strong>%(adjudicator)s için geri bildirim göndermedi" -#: participants/templates/feedback_progress_panel.html:39 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" -msgstr "" +msgstr "Bu tartışma için beklenenden daha fazla geri bildirim gönderilidi:" -#: participants/templates/feedback_progress_panel.html:48 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" -msgstr "" +msgstr "%(adjudicator)s için beklenmeyen geri bildirim gönderimi" -#: participants/templates/feedback_progress_panel.html:55 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." -msgstr "" +msgstr "%(name)s'in gönderecek herhangi bir geri bildirimi yok." -#: participants/templates/in_this_round.html:8 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" -msgstr "" +msgstr "Bu Tur (%(round)s)" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "Bu Tur" -#: participants/templates/in_this_round.html:12 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" -msgstr "" +msgstr "(Halka Yayınlanmadı)" -#: participants/templates/in_this_round.html:19 +#: participants/templates/in_this_round.html msgid "Room TBA" -msgstr "" +msgstr "Oda Belirlenmedi" -#: participants/templates/in_this_round.html:31 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." -msgstr "" +msgstr "%(adjudicator)s bu tura dahil değil." -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." -msgstr "" +msgstr "Bu tur jürisiniz." -#: participants/templates/in_this_round.html:50 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Görünüşe göre %(team)s, bu tur %(ndebates)s tartışmada yarışıyor." +msgstr[1] "Görünüşe göre %(team)s, bu tur %(ndebates)s tartışmada yarışıyor." -#: participants/templates/in_this_round.html:56 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." -msgstr "" +msgstr "Bu bir hataysa, lütfen hemen bir tab yöneticisiyle iletişime geçin." -#: participants/templates/in_this_round.html:71 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." -msgstr "" +msgstr "%(team)s'ın bu turda maçı yok." -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." -msgstr "" +msgstr "Bu tur maçınız yok." -#: participants/templates/in_this_round.html:87 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." -msgstr "" +msgstr "Bu turun kurası henüz açıklanmadı." -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" -msgstr "" +msgstr "Katılımcı Listesi" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" -msgstr "" +msgstr "Kurum Listesi" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." -msgstr "" +msgstr "E-postalar zaten gönderildi." -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" -msgstr "" +msgstr "Ekip Kayıtlarını E-postayla Gönder" -#: participants/templates/participants_subnav.html:26 participants/views.py:134 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" -msgstr "" +msgstr "Kod İsimler" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" -msgstr "" +msgstr "konuşmacı kategorileri" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" -msgstr "" +msgstr "Konuşmacı Uygunluğu" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." -msgstr "" +msgstr "Konuşmacı kategorileri, acemi veya ESL gibi kategoriye özgü konuşmacı tablarının üretilmesini sağlar. Bu sayfada, hangi konuşmacı kategorilerinin bulunduğunu tanımlayabilirsiniz. Kategorileri tanımladıktan sonra, Konuşmacı Uygunluğu sayfasından konuşmacı uygunluğunu ayarlayabilirsiniz." -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." -msgstr "" +msgstr "Konuşmacı kategorilerini silmek istiyorsanız, Edit Database alanını kullanın." -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" -msgstr "" +msgstr "Konuşmacı Kategorilerini Kaydet" -#: participants/templates/team_registration_card.html:14 +#: participants/templates/team_registration_card.html msgid "Team name:" -msgstr "" +msgstr "Takım adı:" -#: participants/templates/team_registration_card.html:14 -msgid "Full name:" -msgstr "" +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "Tam takım adı:" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "Kısa takım adı:" -#: participants/templates/team_registration_card.html:18 +#: participants/templates/team_registration_card.html msgid "Code name:" -msgstr "" +msgstr "Kod ad:" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "Kod adı yok" -#: participants/templates/team_registration_card.html:26 +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "Emoji:" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "Emoji yok" + +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "Konuşmacılar:" -#: participants/templates/team_registration_card.html:37 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" -msgstr "" +msgstr "Break kategorileri için uygun:" -#: participants/templates/team_registration_card.html:45 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" -msgstr "" +msgstr "Konuşmacı kategorileri:" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" -msgstr "" +msgstr "%(code_name)s (%(real_name)s)" -#: participants/views.py:45 +#: participants/views.py msgid "Adjudicators" msgstr "Jüriler" -#: participants/views.py:54 +#: participants/views.py msgid "Speakers" msgstr "Konuşmacılar" -#: participants/views.py:85 +#: participants/views.py msgid "Institutions" -msgstr "" +msgstr "Kurumlar" -#: participants/views.py:101 +#: participants/views.py msgid "Code" -msgstr "" +msgstr "Kod" -#: participants/views.py:102 +#: participants/views.py msgid "Full name" -msgstr "" +msgstr "Tam ad" -#: participants/views.py:104 +#: participants/views.py msgid "Region" msgstr "Bölge" -#: participants/views.py:106 +#: participants/views.py msgid "Teams" msgstr "Takımlar" -#: participants/views.py:106 +#: participants/views.py msgid "Number of teams" -msgstr "" +msgstr "Takım sayısı" -#: participants/views.py:108 +#: participants/views.py msgid "Adjs" -msgstr "" +msgstr "Jüriler" -#: participants/views.py:109 +#: participants/views.py msgid "Number of adjudicators, excluding independents" -msgstr "" +msgstr "Bağımsızlar hariç Jüri sayısı" -#: participants/views.py:111 +#: participants/views.py msgid "IAs" -msgstr "" +msgstr "BJ'ler" -#: participants/views.py:112 +#: participants/views.py msgid "Number of independent adjudicators" -msgstr "" +msgstr "Bağımsız Jüri sayısı" -#: participants/views.py:142 +#: participants/views.py msgid "Code name" -msgstr "" +msgstr "Kod ad" -#: participants/views.py:162 +#: participants/views.py msgid "Team Registration" -msgstr "" +msgstr "takım kaydı" -#: participants/views.py:208 +#: participants/views.py msgid "Results" -msgstr "" +msgstr "Sonuçlar" -#: participants/views.py:213 participants/views.py:247 +#: participants/views.py #, python-format msgid "Record for %(name)s" -msgstr "" +msgstr "%(name)s için kayıtlar" -#: participants/views.py:244 +#: participants/views.py msgid "Previous Rounds" -msgstr "" +msgstr "Önceki Turlar" -#: participants/views.py:333 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Kaydedilen kategori: %(list)s" +msgstr[1] "Kaydedilen kategoriler: %(list)s" -#: participants/views.py:339 +#: participants/views.py msgid "No changes were made to the categories." -msgstr "" +msgstr "Kategorilerde herhangi bir değişiklik yapılmadı." -#: participants/views.py:352 +#: participants/views.py msgid "Speaker Category Eligibility" -msgstr "" +msgstr "Konuşmacı Kategori Uygunluğu" diff --git a/tabbycat/participants/locale/tzl/LC_MESSAGES/django.po b/tabbycat/participants/locale/tzl/LC_MESSAGES/django.po index 28b167d567b..51b20699b79 100644 --- a/tabbycat/participants/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -18,960 +18,947 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "crwdns31870:0%(category)scrwdne31870:0" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "crwdns52213:0crwdne52213:0" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "crwdns52215:0crwdne52215:0" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "crwdns34372:1%(count)dcrwdne34372:1" msgstr[1] "crwdns34372:5%(count)dcrwdne34372:5" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" -msgstr "crwdns31874:0crwdne31874:0" +#: participants/admin.py +msgid "Reset emoji" +msgstr "crwdns51956:0crwdne51956:0" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "crwdns51954:1%(count)dcrwdne51954:1" msgstr[1] "crwdns51954:5%(count)dcrwdne51954:5" -#: participants/admin.py:164 -msgid "Reset emoji" -msgstr "crwdns51956:0crwdne51956:0" +#: participants/admin.py +msgid "Reset code name" +msgstr "crwdns51960:0crwdne51960:0" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "crwdns51958:1%(count)dcrwdne51958:1" msgstr[1] "crwdns51958:5%(count)dcrwdne51958:5" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "crwdns51960:0crwdne51960:0" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "crwdns31876:1%(count)dcrwdne31876:1" msgstr[1] "crwdns31876:5%(count)dcrwdne31876:5" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "crwdns31878:0crwdne31878:0" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "crwdns31880:0crwdne31880:0" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "crwdns31882:0crwdne31882:0" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "crwdns31884:0crwdne31884:0" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "crwdns31886:0crwdne31886:0" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "crwdns31888:0crwdne31888:0" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "crwdns31890:0crwdne31890:0" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "crwdns31892:0crwdne31892:0" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "crwdns31894:0crwdne31894:0" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "crwdns31896:0crwdne31896:0" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "crwdns31898:0crwdne31898:0" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "crwdns31900:0crwdne31900:0" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "crwdns31902:0crwdne31902:0" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "crwdns31904:0crwdne31904:0" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "crwdns31906:0crwdne31906:0" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "crwdns31908:0crwdne31908:0" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "crwdns31910:0crwdne31910:0" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "crwdns31912:0crwdne31912:0" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "crwdns31914:0crwdne31914:0" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "crwdns31916:0crwdne31916:0" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "crwdns31918:0crwdne31918:0" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "crwdns51610:0crwdne51610:0" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "crwdns31922:0crwdne31922:0" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "crwdns31924:0crwdne31924:0" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "crwdns31926:0crwdne31926:0" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "crwdns31958:0crwdne31958:0" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "crwdns52217:0crwdne52217:0" + +#: participants/models.py msgid "URL key" msgstr "crwdns31928:0crwdne31928:0" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "crwdns31932:0crwdne31932:0" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "crwdns31934:0crwdne31934:0" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "crwdns31936:0crwdne31936:0" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "crwdns31938:0crwdne31938:0" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "crwdns31940:0crwdne31940:0" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "crwdns31942:0crwdne31942:0" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "crwdns31944:0crwdne31944:0" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "crwdns31946:0crwdne31946:0" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "crwdns31948:0crwdne31948:0" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "crwdns31950:0crwdne31950:0" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "crwdns31952:0crwdne31952:0" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "crwdns31954:0crwdne31954:0" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "crwdns51804:0crwdne51804:0" -#: participants/models.py:144 -msgid "code name" -msgstr "crwdns31958:0crwdne31958:0" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "crwdns31960:0crwdne31960:0" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "crwdns31962:0crwdne31962:0" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "crwdns51806:0crwdne51806:0" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "crwdns31966:0crwdne31966:0" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "crwdns31968:0crwdne31968:0" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "crwdns31972:0crwdne31972:0" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "crwdns31974:0crwdne31974:0" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "crwdns31976:0crwdne31976:0" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "crwdns32008:0crwdne32008:0" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "crwdns31978:0crwdne31978:0" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "crwdns31980:0crwdne31980:0" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "crwdns31982:0crwdne31982:0" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "crwdns31984:0crwdne31984:0" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "crwdns31986:0crwdne31986:0" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "crwdns31988:0crwdne31988:0" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "crwdns31990:0crwdne31990:0" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "crwdns31992:0crwdne31992:0" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "crwdns31994:0crwdne31994:0" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "crwdns31996:0crwdne31996:0" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "crwdns31998:0crwdne31998:0" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "crwdns32000:0crwdne32000:0" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "crwdns32002:0crwdne32002:0" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "crwdns32004:0crwdne32004:0" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "crwdns35628:0crwdne35628:0" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "crwdns32010:0crwdne32010:0" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "crwdns51612:0crwdne51612:0" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "crwdns32012:0crwdne32012:0" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "crwdns32014:0crwdne32014:0" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "crwdns32016:0crwdne32016:0" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "crwdns32018:0crwdne32018:0" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "crwdns32020:0crwdne32020:0" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "crwdns32022:0crwdne32022:0" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "crwdns32024:0crwdne32024:0" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "crwdns32026:0crwdne32026:0" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "crwdns32028:0crwdne32028:0" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "crwdns32030:0crwdne32030:0" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "crwdns32032:0crwdne32032:0" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "crwdns32074:0%(name)scrwdne32074:0" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "crwdns34374:0crwdne34374:0" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "crwdns35234:0crwdne35234:0" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "crwdns35236:0crwdne35236:0" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "crwdns35238:0crwdne35238:0" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "crwdns35240:0crwdne35240:0" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "crwdns51326:0crwdne51326:0" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "crwdns35242:0crwdne35242:0" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr "crwdns35244:0crwdne35244:0" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "crwdns35246:0crwdne35246:0" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "crwdns35248:0crwdne35248:0" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "crwdns35250:0crwdne35250:0" -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "crwdns35252:0crwdne35252:0" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "crwdns51328:0crwdne51328:0" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "crwdns32084:0crwdne32084:0" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "crwdns32086:0%(object_name)scrwdne32086:0" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "crwdns51670:0%(objects_name)scrwdne51670:0" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "crwdns32090:0crwdne32090:0" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "crwdns32092:0crwdne32092:0" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "crwdns32094:0%(object_name)scrwdne32094:0" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "crwdns32096:0%(objects_name)scrwdne32096:0" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "crwdns34392:0crwdne34392:0" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "crwdns32050:0%(start_time)scrwdne32050:0" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "crwdns32052:0crwdne32052:0" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "crwdns32054:1crwdne32054:1" msgstr[1] "crwdns32054:5crwdne32054:5" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "crwdns32056:0crwdne32056:0" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "crwdns32058:0crwdne32058:0" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "crwdns32060:0crwdne32060:0" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "crwdns32062:0crwdne32062:0" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "crwdns32064:0crwdne32064:0" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "crwdns32066:0%(seq)scrwdne32066:0" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "crwdns32068:0crwdne32068:0" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51672:0%(adjudicator)scrwdnd51672:0%(aff)scrwdnd51672:0%(neg)scrwdnd51672:0%(url)scrwdnd51672:0%(room)scrwdne51672:0" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51330:0%(adjudicator)scrwdnd51330:0%(aff)scrwdnd51330:0%(neg)scrwdnd51330:0%(room)scrwdne51330:0" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51674:0%(aff)scrwdnd51674:0%(neg)scrwdnd51674:0%(url)scrwdnd51674:0%(room)scrwdne51674:0" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51332:0%(aff)scrwdnd51332:0%(neg)scrwdnd51332:0%(room)scrwdne51332:0" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51676:0%(adjudicator)scrwdnd51676:0%(type)scrwdnd51676:0%(aff)scrwdnd51676:0%(neg)scrwdnd51676:0%(url)scrwdnd51676:0%(room)scrwdne51676:0" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51334:0%(adjudicator)scrwdnd51334:0%(type)scrwdnd51334:0%(aff)scrwdnd51334:0%(neg)scrwdnd51334:0%(room)scrwdne51334:0" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51678:0%(type)scrwdnd51678:0%(aff)scrwdnd51678:0%(neg)scrwdnd51678:0%(url)scrwdnd51678:0%(room)scrwdne51678:0" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51336:0%(type)scrwdnd51336:0%(aff)scrwdnd51336:0%(neg)scrwdnd51336:0%(room)scrwdne51336:0" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51680:0%(adjudicator)scrwdnd51680:0%(aff)scrwdnd51680:0%(neg)scrwdnd51680:0%(url)scrwdnd51680:0%(room)scrwdne51680:0" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51338:0%(adjudicator)scrwdnd51338:0%(aff)scrwdnd51338:0%(neg)scrwdnd51338:0%(room)scrwdne51338:0" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51682:0%(aff)scrwdnd51682:0%(neg)scrwdnd51682:0%(url)scrwdnd51682:0%(room)scrwdne51682:0" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "crwdns51340:0%(aff)scrwdnd51340:0%(neg)scrwdnd51340:0%(room)scrwdne51340:0" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "crwdns51684:0%(adjudicator)scrwdnd51684:0%(url)scrwdnd51684:0%(room)scrwdne51684:0" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "crwdns51342:0%(adjudicator)scrwdnd51342:0%(room)scrwdne51342:0" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "crwdns51686:0%(url)scrwdnd51686:0%(room)scrwdne51686:0" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "crwdns51344:0%(room)scrwdne51344:0" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "crwdns51688:0%(adjudicator)scrwdnd51688:0%(type)scrwdnd51688:0%(url)scrwdnd51688:0%(room)scrwdne51688:0" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "crwdns51346:0%(adjudicator)scrwdnd51346:0%(type)scrwdnd51346:0%(room)scrwdne51346:0" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "crwdns51690:0%(type)scrwdnd51690:0%(url)scrwdnd51690:0%(room)scrwdne51690:0" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "crwdns51348:0%(type)scrwdnd51348:0%(room)scrwdne51348:0" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "crwdns51692:0%(adjudicator)scrwdnd51692:0%(url)scrwdnd51692:0%(room)scrwdne51692:0" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "crwdns51350:0%(adjudicator)scrwdnd51350:0%(room)scrwdne51350:0" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "crwdns51694:0%(url)scrwdnd51694:0%(room)scrwdne51694:0" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "crwdns51352:0%(room)scrwdne51352:0" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "crwdns51614:0%(team)scrwdnd51614:0%(side)scrwdnd51614:0%(opponent)scrwdne51614:0" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "crwdns51616:0%(side)scrwdnd51616:0%(opponent)scrwdne51616:0" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "crwdns51618:0%(team)scrwdnd51618:0%(opponent)scrwdne51618:0" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "crwdns51620:0%(opponent)scrwdne51620:0" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "crwdns51622:0%(team)scrwdnd51622:0%(side)scrwdne51622:0" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "crwdns51624:0%(side)scrwdne51624:0" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "crwdns51626:0%(team)scrwdnd51626:0%(url)scrwdnd51626:0%(room)scrwdne51626:0" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "crwdns51628:0%(team)scrwdnd51628:0%(room)scrwdne51628:0" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "crwdns51630:0%(url)scrwdnd51630:0%(room)scrwdne51630:0" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "crwdns51632:0%(room)scrwdne51632:0" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "crwdns32102:0%(categories_url)scrwdne32102:0" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "crwdns32104:0crwdne32104:0" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "crwdns32106:0%(adjudicator)scrwdne32106:0" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "crwdns32108:0%(adjudicators)scrwdne32108:0" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "crwdns32110:0%(adjudicator)scrwdne32110:0" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "crwdns32112:0crwdne32112:0" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "crwdns32114:0%(adjudicator)scrwdne32114:0" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "crwdns51370:0%(name)scrwdne51370:0" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "crwdns51372:0%(round)scrwdne51372:0" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "crwdns51744:0crwdne51744:0" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "crwdns32036:0crwdne32036:0" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "crwdns51374:0crwdne51374:0" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "crwdns51376:0%(adjudicator)scrwdne51376:0" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "crwdns34414:0crwdne34414:0" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "crwdns51378:1%(team)scrwdnd51378:1%(ndebates)scrwdne51378:1" msgstr[1] "crwdns51378:5%(team)scrwdnd51378:5%(ndebates)scrwdne51378:5" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "crwdns32136:0crwdne32136:0" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "crwdns51380:0%(team)scrwdne51380:0" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "crwdns34416:0crwdne34416:0" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "crwdns32072:0crwdne32072:0" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "crwdns32118:0crwdne32118:0" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "crwdns32120:0crwdne32120:0" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "crwdns34418:0crwdne34418:0" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "crwdns34420:0crwdne34420:0" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "crwdns32122:0crwdne32122:0" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "crwdns32124:0crwdne32124:0" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "crwdns32126:0crwdne32126:0" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "crwdns32128:0crwdne32128:0" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "crwdns32130:0%(edit_db_url)scrwdne32130:0" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "crwdns32132:0crwdne32132:0" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "crwdns35270:0crwdne35270:0" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "crwdns52105:0crwdne52105:0" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "crwdns52107:0crwdne52107:0" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "crwdns32152:0crwdne32152:0" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "crwdns52109:0crwdne52109:0" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "crwdns52111:0crwdne52111:0" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "crwdns52113:0crwdne52113:0" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "crwdns32154:0crwdne32154:0" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "crwdns32158:0crwdne32158:0" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "crwdns34424:0crwdne34424:0" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "crwdns32160:0%(code_name)scrwdnd32160:0%(real_name)scrwdne32160:0" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "crwdns32162:0crwdne32162:0" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "crwdns32164:0crwdne32164:0" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "crwdns32166:0crwdne32166:0" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "crwdns32168:0crwdne32168:0" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "crwdns32170:0crwdne32170:0" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "crwdns32172:0crwdne32172:0" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "crwdns32174:0crwdne32174:0" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "crwdns32176:0crwdne32176:0" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "crwdns32178:0crwdne32178:0" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "crwdns32180:0crwdne32180:0" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "crwdns32182:0crwdne32182:0" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "crwdns32184:0crwdne32184:0" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "crwdns32186:0crwdne32186:0" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "crwdns34426:0crwdne34426:0" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "crwdns32190:0crwdne32190:0" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "crwdns32188:0%(name)scrwdne32188:0" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "crwdns32192:0crwdne32192:0" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "crwdns51382:1%(list)scrwdne51382:1" msgstr[1] "crwdns51382:5%(list)scrwdne51382:5" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "crwdns51384:0crwdne51384:0" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "crwdns32198:0crwdne32198:0" diff --git a/tabbycat/participants/locale/vi/LC_MESSAGES/django.mo b/tabbycat/participants/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..fe466adeb71 Binary files /dev/null and b/tabbycat/participants/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/participants/locale/vi/LC_MESSAGES/django.po b/tabbycat/participants/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..f5b1004e8da --- /dev/null +++ b/tabbycat/participants/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,957 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-25 13:45\n" +"Last-Translator: philip_tc\n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/participants/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 942\n" + +#: participants/admin.py +#, python-format +msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" +msgstr "" + +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d speaker had their URL key removed." +msgid_plural "%(count)d speakers had their URL keys removed." +msgstr[0] "" + +#: participants/admin.py +msgid "Reset emoji" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their emoji reset." +msgid_plural "%(count)d teams had their emojis reset." +msgstr[0] "" + +#: participants/admin.py +msgid "Reset code name" +msgstr "" + +#: participants/admin.py +#, python-format +msgid "%(count)d team had their code name reset." +msgid_plural "%(count)d teams had their code names reset." +msgstr[0] "" + +#: participants/admin.py +#, python-format +msgid "%(count)d adjudicator had their URL key removed." +msgid_plural "%(count)d adjudicators had their URL keys removed." +msgstr[0] "" + +#: participants/apps.py participants/views.py +msgid "Participants" +msgstr "Người tham dự" + +#: participants/models.py +msgid "name" +msgstr "" + +#: participants/models.py +msgid "region" +msgstr "" + +#: participants/models.py +msgid "regions" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" +msgstr "" + +#: participants/models.py +msgid "code" +msgstr "" + +#. Translators: Change the examples to institutions native to your language; keep consistent between strings +#: participants/models.py +msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" +msgstr "" + +#: participants/models.py +msgid "institution" +msgstr "tổ chức" + +#: participants/models.py +msgid "institutions" +msgstr "" + +#: participants/models.py +msgid "tournament" +msgstr "" + +#. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" +msgstr "" + +#: participants/models.py +msgid "slug" +msgstr "" + +#. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" +#: participants/models.py +msgid "Slug for URLs, e.g., \"novice\", \"esl\"" +msgstr "" + +#: participants/models.py +msgid "sequence number" +msgstr "" + +#: participants/models.py +msgid "The order in which the categories are displayed" +msgstr "" + +#: participants/models.py +msgid "limit" +msgstr "" + +#: participants/models.py +msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" +msgstr "" + +#: participants/models.py +msgid "public" +msgstr "" + +#: participants/models.py +msgid "If checked, this category will be included in the speaker category tabs shown to the public" +msgstr "" + +#: participants/models.py +msgid "speaker category" +msgstr "" + +#: participants/models.py +msgid "speaker categories" +msgstr "" + +#: participants/models.py +msgid "email address" +msgstr "" + +#: participants/models.py +msgid "phone" +msgstr "" + +#: participants/models.py +msgid "anonymous" +msgstr "" + +#: participants/models.py +msgid "Anonymous persons will have their name and team redacted on public tab releases" +msgstr "" + +#: participants/models.py +msgid "code name" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "URL key" +msgstr "" + +#: participants/models.py +msgid "male" +msgstr "" + +#: participants/models.py +msgid "female" +msgstr "" + +#: participants/models.py +msgid "other" +msgstr "" + +#: participants/models.py +msgid "gender" +msgstr "" + +#: participants/models.py +msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" +msgstr "" + +#: participants/models.py +msgid "pronoun" +msgstr "" + +#: participants/models.py +msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" +msgstr "" + +#: participants/models.py +msgid "person" +msgstr "" + +#: participants/models.py +msgid "persons" +msgstr "" + +#: participants/models.py +msgid "full name/suffix" +msgstr "" + +#: participants/models.py +msgid "Do not include institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "short name/suffix" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" +msgstr "" + +#: participants/models.py +msgid "Name used to obscure institutional identity on public-facing pages" +msgstr "" + +#: participants/models.py +msgid "short name" +msgstr "" + +#: participants/models.py +msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "long name" +msgstr "" + +#: participants/models.py +msgid "The full name of the team, including institution name. (This is autogenerated.)" +msgstr "" + +#: participants/models.py +msgid "Uses institutional prefix" +msgstr "" + +#: participants/models.py +msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" +msgstr "" + +#: participants/models.py +msgid "break categories" +msgstr "" + +#: participants/models.py +msgid "institution conflicts" +msgstr "" + +#: participants/models.py +msgid "none" +msgstr "" + +#: participants/models.py +msgid "swing" +msgstr "đội thay thế" + +#: participants/models.py +msgid "composite" +msgstr "" + +#: participants/models.py +msgid "bye" +msgstr "" + +#: participants/models.py +msgid "type" +msgstr "" + +#: participants/models.py +msgid "emoji" +msgstr "" + +#: participants/models.py +msgid "team" +msgstr "đội" + +#: participants/models.py +msgid "teams" +msgstr "" + +#: participants/models.py +msgid "Teams must have an institution if they are using the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a full name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "Teams must have a short name if they don't use the institutional prefix." +msgstr "" + +#: participants/models.py +msgid "speaker" +msgstr "" + +#: participants/models.py +msgid "speakers" +msgstr "" + +#: participants/models.py +msgid "Adjudicators not assigned to any tournament can be shared between tournaments" +msgstr "" + +#: participants/models.py +msgid "base score" +msgstr "điểm sàn" + +#: participants/models.py +msgid "team conflicts" +msgstr "" + +#: participants/models.py +msgid "adjudicator conflicts" +msgstr "" + +#: participants/models.py +msgid "always trainee" +msgstr "" + +#: participants/models.py +msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" +msgstr "" + +#: participants/models.py +msgid "breaking" +msgstr "" + +#: participants/models.py +msgid "independent" +msgstr "" + +#: participants/models.py +msgid "adjudication core" +msgstr "" + +#: participants/models.py +msgid "adjudicator" +msgstr "giám khảo" + +#: participants/models.py +msgid "adjudicators" +msgstr "" + +#: participants/tables.py +msgid "Points after this debate" +msgstr "Điểm sau mỗi trận" + +#: participants/tables.py +msgid "Wins after this debate" +msgstr "" + +#: participants/tables.py +msgid "Speaker scores
    (in speaking order)" +msgstr "" + +#: participants/tables.py +msgid "Speaks" +msgstr "" + +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html +#, python-format +msgid "About %(name)s" +msgstr "Về %(name)s" + +#: participants/templates/adjudicator_registration_card.html +msgid "Independent adjudicator" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Member of the adjudication core" +msgstr "Thành viên của ban chuyên môn" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institution:" +msgstr "Tổ chức:" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Unaffiliated" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Region:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "The institutional affiliations of adjudicators are not public at this tournament." +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Institutional Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "; " +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "None" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +msgid "Team Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid ", " +msgstr ", " + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Adjudicator Conflicts:" +msgstr "" + +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html +msgid "Room Constraints:" +msgstr "" + +#: participants/templates/admin/participants/adjudicator/change_form.html +msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." +msgstr "" + +#. Translators: This follows the above sentence in the same paragraph. +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +msgid "Note that deleting an institution also deletes all teams from that institution." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/delete_debateteam_warning.html +#, python-format +msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." +msgstr "" + +#: participants/templates/admin/participants/team/change_form.html +msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." +msgstr "" + +#: participants/templates/current_round/common.html +#, python-format +msgid "The round begins at %(start_time)s" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Teams:" +msgstr "Đội:" + +#: participants/templates/current_round/common.html +msgid "Adjudicator:" +msgid_plural "Adjudicators:" +msgstr[0] "Giám khảo:" + +#: participants/templates/current_round/common.html +msgctxt "chair icon" +msgid "Ⓒ" +msgstr "Ⓒ" + +#: participants/templates/current_round/common.html +msgctxt "trainee icon" +msgid "Ⓣ" +msgstr "Ⓣ" + +#: participants/templates/current_round/common.html +msgid "There are no panellists or trainees assigned to this debate." +msgstr "Không có giám khảo phụ hay giám khảo thực tập được phân công trong trận tranh biện này." + +#: participants/templates/current_round/common.html +msgid "Motions are not released to public." +msgstr "" + +#: participants/templates/current_round/common.html +msgid "Motion:" +msgstr "Kiến nghị:" + +#: participants/templates/current_round/common.html +#, python-format +msgid "Motion %(seq)s:" +msgstr "" + +#: participants/templates/current_round/common.html +msgid "The motion(s) for this round haven't yet been released." +msgstr "(Các) kiến nghị cho vòng này chưa được công bố." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is the chair adjudicating in %(room)s." +msgstr "%(adjudicator)s là giám khảo chính chấm ở %(room)s." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are the chair adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." +msgstr "%(adjudicator)s là %(type)s chấm ở %(room)s." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are a %(type)s adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "%(adjudicator)s is adjudicating in %(room)s." +msgstr "%(adjudicator)s đang chấm ở %(room)s." + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_adj.html +#, python-format +msgid "You are adjudicating in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating against %(opponent)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s is debating as the %(side)s team." +msgstr "%(team)s đang tranh biện trong vị trí %(side)s." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "You are debating as the %(side)s team." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "%(team)s's debate is in %(room)s." +msgstr "Trận tranh biện của %(team)s ở %(room)s." + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/current_round/round_team.html +#, python-format +msgid "Your debate is in %(room)s." +msgstr "" + +#: participants/templates/edit_speaker_eligibility.html +#, python-format +msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "Feedback Returns" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Has not submitted feedback for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +msgid "More feedback submissions than expected for this debate:" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "Unexpected feedback submission for %(adjudicator)s" +msgstr "" + +#: participants/templates/feedback_progress_panel.html +#, python-format +msgid "%(name)s doesn't have any feedback to submit." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "In This Round (%(round)s)" +msgstr "Trong vòng này (%(round)s)" + +#: participants/templates/in_this_round.html +msgid "In This Round" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "(Not Released to Public)" +msgstr "" + +#: participants/templates/in_this_round.html +msgid "Room TBA" +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(adjudicator)s is not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You are not adjudicating this round." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." +msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." +msgstr[0] "" + +#: participants/templates/in_this_round.html +msgid "If this is an error, please contact a tab director immediately." +msgstr "" + +#: participants/templates/in_this_round.html +#, python-format +msgid "%(team)s does not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "You do not have a debate this round." +msgstr "" + +#: participants/templates/in_this_round.html +msgid "The draw for this round hasn't yet been released." +msgstr "Bảng đấu cho vòng này chưa được công bố." + +#: participants/templates/participants_subnav.html +msgid "Participants List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Institutions List" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Emails have already been sent." +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Email Team Registrations" +msgstr "" + +#: participants/templates/participants_subnav.html participants/views.py +msgid "Code Names" +msgstr "" + +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html +msgid "Speaker Categories" +msgstr "" + +#: participants/templates/participants_subnav.html +msgid "Speaker Eligibility" +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +#, python-format +msgid "If you want to delete speaker categories, use the Edit Database area." +msgstr "" + +#: participants/templates/speaker_categories_edit.html +msgid "Save Speaker Categories" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Team name:" +msgstr "Tên đội:" + +#: participants/templates/team_registration_card.html +msgid "Full team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Short team name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Code name:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No code name assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Emoji:" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "No emoji assigned" +msgstr "" + +#: participants/templates/team_registration_card.html +msgid "Speakers:" +msgstr "Thành viên:" + +#: participants/templates/team_registration_card.html +msgid "Eligible for break categories:" +msgstr "Có tư cách break trong bảng:" + +#: participants/templates/team_registration_card.html +msgid "Speaker categories:" +msgstr "" + +#: participants/templatetags/team_name_for_data_entry.py +#, python-format +msgid "%(code_name)s (%(real_name)s)" +msgstr "" + +#: participants/views.py +msgid "Adjudicators" +msgstr "Giám khảo" + +#: participants/views.py +msgid "Speakers" +msgstr "Tranh biện viên" + +#: participants/views.py +msgid "Institutions" +msgstr "" + +#: participants/views.py +msgid "Code" +msgstr "" + +#: participants/views.py +msgid "Full name" +msgstr "" + +#: participants/views.py +msgid "Region" +msgstr "" + +#: participants/views.py +msgid "Teams" +msgstr "Đội" + +#: participants/views.py +msgid "Number of teams" +msgstr "" + +#: participants/views.py +msgid "Adjs" +msgstr "" + +#: participants/views.py +msgid "Number of adjudicators, excluding independents" +msgstr "" + +#: participants/views.py +msgid "IAs" +msgstr "" + +#: participants/views.py +msgid "Number of independent adjudicators" +msgstr "" + +#: participants/views.py +msgid "Code name" +msgstr "" + +#: participants/views.py +msgid "Team Registration" +msgstr "" + +#: participants/views.py +msgid "Results" +msgstr "Kết quả" + +#: participants/views.py +#, python-format +msgid "Record for %(name)s" +msgstr "Hồ sơ của %(name)s" + +#: participants/views.py +msgid "Previous Rounds" +msgstr "" + +#: participants/views.py +#, python-format +msgid "Saved category: %(list)s" +msgid_plural "Saved categories: %(list)s" +msgstr[0] "" + +#: participants/views.py +msgid "No changes were made to the categories." +msgstr "" + +#: participants/views.py +msgid "Speaker Category Eligibility" +msgstr "" + diff --git a/tabbycat/participants/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/participants/locale/zh_Hans/LC_MESSAGES/django.po index 9b335b528bc..be43bec2c4b 100644 --- a/tabbycat/participants/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-28 21:53-0400\n" -"PO-Revision-Date: 2021-11-29 02:16\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -18,953 +18,940 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 942\n" -#: participants/admin.py:96 +#: participants/admin.py #, python-format msgid "The team can't be in a break category of a different tournament. Please remove: %(category)s" msgstr "" -#: participants/admin.py:148 +#: participants/admin.py +msgid "Emoji & Code" +msgstr "" + +#: participants/admin.py +msgid "Delete URL Key" +msgstr "" + +#: participants/admin.py #, python-format msgid "%(count)d speaker had their URL key removed." msgid_plural "%(count)d speakers had their URL keys removed." msgstr[0] "" -#: participants/admin.py:152 participants/admin.py:233 -msgid "Delete URL key" +#: participants/admin.py +msgid "Reset emoji" msgstr "" -#: participants/admin.py:160 +#: participants/admin.py #, python-format msgid "%(count)d team had their emoji reset." msgid_plural "%(count)d teams had their emojis reset." msgstr[0] "" -#: participants/admin.py:164 -msgid "Reset emoji" +#: participants/admin.py +msgid "Reset code name" msgstr "" -#: participants/admin.py:170 +#: participants/admin.py #, python-format msgid "%(count)d team had their code name reset." msgid_plural "%(count)d teams had their code names reset." msgstr[0] "" -#: participants/admin.py:174 -msgid "Reset code name" -msgstr "" - -#: participants/admin.py:228 +#: participants/admin.py #, python-format msgid "%(count)d adjudicator had their URL key removed." msgid_plural "%(count)d adjudicators had their URL keys removed." msgstr[0] "" -#: participants/apps.py:7 participants/views.py:41 +#: participants/apps.py participants/views.py msgid "Participants" msgstr "" -#: participants/models.py:21 participants/models.py:37 -#: participants/models.py:66 participants/models.py:96 +#: participants/models.py msgid "name" msgstr "名字" -#: participants/models.py:24 participants/models.py:45 +#: participants/models.py msgid "region" msgstr "地区" -#: participants/models.py:25 +#: participants/models.py msgid "regions" msgstr "地区" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:39 +#: participants/models.py msgid "The institution's full name, e.g., \"University of Cambridge\", \"Victoria University of Wellington\"" msgstr "" -#: participants/models.py:41 +#: participants/models.py msgid "code" msgstr "简写" #. Translators: Change the examples to institutions native to your language; keep consistent between strings -#: participants/models.py:43 +#: participants/models.py msgid "What the institution is typically called for short, e.g., \"Cambridge\", \"Vic Wellington\"" msgstr "" -#: participants/models.py:55 participants/models.py:155 -#: participants/models.py:353 +#: participants/models.py msgid "institution" msgstr "" -#: participants/models.py:56 +#: participants/models.py msgid "institutions" msgstr "" -#: participants/models.py:64 participants/models.py:157 -#: participants/models.py:356 +#: participants/models.py msgid "tournament" msgstr "比赛" #. Translators: Translate ESL to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:68 +#: participants/models.py msgid "Name to be displayed, e.g., \"Novice\", \"ESL\"" msgstr "" -#: participants/models.py:70 +#: participants/models.py msgid "slug" msgstr "" #. Translators: Translate esl to the acronym for " as a second/foreign language", not "English" -#: participants/models.py:72 +#: participants/models.py msgid "Slug for URLs, e.g., \"novice\", \"esl\"" msgstr "" -#: participants/models.py:74 +#: participants/models.py msgid "sequence number" msgstr "" -#: participants/models.py:75 +#: participants/models.py msgid "The order in which the categories are displayed" msgstr "" -#: participants/models.py:77 +#: participants/models.py msgid "limit" msgstr "" -#: participants/models.py:78 +#: participants/models.py msgid "At most this many speakers will be shown on the public tab for this category, or use 0 for no limit" msgstr "" -#: participants/models.py:80 +#: participants/models.py msgid "public" msgstr "" -#: participants/models.py:81 +#: participants/models.py msgid "If checked, this category will be included in the speaker category tabs shown to the public" msgstr "" -#: participants/models.py:87 +#: participants/models.py msgid "speaker category" msgstr "" -#: participants/models.py:88 participants/models.py:330 +#: participants/models.py msgid "speaker categories" msgstr "" -#: participants/models.py:98 +#: participants/models.py msgid "email address" msgstr "" -#: participants/models.py:100 +#: participants/models.py msgid "phone" msgstr "电话号码" -#: participants/models.py:102 +#: participants/models.py msgid "anonymous" msgstr "匿名" -#: participants/models.py:103 +#: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" msgstr "" -#: participants/models.py:106 +#: participants/models.py +msgid "code name" +msgstr "代号" + +#: participants/models.py +msgid "Name used to obscure real name on public-facing pages" +msgstr "" + +#: participants/models.py msgid "URL key" msgstr "" -#: participants/models.py:111 +#: participants/models.py msgid "male" msgstr "男性" -#: participants/models.py:112 +#: participants/models.py msgid "female" msgstr "女性" -#: participants/models.py:113 +#: participants/models.py msgid "other" msgstr "" -#: participants/models.py:115 +#: participants/models.py msgid "gender" msgstr "性别" -#: participants/models.py:116 +#: participants/models.py msgid "Gender is displayed in the adjudicator allocation interface, and nowhere else" msgstr "" -#: participants/models.py:118 +#: participants/models.py msgid "pronoun" msgstr "代词" -#: participants/models.py:119 +#: participants/models.py msgid "If printing ballots using Tabbycat, there is the option to pre-print pronouns" msgstr "" -#: participants/models.py:122 +#: participants/models.py msgid "person" msgstr "人" -#: participants/models.py:123 +#: participants/models.py msgid "persons" msgstr "人" -#: participants/models.py:138 +#: participants/models.py msgid "full name/suffix" msgstr "" -#: participants/models.py:139 +#: participants/models.py msgid "Do not include institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:141 +#: participants/models.py msgid "short name/suffix" msgstr "" -#: participants/models.py:142 +#: participants/models.py msgid "The decoded name shown in the draw, not including institution name (see \"uses institutional prefix\" below)" msgstr "" -#: participants/models.py:144 -msgid "code name" -msgstr "代号" - -#: participants/models.py:145 +#: participants/models.py msgid "Name used to obscure institutional identity on public-facing pages" msgstr "" -#: participants/models.py:148 +#: participants/models.py msgid "short name" msgstr "" -#: participants/models.py:149 +#: participants/models.py msgid "The decoded name shown in the draw, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:151 +#: participants/models.py msgid "long name" msgstr "长名称" -#: participants/models.py:152 +#: participants/models.py msgid "The full name of the team, including institution name. (This is autogenerated.)" msgstr "" -#: participants/models.py:159 +#: participants/models.py msgid "Uses institutional prefix" msgstr "" -#: participants/models.py:160 +#: participants/models.py msgid "If ticked, a team called \"1\" from Victoria will be shown as \"Victoria 1\"" msgstr "" -#: participants/models.py:162 +#: participants/models.py msgid "break categories" msgstr "" -#: participants/models.py:167 participants/models.py:364 +#: participants/models.py msgid "institution conflicts" msgstr "" -#: participants/models.py:178 +#: participants/models.py msgid "none" msgstr "无" -#: participants/models.py:179 +#: participants/models.py msgid "swing" msgstr "" -#: participants/models.py:180 +#: participants/models.py msgid "composite" msgstr "" -#: participants/models.py:181 +#: participants/models.py msgid "bye" msgstr "轮空" -#: participants/models.py:184 +#: participants/models.py msgid "type" msgstr "" -#: participants/models.py:188 +#: participants/models.py msgid "emoji" msgstr "绘文字" -#: participants/models.py:202 participants/models.py:328 +#: participants/models.py msgid "team" msgstr "队伍" -#: participants/models.py:203 +#: participants/models.py msgid "teams" msgstr "队伍" -#: participants/models.py:311 +#: participants/models.py msgid "Teams must have an institution if they are using the institutional prefix." msgstr "" -#: participants/models.py:313 +#: participants/models.py msgid "Teams must have a full name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:315 +#: participants/models.py msgid "Teams must have a short name if they don't use the institutional prefix." msgstr "" -#: participants/models.py:333 +#: participants/models.py msgid "speaker" msgstr "讲员" -#: participants/models.py:334 +#: participants/models.py msgid "speakers" msgstr "讲员" -#: participants/models.py:357 +#: participants/models.py msgid "Adjudicators not assigned to any tournament can be shared between tournaments" msgstr "" -#: participants/models.py:359 +#: participants/models.py msgid "base score" msgstr "" -#: participants/models.py:368 +#: participants/models.py msgid "team conflicts" msgstr "" -#: participants/models.py:372 +#: participants/models.py msgid "adjudicator conflicts" msgstr "" -#: participants/models.py:375 +#: participants/models.py msgid "always trainee" msgstr "" -#: participants/models.py:376 +#: participants/models.py msgid "If checked, this adjudicator will never be auto-allocated a voting position, regardless of their score" msgstr "" -#: participants/models.py:378 +#: participants/models.py msgid "breaking" msgstr "有资格" -#: participants/models.py:380 +#: participants/models.py msgid "independent" msgstr "" -#: participants/models.py:382 +#: participants/models.py msgid "adjudication core" msgstr "" -#: participants/models.py:391 +#: participants/models.py msgid "adjudicator" msgstr "裁判" -#: participants/models.py:392 +#: participants/models.py msgid "adjudicators" msgstr "裁判" -#: participants/tables.py:28 +#: participants/tables.py msgid "Points after this debate" msgstr "" -#: participants/tables.py:30 +#: participants/tables.py msgid "Wins after this debate" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaker scores
    (in speaking order)" msgstr "" -#: participants/tables.py:39 +#: participants/tables.py msgid "Speaks" msgstr "" -#: participants/templates/adjudicator_record.html:17 -#: participants/templates/team_record.html:19 +#: participants/templates/adjudicator_record.html +#: participants/templates/team_record.html #, python-format msgid "About %(name)s" msgstr "" -#: participants/templates/adjudicator_registration_card.html:15 +#: participants/templates/adjudicator_registration_card.html msgid "Independent adjudicator" msgstr "" -#: participants/templates/adjudicator_registration_card.html:18 +#: participants/templates/adjudicator_registration_card.html msgid "Member of the adjudication core" msgstr "" -#: participants/templates/adjudicator_registration_card.html:27 -#: participants/templates/team_registration_card.html:89 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institution:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:31 -#: participants/templates/team_registration_card.html:93 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Unaffiliated" msgstr "" -#: participants/templates/adjudicator_registration_card.html:36 -#: participants/templates/team_registration_card.html:98 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Region:" msgstr "地区:" -#: participants/templates/adjudicator_registration_card.html:43 +#: participants/templates/adjudicator_registration_card.html msgid "The institutional affiliations of adjudicators are not public at this tournament." msgstr "" -#: participants/templates/adjudicator_registration_card.html:50 -#: participants/templates/team_registration_card.html:109 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Institutional Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:52 -#: participants/templates/team_registration_card.html:111 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "; " msgstr ";" -#: participants/templates/adjudicator_registration_card.html:54 -#: participants/templates/adjudicator_registration_card.html:62 -#: participants/templates/adjudicator_registration_card.html:74 -#: participants/templates/adjudicator_registration_card.html:84 -#: participants/templates/team_registration_card.html:58 -#: participants/templates/team_registration_card.html:70 -#: participants/templates/team_registration_card.html:79 -#: participants/templates/team_registration_card.html:113 -#: participants/templates/team_registration_card.html:122 -#: participants/templates/team_registration_card.html:133 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "None" msgstr "无" -#: participants/templates/adjudicator_registration_card.html:58 +#: participants/templates/adjudicator_registration_card.html msgid "Team Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:60 -#: participants/templates/adjudicator_registration_card.html:69 -#: participants/templates/adjudicator_registration_card.html:71 -#: participants/templates/adjudicator_registration_card.html:82 -#: participants/templates/team_registration_card.html:56 -#: participants/templates/team_registration_card.html:68 -#: participants/templates/team_registration_card.html:77 -#: participants/templates/team_registration_card.html:120 -#: participants/templates/team_registration_card.html:131 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid ", " msgstr "," -#: participants/templates/adjudicator_registration_card.html:66 -#: participants/templates/team_registration_card.html:118 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Adjudicator Conflicts:" msgstr "" -#: participants/templates/adjudicator_registration_card.html:80 -#: participants/templates/team_registration_card.html:129 +#: participants/templates/adjudicator_registration_card.html +#: participants/templates/team_registration_card.html msgid "Room Constraints:" msgstr "" -#: participants/templates/admin/participants/adjudicator/change_form.html:8 +#: participants/templates/admin/participants/adjudicator/change_form.html msgid "Don't forget: If this adjudicator should be conflicted against their own institution, you should add this conflict now in the Adjudicator-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:7 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete this %(object_name)s." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:14 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "Warning: If there are “debate team” objects in the above list, you probably shouldn't delete the selected %(objects_name)s." msgstr "" #. Translators: This follows the above sentence in the same paragraph. -#: participants/templates/admin/participants/delete_debateteam_warning.html:21 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "This is especially the case if any team that would be deleted has already participated in a debate. If a team already has a result entered for it, deleting the team also deletes those results, which normally breaks the tab, even if you think you don't need those results anymore. If a team has debated and is withdrawing from the tournament, you should not delete it. Just mark the team inactive under the “Availability” section of the Tabbycat admin area." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:33 +#: participants/templates/admin/participants/delete_debateteam_warning.html msgid "Note that deleting an institution also deletes all teams from that institution." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:41 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting this %(object_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/delete_debateteam_warning.html:47 +#: participants/templates/admin/participants/delete_debateteam_warning.html #, python-format msgid "If you're very sure about deleting these %(objects_name)s, please delete the above objects first, and be sure to heed the warning that you will see on the “debate team” objects page before proceeding." msgstr "" -#: participants/templates/admin/participants/team/change_form.html:8 +#: participants/templates/admin/participants/team/change_form.html msgid "Don't forget: If this team should be conflicted against its own institution, you should add this conflict now in the Team-institution conflicts tab above, because the own-institution conflict is not automatically created when using this form." msgstr "" -#: participants/templates/current_round/common.html:6 +#: participants/templates/current_round/common.html #, python-format msgid "The round begins at %(start_time)s" msgstr "" -#: participants/templates/current_round/common.html:15 +#: participants/templates/current_round/common.html msgid "Teams:" msgstr "队伍:" -#: participants/templates/current_round/common.html:28 +#: participants/templates/current_round/common.html msgid "Adjudicator:" msgid_plural "Adjudicators:" msgstr[0] "裁判:" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "chair icon" msgid "Ⓒ" msgstr "Ⓒ" -#: participants/templates/current_round/common.html:37 -#: participants/templates/current_round/common.html:39 +#: participants/templates/current_round/common.html msgctxt "trainee icon" msgid "Ⓣ" msgstr "Ⓣ" -#: participants/templates/current_round/common.html:44 +#: participants/templates/current_round/common.html msgid "There are no panellists or trainees assigned to this debate." msgstr "" -#: participants/templates/current_round/common.html:54 +#: participants/templates/current_round/common.html msgid "Motions are not released to public." msgstr "" -#: participants/templates/current_round/common.html:57 +#: participants/templates/current_round/common.html msgid "Motion:" msgstr "话题:" -#: participants/templates/current_round/common.html:61 +#: participants/templates/current_round/common.html #, python-format msgid "Motion %(seq)s:" msgstr "话题%(seq)s:" -#: participants/templates/current_round/common.html:69 +#: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." msgstr "" -#: participants/templates/current_round/round_adj.html:14 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:18 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:24 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:28 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:36 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:40 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:46 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:50 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:58 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:62 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:68 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:72 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating %(aff)s vs %(neg)s in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:85 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:89 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:95 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:99 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are the chair adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:107 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:111 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:117 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:121 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are a %(type)s adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:129 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:133 +#: participants/templates/current_round/round_adj.html #, python-format msgid "%(adjudicator)s is adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:139 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_adj.html:143 +#: participants/templates/current_round/round_adj.html #, python-format msgid "You are adjudicating in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:12 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:16 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:22 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:26 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." msgstr "" -#: participants/templates/current_round/round_team.html:39 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:43 +#: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team." msgstr "" -#: participants/templates/current_round/round_team.html:56 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:60 +#: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s's debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:66 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/current_round/round_team.html:70 +#: participants/templates/current_round/round_team.html #, python-format msgid "Your debate is in %(room)s." msgstr "" -#: participants/templates/edit_speaker_eligibility.html:7 +#: participants/templates/edit_speaker_eligibility.html #, python-format msgid "It looks like there aren't any speaker categories are defined. If you'd like to produce category-specific speaker tabs, such as a novice or ESL tab, use the Speaker Categories page to define them, then return to this page to set speaker eligibility." msgstr "" -#: participants/templates/feedback_progress_panel.html:10 +#: participants/templates/feedback_progress_panel.html msgid "Feedback Returns" msgstr "" -#: participants/templates/feedback_progress_panel.html:17 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:25 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for one of: %(adjudicators)s (whoever gave the oral adjudication)" msgstr "" -#: participants/templates/feedback_progress_panel.html:30 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Has not submitted feedback for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:38 +#: participants/templates/feedback_progress_panel.html msgid "More feedback submissions than expected for this debate:" msgstr "" -#: participants/templates/feedback_progress_panel.html:46 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "Unexpected feedback submission for %(adjudicator)s" msgstr "" -#: participants/templates/feedback_progress_panel.html:53 +#: participants/templates/feedback_progress_panel.html #, python-format msgid "%(name)s doesn't have any feedback to submit." msgstr "" -#: participants/templates/in_this_round.html:9 +#: participants/templates/in_this_round.html #, python-format msgid "In This Round (%(round)s)" msgstr "" -#: participants/templates/in_this_round.html:13 +#: participants/templates/in_this_round.html msgid "In This Round" msgstr "" -#: participants/templates/in_this_round.html:16 +#: participants/templates/in_this_round.html msgid "(Not Released to Public)" msgstr "" -#: participants/templates/in_this_round.html:23 +#: participants/templates/in_this_round.html msgid "Room TBA" msgstr "" -#: participants/templates/in_this_round.html:35 +#: participants/templates/in_this_round.html #, python-format msgid "%(adjudicator)s is not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:39 +#: participants/templates/in_this_round.html msgid "You are not adjudicating this round." msgstr "" -#: participants/templates/in_this_round.html:54 +#: participants/templates/in_this_round.html #, python-format msgid "It looks like %(team)s is competing in %(ndebates)s debate this round." msgid_plural "It looks like %(team)s is competing in %(ndebates)s debates this round." msgstr[0] "" -#: participants/templates/in_this_round.html:60 +#: participants/templates/in_this_round.html msgid "If this is an error, please contact a tab director immediately." msgstr "" -#: participants/templates/in_this_round.html:75 +#: participants/templates/in_this_round.html #, python-format msgid "%(team)s does not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:79 +#: participants/templates/in_this_round.html msgid "You do not have a debate this round." msgstr "" -#: participants/templates/in_this_round.html:91 +#: participants/templates/in_this_round.html msgid "The draw for this round hasn't yet been released." msgstr "" -#: participants/templates/participants_subnav.html:6 +#: participants/templates/participants_subnav.html msgid "Participants List" msgstr "" -#: participants/templates/participants_subnav.html:10 +#: participants/templates/participants_subnav.html msgid "Institutions List" msgstr "" -#: participants/templates/participants_subnav.html:15 +#: participants/templates/participants_subnav.html msgid "Emails have already been sent." msgstr "" -#: participants/templates/participants_subnav.html:19 +#: participants/templates/participants_subnav.html msgid "Email Team Registrations" msgstr "" -#: participants/templates/participants_subnav.html:26 participants/views.py:135 +#: participants/templates/participants_subnav.html participants/views.py msgid "Code Names" msgstr "代号" -#: participants/templates/participants_subnav.html:31 -#: participants/templates/speaker_categories_edit.html:4 -#: participants/templates/speaker_categories_edit.html:5 +#: participants/templates/participants_subnav.html +#: participants/templates/speaker_categories_edit.html msgid "Speaker Categories" msgstr "" -#: participants/templates/participants_subnav.html:35 +#: participants/templates/participants_subnav.html msgid "Speaker Eligibility" msgstr "" -#: participants/templates/speaker_categories_edit.html:16 +#: participants/templates/speaker_categories_edit.html msgid "Speaker categories allow category-specific speaker tabs to be produced, e.g., for novice or ESL categories. On this page, you can define what speaker categories exist. After you've defined the categories, you can set speaker eligibility on the Speaker Eligibility page." msgstr "" -#: participants/templates/speaker_categories_edit.html:23 +#: participants/templates/speaker_categories_edit.html #, python-format msgid "If you want to delete speaker categories, use the Edit Database area." msgstr "" -#: participants/templates/speaker_categories_edit.html:29 +#: participants/templates/speaker_categories_edit.html msgid "Save Speaker Categories" msgstr "" -#: participants/templates/team_registration_card.html:16 +#: participants/templates/team_registration_card.html msgid "Team name:" msgstr "队伍名称:" -#: participants/templates/team_registration_card.html:21 +#: participants/templates/team_registration_card.html msgid "Full team name:" msgstr "" -#: participants/templates/team_registration_card.html:25 +#: participants/templates/team_registration_card.html msgid "Short team name:" msgstr "" -#: participants/templates/team_registration_card.html:32 +#: participants/templates/team_registration_card.html msgid "Code name:" msgstr "代号:" -#: participants/templates/team_registration_card.html:36 +#: participants/templates/team_registration_card.html msgid "No code name assigned" msgstr "" -#: participants/templates/team_registration_card.html:42 +#: participants/templates/team_registration_card.html msgid "Emoji:" msgstr "" -#: participants/templates/team_registration_card.html:46 +#: participants/templates/team_registration_card.html msgid "No emoji assigned" msgstr "" -#: participants/templates/team_registration_card.html:54 +#: participants/templates/team_registration_card.html msgid "Speakers:" msgstr "讲员:" -#: participants/templates/team_registration_card.html:66 +#: participants/templates/team_registration_card.html msgid "Eligible for break categories:" msgstr "" -#: participants/templates/team_registration_card.html:75 +#: participants/templates/team_registration_card.html msgid "Speaker categories:" msgstr "" -#: participants/templatetags/team_name_for_data_entry.py:18 +#: participants/templatetags/team_name_for_data_entry.py #, python-format msgid "%(code_name)s (%(real_name)s)" msgstr "%(code_name)s(%(real_name)s)" -#: participants/views.py:46 +#: participants/views.py msgid "Adjudicators" msgstr "裁判" -#: participants/views.py:55 +#: participants/views.py msgid "Speakers" msgstr "讲员" -#: participants/views.py:86 +#: participants/views.py msgid "Institutions" msgstr "" -#: participants/views.py:102 +#: participants/views.py msgid "Code" msgstr "简写" -#: participants/views.py:103 +#: participants/views.py msgid "Full name" msgstr "全称" -#: participants/views.py:105 +#: participants/views.py msgid "Region" msgstr "地区" -#: participants/views.py:107 +#: participants/views.py msgid "Teams" msgstr "队伍" -#: participants/views.py:107 +#: participants/views.py msgid "Number of teams" msgstr "" -#: participants/views.py:109 +#: participants/views.py msgid "Adjs" msgstr "裁判" -#: participants/views.py:110 +#: participants/views.py msgid "Number of adjudicators, excluding independents" msgstr "" -#: participants/views.py:112 +#: participants/views.py msgid "IAs" msgstr "" -#: participants/views.py:113 +#: participants/views.py msgid "Number of independent adjudicators" msgstr "" -#: participants/views.py:143 +#: participants/views.py msgid "Code name" msgstr "代号" -#: participants/views.py:163 +#: participants/views.py msgid "Team Registration" msgstr "" -#: participants/views.py:231 +#: participants/views.py msgid "Results" msgstr "" -#: participants/views.py:239 participants/views.py:264 +#: participants/views.py #, python-format msgid "Record for %(name)s" msgstr "" -#: participants/views.py:261 +#: participants/views.py msgid "Previous Rounds" msgstr "" -#: participants/views.py:352 +#: participants/views.py #, python-format msgid "Saved category: %(list)s" msgid_plural "Saved categories: %(list)s" msgstr[0] "" -#: participants/views.py:358 +#: participants/views.py msgid "No changes were made to the categories." msgstr "" -#: participants/views.py:371 +#: participants/views.py msgid "Speaker Category Eligibility" msgstr "" diff --git a/tabbycat/participants/migrations/0021_team_seed.py b/tabbycat/participants/migrations/0021_team_seed.py new file mode 100644 index 00000000000..21e99cf10ef --- /dev/null +++ b/tabbycat/participants/migrations/0021_team_seed.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.4 on 2023-02-26 19:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('participants', '0020_person_code_name'), + ] + + operations = [ + migrations.AddField( + model_name='team', + name='seed', + field=models.PositiveIntegerField(blank=True, help_text='Used as initial ranking to power-pair the first round', null=True, verbose_name='seed'), + ), + ] diff --git a/tabbycat/participants/models.py b/tabbycat/participants/models.py index ef7bdcf4346..2cf1f245a61 100644 --- a/tabbycat/participants/models.py +++ b/tabbycat/participants/models.py @@ -25,7 +25,7 @@ class Meta: verbose_name_plural = _("regions") def __str__(self): - return '%s' % (self.name) + return '%s' % self.name class InstitutionManager(LookupByNameFieldsMixin, models.Manager): @@ -169,6 +169,9 @@ class Team(models.Model): break_categories = models.ManyToManyField('breakqual.BreakCategory', blank=True, verbose_name=_("break categories")) + seed = models.PositiveIntegerField(blank=True, null=True, verbose_name=_("seed"), + help_text=_("Used as initial ranking to power-pair the first round")) + institution_conflicts = models.ManyToManyField('Institution', through='adjallocation.TeamInstitutionConflict', related_name='team_inst_conflicts', diff --git a/tabbycat/participants/serializers.py b/tabbycat/participants/serializers.py index 06527520ff4..f039cfcf0ce 100644 --- a/tabbycat/participants/serializers.py +++ b/tabbycat/participants/serializers.py @@ -1,3 +1,4 @@ +from django.utils.html import escape from rest_framework import serializers from .models import Adjudicator, Institution, Speaker, SpeakerCategory, Team @@ -12,7 +13,7 @@ class Meta: class SpeakerCategorySerializer(serializers.ModelSerializer): class Meta: model = SpeakerCategory - fields = ('name') + fields = ('name',) class InstitutionSerializer(serializers.ModelSerializer): @@ -25,6 +26,10 @@ class Meta: class AdjudicatorSerializer(serializers.ModelSerializer): institution = serializers.PrimaryKeyRelatedField(read_only=True) + name = serializers.SerializerMethodField(read_only=True) + + def get_name(self, obj): + return escape(obj.name) class Meta: model = Adjudicator diff --git a/tabbycat/participants/tables.py b/tabbycat/participants/tables.py index cba6b8bb04d..63bd2ed2a52 100644 --- a/tabbycat/participants/tables.py +++ b/tabbycat/participants/tables.py @@ -60,12 +60,12 @@ def get_table(cls, view, participant): ) if not table.admin and not view.tournament.pref('all_results_released') and not table.private_url: debateadjs = debateadjs.filter( - debate__round__draw_status=Round.STATUS_RELEASED, + debate__round__draw_status=Round.Status.RELEASED, debate__round__silent=False, debate__round__completed=True, ) elif table.private_url: - debateadjs = debateadjs.filter(debate__round__draw_status=Round.STATUS_RELEASED) + debateadjs = debateadjs.filter(debate__round__draw_status=Round.Status.RELEASED) debates = [da.debate for da in debateadjs] populate_wins(debates) @@ -107,7 +107,7 @@ def get_table(cls, view, participant): if not table.admin and not tournament.pref('all_results_released'): teamscores = teamscores.filter( - debate_team__debate__round__draw_status=Round.STATUS_RELEASED, + debate_team__debate__round__draw_status=Round.Status.RELEASED, debate_team__debate__round__silent=False, debate_team__debate__round__completed=True, ) diff --git a/tabbycat/participants/templates/adjudicator_registration_card.html b/tabbycat/participants/templates/adjudicator_registration_card.html index fc80105e485..3579eb70a6f 100644 --- a/tabbycat/participants/templates/adjudicator_registration_card.html +++ b/tabbycat/participants/templates/adjudicator_registration_card.html @@ -57,7 +57,7 @@

    {% trans "Team Conflicts:" %} {% for tc in adjudicator.adjudicatorteamconflict_set.all %} - {% team_record_link tc.team admin_page tournament False %}{% if not forloop.last %}{% trans ", " %}{% endif %} + {% team_record_link tc.team admin_page False %}{% if not forloop.last %}{% trans ", " %}{% endif %} {% empty %} {% trans "None" %} {% endfor %} @@ -66,7 +66,7 @@

    {% trans "Adjudicator Conflicts:" %} {% for adj in adjadj_conflicts %} {% if pref.public_record %} - {% person_display_name adj %}{% if not forloop.last %}{% trans ", " %}{% endif %} + {% person_display_name adj %}{% if not forloop.last %}{% trans ", " %}{% endif %} {% else %} {% person_display_name adj %}{% if not forloop.last %}{% trans ", " %}{% endif %} {% endif %} diff --git a/tabbycat/participants/templates/current_round/common.html b/tabbycat/participants/templates/current_round/common.html index 8bfd04067de..4a847884f06 100644 --- a/tabbycat/participants/templates/current_round/common.html +++ b/tabbycat/participants/templates/current_round/common.html @@ -14,7 +14,7 @@
    {% trans "Teams:" %} {% for dt in debate.debateteams_ordered %} - {% team_record_link dt.team admin_page tournament %}{% if debate.sides_confirmed %} ({% debate_team_side_name dt tournament %}){% endif %}{% if not forloop.last %},{% endif %} + {% team_record_link dt.team admin_page %}{% if debate.sides_confirmed %} ({% debate_team_side_name dt %}){% endif %}{% if not forloop.last %},{% endif %} {% endfor %}
    {% endif %} {# pref.teams_in_debate == 'bp' #} @@ -22,7 +22,7 @@ {# Adjudicators #} {% if not pref.no_panellist_position or not pref.no_trainee_position %}
    - {% if debate.adjudicators|length > 1 %} + {% if debate.adjudicators|length > 0 %} {% with adjudicators=debate.adjudicators %} {% blocktrans trimmed count counter=adjudicators|length %} @@ -33,7 +33,7 @@ {% for adj, adjtype in adjudicators.with_positions %} {% if adj != debateadjudicator.adjudicator %} - + {% person_display_name adj %}{% if adjtype == adjudicators.POSITION_CHAIR %} {% trans "Ⓒ" context "chair icon" %}{% elif adjtype == adjudicators.POSITION_TRAINEE %} {% trans "Ⓣ" context "trainee icon" %}{% endif %}{% if not forloop.last %},{% endif %} {% else %} {% person_display_name adj %}{% if adjtype == adjudicators.POSITION_CHAIR %} {% trans "Ⓒ" context "chair icon" %}{% elif adjtype == adjudicators.POSITION_TRAINEE %} {% trans "Ⓣ" context "trainee icon" %}{% endif %}{% if not forloop.last %},{% endif %} @@ -42,7 +42,7 @@ {% endwith %} {% else %} {% trans "There are no panellists or trainees assigned to this debate." %} - {% endif %} {# debate.adjudicators|length > 1 #} + {% endif %} {# debate.adjudicators|length > 0 #}
    {% endif %} {# not pref.no_panellist_position or not pref.no_trainee_position #} diff --git a/tabbycat/participants/templates/current_round/round_adj.html b/tabbycat/participants/templates/current_round/round_adj.html index 74586c1c606..ef5040c4f89 100644 --- a/tabbycat/participants/templates/current_round/round_adj.html +++ b/tabbycat/participants/templates/current_round/round_adj.html @@ -7,8 +7,8 @@ {# (Two-team formats) #} {% if pref.teams_in_debate == 'two' %} - {% team_record_link debate.aff_team admin_page tournament as aff %} - {% team_record_link debate.neg_team admin_page tournament as neg %} + {% team_record_link debate.aff_team admin_page as aff %} + {% team_record_link debate.neg_team admin_page as neg %} {% if debate.adjudicators|length > 1 and debateadjudicator.type == debateadjudicator.TYPE_CHAIR %} {% if grammatical_person == "3" %} diff --git a/tabbycat/participants/templates/current_round/round_team.html b/tabbycat/participants/templates/current_round/round_team.html index afa4a557ad2..cb2b07106cf 100644 --- a/tabbycat/participants/templates/current_round/round_team.html +++ b/tabbycat/participants/templates/current_round/round_team.html @@ -5,7 +5,7 @@ {# (Two-team formats) #} {% if pref.teams_in_debate == 'two' %}
    - {% team_record_link debateteam.opponent.team admin_page tournament as opponent %} + {% team_record_link debateteam.opponent.team admin_page as opponent %} {% if debate.sides_confirmed %} {% if grammatical_person == "3" %} diff --git a/tabbycat/participants/templatetags/participant_link.py b/tabbycat/participants/templatetags/participant_link.py index c593034e5e6..f9d838fe232 100644 --- a/tabbycat/participants/templatetags/participant_link.py +++ b/tabbycat/participants/templatetags/participant_link.py @@ -7,47 +7,38 @@ register = template.Library() -@register.simple_tag -def team_record_link(team, admin, tournament=None, style=True): +@register.simple_tag(takes_context=True) +def team_record_link(context, team, admin, style=True): """Team record links are used often, so this template tag just reduces clutter in templates, in particular in translated strings.""" - if not team: + if not team or not context['tournament']: return "" - if not tournament: - tournament = team.tournament - - if use_team_code_names(tournament, admin): + if use_team_code_names(context['tournament'], admin): name = team.code_name else: name = team.short_name if admin: - url = reverse_tournament('participants-team-record', tournament, kwargs={'pk': team.pk}) + url = reverse_tournament('participants-team-record', context['tournament'], kwargs={'pk': team.pk}) else: - url = reverse_tournament('participants-public-team-record', tournament, kwargs={'pk': team.pk}) + url = reverse_tournament('participants-public-team-record', context['tournament'], kwargs={'pk': team.pk}) classes = 'class="list-group-item-text alert-link"' if style else '' return mark_safe("""%(name)s""" % {'url': url, 'style': classes, 'name': name}) -@register.simple_tag -def adj_record_link(adj, admin, tournament=None): - - if not adj: - return "" - - if not tournament: - tournament = getattr(adj, 'tournament', None) +@register.simple_tag(takes_context=True) +def adj_record_link(context, adj, admin): - if not tournament: # Still no tournament + if not adj or not context['tournament']: return "" if admin: - url = reverse_tournament('participants-adjudicator-record', tournament, kwargs={'pk': adj.pk}) + url = reverse_tournament('participants-adjudicator-record', context['tournament'], kwargs={'pk': adj.pk}) else: - url = reverse_tournament('participants-public-adjudicator-record', tournament, kwargs={'pk': adj.pk}) + url = reverse_tournament('participants-public-adjudicator-record', context['tournament'], kwargs={'pk': adj.pk}) return mark_safe(url) diff --git a/tabbycat/participants/utils.py b/tabbycat/participants/utils.py index f68e30017eb..31b2dfa667d 100644 --- a/tabbycat/participants/utils.py +++ b/tabbycat/participants/utils.py @@ -35,7 +35,7 @@ def annotate_side_count_kwargs(sides, seq): return {'%s_count' % side: Count('debateteam', filter=Q( debateteam__side=side, - debateteam__debate__round__stage=Round.STAGE_PRELIMINARY, + debateteam__debate__round__stage=Round.Stage.PRELIMINARY, debateteam__debate__round__seq__lte=seq), distinct=True, ) for side in sides} diff --git a/tabbycat/participants/views.py b/tabbycat/participants/views.py index 04d12d76027..83ed2561f85 100644 --- a/tabbycat/participants/views.py +++ b/tabbycat/participants/views.py @@ -4,9 +4,10 @@ from django.conf import settings from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist -from django.db.models import Count, Prefetch, Q +from django.db.models import Count, Max, Prefetch, Q +from django.db.models.functions import Coalesce from django.forms import HiddenInput -from django.http import JsonResponse +from django.http import HttpResponseRedirect, JsonResponse from django.utils.html import escape from django.utils.translation import gettext as _, gettext_lazy, ngettext from django.views.generic.base import View @@ -63,7 +64,7 @@ def get_tables(self): def get_context_data(self, **kwargs): # These are used to choose the nav display kwargs['email_sent'] = BulkNotification.objects.filter( - tournament=self.tournament, event=BulkNotification.EVENT_TYPE_TEAM_REG).exists() + tournament=self.tournament, event=BulkNotification.EventType.TEAM_REG).exists() return super().get_context_data(**kwargs) @@ -163,7 +164,7 @@ class AssistantCodeNamesListView(AssistantMixin, BaseCodeNamesListView): class EmailTeamRegistrationView(TournamentTemplateEmailCreateView): page_subtitle = _("Team Registration") - event = BulkNotification.EVENT_TYPE_TEAM_REG + event = BulkNotification.EventType.TEAM_REG subject_template = 'team_email_subject' message_template = 'team_email_message' @@ -203,7 +204,7 @@ def allocations_set(obj, admin, tournament): qs = qs.prefetch_related(Prefetch('debate__round__roundmotion_set', queryset=RoundMotion.objects.select_related('motion'))) else: - qs = qs.filter(debate__round__draw_status=Round.STATUS_RELEASED).prefetch_related( + qs = qs.filter(debate__round__draw_status=Round.Status.RELEASED).prefetch_related( Prefetch('debate__round__roundmotion_set', queryset=RoundMotion.objects.filter(round__motions_released=True).select_related('motion'))) return qs @@ -212,7 +213,7 @@ def allocations_set(obj, admin, tournament): def get_context_data(self, **kwargs): kwargs['admin_page'] = self.admin - kwargs['draw_released'] = self.tournament.current_round.draw_status == Round.STATUS_RELEASED + kwargs['draw_released'] = self.tournament.current_round.draw_status == Round.Status.RELEASED kwargs['use_code_names'] = self.use_team_code_names() kwargs[self.model_kwarg] = self.allocations_set(self.object, self.admin, self.tournament) @@ -332,7 +333,7 @@ class EditSpeakerCategoriesView(LogActionMixin, AdministratorMixin, TournamentMi def get_formset_factory_kwargs(self): return { - 'fields': ('name', 'tournament', 'slug', 'seq', 'limit', 'public'), + 'fields': ('name', 'tournament', 'slug', 'limit', 'public'), 'extra': 2, 'widgets': { 'tournament': HiddenInput, @@ -347,19 +348,33 @@ def get_formset_kwargs(self): 'initial': [{'tournament': self.tournament}] * 2, } + def prepare_related(self, cat): + pass + def formset_valid(self, formset): - result = super().formset_valid(formset) - if self.instances: + cats = formset.save(commit=False) + + for cat, fields in formset.changed_objects: + cat.save() + + for i, cat in enumerate(formset.new_objects, start=self.get_formset_queryset().aggregate(m=Coalesce(Max('seq'), 0) + 1)['m']): + cat.seq = i + cat.tournament = self.tournament # Even with the tournament in the form, avoid it being changed + cat.save() + + self.prepare_related(cat) + + if cats: message = ngettext("Saved category: %(list)s", "Saved categories: %(list)s", - len(self.instances), - ) % {'list': ", ".join(category.name for category in self.instances)} + len(cats), + ) % {'list': ", ".join(category.name for category in cats)} messages.success(self.request, message) else: messages.success(self.request, _("No changes were made to the categories.")) if "add_more" in self.request.POST: return redirect_tournament(self.url_name, self.tournament) - return result + return HttpResponseRedirect(self.get_success_url()) def get_success_url(self, *args, **kwargs): return reverse_tournament(self.success_url, self.tournament) diff --git a/tabbycat/printing/locale/ar/LC_MESSAGES/django.po b/tabbycat/printing/locale/ar/LC_MESSAGES/django.po index 783fcd6a71c..c241253e7a2 100644 --- a/tabbycat/printing/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "نموذج التغذية الراجعة" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "لم يتم إضافة أي سؤال للتغذية الراجعة " -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "لم يتم إضافة أي سؤال للتغذية الراجعة من الفريق" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "لم يتم إضافة أي سؤال للتغذية الراجعة من الحكم" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "لا توجد أوراق ملاحظات متاحة — ربما لم يتم تخصيص الحكام؟" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "من %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "لم تتوفر نموذج درجات لهذه الجولة — " -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "مجموع الدرجات" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "غير منتسبين" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "فريق" diff --git a/tabbycat/printing/locale/bg/LC_MESSAGES/django.mo b/tabbycat/printing/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..47b54a1ea1e Binary files /dev/null and b/tabbycat/printing/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/bg/LC_MESSAGES/django.po b/tabbycat/printing/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..f52d9d8f14b --- /dev/null +++ b/tabbycat/printing/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" +"Last-Translator: philip_tc\n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" + +#: printing/templates/feedback_list.html +msgid "Feedback Forms" +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "Printable Feedback Forms for %(round)s" +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for either teams or adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for teams to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" +msgstr "" + +#: printing/templates/printables_list.html +msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Printable %(sheet)s URLs" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Private URL for %(name)s (%(group)s)" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Printable Scoresheets" +msgstr "" + +#: printing/templates/scoresheet_list.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Motion(s)" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "There are no scoresheets available — perhaps the round has not been drawn?" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Ballot Motions" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "×" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Motion" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Changes to motions will update in the displayed ballots automatically" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." +msgstr "" + +#: printing/views.py +msgid "Overall Score" +msgstr "" + +#: printing/views.py +msgid "Unaffiliated" +msgstr "" + +#: printing/views.py +msgid "Team" +msgstr "" + diff --git a/tabbycat/printing/locale/bn/LC_MESSAGES/django.po b/tabbycat/printing/locale/bn/LC_MESSAGES/django.po index 2645002384f..9f9f9bf74b4 100644 --- a/tabbycat/printing/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "প্রস্তাব" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "দল" diff --git a/tabbycat/printing/locale/ca/LC_MESSAGES/django.mo b/tabbycat/printing/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..d4980c08757 Binary files /dev/null and b/tabbycat/printing/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/ca/LC_MESSAGES/django.po b/tabbycat/printing/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..5e969d7b3ca --- /dev/null +++ b/tabbycat/printing/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-04-05 21:07\n" +"Last-Translator: philip_tc\n" +"Language-Team: Catalan\n" +"Language: ca_ES\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" + +#: printing/templates/feedback_list.html +msgid "Feedback Forms" +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "Printable Feedback Forms for %(round)s" +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for either teams or adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for teams to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" +msgstr "" + +#: printing/templates/printables_list.html +msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Printable %(sheet)s URLs" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Private URL for %(name)s (%(group)s)" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Printable Scoresheets" +msgstr "" + +#: printing/templates/scoresheet_list.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Motion(s)" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "There are no scoresheets available — perhaps the round has not been drawn?" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Ballot Motions" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "×" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Motion" +msgstr "Moció" + +#: printing/templates/scoresheet_list.html +msgid "Changes to motions will update in the displayed ballots automatically" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." +msgstr "" + +#: printing/views.py +msgid "Overall Score" +msgstr "" + +#: printing/views.py +msgid "Unaffiliated" +msgstr "" + +#: printing/views.py +msgid "Team" +msgstr "Equip" + diff --git a/tabbycat/printing/locale/cs/LC_MESSAGES/django.mo b/tabbycat/printing/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..4a586ece7cf Binary files /dev/null and b/tabbycat/printing/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/cs/LC_MESSAGES/django.po b/tabbycat/printing/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..599390409c0 --- /dev/null +++ b/tabbycat/printing/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" +"Last-Translator: philip_tc\n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" + +#: printing/templates/feedback_list.html +msgid "Feedback Forms" +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "Printable Feedback Forms for %(round)s" +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for either teams or adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for teams to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" +msgstr "" + +#: printing/templates/printables_list.html +msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Printable %(sheet)s URLs" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Private URL for %(name)s (%(group)s)" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Printable Scoresheets" +msgstr "" + +#: printing/templates/scoresheet_list.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Motion(s)" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "There are no scoresheets available — perhaps the round has not been drawn?" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Ballot Motions" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "×" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Motion" +msgstr "Teze" + +#: printing/templates/scoresheet_list.html +msgid "Changes to motions will update in the displayed ballots automatically" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." +msgstr "" + +#: printing/views.py +msgid "Overall Score" +msgstr "" + +#: printing/views.py +msgid "Unaffiliated" +msgstr "" + +#: printing/views.py +msgid "Team" +msgstr "Tým" + diff --git a/tabbycat/printing/locale/de/LC_MESSAGES/django.po b/tabbycat/printing/locale/de/LC_MESSAGES/django.po index d9c56e7674c..6a38cc747c2 100644 --- a/tabbycat/printing/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: German\n" "Language: de_DE\n" @@ -15,115 +15,111 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" -msgstr "" +msgstr "für %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "×" -#: printing/templates/scoresheet_list.html:47 -msgid "\n" -" Editing motions here will not save them permanently — it will only\n" -" update the text used in the printed ballots below. This can be useful if using\n" -" placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print\n" -" ballots with correct motions.\n" -" " +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "Thema" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Team" diff --git a/tabbycat/printing/locale/en/LC_MESSAGES/django.po b/tabbycat/printing/locale/en/LC_MESSAGES/django.po index 28d328e3337..522019375b3 100644 --- a/tabbycat/printing/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/en/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" "PO-Revision-Date: 2019-07-11 23:48\n" "Last-Translator: philip_tc\n" "Language-Team: English\n" @@ -16,108 +16,107 @@ msgstr "" "X-Crowdin-Language: en\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "" diff --git a/tabbycat/printing/locale/es/LC_MESSAGES/django.po b/tabbycat/printing/locale/es/LC_MESSAGES/django.po index c9010ff3c6f..61d69ee486b 100644 --- a/tabbycat/printing/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "Formularios de Feedback" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "Formularios de Feedback imprimibles para %(round)s" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "Ninguna pregunta de feedback ha sido añadidas para que jueces o equipos respondan." -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "Ninguna pregunta de feedback ha sido añadida para que equipos respondan." -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "Ninguna pregunta de feedback ha sido añadida para que jueces respondan." -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "%(first_sentence)s Checkea la documentación para encontrar información sobre como añadir estas (de otra manera estos formularios estarán vacíos)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "para %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "Puntaje general" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Equipo" diff --git a/tabbycat/printing/locale/fr/LC_MESSAGES/django.po b/tabbycat/printing/locale/fr/LC_MESSAGES/django.po index 9855621f65c..8b6b9862333 100644 --- a/tabbycat/printing/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 23:29\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-12 15:51\n" "Last-Translator: philip_tc\n" "Language-Team: French\n" "Language: fr_FR\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "Formulaires d'évaluation" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "Formulaires d'évaluation imprimables pour %(round)s" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "Aucune question n’a été ajoutée pour ni les équipes ni les juges à répondre." -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "Aucune question n’a été ajoutée pour les équipes à répondre." -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "Aucune question n’a été ajoutée pour les juges à répondre." -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "%(first_sentence)s Vérifiez la documentation pour des renseignements à comment en ajouter (autrement les formulaires seront plutôt vides)" +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "%(first_sentence)s Vérifiez la documentation pour des renseignements à comment en ajouter (autrement ces formulaires seront plutôt vides)." -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "Aucun page d'évaluation n’est disponible — les juges n’ont-ils pas été encore alloués ?" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "Utilisez Ctrl-P pour imprimer ou sauvegarder en PDF. Assurez-vous d’avoir mis l’orientation de page appropriée, d’avoir désactivé les en-têtes/pieds de page et d’avoir activé les graphiques de fond. Ça fonctionne le mieux dans Chrome." -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "URLs de %(sheet)s imprimables" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." -msgstr "Cette page est conçu pour être imprimé comme feuilles A4 recto-verso, avec un côté qui montre le nom du participant et l’autre son URL. Utilisez Ctrl-P pour imprimer ; pour les meilleurs résultats utilisez Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "Cette page est conçue pour être imprimée comme des feuilles A4 recto verso, avec un côté qui montre le nom du participant et l’autre son URL. Utilisez Ctrl-P pour imprimer ; pour les meilleurs résultats, utilisez Chrome." -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "URL privée pour %(name)s (%(group)s)" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "Ajoutez cette page à vos favoris, vous l’utiliseriez pour saisir des formulaires au fur du tournoi :" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "Bulletins Imprimables" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "pour %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "Modifier Motion(s)" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "Il n’y a aucune feuilles de note disponible — la joute n’a-t-elle pas encore de tirage ?" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "Modifier motions de la feuille" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "×" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "Les motions ajoutés ici ne sont pas permanent, ils vont seulement mettre à jour le texte utilisé dans les feuilles imprimés si-dessous. C'est utile si vous utilisez des motions substituts (pour la confidentialité), mais vous voulez imprimer les feuilles avec les motions correctes." -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "Motion" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "Les changements aux motions seront mises à jour automatiquement dans les feuilles affichés" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "Les discours sont de x minutes, l'étendu des scores d'orateur est de x à x. Vous avez x minutes pour le jugement." -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "Note globale" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "Non-affilié" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Équipe" diff --git a/tabbycat/printing/locale/he/LC_MESSAGES/django.po b/tabbycat/printing/locale/he/LC_MESSAGES/django.po index e096e11646d..c248c3e3a32 100644 --- a/tabbycat/printing/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:34\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -15,115 +15,111 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 -msgid "\n" -" Editing motions here will not save them permanently — it will only\n" -" update the text used in the printed ballots below. This can be useful if using\n" -" placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print\n" -" ballots with correct motions.\n" -" " +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "קבוצה" diff --git a/tabbycat/printing/locale/hi/LC_MESSAGES/django.po b/tabbycat/printing/locale/hi/LC_MESSAGES/django.po index d6e067beb69..543b38edadc 100644 --- a/tabbycat/printing/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/hi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -15,115 +15,111 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 -msgid "\n" -" Editing motions here will not save them permanently — it will only\n" -" update the text used in the printed ballots below. This can be useful if using\n" -" placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print\n" -" ballots with correct motions.\n" -" " +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "" diff --git a/tabbycat/printing/locale/id/LC_MESSAGES/django.po b/tabbycat/printing/locale/id/LC_MESSAGES/django.po index adcb6ccd1de..3403edfffef 100644 --- a/tabbycat/printing/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2021-04-12 09:59\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "Form Penilaian" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "Form Penilaian Dapat Di Cetak %(round)s" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "Tidak ada pertanyaan balik yang ditambahkan baik untuk tim atau juri untuk dijawab." -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "Tidak ada pertanyaan balik yang ditambahkan untuk tim untuk di jawab." -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "Tidak ada pertanyaan balik yang ditambahkan untuk dijawab oleh juri." -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "%(first_sentence)s cek dokumentasi untuk informasi bagaimana menambahkannya (jikat tidak form akan dikosongkan)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "tidak ada lembar nilai tersedia - mungkin juri belum mengalokasikan nya?" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "Gunakan Ctrl+P untuk mencetak atau menyimpan ke PDF. Pastikan untuk set dengan tepat Orientasi halaman, to turn off headers/footers and turn on Grafik Latar Belakang. Berkerja paling baik di Chrome." -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "Cetak %(sheet)s URLs" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." -msgstr "Halaman ini didesain untuk mencetak secara double pada 2 sisi lembar A4, dengan sisi menghadap luar menunjukkan nama peserta dan sisi menghadap ke dalam menunjukkan URL. Gunakan CTRL-P untuk mencetak; untuk hasil terbaik gunakan Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "Private URL for %(name)s (%(group)s)" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "Mohon tandai URL, yang anda akan gunakan untuk menyerahkan form ke seluruh tournament:" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "Cetak lembar nilai" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "untuk %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "Edit mosi" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "Tidak ada lembar nilai yang tersedia - mungkin ronde belum di tarik?" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "Edit Mosi Balot" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "Mengedit Mosi di sini tidak akan tersimpan secara permanen - ini hanya mengupdate teks yang digunakan dalam mencetak balot di bawah ini. ini akan berguna jika menggunakan mosi pengisi ruang (untuk memastikan konfidensial) di Tabbycat, tapi anda masih ingin mencetak balot dengan mosi yang benar." -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "Mosi" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "Menganti mosi akan memperbarui tampilan balot secara otomatis" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "Pidato x menit, rentan nilai skor pembicara dari x sampai x. anda memiliki x menit untuk mengajukan keputusan ke seorang juri." -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "Nilai Keseluruhan" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "Tidak terafiliasi" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Tim" diff --git a/tabbycat/printing/locale/it/LC_MESSAGES/django.mo b/tabbycat/printing/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..9351024eafa Binary files /dev/null and b/tabbycat/printing/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/it/LC_MESSAGES/django.po b/tabbycat/printing/locale/it/LC_MESSAGES/django.po index 8d8ae32ff95..e5e9c1e9828 100644 --- a/tabbycat/printing/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2022-04-17 08:45\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Team" diff --git a/tabbycat/printing/locale/ja/LC_MESSAGES/django.po b/tabbycat/printing/locale/ja/LC_MESSAGES/django.po index 31051c45ec7..ffe2b39d011 100644 --- a/tabbycat/printing/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "フィードバックフォーム" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "チームのフィードバックには質問はありません。" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "ジャッジのフィードバックには質問はありません。" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "Ctrl+PでPDFとして保存ができます。まだ途中" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "表示できるスコアシートがありません。……もしかすると、ラウンドがまだ設定されていないのかもしれません。" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "合計点数" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "チーム" diff --git a/tabbycat/printing/locale/kk/LC_MESSAGES/django.mo b/tabbycat/printing/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..bd002b5b75f Binary files /dev/null and b/tabbycat/printing/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/kk/LC_MESSAGES/django.po b/tabbycat/printing/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..99e5a7813da --- /dev/null +++ b/tabbycat/printing/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: philip_tc\n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" + +#: printing/templates/feedback_list.html +msgid "Feedback Forms" +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "Printable Feedback Forms for %(round)s" +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for either teams or adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for teams to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" +msgstr "" + +#: printing/templates/printables_list.html +msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Printable %(sheet)s URLs" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Private URL for %(name)s (%(group)s)" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Printable Scoresheets" +msgstr "" + +#: printing/templates/scoresheet_list.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Motion(s)" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "There are no scoresheets available — perhaps the round has not been drawn?" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Ballot Motions" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "×" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Motion" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Changes to motions will update in the displayed ballots automatically" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." +msgstr "" + +#: printing/views.py +msgid "Overall Score" +msgstr "" + +#: printing/views.py +msgid "Unaffiliated" +msgstr "" + +#: printing/views.py +msgid "Team" +msgstr "" + diff --git a/tabbycat/printing/locale/ms/LC_MESSAGES/django.po b/tabbycat/printing/locale/ms/LC_MESSAGES/django.po index b75c5de28cb..93c9f99ef2d 100644 --- a/tabbycat/printing/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "" diff --git a/tabbycat/printing/locale/pt/LC_MESSAGES/django.po b/tabbycat/printing/locale/pt/LC_MESSAGES/django.po index 793f8b03a63..bee1c33d639 100644 --- a/tabbycat/printing/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "para %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Dupla" diff --git a/tabbycat/printing/locale/ro/LC_MESSAGES/django.po b/tabbycat/printing/locale/ro/LC_MESSAGES/django.po index 62a37b27ab0..9ad780c06d0 100644 --- a/tabbycat/printing/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/ro/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -15,115 +15,111 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 -msgid "\n" -" Editing motions here will not save them permanently — it will only\n" -" update the text used in the printed ballots below. This can be useful if using\n" -" placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print\n" -" ballots with correct motions.\n" -" " +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "" diff --git a/tabbycat/printing/locale/ru/LC_MESSAGES/django.po b/tabbycat/printing/locale/ru/LC_MESSAGES/django.po index 1fb7f9cffe2..eab914e6dd6 100644 --- a/tabbycat/printing/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-19 15:30\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "Формы обратной связи" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "Доступные для печати формы обратной связи для %(round)s" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "Не было добавлено никаких вопросов обратной связи, на которых команды или судьи могли бы ответить." -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "Не было добавлено никаких вопросов обратной связи, на которые команды могли бы ответить." -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "Не было добавлено никаких вопросов обратной связи, на которые судьи могли бы ответить." -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "%(first_sentence)s Ознакомьтесь с документацией чтобы получить информацию об их использовании (иначе эти формы будут довольно пустыми)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "Нет доступных форм обратной связи — возможно, судьи не были распределены?" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "Используйте Ctrl+P для распечатки или сохранения в PDF. Не забудьте установить нужное положение страницы, выключить верхние и нижние колонтитулы и включить фоновую графику. Лучше всего работает в Chrome." -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "Доступные для печати URL-адреса %(sheet)s" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." -msgstr "Эта страница предназначена для печати в виде на двухсторонних листах A4, с указанием имени участника на внешней стороне и отображением URL на внутренней стороне. Используйте CTRL-P для печати; лучше всего использовать Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "Личный URL для %(name)s %(group)s" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "Пожалуйста, запомните этот URL, он будет использован для отправки форм в ходе турнира:" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "Доступные для печати бэллоты" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "для %(round)s" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "Редактировать тему(ы)" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "Нет доступных бэллотов - возможно, сетка на раунд не была сгенерирована?" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "Редактировать темы в бэллотах" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "×" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "Редактирование тем не сохранит их на постоянной основе - они только обновятся в доступных для печати бэллотах. Это может быть полезно в темах, связанных с должностными лицами, когда вы хотите обеспечить конфиденциальность, но все ещё нуждаетесь в том, чтобы распечатать бэллоты с корректными темами." -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "Тема" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "Изменения в темах будут автоматически обновляться в отображаемых бэллотах" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "Речи по x минут, шкала спикерских от x до x. У вас x минут на принятие решения." -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "Общий балл" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "Неаффилированный" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Команда" diff --git a/tabbycat/printing/locale/tr/LC_MESSAGES/django.po b/tabbycat/printing/locale/tr/LC_MESSAGES/django.po index 5c1b14d9334..7ef2b55c6dd 100644 --- a/tabbycat/printing/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" "Last-Translator: philip_tc\n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -15,115 +15,111 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" -msgstr "" +msgstr "Geri Bildirim Formları" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" -msgstr "" +msgstr "%(round)s için yazdırılabilir geri bildirim formları" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." -msgstr "" +msgstr "Ne takımların ne de jürilerin yanıtlaması için herhangi bir geri bildirim sorusu eklenmemiştir." -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." -msgstr "" +msgstr "Takımların yanıtlaması için herhangi bir geri bildirim sorusu eklenmemiştir." -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." -msgstr "" +msgstr "Jürilerin yanıtlaması için herhangi bir geri bildirim sorusu eklenmemiştir." -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "" +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "%(first_sentence)s Bunların nasıl ekleneceği hakkında bilgi için belgeleri kontrol edin (aksi takdirde bu formlar oldukça boş kalır)." -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" -msgstr "" +msgstr "Geri bildirim sayfası yok - belki de jüriler tahsis edilmedi?" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." -msgstr "" +msgstr "PDF'ye yazdırmak veya kaydetmek için Ctrl+P tuşlarını kullanın. üstbilgiler/altbilgiler'i kapatmak ve arka plan grafikleri'ni açmak için uygun sayfa yönü ayarladığınızdan emin olun. En iyi Chrome'da çalışır." -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" -msgstr "" +msgstr "Yazdırılabilir %(sheet)s URL'leri" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." -msgstr "" +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "Bu sayfa, dışa bakan tarafı katılımcı adını, iç tarafı URL'yi gösterecek şekilde çift taraflı A4 sayfaları olarak yazdırılacak şekilde tasarlanmıştır. Yazdırmak için CTRL-P tuşlarını kullanın; en iyi sonuçlar için Chrome'u kullanın." -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" -msgstr "" +msgstr "%(name)s (%(group)s) için özel URL" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" -msgstr "" +msgstr "Lütfen aşağıdaki URL'yi yer imlerine ekleyin, turnuva boyunca form göndermek için kullanacaksınız:" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" -msgstr "" +msgstr "Yazdırılabilir Sonuç Kağıtları" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" -msgstr "" +msgstr "%(round)s için" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" -msgstr "" +msgstr "Önergeleri Düzenle" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" -msgstr "" +msgstr "Mevcut sonuç kağıdı yok - belki de kura çekilmedi?" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" -msgstr "" +msgstr "Ballot Önergelerini Düzenle" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 -msgid "\n" -" Editing motions here will not save them permanently — it will only\n" -" update the text used in the printed ballots below. This can be useful if using\n" -" placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print\n" -" ballots with correct motions.\n" -" " -msgstr "" +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "Burada önergeleri düzenlemek onları kalıcı olarak kaydetmez - yalnızca aşağıdaki basılı ballotlarda kullanılan metni günceller. Bu, Tabbycat'te yer tutucu önergeler (gizliliği sağlamak için) kullanıyorsanız, ancak yine de doğru önergelerle ballotları yazdırmak istiyorsanız yararlı olabilir." -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "Önerge" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" -msgstr "" +msgstr "Önergelerdeki değişiklikler, görüntülenen ballotlarda otomatik olarak güncellenecektir" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." -msgstr "" +msgstr "Konuşmalar x dakikadır, konuşmacı puan aralığı x'ten x'e kadardır. Bir karar oluşturmak için x dakikanız var." -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" -msgstr "" +msgstr "Genel Skor" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" -msgstr "" +msgstr "Bağımsız" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "Takım" diff --git a/tabbycat/printing/locale/tzl/LC_MESSAGES/django.po b/tabbycat/printing/locale/tzl/LC_MESSAGES/django.po index bfaa2b4db3f..b58cdd44922 100644 --- a/tabbycat/printing/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "crwdns32210:0crwdne32210:0" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "crwdns51386:0%(round)scrwdne51386:0" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "crwdns32214:0crwdne32214:0" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "crwdns32216:0crwdne32216:0" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "crwdns32218:0crwdne32218:0" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." -msgstr "crwdns32220:0%(first_sentence)scrwdne32220:0" +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "crwdns52219:0%(first_sentence)scrwdne52219:0" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "crwdns32222:0crwdne32222:0" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "crwdns32252:0crwdne32252:0" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "crwdns32254:0%(sheet)scrwdne32254:0" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." -msgstr "crwdns35272:0crwdne35272:0" +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "crwdns52221:0crwdne52221:0" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "crwdns32258:0%(name)scrwdnd32258:0%(group)scrwdne32258:0" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "crwdns35274:0crwdne35274:0" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "crwdns34436:0crwdne34436:0" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "crwdns51388:0%(round)scrwdne51388:0" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "crwdns34440:0crwdne34440:0" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "crwdns32280:0crwdne32280:0" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "crwdns34442:0crwdne34442:0" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "crwdns34444:0crwdne34444:0" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "crwdns51796:0crwdne51796:0" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "crwdns34448:0crwdne34448:0" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "crwdns34450:0crwdne34450:0" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "crwdns34452:0crwdne34452:0" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "crwdns32282:0crwdne32282:0" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "crwdns32284:0crwdne32284:0" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "crwdns32286:0crwdne32286:0" diff --git a/tabbycat/printing/locale/vi/LC_MESSAGES/django.mo b/tabbycat/printing/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..728ed5ac7a0 Binary files /dev/null and b/tabbycat/printing/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/printing/locale/vi/LC_MESSAGES/django.po b/tabbycat/printing/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..24bd7ddc7e2 --- /dev/null +++ b/tabbycat/printing/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,125 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-25 04:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/printing/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 944\n" + +#: printing/templates/feedback_list.html +msgid "Feedback Forms" +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "Printable Feedback Forms for %(round)s" +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for either teams or adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for teams to answer." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "No feedback questions have been added for adjudicators to answer." +msgstr "" + +#: printing/templates/feedback_list.html +#, python-format +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgstr "" + +#: printing/templates/feedback_list.html +msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" +msgstr "" + +#: printing/templates/printables_list.html +msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Printable %(sheet)s URLs" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +msgstr "" + +#: printing/templates/randomised_url_sheets.html +#, python-format +msgid "Private URL for %(name)s (%(group)s)" +msgstr "" + +#: printing/templates/randomised_url_sheets.html +msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Printable Scoresheets" +msgstr "" + +#: printing/templates/scoresheet_list.html +#, python-format +msgid "for %(round)s" +msgstr "cho %(round)s" + +#: printing/templates/scoresheet_list.html +msgid "Edit Motion(s)" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "There are no scoresheets available — perhaps the round has not been drawn?" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Edit Ballot Motions" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "×" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Motion" +msgstr "Kiến nghị" + +#: printing/templates/scoresheet_list.html +msgid "Changes to motions will update in the displayed ballots automatically" +msgstr "" + +#: printing/templates/scoresheet_list.html +msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." +msgstr "" + +#: printing/views.py +msgid "Overall Score" +msgstr "" + +#: printing/views.py +msgid "Unaffiliated" +msgstr "" + +#: printing/views.py +msgid "Team" +msgstr "Đội" + diff --git a/tabbycat/printing/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/printing/locale/zh_Hans/LC_MESSAGES/django.po index 8e140def0e9..36729a90b62 100644 --- a/tabbycat/printing/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-18 17:59-0400\n" -"PO-Revision-Date: 2020-11-18 22:18\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -18,109 +18,108 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 944\n" -#: printing/templates/feedback_list.html:5 +#: printing/templates/feedback_list.html msgid "Feedback Forms" msgstr "" -#: printing/templates/feedback_list.html:7 +#: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" msgstr "" -#: printing/templates/feedback_list.html:14 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for either teams or adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:16 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for teams to answer." msgstr "" -#: printing/templates/feedback_list.html:18 +#: printing/templates/feedback_list.html msgid "No feedback questions have been added for adjudicators to answer." msgstr "" -#: printing/templates/feedback_list.html:20 +#: printing/templates/feedback_list.html #, python-format -msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." +msgid "%(first_sentence)s Check the documentation for information on how to add these (otherwise these forms will be quite bare)." msgstr "" -#: printing/templates/feedback_list.html:41 +#: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" msgstr "" -#: printing/templates/printables_list.html:9 +#: printing/templates/printables_list.html msgid "Use Ctrl+P for printing or saving to PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:4 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" msgstr "" -#: printing/templates/randomised_url_sheets.html:13 -msgid "This page is designed to be printed as double sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." +#: printing/templates/randomised_url_sheets.html +msgid "This page is designed to be printed as double-sided A4 sheets, with the outside facing side showing the participant name and the inside facing side showing the URL. Use CTRL-P to print; for best results use Chrome." msgstr "" -#: printing/templates/randomised_url_sheets.html:27 -#: printing/templates/randomised_url_sheets.html:31 +#: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" msgstr "" -#: printing/templates/randomised_url_sheets.html:38 +#: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" msgstr "" -#: printing/templates/scoresheet_list.html:7 +#: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" msgstr "" -#: printing/templates/scoresheet_list.html:8 +#: printing/templates/scoresheet_list.html #, python-format msgid "for %(round)s" msgstr "" -#: printing/templates/scoresheet_list.html:14 +#: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" msgstr "" -#: printing/templates/scoresheet_list.html:33 +#: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" msgstr "" -#: printing/templates/scoresheet_list.html:40 +#: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" msgstr "" -#: printing/templates/scoresheet_list.html:42 +#: printing/templates/scoresheet_list.html msgid "×" msgstr "" -#: printing/templates/scoresheet_list.html:47 +#: printing/templates/scoresheet_list.html msgid "Editing motions here will not save them permanently — it will only update the text used in the printed ballots below. This can be useful if using placeholder motions (to ensure confidentiality) in Tabbycat, but you still want to print ballots with correct motions." msgstr "" -#: printing/templates/scoresheet_list.html:55 +#: printing/templates/scoresheet_list.html msgid "Motion" msgstr "话题" -#: printing/templates/scoresheet_list.html:59 +#: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" msgstr "" -#: printing/templates/scoresheet_list.html:96 +#: printing/templates/scoresheet_list.html msgid "Speeches are x minutes, the speaker score range is from x to x. You have x minutes to form an adjudication." msgstr "" -#: printing/views.py:40 +#: printing/views.py msgid "Overall Score" msgstr "" -#: printing/views.py:67 printing/views.py:177 printing/views.py:197 +#: printing/views.py msgid "Unaffiliated" msgstr "" -#: printing/views.py:80 printing/views.py:84 +#: printing/views.py msgid "Team" msgstr "队伍" diff --git a/tabbycat/printing/templates/PrintableDebateInfo.vue b/tabbycat/printing/templates/PrintableDebateInfo.vue index 3888479da6b..e66e2871b28 100644 --- a/tabbycat/printing/templates/PrintableDebateInfo.vue +++ b/tabbycat/printing/templates/PrintableDebateInfo.vue @@ -192,7 +192,7 @@ export default { break } const substitutions = [a.adjudicator.name, position, this.getAdjudicatorInstitution(a)] - // Omitt adj's institutions as per preference + // Omit adj's institutions as per preference if (this.roundInfo.showAdjInstitutions === true) { adjs.push(this.tct('%s (%s, %s)', substitutions)) } else { diff --git a/tabbycat/printing/templates/feedback_list.html b/tabbycat/printing/templates/feedback_list.html index 7a988f83c3e..6eeceabe59f 100644 --- a/tabbycat/printing/templates/feedback_list.html +++ b/tabbycat/printing/templates/feedback_list.html @@ -19,7 +19,7 @@ {% endif %} {% blocktrans trimmed asvar message %} {{ first_sentence }} - Check the documentation for information on how to add these (otherwise these forms will be quite bare). + Check the documentation for information on how to add these (otherwise these forms will be quite bare). {% endblocktrans %} {% include "components/alert.html" with type="warning" %} {% endif %} diff --git a/tabbycat/privateurls/locale/ar/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ar/LC_MESSAGES/django.po index ea081559342..0ece2be10bd 100644 --- a/tabbycat/privateurls/locale/ar/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:52\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -18,151 +18,144 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "إدارة الرابط الخاص " -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "رابط خاص " -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "تم ارسال رابط التصويت و رابط التغذية الراجعة " -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "لا يوجد رابط خاص " -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "اعداد رابط خاص " -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "عرض الرابط " -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "هذا الزر سيقوم بمشاركة الروابط للاشخاص الذين لا يمتلكون رابط خاص بهم " -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "جميع رئساء الجلسات و روابطهم الخاصة " -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "لا يوجد رابط " -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "متحدثين" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "المحكمين" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." @@ -173,7 +166,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." @@ -184,11 +177,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..7e6437717c6 Binary files /dev/null and b/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 00000000000..15982d3a5fc --- /dev/null +++ b/tabbycat/privateurls/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" +"Last-Translator: philip_tc\n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" + +#: privateurls/apps.py +msgid "Private URL Management" +msgstr "" + +#: privateurls/templates/private_urls.html privateurls/views.py +msgid "Private URLs" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "The private URLs for ballot and/or feedback submission from participants are given below." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" + +#: privateurls/templates/private_urls.html +#, python-format +msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "There are no private URLs assigned." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Generate Private URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "View URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Teams' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Adjudicators' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All reachable participants have already been sent their private URLs." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Email URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "This button only generates private URLs for participants who do not already have one." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Generate URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All participants already have private URLs." +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Check in" +msgstr "" + +#. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +msgstr "" + +#: privateurls/views.py +msgid "no URL" +msgstr "" + +#: privateurls/views.py +msgid "URL" +msgstr "" + +#: privateurls/views.py +msgid "Speakers" +msgstr "" + +#: privateurls/views.py +msgid "Adjudicators" +msgstr "" + +#: privateurls/views.py +msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." +msgstr "" + +#: privateurls/views.py +#, python-format +msgid "A private URL was generated for %(nblank_people)d person." +msgid_plural "Private URLs were generated for all %(nblank_people)d people." +msgstr[0] "" +msgstr[1] "" + +#: privateurls/views.py +#, python-format +msgid "The already-existing private URL for %(nexisting_people)d person was left intact." +msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." +msgstr[0] "" +msgstr[1] "" + +#: privateurls/views.py +msgid "URL Key" +msgstr "" + +#: privateurls/views.py +msgid "Debates" +msgstr "" + diff --git a/tabbycat/privateurls/locale/bn/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/bn/LC_MESSAGES/django.po index d2e706e6c9e..65752dbeeae 100644 --- a/tabbycat/privateurls/locale/bn/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/bn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:48\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Bengali\n" "Language: bn_BD\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "বিতর্ক" diff --git a/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..6026a4ba6d4 Binary files /dev/null and b/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000000..2cf835a0b14 --- /dev/null +++ b/tabbycat/privateurls/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-07-01 22:45\n" +"Last-Translator: philip_tc\n" +"Language-Team: Catalan\n" +"Language: ca_ES\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: ca\n" +"X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" + +#: privateurls/apps.py +msgid "Private URL Management" +msgstr "Gestió d'URL privades" + +#: privateurls/templates/private_urls.html privateurls/views.py +msgid "Private URLs" +msgstr "URLs privades" + +#: privateurls/templates/private_urls.html +msgid "The private URLs for ballot and/or feedback submission from participants are given below." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" + +#: privateurls/templates/private_urls.html +#, python-format +msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "There are no private URLs assigned." +msgstr "No hi ha URLs privades assignades." + +#: privateurls/templates/private_urls.html +msgid "Generate Private URLs" +msgstr "Generar URLs privades" + +#: privateurls/templates/private_urls_nav.html +msgid "View URLs" +msgstr "Veure URLs" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Teams' URLs" +msgstr "Imprimir URLs d'equips" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Adjudicators' URLs" +msgstr "Imprimir URLs de Jutges" + +#: privateurls/templates/private_urls_nav.html +msgid "All reachable participants have already been sent their private URLs." +msgstr "Ja han estat enviades a tots els participants accessibles les seves URLs privades." + +#: privateurls/templates/private_urls_nav.html +msgid "Email URLs" +msgstr "Enviar URLs" + +#: privateurls/templates/private_urls_nav.html +msgid "This button only generates private URLs for participants who do not already have one." +msgstr "Aquest botó només genera URLs privades per a aquells participants que no tenen una encara." + +#: privateurls/templates/private_urls_nav.html +msgid "Generate URLs" +msgstr "Generar URLs" + +#: privateurls/templates/private_urls_nav.html +msgid "All participants already have private URLs." +msgstr "Tots els participants ja tenen URLs privades." + +#: privateurls/templates/public_url_landing.html +msgid "Private URL" +msgstr "URL privada" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "per %(name)s" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." +msgstr "La URL d'aquesta pàgina està personalitzada per a tu, %(name)s. No la comparteixis amb ningú; qualsevol persona que tingui accés a aquest URL pot enviar resultats i/o retroalimentació per als teus debats. Podeu afegir a favorits aquesta pàgina i tornar aquí després de cada debat per realitzar les accions oportunes." + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "Retirar registre de les %(check_time)s" + +#: privateurls/templates/public_url_landing.html +msgid "Check in" +msgstr "Registrar-se" + +#. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "Has estat registrat a les %(check_time)s" + +#: privateurls/templates/public_url_landing.html +msgid "You are not currently checked in." +msgstr "Encara no estàs registrat." + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "Enviar Taula de resultats per %(round)s" + +#: privateurls/templates/public_url_landing.html +msgid "Submit Feedback" +msgstr "Enviar retroalimentació" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +msgstr "Registre (%(name)s)" + +#: privateurls/views.py +msgid "no URL" +msgstr "no URL" + +#: privateurls/views.py +msgid "URL" +msgstr "URL" + +#: privateurls/views.py +msgid "Speakers" +msgstr "Oradors" + +#: privateurls/views.py +msgid "Adjudicators" +msgstr "Grup de Jutges" + +#: privateurls/views.py +msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." +msgstr "" + +#: privateurls/views.py +#, python-format +msgid "A private URL was generated for %(nblank_people)d person." +msgid_plural "Private URLs were generated for all %(nblank_people)d people." +msgstr[0] "Una URL privada va ser generada per %(nblank_people)d." +msgstr[1] "Unes URLs privades van ser generades per %(nblank_people)d." + +#: privateurls/views.py +#, python-format +msgid "The already-existing private URL for %(nexisting_people)d person was left intact." +msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." +msgstr[0] "" +msgstr[1] "" + +#: privateurls/views.py +msgid "URL Key" +msgstr "Clau de l'URL" + +#: privateurls/views.py +msgid "Debates" +msgstr "Debats" + diff --git a/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..a7404713c75 Binary files /dev/null and b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 00000000000..3a7fd36da96 --- /dev/null +++ b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,183 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" +"Last-Translator: philip_tc\n" +"Language-Team: Czech\n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: cs\n" +"X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" + +#: privateurls/apps.py +msgid "Private URL Management" +msgstr "" + +#: privateurls/templates/private_urls.html privateurls/views.py +msgid "Private URLs" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "The private URLs for ballot and/or feedback submission from participants are given below." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" + +#: privateurls/templates/private_urls.html +#, python-format +msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "There are no private URLs assigned." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Generate Private URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "View URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Teams' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Adjudicators' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All reachable participants have already been sent their private URLs." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Email URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "This button only generates private URLs for participants who do not already have one." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Generate URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All participants already have private URLs." +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Check in" +msgstr "" + +#. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +msgstr "" + +#: privateurls/views.py +msgid "no URL" +msgstr "" + +#: privateurls/views.py +msgid "URL" +msgstr "" + +#: privateurls/views.py +msgid "Speakers" +msgstr "" + +#: privateurls/views.py +msgid "Adjudicators" +msgstr "Rozhodčí" + +#: privateurls/views.py +msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." +msgstr "" + +#: privateurls/views.py +#, python-format +msgid "A private URL was generated for %(nblank_people)d person." +msgid_plural "Private URLs were generated for all %(nblank_people)d people." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: privateurls/views.py +#, python-format +msgid "The already-existing private URL for %(nexisting_people)d person was left intact." +msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: privateurls/views.py +msgid "URL Key" +msgstr "" + +#: privateurls/views.py +msgid "Debates" +msgstr "Debat" + diff --git a/tabbycat/privateurls/locale/de/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/de/LC_MESSAGES/django.po index 7bfbb7faa8e..582927690bb 100644 --- a/tabbycat/privateurls/locale/de/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: German\n" "Language: de_DE\n" @@ -15,166 +15,165 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:144 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "(%(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:61 -msgid "Submit Ballot" +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:67 -#: privateurls/templates/public_url_landing.html:73 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" -msgstr "Übermittle Feedback" +msgstr "Feedback abgeben" -#: privateurls/templates/public_url_landing.html:82 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:62 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:75 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:86 +#: privateurls/views.py msgid "Speakers" -msgstr "RednerInnen" +msgstr "Redner" -#: privateurls/views.py:96 +#: privateurls/views.py msgid "Adjudicators" msgstr "Juroren" -#: privateurls/views.py:118 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:125 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:130 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:161 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:174 +#: privateurls/views.py msgid "Debates" msgstr "Debatten" diff --git a/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po index 96af46dbcfd..c7bc789a52c 100644 --- a/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" "PO-Revision-Date: 2019-07-11 23:48\n" "Last-Translator: philip_tc\n" "Language-Team: English\n" @@ -16,168 +16,161 @@ msgstr "" "X-Crowdin-Language: en\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/es/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/es/LC_MESSAGES/django.po index b27358006ab..fc7bdb9d6da 100644 --- a/tabbycat/privateurls/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:50\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "Manejo de links Privados" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "URLs privadas" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "No hay URLs privadas asignadas." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "Generar URLs privadas" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "Ver URLs" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "Oradores" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "Jueces" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/fr/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/fr/LC_MESSAGES/django.po index 754f57b7b2b..b7e4d79a66a 100644 --- a/tabbycat/privateurls/locale/fr/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 05:45\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-12 15:51\n" "Last-Translator: philip_tc\n" "Language-Team: French\n" "Language: fr_FR\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "Gestion des URLs privées" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "URLs Privées" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "Les URLs privées pour la saisie de feuilles ou d'évaluation des participants sont données en dessous." -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "Les URLs privées sont utilisées pour permettre aux participants de saisir les feuilles ou les évaluations en ligne. Vous devriez les utiliser si vous avez des moyens à distribuer ces URLs fous aux participants tout en étant concerné de fraude si les pages étaient accessible publiquement où qui que ce soit peut saisir n’importe formulaire. Les URLs auront l’air comme :" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "N’importe qui avec l’URL peut accéder à la page de saisie de données pertinente. L’idée est qu’il est dur de deviner une autre clé (le texte ayant l’air aléatoire), donc vous devriez vous assurer que les URLs soient accessibles seulement au participant en question. Lisez davantage à propos des URLs privées." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "N’importe qui avec l’URL peut accéder à la page de saisie de données pertinentes. L’idée est qu’il est dur de deviner une autre clé (le texte ayant l’air aléatoire), donc vous devriez vous assurer que les URLs soient accessibles seulement au participant en question. Lisez davantage à propos des URLs privées." -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "Ni la saisie des feuilles, ni des évaluations, ni l’enregistrement ne sont configurés à être saisis par des URLs privées. Les URLs générés n’auront aucun valeur tant que ces options ne sont pas mis accordement dans la page de configuration du tournoi." -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "Il n'y a aucune URL privée." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "Générer les URLs privées" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "Voir les URLs" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "Imprimer les URL des équipes" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "Imprimer les URL des juges" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "Tous les participants ont déjà été envoyés leurs URLs privées." -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "Envoyer les URLs" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "Ce bouton ne générera les URLs privées que pour les participants qui n'en ont pas déjà un." -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "Générer URLs" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "Tous les participants ont déjà leurs URLs privées." -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "URL privée" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "pour %(name)s" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "(%(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "Cette URL est personnalisée pour vous, %(name)s. Ne le partagez pas avec qui que se soit ; n’importe qui connait cette URL peut saisir des feuilles et des évaluations de débats en votre nom. Vous pouvez ajouter cette page à vos favoris et y retourner après chaque débat pour les options disponibles." -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "Révoquer l’enregistrement de %(check_time)s" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "Enregistrer" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "Vous vous êtes enregistré à %(check_time)s" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "Vous n’êtes pas actuellement enregistré." -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "Saisir feuille pour %(round)s" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "Il n'y a pas de joute actuelle" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "Saisir Évaluations" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "Enregistrement (%(name)s)" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "pas de URL" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "URL" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "Orateurs" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "Juges" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "Tous les participants ont déjà leurs URLs privées. Si vous voulez les imprimer, utilisez la zone de modifications de la base de données." -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "Une URL privée à été généré pour %(nblank_people)d personne." msgstr[1] "Des URLs privées ont été générés pour %(nblank_people)d personnes." -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "L’URL privée n’est pas modifiée pour %(nexisting_people)d personne." msgstr[1] "Les URLs privées ne sont pas modifiées pour %(nexisting_people)d personnes." -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "Clé d'URL" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "Débats" diff --git a/tabbycat/privateurls/locale/he/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/he/LC_MESSAGES/django.po index 24f8c45f260..f5eaa3e0860 100644 --- a/tabbycat/privateurls/locale/he/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:34\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -15,148 +15,147 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: he\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:144 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "(%(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:61 -msgid "Submit Ballot" +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:67 -#: privateurls/templates/public_url_landing.html:73 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:82 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:62 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:75 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:86 +#: privateurls/views.py msgid "Speakers" msgstr "דובר/תים" -#: privateurls/views.py:96 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:118 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:125 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." @@ -165,7 +164,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: privateurls/views.py:130 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." @@ -174,11 +173,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: privateurls/views.py:161 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:174 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/hi/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/hi/LC_MESSAGES/django.po index 7b2f405c426..6f0fcef36ae 100644 --- a/tabbycat/privateurls/locale/hi/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/hi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:37\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -15,166 +15,165 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:144 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:61 -msgid "Submit Ballot" +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:67 -#: privateurls/templates/public_url_landing.html:73 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:82 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:62 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:75 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:86 +#: privateurls/views.py msgid "Speakers" msgstr "" -#: privateurls/views.py:96 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:118 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:125 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:130 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:161 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:174 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/id/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/id/LC_MESSAGES/django.po index 4272ed3f8b6..3107986b772 100644 --- a/tabbycat/privateurls/locale/id/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-28 12:11\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -18,167 +18,160 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "Manajemen URL Privat" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "URL Privat" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "URL privat untuk kertas suara dan/atau masukan umpan balik dari para peserta, diberikan dibawah ini." -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "URL privat dipakai untuk memungkinkan para peserta menyampaikan suara dan/atau umpan balik secara daring. Anda sebaiknya memakainya bila bermaksud untuk membagikan URL-URL gila ke para peserta, dan terlalu khawatir terhadap penipuan menggunakan laman umum yang mudah diakses dimana siapapun bisa mencantumkan masukan apapun. URLnya akan terlihat seperti ini:" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "Siapapun yang punya URL dapat mengakses laman masukan data yang relevan. Idenya ialah sulit untuk menebak kunci lainnya (string yang terlihat aneh), sehingga anda mesti membuat tiap URL mudah diakses hanya untuk peserta yang dibicarakan. Baca lagi mengenai URL privat." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "Bukan masukan kotak suara peserta, masukan umpan balik peserta, maupun daftar-mandiri peserta telah terkonfigurasi menjadi dari URL privat. URL apapun yang dihasilkan tidak akan berguna kecuali bila anda mengkonfigurasi pengaturan-pengaturan itu sedemikian rupa pada laman konfigurasi turnamen." -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "Tidak ada URL privat yang ditetapkan." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "Menghasilkan URL privat" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "Lihat URL" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "Mencetak URL para tim" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "Mencetak URL para juri" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "Semua peserta yang terjangkau telah dikirimkan URL privat mereka." -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "URL Email" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "Tombol ini hanya mengahasilkan URL privat untuk para peserta yang sebelumnya belum punya." -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "Menghasilkan URL" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "Semua peserta sudah mempunyai URL privat." -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "URL Privat" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "untuk %(name)s" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "URL dari laman ini telah dipersonalisasi untukmu, %(name)s. Jangan dibagikan ke siapapun; siapapun yang tahu URL ini dapat mengirim hasil-hasil dan/atau umpan balik untuk debat-debatmu." -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "Mencabut lapor masuk dari %(check_time)s" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "Lapor masuk" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "Anda telah dilaporkan masuk pada %(check_time)s" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "Saat ini anda belum lapor masuk." -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "Mengajukan Kotak suara selama %(round)s" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "Tidak ada ronde saat ini" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "Sampaikan Umpan balik" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "Registrasi (%(name)s)" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "tidak ada URL" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "URL" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "Pembicara" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "Juri" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "Semua para peserta sudah punya URL privat. Bila anda ingin menghapusnya, pakai area Edit Basisdata." -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "URL-URL privat telah dihasilkan untuk semua %(nblank_people)d orang." -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "URL-URL privat yang telah ada untuk %(nexisting_people)d orang dibiarkan utuh." -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "Kunci URL" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "Debat-debat" diff --git a/tabbycat/privateurls/locale/it/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..1e5c35f9931 Binary files /dev/null and b/tabbycat/privateurls/locale/it/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/it/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/it/LC_MESSAGES/django.po index 3ce05568940..f4403546e34 100644 --- a/tabbycat/privateurls/locale/it/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2022-04-18 16:46\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "Gestione URL privati" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "URL privati" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "Gli URL privati per i ballot e/o le sottomissioni di feedback dei partecipanti sono riportati di seguito." -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "Gli URL privati sono utilizzati per consentire ai partecipanti di inviare ballot e/o feedback online. Dovresti usarli se hai un mezzo per distribuire URL difficili da ricordare ai partecipanti, e sono troppo preoccupati per le possibil frodi nell'utilizzare una pagina accessibile al pubblico dove chiunque può inserire qualsiasi informazione. Gli URL assomiglieranno a questo:" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "Chiunque abbia l'URL può accedere alla relativa pagina di inserimento dati. L'idea è che è difficile indovinare un'altra chiave (la stringa dall'aspetto casuale), in modo da rendere ogni URL accessibile solo al partecipante in questione. Per saperne di più sugli URL privati." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "Ne i form di ballot per partecipanti, i feedback dei partecipanti, né gli auto-checkins dei partecipanti sono configurati per essere da URL privati. Qualsiasi URL generato sarà inutile a meno che tu non configuri queste impostazioni di conseguenza nella pagina di configurazione del torneo." -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "Non ci sono URL privati assegnati." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "Genera URL Privati" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "Visualizza URL" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "Stampa Gli URL Dei Team" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "Stampa URL dei giudici" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "Tutti i partecipanti raggiungibili hanno già ricevuto il loro URL privato." -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "Email URL" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "Questo pulsante genera solo gli URL privati per i partecipanti che non ne hanno già uno." -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "Genera URL" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "Tutti i partecipanti hanno già un URL privato." -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "URL PrivatI" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "per %(name)s" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "L'URL di questa pagina è personalizzato per te, %(name)s. Non condividerlo con nessuno; chiunque abbia questo URL può inviare risultati e/o feedback per i tuoi dibattiti. Salva questa pagina e riaprila dopo ogni dibattito per le azioni disponibili." -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "Revoca check-in da %(check_time)s" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "Check in" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "Hanno effettuato il check-in per te alle %(check_time)s" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "Attualmente non sei registrato." -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "Invia Ballot per %(round)s" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "Attualmente non ci sono round" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "Invia feedback" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "Registrazione (%(name)s)" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "nessun URL" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "URL" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "Speaker" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "GiudicI" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "Tutti i partecipanti hanno già URL privato. Per eliminarli, utilizzare l'area Modifica database." -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "È stato generato un URL privato per %(nblank_people)d persona." msgstr[1] "Sono stati generato gli URL privati per %(nblank_people)d persone." -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "L'URL privato già esistente per %(nexisting_people)d persona è stato lasciato intatto." msgstr[1] "Gli URL privati già esistente per %(nexisting_people)d persone sono stati lasciati intatti." -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "Chiave URL" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "Dibattiti" diff --git a/tabbycat/privateurls/locale/ja/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ja/LC_MESSAGES/django.po index b1e17521824..6efdcb7ebf9 100644 --- a/tabbycat/privateurls/locale/ja/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:50\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -18,167 +18,160 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "プライベートURL管理" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "プライベートURLが割り当てられていません。" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "URLを表示する" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "このボタンはまだプライベートURLを保有していない参加者分を作成します。" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "すべての参加者にプライベートURLが割り当てられています。" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "URL なし" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "スピーカー" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "ジャッジ" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..4c266d402d3 Binary files /dev/null and b/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..15cdc3dd83a --- /dev/null +++ b/tabbycat/privateurls/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,179 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-03-15 13:13\n" +"Last-Translator: philip_tc\n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\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: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" + +#: privateurls/apps.py +msgid "Private URL Management" +msgstr "" + +#: privateurls/templates/private_urls.html privateurls/views.py +msgid "Private URLs" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "The private URLs for ballot and/or feedback submission from participants are given below." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" + +#: privateurls/templates/private_urls.html +#, python-format +msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "There are no private URLs assigned." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Generate Private URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "View URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Teams' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Adjudicators' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All reachable participants have already been sent their private URLs." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Email URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "This button only generates private URLs for participants who do not already have one." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Generate URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All participants already have private URLs." +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Check in" +msgstr "" + +#. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +msgstr "" + +#: privateurls/views.py +msgid "no URL" +msgstr "" + +#: privateurls/views.py +msgid "URL" +msgstr "" + +#: privateurls/views.py +msgid "Speakers" +msgstr "" + +#: privateurls/views.py +msgid "Adjudicators" +msgstr "" + +#: privateurls/views.py +msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." +msgstr "" + +#: privateurls/views.py +#, python-format +msgid "A private URL was generated for %(nblank_people)d person." +msgid_plural "Private URLs were generated for all %(nblank_people)d people." +msgstr[0] "" +msgstr[1] "" + +#: privateurls/views.py +#, python-format +msgid "The already-existing private URL for %(nexisting_people)d person was left intact." +msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." +msgstr[0] "" +msgstr[1] "" + +#: privateurls/views.py +msgid "URL Key" +msgstr "" + +#: privateurls/views.py +msgid "Debates" +msgstr "" + diff --git a/tabbycat/privateurls/locale/ms/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ms/LC_MESSAGES/django.po index 179cdaafb6a..41a3e6c4e97 100644 --- a/tabbycat/privateurls/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/ms/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:54\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -18,167 +18,160 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/pt/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/pt/LC_MESSAGES/django.po index ee4094b9546..525fd65f777 100644 --- a/tabbycat/privateurls/locale/pt/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:46\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" msgstr[1] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/ro/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ro/LC_MESSAGES/django.po index 9cac3da0dbb..f79cd0910d9 100644 --- a/tabbycat/privateurls/locale/ro/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/ro/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -15,148 +15,147 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:144 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:61 -msgid "Submit Ballot" +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:67 -#: privateurls/templates/public_url_landing.html:73 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:82 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:62 +#: privateurls/views.py msgid "no URL" msgstr "" -#: privateurls/views.py:75 +#: privateurls/views.py msgid "URL" msgstr "" -#: privateurls/views.py:86 +#: privateurls/views.py msgid "Speakers" msgstr "Vorbitori" -#: privateurls/views.py:96 +#: privateurls/views.py msgid "Adjudicators" msgstr "" -#: privateurls/views.py:118 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:125 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." @@ -164,7 +163,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: privateurls/views.py:130 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." @@ -172,11 +171,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: privateurls/views.py:161 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:174 +#: privateurls/views.py msgid "Debates" msgstr "" diff --git a/tabbycat/privateurls/locale/ru/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/ru/LC_MESSAGES/django.po index 1f70fda3c74..b18d774f06c 100644 --- a/tabbycat/privateurls/locale/ru/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:46\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -18,151 +18,144 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "Управление личным URL" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "Личный URL" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "Личные URL для бэллотов и/или представления форм обратной связи от участников приведены ниже." -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "Частные URL-адреса используются для того, чтобы участники могли отправлять бэллоты и/или формы обратной связи онлайн. Вам стоит использовать их, если у вас есть средства распространения странно выглядящих URL участникам, и вы слишком обеспокоены мошенничеством, чтобы использовать общедоступные страницы, где каждый может ввести любые данные. URL-адреса будут выглядеть вот так:" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "Любой, имеющий URL может получить доступ к соответствующей странице ввода данных. Идея заключается в том, что трудно угадать чужой ключ (выглядящий как случайный набор символов), поэтому вы должны сделать каждый URL доступным только для участника. Подробнее о частных URL." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "Ни отправка бэллотов, и форм обратной связи от участников, ни самостоятельная регистрация участников не установлены доступными с личных URL. Любой созданный URL будет бесполезен если вы не измените эти настройки соответствующим образом на странице настроек турнира." -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "Нет личных URL-адресов." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "Генерировать личные URL" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "Смотреть URL" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "Всем доступным участникам уже были отправлены их личные URL." -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "Отправить URL по email" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "Эта кнопка генерирует только личные URL для участников, которые еще их не имеют." -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "Генерировать URL" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "Все участники уже имеют личные URL." -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "Личный URL" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "для %(name)s" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "( %(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "URL этой страницы персонализирован для вас, %(name)s. Не делитесь им ни с кем: любой, кто знает это URL может отправлять за вас результаты дебатов и/или фидбэк. Если вы запомните эту страницу, вы можете возвращаться после каждого раунда для доступных действий." -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "Отменить регистрации с %(check_time)s" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "Зарегистрироваться" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "Вы были зарегистрированы в %(check_time)s" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "В настоящее время вы не зарегистрированы." -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "Отправить форму обратной связи" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "Регистрация (%(name)s)" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "нет URL" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "URL" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "Спикеры" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "Судьи" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "Все участники уже имеют личные URL. Если вы хотите удалить их, используйте область \"Редактировать базу данных\"." -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." @@ -171,7 +164,7 @@ msgstr[1] "Личные URL были созданы для %(nblank_people)d." msgstr[2] "Личные URL были созданы для %(nblank_people)d." msgstr[3] "Личные URL были созданы для %(nblank_people)d." -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." @@ -180,11 +173,11 @@ msgstr[1] "Уже существующие личные URL для %(nexisting_p msgstr[2] "Уже существующие личные URL для %(nexisting_people)d остались неиспользованными." msgstr[3] "Уже существующие личные URL для %(nexisting_people)d остались неиспользованными." -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "Ключ URL" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "Дебаты" diff --git a/tabbycat/privateurls/locale/tr/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/tr/LC_MESSAGES/django.po index 3bea657fad3..347176abc6b 100644 --- a/tabbycat/privateurls/locale/tr/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-24 04:15-0300\n" -"PO-Revision-Date: 2020-05-24 07:36\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-05-25 23:54\n" "Last-Translator: philip_tc\n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -15,166 +15,165 @@ msgstr "" "X-Crowdin-Project: tabbycat\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" -msgstr "" +msgstr "Özel URL Yönetimi" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:144 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" -msgstr "" +msgstr "Özel URL'ler" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." -msgstr "" +msgstr "Ballot ve/veya katılımcılardan geri bildirim gönderimi için özel URL'ler aşağıda verilmiştir." -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" -msgstr "" +msgstr "Özel URL'ler, katılımcıların çevrimiçi ballot ve/veya geri bildirim göndermelerine izin vermek için kullanılır. Katılımcılara garip görünümlü URL'ler dağıtmanın bir yolu varsa ve sahtekarlık konusunda herkesin herhangi bir gönderimini girebileceği herkese açık bir sayfa kullanmak için çok endişeliyseniz bunları kullanmalısınız. URL'ler şuna benzer şekilde görünür:" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "" +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "URL'ye sahip olan herkes ilgili veri giriş sayfasına erişebilir. Buradaki fikir, başka bir anahtarı (rastgele görünen dize) tahmin etmenin zor olmasıdır, bu nedenle her URL'yi yalnızca söz konusu katılımcı için erişilebilir hale getirmelisiniz. Özel URL'ler hakkında daha fazla bilgi edinin." -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." -msgstr "" +msgstr "katılımcı ballot gönderimleri, katılımcı geri bildirim gönderimleri ve katılımcı kendi başına girişleri özel URL'lerden olacak şekilde yapılandırılmamıştır. Oluşturulan URL'ler, bu ayarları turnuva ayarlama sayfasında uygun şekilde yapılandırmadığınız sürece yararlı olmayacaktır." -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." -msgstr "" +msgstr "Atanmış özel URL yoktur." -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" -msgstr "" +msgstr "Özel URL'ler oluştur" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" -msgstr "" +msgstr "URL'leri görüntüle" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" -msgstr "" +msgstr "Takımların URL'lerini yazdır" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" -msgstr "" +msgstr "Jürilerin URL'lerini yazdır" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." -msgstr "" +msgstr "Ulaşılabilir tüm katılımcılara özel URL'leri zaten gönderildi." -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" -msgstr "" +msgstr "URL'leri e-postala" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." -msgstr "" +msgstr "Bu yalnızca henüz özel URL'si olmayan katılımcılar için özel URL oluşturur." -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" -msgstr "" +msgstr "URL'ler oluştur" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." -msgstr "" +msgstr "Tüm katılımcıların zaten özel URL'leri var." -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" -msgstr "" +msgstr "Özel URL" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" -msgstr "" +msgstr "%(name)s için" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "(%(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." -msgstr "" +msgstr "Bu sayfanın URL'si sizin için kişiseldir, %(name)s. Kimseyle paylaşmayın; bu URL'yi bilen herkes tartışmalarınız için sonuç ve/veya geri bildirim gönderebilir. Bu sayfayı yer imlerine ekleyebilir ve mevcut eylemler için her maçtan sonra buraya dönebilirsiniz." -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" -msgstr "" +msgstr "%(check_time)s'den itibaren girişleri iptal et" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" -msgstr "" +msgstr "Giriş" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" -msgstr "" +msgstr "%(check_time)s zamanında giriş yaptınız." -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." -msgstr "" +msgstr "Şu anda giriş yapmadınız." -#: privateurls/templates/public_url_landing.html:61 -msgid "Submit Ballot" -msgstr "" +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "%(round)s için ballot gönder" -#: privateurls/templates/public_url_landing.html:67 -#: privateurls/templates/public_url_landing.html:73 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "Geri Bildirim Yolla" -#: privateurls/templates/public_url_landing.html:82 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" -msgstr "" +msgstr "Kayıt (%(name)s)" -#: privateurls/views.py:62 +#: privateurls/views.py msgid "no URL" -msgstr "" +msgstr "URL yok" -#: privateurls/views.py:75 +#: privateurls/views.py msgid "URL" -msgstr "" +msgstr "URL" -#: privateurls/views.py:86 +#: privateurls/views.py msgid "Speakers" msgstr "Konuşmacılar" -#: privateurls/views.py:96 +#: privateurls/views.py msgid "Adjudicators" msgstr "Jüriler" -#: privateurls/views.py:118 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." -msgstr "" +msgstr "Tüm katılımcıların zaten özel URL'leri var. Bunları silmek istiyorsanız, Veritabanını Düzenle alanını kullanın." -#: privateurls/views.py:125 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(nblank_people)d kişisi için özel bir URL oluşturuldu." +msgstr[1] "Özel URL'ler tüm %(nblank_people)d kişileri için oluşturulmuştur." -#: privateurls/views.py:130 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(nexisting_people)d kişinin zaten var olan özel URL'si olduğu gibi bırakılmıştır." +msgstr[1] "%(nexisting_people)d kişilerinin zaten var olan özel URL'si olduğu gibi bırakılmıştır." -#: privateurls/views.py:161 +#: privateurls/views.py msgid "URL Key" -msgstr "" +msgstr "URL anahtarı" -#: privateurls/views.py:174 +#: privateurls/views.py msgid "Debates" -msgstr "" +msgstr "Maçlar" diff --git a/tabbycat/privateurls/locale/tzl/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/tzl/LC_MESSAGES/django.po index 0163d2ed540..37788397026 100644 --- a/tabbycat/privateurls/locale/tzl/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/tzl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:55\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Talossan\n" "Language: tzl_TZL\n" @@ -18,169 +18,162 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "crwdns32288:0crwdne32288:0" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "crwdns35276:0crwdne35276:0" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "crwdns32298:0crwdne32298:0" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "crwdns32300:0crwdne32300:0" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." -msgstr "crwdns32302:0crwdne32302:0" +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "crwdns52223:0crwdne52223:0" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "crwdns32304:0%(data_entry_options_url)scrwdne32304:0" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "crwdns32306:0crwdne32306:0" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "crwdns32308:0crwdne32308:0" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "crwdns32310:0crwdne32310:0" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "crwdns51390:0crwdne51390:0" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "crwdns51392:0crwdne51392:0" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "crwdns34456:0crwdne34456:0" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "crwdns32314:0crwdne32314:0" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "crwdns32316:0crwdne32316:0" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "crwdns32318:0crwdne32318:0" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "crwdns32320:0crwdne32320:0" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "crwdns32322:0crwdne32322:0" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "crwdns32324:0%(name)scrwdne32324:0" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "crwdns32326:0%(team)scrwdne32326:0" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "crwdns32328:0%(name)scrwdne32328:0" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "crwdns32330:0%(check_time)scrwdne32330:0" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "crwdns32332:0crwdne32332:0" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "crwdns51394:0%(check_time)scrwdne51394:0" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "crwdns51396:0crwdne51396:0" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "crwdns51962:0%(round)scrwdne51962:0" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "crwdns51964:0crwdne51964:0" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "crwdns32336:0crwdne32336:0" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "crwdns35282:0%(name)scrwdne35282:0" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "crwdns32354:0crwdne32354:0" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "crwdns32358:0crwdne32358:0" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "crwdns32356:0crwdne32356:0" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "crwdns32360:0crwdne32360:0" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "crwdns32362:0crwdne32362:0" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "crwdns32364:1%(nblank_people)dcrwdne32364:1" msgstr[1] "crwdns32364:5%(nblank_people)dcrwdne32364:5" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "crwdns32366:1%(nexisting_people)dcrwdne32366:1" msgstr[1] "crwdns32366:5%(nexisting_people)dcrwdne32366:5" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "crwdns35284:0crwdne35284:0" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "crwdns34466:0crwdne34466:0" diff --git a/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.mo b/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.mo new file mode 100644 index 00000000000..fb1482ba53e Binary files /dev/null and b/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.mo differ diff --git a/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..d3ab4b4f86c --- /dev/null +++ b/tabbycat/privateurls/locale/vi/LC_MESSAGES/django.po @@ -0,0 +1,177 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-06-22 12:42\n" +"Last-Translator: philip_tc\n" +"Language-Team: Vietnamese\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: crowdin.com\n" +"X-Crowdin-Project: tabbycat\n" +"X-Crowdin-Language: vi\n" +"X-Crowdin-File: /develop/tabbycat/privateurls/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 946\n" + +#: privateurls/apps.py +msgid "Private URL Management" +msgstr "" + +#: privateurls/templates/private_urls.html privateurls/views.py +msgid "Private URLs" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "The private URLs for ballot and/or feedback submission from participants are given below." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +msgstr "" + +#: privateurls/templates/private_urls.html +#, python-format +msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "There are no private URLs assigned." +msgstr "" + +#: privateurls/templates/private_urls.html +msgid "Generate Private URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "View URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Teams' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Print Adjudicators' URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All reachable participants have already been sent their private URLs." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Email URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "This button only generates private URLs for participants who do not already have one." +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "Generate URLs" +msgstr "" + +#: privateurls/templates/private_urls_nav.html +msgid "All participants already have private URLs." +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Check in" +msgstr "" + +#. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/public_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/public_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +msgstr "" + +#: privateurls/views.py +msgid "no URL" +msgstr "" + +#: privateurls/views.py +msgid "URL" +msgstr "" + +#: privateurls/views.py +msgid "Speakers" +msgstr "Tranh biện viên" + +#: privateurls/views.py +msgid "Adjudicators" +msgstr "Giám khảo" + +#: privateurls/views.py +msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." +msgstr "" + +#: privateurls/views.py +#, python-format +msgid "A private URL was generated for %(nblank_people)d person." +msgid_plural "Private URLs were generated for all %(nblank_people)d people." +msgstr[0] "" + +#: privateurls/views.py +#, python-format +msgid "The already-existing private URL for %(nexisting_people)d person was left intact." +msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." +msgstr[0] "" + +#: privateurls/views.py +msgid "URL Key" +msgstr "" + +#: privateurls/views.py +msgid "Debates" +msgstr "" + diff --git a/tabbycat/privateurls/locale/zh_Hans/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/zh_Hans/LC_MESSAGES/django.po index 0d5f4a5b6d6..f3715e80e8a 100644 --- a/tabbycat/privateurls/locale/zh_Hans/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 01:40-0300\n" -"PO-Revision-Date: 2021-04-02 04:49\n" +"POT-Creation-Date: 2023-01-28 12:44-0400\n" +"PO-Revision-Date: 2023-02-05 01:00\n" "Last-Translator: philip_tc\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -18,167 +18,160 @@ msgstr "" "X-Crowdin-Project-ID: 364715\n" "X-Crowdin-File-ID: 946\n" -#: privateurls/apps.py:7 +#: privateurls/apps.py msgid "Private URL Management" msgstr "" -#: privateurls/templates/private_urls.html:4 -#: privateurls/templates/private_urls.html:5 privateurls/views.py:145 +#: privateurls/templates/private_urls.html privateurls/views.py msgid "Private URLs" msgstr "" -#: privateurls/templates/private_urls.html:17 +#: privateurls/templates/private_urls.html msgid "The private URLs for ballot and/or feedback submission from participants are given below." msgstr "" -#: privateurls/templates/private_urls.html:19 +#: privateurls/templates/private_urls.html msgid "Private URLs are used to allow participants to submit ballots and/or feedback online. You should use them if you have a means of distributing crazy-looking URLs to participants, and are too worried about fraud to use a publicly accessible page where anyone can enter any submission. The URLs will look something like this:" msgstr "" -#: privateurls/templates/private_urls.html:31 -msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." +#: privateurls/templates/private_urls.html +msgid "Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. Read more about private URLs." msgstr "" -#: privateurls/templates/private_urls.html:47 +#: privateurls/templates/private_urls.html #, python-format msgid "Neither participant ballot submissions, participant feedback submissions, nor participant self-checkins are configured to be from private URLs. Any generated URLs will not be useful unless you configure those settings accordingly on the tournament configuration page." msgstr "" -#: privateurls/templates/private_urls.html:67 +#: privateurls/templates/private_urls.html msgid "There are no private URLs assigned." msgstr "" -#: privateurls/templates/private_urls.html:73 +#: privateurls/templates/private_urls.html msgid "Generate Private URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:6 +#: privateurls/templates/private_urls_nav.html msgid "View URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:11 +#: privateurls/templates/private_urls_nav.html msgid "Print Teams' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:15 +#: privateurls/templates/private_urls_nav.html msgid "Print Adjudicators' URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:22 +#: privateurls/templates/private_urls_nav.html msgid "All reachable participants have already been sent their private URLs." msgstr "" -#: privateurls/templates/private_urls_nav.html:24 +#: privateurls/templates/private_urls_nav.html msgid "Email URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:31 +#: privateurls/templates/private_urls_nav.html msgid "This button only generates private URLs for participants who do not already have one." msgstr "" -#: privateurls/templates/private_urls_nav.html:32 -#: privateurls/templates/private_urls_nav.html:39 +#: privateurls/templates/private_urls_nav.html msgid "Generate URLs" msgstr "" -#: privateurls/templates/private_urls_nav.html:38 +#: privateurls/templates/private_urls_nav.html msgid "All participants already have private URLs." msgstr "" -#: privateurls/templates/public_url_landing.html:4 -#: privateurls/templates/public_url_landing.html:5 +#: privateurls/templates/public_url_landing.html msgid "Private URL" msgstr "" -#: privateurls/templates/public_url_landing.html:10 +#: privateurls/templates/public_url_landing.html #, python-format msgid "for %(name)s" msgstr "" -#: privateurls/templates/public_url_landing.html:12 +#: privateurls/templates/public_url_landing.html #, python-format msgid "(%(team)s)" msgstr "(%(team)s)" -#: privateurls/templates/public_url_landing.html:18 +#: privateurls/templates/public_url_landing.html #, python-format msgid "The URL of this page is personalised to you, %(name)s. Do not share it with anyone; anyone who knows this URL can submit results and/or feedback for your debates. You may bookmark this page and return here after each debate for the available actions." msgstr "" -#: privateurls/templates/public_url_landing.html:37 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Revoke check-in from %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:42 +#: privateurls/templates/public_url_landing.html msgid "Check in" msgstr "" #. Translators: Include the full-stop; English doesn't because "a.m." already has a full stop. -#: privateurls/templates/public_url_landing.html:49 +#: privateurls/templates/public_url_landing.html #, python-format msgid "You have been checked in at %(check_time)s" msgstr "" -#: privateurls/templates/public_url_landing.html:54 +#: privateurls/templates/public_url_landing.html msgid "You are not currently checked in." msgstr "" -#: privateurls/templates/public_url_landing.html:62 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Submit Ballot for %(round)s" msgstr "" -#: privateurls/templates/public_url_landing.html:65 -msgid "There are no current rounds" -msgstr "" - -#: privateurls/templates/public_url_landing.html:71 +#: privateurls/templates/public_url_landing.html msgid "Submit Feedback" msgstr "" -#: privateurls/templates/public_url_landing.html:84 +#: privateurls/templates/public_url_landing.html #, python-format msgid "Registration (%(name)s)" msgstr "" -#: privateurls/views.py:63 privateurls/views.py:164 +#: privateurls/views.py msgid "no URL" msgstr "没有URL" -#: privateurls/views.py:76 +#: privateurls/views.py msgid "URL" msgstr "网址" -#: privateurls/views.py:87 +#: privateurls/views.py msgid "Speakers" msgstr "讲员" -#: privateurls/views.py:97 +#: privateurls/views.py msgid "Adjudicators" msgstr "裁判" -#: privateurls/views.py:119 +#: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." msgstr "" -#: privateurls/views.py:126 +#: privateurls/views.py #, python-format msgid "A private URL was generated for %(nblank_people)d person." msgid_plural "Private URLs were generated for all %(nblank_people)d people." msgstr[0] "" -#: privateurls/views.py:131 +#: privateurls/views.py #, python-format msgid "The already-existing private URL for %(nexisting_people)d person was left intact." msgid_plural "The already-existing private URLs for %(nexisting_people)d people were left intact." msgstr[0] "" -#: privateurls/views.py:172 +#: privateurls/views.py msgid "URL Key" msgstr "" -#: privateurls/views.py:181 +#: privateurls/views.py msgid "Debates" msgstr "辩论" diff --git a/tabbycat/privateurls/templates/private_urls.html b/tabbycat/privateurls/templates/private_urls.html index 7983c93f027..ff384abc9e9 100644 --- a/tabbycat/privateurls/templates/private_urls.html +++ b/tabbycat/privateurls/templates/private_urls.html @@ -32,7 +32,7 @@ Anyone with the URL can access the relevant data entry page. The idea is that it's hard to guess another key (the random-looking string), so you should make each URL accessible only to the participant in question. - + Read more about private URLs. {% endblocktrans %}

    diff --git a/tabbycat/privateurls/templates/public_url_landing.html b/tabbycat/privateurls/templates/public_url_landing.html index 6bb65610084..5b4eef7867b 100644 --- a/tabbycat/privateurls/templates/public_url_landing.html +++ b/tabbycat/privateurls/templates/public_url_landing.html @@ -37,11 +37,12 @@ {% blocktrans trimmed with check_time=event.time asvar text %} Revoke check-in from {{ check_time }} {% endblocktrans %} + {% include "components/item-action.html" with id="triggerCheckInForm" url="" child=True type="warning" %} {% else %} {% trans "Check in" as text %} + {% include "components/item-action.html" with id="triggerCheckInForm" url="" child=True %} {% endif %} - {% include "components/item-action.html" with id="triggerCheckInForm" url="" child=True %} {% elif checkins_used %} {% if event %} @@ -57,13 +58,10 @@ {% endif %} {% if object.adjudicator and pref.participant_ballots == 'private-urls' %} - {% for round in tournament.current_rounds %} - {% roundurl 'results-public-ballotset-new-randomised' round url_key as url %} - {% blocktrans trimmed with round=round.name asvar text %}Submit Ballot for {{ round }}{% endblocktrans %} - {% include "components/item-action.html" %} - {% empty %} - {% trans "There are no current rounds" as text %} - {% include "components/item-info.html" with type='info' %} + {% for dadj in debateadjudications %} + {% roundurl 'results-public-ballotset-new-randomised' dadj.debate.round url_key as url %} + {% blocktrans trimmed with round=dadj.debate.round.name asvar text %}Submit Ballot for {{ round }}{% endblocktrans %} + {% include "components/item-action.html" %} {% endfor %} {% endif %} @@ -101,7 +99,7 @@ {% block js %} {{ block.super }}