diff --git a/docs/locale/cs/LC_MESSAGES/features/notifications.po b/docs/locale/cs/LC_MESSAGES/features/notifications.po index 6dfea09c2dc..b0fd25b192e 100644 --- a/docs/locale/cs/LC_MESSAGES/features/notifications.po +++ b/docs/locale/cs/LC_MESSAGES/features/notifications.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: 2021-01-17 20:55\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -141,7 +141,7 @@ msgstr "" #: ../../features/notifications.rst:61 msgid "**Current team standings**" -msgstr "" +msgstr "**Aktuální pořadí týmů**" #: ../../features/notifications.rst:63 msgid "Email to speakers with their point total." diff --git a/docs/locale/cs/LC_MESSAGES/install/wsl.po b/docs/locale/cs/LC_MESSAGES/install/wsl.po index 8c8135158a3..945f9a22d7e 100644 --- a/docs/locale/cs/LC_MESSAGES/install/wsl.po +++ b/docs/locale/cs/LC_MESSAGES/install/wsl.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: 2021-01-17 20:56\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -24,7 +24,7 @@ msgstr "" #: ../../install/wsl.rst:7 msgid "Is this the best installation method for you?" -msgstr "" +msgstr "Je to pro vás nejlepší způsob instalace?" #: ../../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`" diff --git a/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po index d6ddc438316..2b9dc802363 100644 --- a/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.po +++ b/docs/locale/cs/LC_MESSAGES/use/finishing-a-tournament.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: 2021-01-17 20:56\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -48,7 +48,7 @@ msgstr "" #: ../../use/finishing-a-tournament.rst:17 msgid "Motions Tab" -msgstr "" +msgstr "Tab tezí" #: ../../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/el/LC_MESSAGES/about/authors.po b/docs/locale/el/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..fde2cea7e51 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: el_GR\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/el/LC_MESSAGES/about/changelog.po b/docs/locale/el/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..7e2b300c274 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: el_GR\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/el/LC_MESSAGES/about/contributing.po b/docs/locale/el/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..a6a1d49694a --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: el_GR\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/el/LC_MESSAGES/about/licence.po b/docs/locale/el/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..7a5cc4a019d --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: el_GR\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/el/LC_MESSAGES/about/support.po b/docs/locale/el/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..7e3ecd106ab --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: el_GR\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/el/LC_MESSAGES/about/tournament-history.po b/docs/locale/el/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..c8ae6e52548 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: el_GR\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/el/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/el/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..6091e7a1f8b --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: el_GR\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/el/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/el/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..d5bd3ffa172 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: el_GR\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/el/LC_MESSAGES/features/backups.po b/docs/locale/el/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..0aefa98cd4c --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: el_GR\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/el/LC_MESSAGES/features/breaks.po b/docs/locale/el/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..1e7a084916a --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: el_GR\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/el/LC_MESSAGES/features/check-ins.po b/docs/locale/el/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..c0b6b9a2261 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: el_GR\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/el/LC_MESSAGES/features/data-entry.po b/docs/locale/el/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..aa1d7987cd5 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: el_GR\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/el/LC_MESSAGES/features/data-importers.po b/docs/locale/el/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..64f737d0b71 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: el_GR\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/el/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/el/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..75abfe53980 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: el_GR\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/el/LC_MESSAGES/features/draw-generation.po b/docs/locale/el/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..8e4cd936443 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: el_GR\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/el/LC_MESSAGES/features/notifications.po b/docs/locale/el/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..3cf323188c6 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: el_GR\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/el/LC_MESSAGES/features/preformed-panels.po b/docs/locale/el/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..edc317c30de --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: el_GR\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/el/LC_MESSAGES/features/printing.po b/docs/locale/el/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..20714984603 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: el_GR\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/el/LC_MESSAGES/features/standings-rules.po b/docs/locale/el/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..50b23e71abb --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: el_GR\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/el/LC_MESSAGES/features/team-code-names.po b/docs/locale/el/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..f2983001adb --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: el_GR\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/el/LC_MESSAGES/features/user-accounts.po b/docs/locale/el/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..e69ec53c110 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: el_GR\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/el/LC_MESSAGES/features/venue-constraints.po b/docs/locale/el/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..aa38bf76c03 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: el_GR\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/el/LC_MESSAGES/guide/comparisons.po b/docs/locale/el/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..57694607984 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: el_GR\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/el/LC_MESSAGES/guide/scaling.po b/docs/locale/el/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..0f335e3ff30 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: el_GR\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/el/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/el/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..a5367e1766f --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: el_GR\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/el/LC_MESSAGES/guide/upgrading.po b/docs/locale/el/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..63c84a52fa2 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: el_GR\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/el/LC_MESSAGES/index.po b/docs/locale/el/LC_MESSAGES/index.po new file mode 100644 index 00000000000..286094010b2 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: el_GR\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/el/LC_MESSAGES/install/docker.po b/docs/locale/el/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..2425eeb2469 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: el_GR\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/el/LC_MESSAGES/install/heroku.po b/docs/locale/el/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..64e1c61b8a3 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: el_GR\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/el/LC_MESSAGES/install/linux.po b/docs/locale/el/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..ca8a397bf7d --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: el_GR\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/el/LC_MESSAGES/install/local.po b/docs/locale/el/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..bb4bdb30b4b --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: el_GR\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/el/LC_MESSAGES/install/osx.po b/docs/locale/el/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..8e4b19c983e --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: el_GR\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/el/LC_MESSAGES/install/windows.po b/docs/locale/el/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..e0ca76e24bf --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: el_GR\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/el/LC_MESSAGES/install/wsl.po b/docs/locale/el/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..7bb7b79e2e8 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: el_GR\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/el/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/el/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..3df4012f4f7 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: el_GR\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/el/LC_MESSAGES/use/importing-data.po b/docs/locale/el/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..af3002043c8 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: el_GR\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/el/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/el/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..72e145c55d4 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: el_GR\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/el/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/el/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..0098095d4e3 --- /dev/null +++ b/docs/locale/el/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: 2025-08-07 00:13\n" +"Last-Translator: \n" +"Language-Team: Greek\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: el\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: el_GR\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/sk/LC_MESSAGES/about/authors.po b/docs/locale/sk/LC_MESSAGES/about/authors.po new file mode 100644 index 00000000000..bdf116b0761 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/authors.po\n" +"X-Crowdin-File-ID: 1259\n" +"Language: sk_SK\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/sk/LC_MESSAGES/about/changelog.po b/docs/locale/sk/LC_MESSAGES/about/changelog.po new file mode 100644 index 00000000000..9d95296e21b --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/changelog.po\n" +"X-Crowdin-File-ID: 1261\n" +"Language: sk_SK\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/sk/LC_MESSAGES/about/contributing.po b/docs/locale/sk/LC_MESSAGES/about/contributing.po new file mode 100644 index 00000000000..272d3d370ce --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/contributing.po\n" +"X-Crowdin-File-ID: 1263\n" +"Language: sk_SK\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/sk/LC_MESSAGES/about/licence.po b/docs/locale/sk/LC_MESSAGES/about/licence.po new file mode 100644 index 00000000000..5e6c3b0165e --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/licence.po\n" +"X-Crowdin-File-ID: 1265\n" +"Language: sk_SK\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/sk/LC_MESSAGES/about/support.po b/docs/locale/sk/LC_MESSAGES/about/support.po new file mode 100644 index 00000000000..d903be6a694 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/support.po\n" +"X-Crowdin-File-ID: 1267\n" +"Language: sk_SK\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/sk/LC_MESSAGES/about/tournament-history.po b/docs/locale/sk/LC_MESSAGES/about/tournament-history.po new file mode 100644 index 00000000000..c673f1a2079 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/about/tournament-history.po\n" +"X-Crowdin-File-ID: 1335\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/adjudicator-allocation.po b/docs/locale/sk/LC_MESSAGES/features/adjudicator-allocation.po new file mode 100644 index 00000000000..bf4e0f438db --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-allocation.po\n" +"X-Crowdin-File-ID: 1271\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/adjudicator-feedback.po b/docs/locale/sk/LC_MESSAGES/features/adjudicator-feedback.po new file mode 100644 index 00000000000..900bdcfa7ab --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/adjudicator-feedback.po\n" +"X-Crowdin-File-ID: 1273\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/backups.po b/docs/locale/sk/LC_MESSAGES/features/backups.po new file mode 100644 index 00000000000..afced87d08f --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/backups.po\n" +"X-Crowdin-File-ID: 1275\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/breaks.po b/docs/locale/sk/LC_MESSAGES/features/breaks.po new file mode 100644 index 00000000000..e88a46adc9f --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/breaks.po\n" +"X-Crowdin-File-ID: 1277\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/check-ins.po b/docs/locale/sk/LC_MESSAGES/features/check-ins.po new file mode 100644 index 00000000000..35d54ffedb5 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/check-ins.po\n" +"X-Crowdin-File-ID: 1279\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/data-entry.po b/docs/locale/sk/LC_MESSAGES/features/data-entry.po new file mode 100644 index 00000000000..145ca7bd0bc --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-entry.po\n" +"X-Crowdin-File-ID: 1281\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/data-importers.po b/docs/locale/sk/LC_MESSAGES/features/data-importers.po new file mode 100644 index 00000000000..e024b10ca7a --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/data-importers.po\n" +"X-Crowdin-File-ID: 1283\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/draw-generation-bp.po b/docs/locale/sk/LC_MESSAGES/features/draw-generation-bp.po new file mode 100644 index 00000000000..fe893882b6b --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation-bp.po\n" +"X-Crowdin-File-ID: 1285\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/draw-generation.po b/docs/locale/sk/LC_MESSAGES/features/draw-generation.po new file mode 100644 index 00000000000..d1e704734ea --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/draw-generation.po\n" +"X-Crowdin-File-ID: 1287\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/notifications.po b/docs/locale/sk/LC_MESSAGES/features/notifications.po new file mode 100644 index 00000000000..f31d0c70977 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/notifications.po\n" +"X-Crowdin-File-ID: 1289\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/preformed-panels.po b/docs/locale/sk/LC_MESSAGES/features/preformed-panels.po new file mode 100644 index 00000000000..350d04f2112 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/preformed-panels.po\n" +"X-Crowdin-File-ID: 1291\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/printing.po b/docs/locale/sk/LC_MESSAGES/features/printing.po new file mode 100644 index 00000000000..38ce0cd5d5b --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/printing.po\n" +"X-Crowdin-File-ID: 1293\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/standings-rules.po b/docs/locale/sk/LC_MESSAGES/features/standings-rules.po new file mode 100644 index 00000000000..bbe488476d4 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/standings-rules.po\n" +"X-Crowdin-File-ID: 1295\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/team-code-names.po b/docs/locale/sk/LC_MESSAGES/features/team-code-names.po new file mode 100644 index 00000000000..dda1bbc5f1c --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/team-code-names.po\n" +"X-Crowdin-File-ID: 1297\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/user-accounts.po b/docs/locale/sk/LC_MESSAGES/features/user-accounts.po new file mode 100644 index 00000000000..743d97591ba --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/user-accounts.po\n" +"X-Crowdin-File-ID: 1299\n" +"Language: sk_SK\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/sk/LC_MESSAGES/features/venue-constraints.po b/docs/locale/sk/LC_MESSAGES/features/venue-constraints.po new file mode 100644 index 00000000000..36f9ef91d23 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/features/venue-constraints.po\n" +"X-Crowdin-File-ID: 1301\n" +"Language: sk_SK\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/sk/LC_MESSAGES/guide/comparisons.po b/docs/locale/sk/LC_MESSAGES/guide/comparisons.po new file mode 100644 index 00000000000..9bdcd704dac --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/comparisons.po\n" +"X-Crowdin-File-ID: 1303\n" +"Language: sk_SK\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/sk/LC_MESSAGES/guide/scaling.po b/docs/locale/sk/LC_MESSAGES/guide/scaling.po new file mode 100644 index 00000000000..99a1266c1d4 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/scaling.po\n" +"X-Crowdin-File-ID: 1305\n" +"Language: sk_SK\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/sk/LC_MESSAGES/guide/tournament-logistics.po b/docs/locale/sk/LC_MESSAGES/guide/tournament-logistics.po new file mode 100644 index 00000000000..9c66ac769f1 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/tournament-logistics.po\n" +"X-Crowdin-File-ID: 1307\n" +"Language: sk_SK\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/sk/LC_MESSAGES/guide/upgrading.po b/docs/locale/sk/LC_MESSAGES/guide/upgrading.po new file mode 100644 index 00000000000..367ba7ea761 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/guide/upgrading.po\n" +"X-Crowdin-File-ID: 1309\n" +"Language: sk_SK\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/sk/LC_MESSAGES/index.po b/docs/locale/sk/LC_MESSAGES/index.po new file mode 100644 index 00000000000..520670070b3 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/index.po\n" +"X-Crowdin-File-ID: 1311\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/docker.po b/docs/locale/sk/LC_MESSAGES/install/docker.po new file mode 100644 index 00000000000..5e8eaca941c --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/docker.po\n" +"X-Crowdin-File-ID: 1313\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/heroku.po b/docs/locale/sk/LC_MESSAGES/install/heroku.po new file mode 100644 index 00000000000..0968c9e75dd --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/heroku.po\n" +"X-Crowdin-File-ID: 1315\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/linux.po b/docs/locale/sk/LC_MESSAGES/install/linux.po new file mode 100644 index 00000000000..96bb9f12c74 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/linux.po\n" +"X-Crowdin-File-ID: 1317\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/local.po b/docs/locale/sk/LC_MESSAGES/install/local.po new file mode 100644 index 00000000000..11c1af3b972 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/local.po\n" +"X-Crowdin-File-ID: 1319\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/osx.po b/docs/locale/sk/LC_MESSAGES/install/osx.po new file mode 100644 index 00000000000..7d22d6eea81 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/osx.po\n" +"X-Crowdin-File-ID: 1321\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/windows.po b/docs/locale/sk/LC_MESSAGES/install/windows.po new file mode 100644 index 00000000000..6728f7d4794 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/windows.po\n" +"X-Crowdin-File-ID: 1323\n" +"Language: sk_SK\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/sk/LC_MESSAGES/install/wsl.po b/docs/locale/sk/LC_MESSAGES/install/wsl.po new file mode 100644 index 00000000000..bb9fe055752 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/install/wsl.po\n" +"X-Crowdin-File-ID: 1325\n" +"Language: sk_SK\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/sk/LC_MESSAGES/use/finishing-a-tournament.po b/docs/locale/sk/LC_MESSAGES/use/finishing-a-tournament.po new file mode 100644 index 00000000000..ace54dda750 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/finishing-a-tournament.po\n" +"X-Crowdin-File-ID: 1327\n" +"Language: sk_SK\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/sk/LC_MESSAGES/use/importing-data.po b/docs/locale/sk/LC_MESSAGES/use/importing-data.po new file mode 100644 index 00000000000..3932dbf26bd --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/importing-data.po\n" +"X-Crowdin-File-ID: 1329\n" +"Language: sk_SK\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/sk/LC_MESSAGES/use/running-a-tournament.po b/docs/locale/sk/LC_MESSAGES/use/running-a-tournament.po new file mode 100644 index 00000000000..b61731bfffc --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/running-a-tournament.po\n" +"X-Crowdin-File-ID: 1331\n" +"Language: sk_SK\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/sk/LC_MESSAGES/use/starting-a-tournament.po b/docs/locale/sk/LC_MESSAGES/use/starting-a-tournament.po new file mode 100644 index 00000000000..ad8e38425b8 --- /dev/null +++ b/docs/locale/sk/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: 2026-04-29 23:52\n" +"Last-Translator: \n" +"Language-Team: Slovak\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: sk\n" +"X-Crowdin-File: /develop/docs/locale/en/LC_MESSAGES/use/starting-a-tournament.po\n" +"X-Crowdin-File-ID: 1333\n" +"Language: sk_SK\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/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po index 5e9c36797bf..a37732ba128 100644 --- a/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:47\n" +"PO-Revision-Date: 2026-01-31 22:42\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -147,19 +147,19 @@ msgstr "" #: actionlog/models.py msgid "Created debate" -msgstr "" +msgstr "Debata vytvořena" #: actionlog/models.py msgid "Edited debate" -msgstr "" +msgstr "Debata upravena" #: actionlog/models.py msgid "Auto-prioritized debate importance" -msgstr "" +msgstr "Důležitost debat přiřazena automaticky" #: actionlog/models.py msgid "Edited debate importance" -msgstr "" +msgstr "Důležitost debaty upravena" #: actionlog/models.py msgid "Saved divisions" @@ -167,63 +167,63 @@ msgstr "" #: actionlog/models.py msgid "Confirmed draw" -msgstr "" +msgstr "Los potvrzen" #: actionlog/models.py msgid "Created draw" -msgstr "" +msgstr "Los vytvořen" #: actionlog/models.py msgid "Regenerated draw" -msgstr "" +msgstr "Los znovu vygenerován" #: actionlog/models.py msgid "Released draw" -msgstr "" +msgstr "Los zveřejněn" #: actionlog/models.py msgid "Unreleased draw" -msgstr "" +msgstr "Los zneveřejněn" #: actionlog/models.py msgid "Created feedback question" -msgstr "" +msgstr "Otázka ke zpětné vazbě vytvořena" #: actionlog/models.py msgid "Edited feedback question" -msgstr "" +msgstr "Otázka ke zpětné vazbě upravena" #: actionlog/models.py msgid "Saved feedback" -msgstr "" +msgstr "Zpětná vazba uložena" #: actionlog/models.py msgid "Submitted feedback from the public form" -msgstr "" +msgstr "Zpětná vazba odevzdaná z veřejného formuláře" #: actionlog/models.py msgid "Created institution" -msgstr "" +msgstr "Instituce vytvořena" #: actionlog/models.py msgid "Edited institution" -msgstr "" +msgstr "Instituce upravena" #: actionlog/models.py msgid "Saved a matchup manual edit" -msgstr "" +msgstr "Manuální úprava debaty uložena" #: actionlog/models.py msgid "Added/edited motion" -msgstr "" +msgstr "Teze přidána/upravena" #: actionlog/models.py msgid "Released motions" -msgstr "" +msgstr "Teze zveřejněny" #: actionlog/models.py msgid "Unreleased motions" -msgstr "" +msgstr "Teze zneveřejněny" #: actionlog/models.py msgid "Edited tournament options" @@ -411,7 +411,7 @@ msgstr "" #: actionlog/models.py msgid "user" -msgstr "" +msgstr "uživatel" #: actionlog/models.py msgid "IP address" diff --git a/tabbycat/actionlog/locale/el/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..1194ffbc7b9 --- /dev/null +++ b/tabbycat/actionlog/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,455 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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 "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Created adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Deleted team break for category" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for one category" +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 "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Created debate" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Created 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 "Created feedback question" +msgstr "" + +#: actionlog/models.py +msgid "Edited feedback question" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Created institution" +msgstr "" + +#: actionlog/models.py +msgid "Edited institution" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +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 "Edited tournament options" +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 "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "Deleted 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 "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Created round" +msgstr "" + +#: actionlog/models.py +msgid "Edited round" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Created speaker" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Created team" +msgstr "" + +#: actionlog/models.py +msgid "Edited team" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Created tournament" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Invited user to the instance" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Created room category" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created room" +msgstr "" + +#: actionlog/models.py +msgid "Edited room" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Created question" +msgstr "" + +#: actionlog/models.py +msgid "Edited question" +msgstr "" + +#: actionlog/models.py +msgid "Registered institution" +msgstr "" + +#: actionlog/models.py +msgid "Registered team" +msgstr "" + +#: actionlog/models.py +msgid "Registered adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Registered speaker" +msgstr "" + +#: actionlog/models.py +msgid "API" +msgstr "" + +#: actionlog/models.py +msgid "Web" +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 "agent" +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/sk/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..0323510cd94 --- /dev/null +++ b/tabbycat/actionlog/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,455 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 "Changed adjudicator breaking status" +msgstr "" + +#: actionlog/models.py +msgid "Created adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Set adjudicator note" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Saved adjudicator allocation" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicators availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited teams availability" +msgstr "" + +#: actionlog/models.py +msgid "Edited room availability" +msgstr "" + +#: actionlog/models.py +msgid "Checked in ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Created ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Discarded ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Edited ballot set" +msgstr "" + +#: actionlog/models.py +msgid "Submitted ballot set from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Edited break categories" +msgstr "" + +#: actionlog/models.py +msgid "Deleted team break for category" +msgstr "" + +#: actionlog/models.py +msgid "Edited breaking team remarks" +msgstr "" + +#: actionlog/models.py +msgid "Edited break eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for all categories" +msgstr "" + +#: actionlog/models.py +msgid "Generated the team break for one category" +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 "Generated check in identifiers for adjudicators" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for speakers" +msgstr "" + +#: actionlog/models.py +msgid "Generated check in identifiers for rooms" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-adjudicator conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator-team conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Edited team-institution conflicts" +msgstr "" + +#: actionlog/models.py +msgid "Created debate" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate" +msgstr "" + +#: actionlog/models.py +msgid "Auto-prioritized debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Edited debate importance" +msgstr "" + +#: actionlog/models.py +msgid "Saved divisions" +msgstr "" + +#: actionlog/models.py +msgid "Confirmed draw" +msgstr "" + +#: actionlog/models.py +msgid "Created 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 "Created feedback question" +msgstr "" + +#: actionlog/models.py +msgid "Edited feedback question" +msgstr "" + +#: actionlog/models.py +msgid "Saved feedback" +msgstr "" + +#: actionlog/models.py +msgid "Submitted feedback from the public form" +msgstr "" + +#: actionlog/models.py +msgid "Created institution" +msgstr "" + +#: actionlog/models.py +msgid "Edited institution" +msgstr "" + +#: actionlog/models.py +msgid "Saved a matchup manual edit" +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 "Edited tournament options" +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 "Created preformed panels" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated preformed panels to debates" +msgstr "" + +#: actionlog/models.py +msgid "Deleted 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 "Advanced the current round to" +msgstr "" + +#: actionlog/models.py +msgid "Marked round as completed" +msgstr "" + +#: actionlog/models.py +msgid "Created round" +msgstr "" + +#: actionlog/models.py +msgid "Edited round" +msgstr "" + +#: actionlog/models.py +msgid "Set start time" +msgstr "" + +#: actionlog/models.py +msgid "Saved the sides status of a matchup" +msgstr "" + +#: actionlog/models.py +msgid "Imported adjudicators using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported institutions using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported teams using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Imported rooms using the simple importer" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker categories" +msgstr "" + +#: actionlog/models.py +msgid "Created speaker" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker" +msgstr "" + +#: actionlog/models.py +msgid "Edited speaker category eligibility" +msgstr "" + +#: actionlog/models.py +msgid "Created team" +msgstr "" + +#: actionlog/models.py +msgid "Edited team" +msgstr "" + +#: actionlog/models.py +msgid "Edited adjudicator base score" +msgstr "" + +#: actionlog/models.py +msgid "Created tournament" +msgstr "" + +#: actionlog/models.py +msgid "Edited tournament" +msgstr "" + +#: actionlog/models.py +msgid "Updated adjudicator scores in bulk" +msgstr "" + +#: actionlog/models.py +msgid "Invited user to the instance" +msgstr "" + +#: actionlog/models.py +msgid "Edited room categories" +msgstr "" + +#: actionlog/models.py +msgid "Created room category" +msgstr "" + +#: actionlog/models.py +msgid "Edited room constraints" +msgstr "" + +#: actionlog/models.py +msgid "Created room" +msgstr "" + +#: actionlog/models.py +msgid "Edited room" +msgstr "" + +#: actionlog/models.py +msgid "Auto-allocated rooms" +msgstr "" + +#: actionlog/models.py +msgid "Saved a room manual edit" +msgstr "" + +#: actionlog/models.py +msgid "Created question" +msgstr "" + +#: actionlog/models.py +msgid "Edited question" +msgstr "" + +#: actionlog/models.py +msgid "Registered institution" +msgstr "" + +#: actionlog/models.py +msgid "Registered team" +msgstr "" + +#: actionlog/models.py +msgid "Registered adjudicator" +msgstr "" + +#: actionlog/models.py +msgid "Registered speaker" +msgstr "" + +#: actionlog/models.py +msgid "API" +msgstr "" + +#: actionlog/models.py +msgid "Web" +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 "agent" +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/uk/LC_MESSAGES/django.po b/tabbycat/actionlog/locale/uk/LC_MESSAGES/django.po index 7abd1d7dffe..ea6c7b23ef4 100644 --- a/tabbycat/actionlog/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/actionlog/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:48\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -59,7 +59,7 @@ msgstr "Наявність команд змінено" #: actionlog/models.py msgid "Edited room availability" -msgstr "Редагувати наявність кімнат" +msgstr "Наявність місця змінено" #: actionlog/models.py msgid "Checked in ballot set" @@ -147,7 +147,7 @@ msgstr "Конфлікти команда-інституція змінено" #: actionlog/models.py msgid "Created debate" -msgstr "Створити дебати" +msgstr "Дебати створено" #: actionlog/models.py msgid "Edited debate" @@ -435,11 +435,11 @@ msgstr "ID обʼєкту" #: actionlog/models.py msgid "agent" -msgstr "" +msgstr "агент" #: actionlog/models.py msgid "action log" -msgstr "" +msgstr "журнал дій" #: actionlog/models.py msgid "action log entries" @@ -451,5 +451,5 @@ msgstr "Всі записи журналу потребують як мінім #: actionlog/models.py msgid "anonymous" -msgstr "" +msgstr "анонімно" diff --git a/tabbycat/adjallocation/locale/el/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..d3494df61a1 --- /dev/null +++ b/tabbycat/adjallocation/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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/es/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po index 0eaad84c46a..7de63b53f02 100644 --- a/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/es/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-28 12:44-0400\n" -"PO-Revision-Date: 2024-10-16 19:50\n" +"PO-Revision-Date: 2025-08-23 22:47\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -19,52 +19,52 @@ msgstr "" #: 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." +msgstr "No hay personas juezas disponibles. Asegúrate de que haya juezas que se hayan marcado como disponibles para esta ronda antes de la asignación automática." #: 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] "Las puntuaciones %(count)s son mayores que la puntuación máxima permitida del adjudicador (%(score).1f)." +msgstr[0] "La puntuación %(count)s es mayor que la puntuación máxima permitida para personas juezas (%(score).1f)." +msgstr[1] "Las puntuaciones %(count)s son mayores que la puntuación máxima permitida para personas juezas (%(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] "La puntuación de %(count)s es inferior a la puntuación mínima permitida por el juez (%(score).1f)." -msgstr[1] "Las puntuaciones de %(count)s son inferiores a la puntuación mínima permitida del juez (%(score).1f)." +msgstr[0] "La puntuación de %(count)s es inferior que la puntuación mínima permitida para personas juezas (%(score).1f)." +msgstr[1] "Las puntuaciones de %(count)s son inferiores que la puntuación mínima permitida para personas juezas (%(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 "No hay jueces elegibles para ser principal o panelista. Intenta cambiar la configuración de \"Puntaje mínimo de feedback requerido para ser asignado como principal o panelista\" hacia algo más bajo que el puntaje actual de algunos jueces e intenta de nuevo." +msgstr "No hay personas juezas elegibles para ser principal o panelista. Intenta cambiar la configuración de \"Puntaje mínimo de feedback requerido para ser asignada como principal o panelista\" a un valor más bajo que el puntaje actual de algunas juezas, e intenta de nuevo." #: 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." +msgstr "No hay debates para esta ronda ¿Tal vez aún no has creado el enfrentamiento de equipos?" #: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debate_count)s debates but only %(adj_count)s voting adjudicators." -msgstr "Hay %(debate_count)s debates pero solo %(adj_count)s jueces con voto." +msgstr "Hay %(debate_count)s debates pero solo %(adj_count)s personas juezas con voto." #: 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 "Hay debates en el panel %(panel_debates)s, pero sólo los panelistas disponibles %(panellists)s (menos de %(needed)s)." +msgstr "Hay %(panel_debates)s debates con panelistas, pero solo %(panellists)s panelistas disponibles (menos de %(needed)s)." #: adjallocation/allocators/hungarian.py #, python-format msgid "There are %(debates_count)s debates but only %(voting_count)s voting adjudicators." -msgstr "Hay debates %(debates_count)s pero solo jueces de voto %(voting_count)s." +msgstr "Hay %(debates_count)s debates, pero solo %(voting_count)s personas juezas con voto." #: adjallocation/apps.py msgid "Adjudicator Allocation" -msgstr "Asignación de Jueces" +msgstr "Asignación de Personas Juezas" #: 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." +msgstr "El cuadro ya fue publicado, despublícalo para rehacer la asignación automática." #: adjallocation/consumers.py msgid "Draw is not confirmed, confirm draw to run auto-allocations." @@ -76,61 +76,61 @@ msgstr "No hay paneles preformados disponibles para asignar." #: adjallocation/consumers.py msgid "Successfully auto-allocated preformed panels to debates." -msgstr "Paneles preformados asignados con éxito automáticamente a los debates." +msgstr "Paneles preformados asignados automáticamente con éxito a los debates." #: 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] "Adjudicadores asignados automáticamente con éxito a los debates. Sin embargo, hubo una advertencia:" -msgstr[1] "Adjudicadores asignados automáticamente con éxito a los debates. Sin embargo, hubo advertencias %(count)d:" +msgstr[0] "Personas juezas asignadas automáticamente con éxito a los debates. Sin embargo, hubo una advertencia:" +msgstr[1] "Personas juezas asignadas automáticamente con éxito a los debates. Sin embargo, hubo %(count)d advertencias:" #: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to debates." -msgstr "Jueces autogenerados satisfactoriamente." +msgstr "Personas juezas asignadas automáticamente con éxito a los debates." #: adjallocation/consumers.py msgid "There aren't any panels to fill. Create panels first." -msgstr "No hay paneles para rellenar. Crear paneles primero." +msgstr "No hay paneles para llenar. Crea paneles primero." #: 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] "Adjudicadores asignados automáticamente con éxito a los paneles preformados. Sin embargo, hubo advertencias %(count)d:" +msgstr[0] "Personas juezas automáticamente asignadas con éxito en paneles preformados. Sin embargo, hubo una advertencia:" +msgstr[1] "Personas juezas automáticamente asignadas con éxito en paneles preformados. Sin embargo, hubo %(count)d advertencias:" #: adjallocation/consumers.py msgid "Successfully auto-allocated adjudicators to preformed panels." -msgstr "Adjudicadores asignados automáticamente con éxito a los paneles preformados." +msgstr "Personas juezas asignadas automáticamente con éxito en paneles preformados." #: adjallocation/consumers.py msgid "You have no break category set as 'is general' so debate importances can't be calculated." -msgstr "No tiene ninguna categoría de ruptura establecida como \"es general\", por lo que no se pueden calcular las importaciones del debate." +msgstr "No tienes ninguna categoría de break establecida como \"es general\", por lo que no se pueden calcular las importancias de debates." #: adjallocation/consumers.py msgid "Succesfully auto-prioritised debates." -msgstr "Debates auto-priorizados con éxito." +msgstr "Debates han sido autopriorizados con éxito." #: adjallocation/consumers.py msgid "You have no break category set as 'is general' so panel importances can't be calculated." -msgstr "No tiene ninguna categoría de ruptura establecida como 'es general', por lo que las importaciones del panel no pueden ser calculadas." +msgstr "No tienes ninguna categoría de break establecida como \"es general\", por lo que no se pueden calcular las importancias de paneles." #: adjallocation/consumers.py msgid "Succesfully auto-prioritised preformed panels." -msgstr "Paneles preformados con prioridad automática con éxito." +msgstr "Paneles preformados han sido autopriorizados con éxito." #: adjallocation/consumers.py msgid "Since this is the first round, the preformed panels aren't annotated with brackets and liveness." -msgstr "Dado que esta es la primera ronda, los paneles preformados no están anotados con corchetes y vitalidad." +msgstr "Dado que esta es la primera ronda, los paneles preformados no están anotados con llaves ni vitalidad." #: adjallocation/consumers.py msgid "The previous round's draw doesn't exist, so preformed panels can't be annotated with brackets and liveness." -msgstr "El dibujo de la ronda anterior no existe, así que los paneles preformados no pueden ser anotados con corchetes y vitalidad." +msgstr "El cuadro de la ronda anterior no existe, así que los paneles preformados no pueden ser anotados con llaves ni vitalidad." #: adjallocation/consumers.py msgid "Succesfully created new preformed panels for this round." -msgstr "Se han creado correctamente nuevos paneles preformados para esta ronda." +msgstr "Se han creado con éxito nuevos paneles preformados para esta ronda." #: adjallocation/models.py msgid "chair" @@ -142,7 +142,7 @@ msgstr "panelista" #: adjallocation/models.py msgid "trainee" -msgstr "sombra" +msgstr "practicante" #: adjallocation/models.py msgid "debate" @@ -162,11 +162,11 @@ msgstr "disponible?" #: adjallocation/models.py msgid "debate adjudicator" -msgstr "juez del debate" +msgstr "persona jueza del debate" #: adjallocation/models.py msgid "debate adjudicators" -msgstr "jueces de los debates" +msgstr "personas juezas de los debates" #: adjallocation/models.py msgid "team" @@ -174,27 +174,27 @@ msgstr "equipo" #: adjallocation/models.py msgid "adjudicator-team conflict" -msgstr "conflicto juez-equipo" +msgstr "conflicto persona jueza-equipo" #: adjallocation/models.py msgid "adjudicator-team conflicts" -msgstr "conflictos juez-equipo" +msgstr "conflictos persona jueza-equipo" #: adjallocation/models.py msgid "adjudicator 1" -msgstr "juez 1" +msgstr "persona jueza 1" #: adjallocation/models.py msgid "adjudicator 2" -msgstr "juez 2" +msgstr "persona jueza 2" #: adjallocation/models.py msgid "adjudicator-adjudicator conflict" -msgstr "conflicto juez-juez" +msgstr "conflicto persona jueza-persona jueza" #: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" -msgstr "conflictos juez-juez" +msgstr "conflictos personas juezas-personas juezas" #: adjallocation/models.py msgid "institution" @@ -202,19 +202,19 @@ msgstr "institución" #: adjallocation/models.py msgid "adjudicator-institution conflict" -msgstr "conflicto juez-institución" +msgstr "conflicto persona jueza-institución" #: adjallocation/models.py msgid "adjudicator-institution conflicts" -msgstr "conflictos juez-institución" +msgstr "conflictos persona jueza-institución" #: adjallocation/models.py msgid "team-institution conflict" -msgstr "Conflicto equipo-institución" +msgstr "conflicto equipo-institución" #: adjallocation/models.py msgid "team-institution conflicts" -msgstr "conflictos de instituciones de equipo" +msgstr "conflictos equipo-institución" #: adjallocation/models.py msgid "round" @@ -226,19 +226,19 @@ msgstr "importancia" #: adjallocation/models.py msgid "minimum bracket" -msgstr "corchete mínimo" +msgstr "llave mínima" #: adjallocation/models.py msgid "Estimate of the lowest bracket for which this panel might be" -msgstr "Estimación del soporte más bajo para el cual este panel puede ser" +msgstr "Estimación de la llave más baja para la cual este panel puede ser" #: adjallocation/models.py msgid "maximum bracket" -msgstr "corchete máximo" +msgstr "llave máxima" #: adjallocation/models.py msgid "Estimate of the highest bracket for which this panel might be" -msgstr "Estimación del brazalete más alto para el cual este panel puede ser" +msgstr "Estimación de la llave más alta para la cual este panel puede ser" #: adjallocation/models.py msgid "room rank" @@ -250,11 +250,11 @@ msgstr "Número secuencial de panel, no utilizado en ningún algoritmo" #: adjallocation/models.py msgid "liveness" -msgstr "vida" +msgstr "vitalidad" #: adjallocation/models.py msgid "Number of categories this room is expected to be live for" -msgstr "Número de categorías para las que se espera que esta habitación esté en vivo" +msgstr "Número de categorías para las que se espera que esta sala esté en viva" #: adjallocation/models.py msgid "preformed panel" @@ -270,32 +270,32 @@ msgstr "panel" #: adjallocation/models.py msgid "preformed panel adjudicator" -msgstr "juez de panel preformado" +msgstr "persona jueza de panel preformado" #: adjallocation/models.py msgid "preformed panel adjudicators" -msgstr "jueces de panel preformados" +msgstr "personas juezas de panel preformado" #: 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 hay paneles preformados a utilizar. ¿Ha asignado paneles preformados para esta ronda? Si no, intente simplemente asignar automáticamente jueces en su lugar." +msgstr "No hay paneles preformados para usar. ¿Has asignado paneles preformados para esta ronda? Si no, más bien intenta asignar automáticamente personas juezas." #: adjallocation/templates/preformed_index.html adjallocation/views.py msgid "Preformed Panels" -msgstr "Paneles prereformados" +msgstr "Paneles preformados" #: 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 panel preformado es un grupo definido de jueces que se especifica para una ronda antes de que su dibujo haya sido generado. Luego puede aplicar manualmente o automáticamente estos paneles durante el proceso normal de asignación de jueces. Esto puede hacer las asignaciones más rápidas o permitirle crear paneles de jueces más considerados." +msgstr "Un panel preformado es un grupo definido de jueces que se especifica para una ronda antes de que su cuadro haya sido generado. Luego puedes aplicar manual o automáticamente estos paneles durante el proceso normal de asignación de personas juezas. Esto puede hacer las asignaciones más rápidas o permitirte crear paneles de personas juezas más considerados." #: 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 "Ten en cuenta que sólo los jueces que hayan sido marcados como \"disponibles\" para esa ronda podrán ser asignados para esa ronda, así que puede que necesite establecer su disponibilidad con antelación." +msgstr "Ten en cuenta que solo las personas juezas que hayan sido marcadas como disponibles para esa ronda podrán ser asignadas para esa ronda, así que puede que necesites establecer su disponibilidad con antelación." #: adjallocation/templates/preformed_index.html #, python-format msgid "Edit Preformed Panels for %(round)s" -msgstr "Editar paneles prereformados para %(round)s" +msgstr "Editar paneles preformados para %(round)s" #: adjallocation/utils.py #, python-format @@ -305,7 +305,7 @@ msgstr "Conflicto: %(adjudicator)s y %(team)s #: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator)s & %(team)s via institution %(institution)s" -msgstr "Conflicto: %(adjudicator)s & %(team)s a través de la institución %(institution)s" +msgstr "Conflicto: %(adjudicator)s & %(team)s vía institución %(institution)s" #: adjallocation/utils.py #, python-format @@ -315,7 +315,7 @@ msgstr "Conflicto: %(adjudicator1)s y %(adjudicator2)s< #: adjallocation/utils.py #, python-format msgid "Conflict: %(adjudicator1)s & %(adjudicator2)s via institution %(institution)s" -msgstr "Conflicto: %(adjudicator1)s & %(adjudicator2)s a través de la institución %(institution)s" +msgstr "Conflicto: %(adjudicator1)s & %(adjudicator2)s vía institución %(institution)s" #: adjallocation/views.py msgid "Male" @@ -335,11 +335,11 @@ msgstr "Desconocido" #: adjallocation/views.py msgid "Edit Allocation" -msgstr "Editar adjudicación" +msgstr "Editar Asignación" #: adjallocation/views.py msgid "Edit Panels" -msgstr "Editar paneles" +msgstr "Editar Paneles" #: adjallocation/views.py msgid "Return to Panels Overview" diff --git a/tabbycat/adjallocation/locale/sk/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..6fd77af2fc4 --- /dev/null +++ b/tabbycat/adjallocation/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 "" + +#: 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] "" +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/uk/LC_MESSAGES/django.po b/tabbycat/adjallocation/locale/uk/LC_MESSAGES/django.po index fceda1f1c5c..fde18ad0217 100644 --- a/tabbycat/adjallocation/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/adjallocation/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-28 12:44-0400\n" -"PO-Revision-Date: 2025-06-30 16:27\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -178,7 +178,7 @@ msgstr "судді дебатів" #: adjallocation/models.py msgid "team" -msgstr "" +msgstr "команда" #: adjallocation/models.py msgid "adjudicator-team conflict" @@ -190,19 +190,19 @@ msgstr "" #: adjallocation/models.py msgid "adjudicator 1" -msgstr "" +msgstr "суддя 1" #: adjallocation/models.py msgid "adjudicator 2" -msgstr "" +msgstr "суддя 2" #: adjallocation/models.py msgid "adjudicator-adjudicator conflict" -msgstr "" +msgstr "конфлікт типу суддя-суддя" #: adjallocation/models.py msgid "adjudicator-adjudicator conflicts" -msgstr "" +msgstr "конфлікти типу суддя-суддя" #: adjallocation/models.py msgid "institution" @@ -210,19 +210,19 @@ msgstr "інституція" #: adjallocation/models.py msgid "adjudicator-institution conflict" -msgstr "" +msgstr "конфлікт типу суддя-інституція" #: adjallocation/models.py msgid "adjudicator-institution conflicts" -msgstr "" +msgstr "конфлікти типу суддя-інституція" #: adjallocation/models.py msgid "team-institution conflict" -msgstr "" +msgstr "конфлікт типу команда-інституція" #: adjallocation/models.py msgid "team-institution conflicts" -msgstr "" +msgstr "конфлікти типу команда-інституція" #: adjallocation/models.py msgid "round" diff --git a/tabbycat/adjfeedback/locale/el/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..7980b729c5c --- /dev/null +++ b/tabbycat/adjfeedback/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,828 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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 "Maximum value must be greater than the minimum" +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 "Source" +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 "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 "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 "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 "Feedback average" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's feedback average" +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 "This tournament doesn't expect you to submit feedback on any 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 "Save Feedback" +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 "The current feedback configuration disallows adjudicators to submit feedback on other members 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] "" + +#: adjfeedback/views.py +msgid "Custom Feedback Questions" +msgstr "" + diff --git a/tabbycat/adjfeedback/locale/sk/LC_MESSAGES/django.po b/tabbycat/adjfeedback/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..3b3e4c87441 --- /dev/null +++ b/tabbycat/adjfeedback/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,860 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 "Maximum value must be greater than the minimum" +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 "Source" +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 "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 "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 "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 "Feedback average" +msgstr "" + +#: adjfeedback/tables.py +msgid "This adjudicator's feedback average" +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 "This tournament doesn't expect you to submit feedback on any 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 "Save Feedback" +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 "The current feedback configuration disallows adjudicators to submit feedback on other members 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 "" + +#: 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] "" +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] "" + +#: adjfeedback/views.py +msgid "Custom Feedback Questions" +msgstr "" + diff --git a/tabbycat/availability/locale/cs/LC_MESSAGES/django.po b/tabbycat/availability/locale/cs/LC_MESSAGES/django.po index 7b78458150c..1ceac0f7ca2 100644 --- a/tabbycat/availability/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/availability/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-07-05 07:37+1000\n" -"PO-Revision-Date: 2023-07-04 21:45\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -323,7 +323,7 @@ msgstr "" #: availability/views.py msgid "no teams are debating" -msgstr "" +msgstr "žádné týmy nedebatují" #. Translators: nteams in this string can only be 0 or 1 #: availability/views.py @@ -362,10 +362,10 @@ msgstr[3] "" #, 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] "" +msgstr[0] "%(nadvancing)s postupující tým debatuje toto kolo" +msgstr[1] "%(nadvancing)s postupující týmy debatují toto kolo" +msgstr[2] "%(nadvancing)s postupujících týmů debatuje toto kolo" +msgstr[3] "%(nadvancing)s postupujících týmů debatuje toto kolo" #: availability/views.py msgid "Active Now" diff --git a/tabbycat/availability/locale/el/LC_MESSAGES/django.po b/tabbycat/availability/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a5c5771b2c5 --- /dev/null +++ b/tabbycat/availability/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,392 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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 or Seeded 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/sk/LC_MESSAGES/django.po b/tabbycat/availability/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..576445ad0e6 --- /dev/null +++ b/tabbycat/availability/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-05 07:37+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 or Seeded 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] "" +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/breakqual/locale/el/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..f8a6686129f --- /dev/null +++ b/tabbycat/breakqual/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,545 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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 "Reserve size" +msgstr "" + +#: breakqual/models.py +msgid "Number of reserve teams in this category." +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "Are teams eligible for this break by default" +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 "Reserve" +msgstr "" + +#: breakqual/models.py +msgid "Absent" +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 "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 +#, 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/es/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po index 7babbe99f6f..795140098b0 100644 --- a/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/es/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:49\n" +"PO-Revision-Date: 2025-08-23 01:10\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -200,12 +200,12 @@ 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 "" +msgstr "." #: breakqual/templates/break_categories_edit.html #, python-format msgid "If you want to delete break categories, use the Edit Database area." -msgstr "" +msgstr "." #: breakqual/templates/break_categories_edit.html msgid "Save Break Categories" diff --git a/tabbycat/breakqual/locale/sk/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..04e2ee41b1e --- /dev/null +++ b/tabbycat/breakqual/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,549 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 "" + +#: 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 "Reserve size" +msgstr "" + +#: breakqual/models.py +msgid "Number of reserve teams in this category." +msgstr "" + +#: breakqual/models.py +msgid "is general" +msgstr "" + +#: breakqual/models.py +msgid "Are teams eligible for this break by default" +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 "Reserve" +msgstr "" + +#: breakqual/models.py +msgid "Absent" +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 "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 +#, 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/uk/LC_MESSAGES/django.po b/tabbycat/breakqual/locale/uk/LC_MESSAGES/django.po index c3881c34ff1..e4c07ff31ef 100644 --- a/tabbycat/breakqual/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/breakqual/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:48\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -140,7 +140,7 @@ msgstr "" #: breakqual/models.py msgid "team" -msgstr "" +msgstr "команда" #: breakqual/models.py msgid "rank" diff --git a/tabbycat/draw/locale/el/LC_MESSAGES/django.po b/tabbycat/draw/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..e1ffdc813e0 --- /dev/null +++ b/tabbycat/draw/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1133 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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/forms.py +msgid "Full round name" +msgstr "" + +#: draw/forms.py +#, python-format +msgid "You must type '%s' to confirm draw and results deletion." +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 "team" +msgstr "" + +#: draw/models.py +msgid "side sequence" +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 +#, python-format +msgid "Team %d" +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 +msgid "Bye" +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 "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 +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 +msgid "The draw had been unreleased." +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 d7a73549abb..8d7165af454 100644 --- a/tabbycat/draw/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/ms/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:52\n" +"PO-Revision-Date: 2026-02-27 16:10\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -136,7 +136,7 @@ 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 "" +msgstr "Ada hanya %d pasukan yang akan mara dalam kategori ini; perlu ada sekurang-kurangnya dua untuk menghasilkan undian pusingan kalah-mati." #: draw/generator/elimination.py #, python-format diff --git a/tabbycat/draw/locale/sk/LC_MESSAGES/django.po b/tabbycat/draw/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..233d00af311 --- /dev/null +++ b/tabbycat/draw/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1183 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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/forms.py +msgid "Full round name" +msgstr "" + +#: draw/forms.py +#, python-format +msgid "You must type '%s' to confirm draw and results deletion." +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 "team" +msgstr "" + +#: draw/models.py +msgid "side sequence" +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 +#, python-format +msgid "Team %d" +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 +msgid "Bye" +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 "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 +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 +msgid "The draw had been unreleased." +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/uk/LC_MESSAGES/django.po b/tabbycat/draw/locale/uk/LC_MESSAGES/django.po index 21a928511e0..37582ad0b6a 100644 --- a/tabbycat/draw/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/draw/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:48\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -254,7 +254,7 @@ msgstr "" #: draw/models.py msgid "team" -msgstr "" +msgstr "команда" #: draw/models.py msgid "side sequence" diff --git a/tabbycat/importer/locale/el/LC_MESSAGES/django.po b/tabbycat/importer/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a6152c42ca5 --- /dev/null +++ b/tabbycat/importer/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,437 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/importer/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 932\n" + +#: importer/forms.py +#, python-format +msgid "line %(lineno)d: %(message)s" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This line (for %(institution)s) didn't have a code" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This line (for %(institution)s) had too many columns" +msgstr "" + +#: importer/forms.py +msgid "There were no institutions to import." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d institution at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d institutions at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" + +#: importer/forms.py +msgid "There were no rooms to import." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d room at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d rooms at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" + +#: importer/forms.py +msgid "Speakers' names" +msgstr "" + +#: importer/forms.py +msgid "Can be separated by newlines, tabs, commas or ampersands" +msgstr "" + +#: importer/forms.py +msgid "Speakers' email addresses" +msgstr "" + +#: importer/forms.py +msgid "Optional, useful to include if distributing private URLs, list in same order as speakers' names" +msgstr "" + +#: importer/forms.py +msgid "Name (excluding institution name)" +msgstr "" + +#: importer/forms.py +msgid "Prefix team name with institution name?" +msgstr "" + +#: importer/forms.py +msgid "Do not include institution name (check the \"Prefix team name with institution name?\" field instead)" +msgstr "" + +#: importer/forms.py +msgid "(Not applicable to unaffiliated teams)" +msgstr "" + +#: importer/forms.py +msgid "One speaker's name per line" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Speaker %d" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "speaker%d@example.edu" +msgstr "" + +#: importer/forms.py +msgid "Unseeded" +msgstr "" + +#: importer/forms.py +msgid "Free seed" +msgstr "" + +#: importer/forms.py +msgid "Half seed" +msgstr "" + +#: importer/forms.py +msgid "Full seed" +msgstr "" + +#: importer/forms.py +msgid "There must be at least one speaker." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "%(email)s is not a valid email address." +msgstr "" + +#: importer/forms.py +msgid "There are more email addresses than speakers." +msgstr "" + +#: importer/forms.py +msgid "Every team in a single tournament from the same institution must have a different name. Please correct the duplicate data." +msgstr "" + +#: importer/forms.py +msgid "Rating" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This value must be between %(min)d and %(max)d." +msgstr "" + +#: importer/forms.py +msgid "Unaffiliated (no institution)" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "%(name)s (%(code)s)" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d team at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d teams at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d adjudicator at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d adjudicators at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" + +#: importer/forms.py +msgid "XML" +msgstr "" + +#: importer/forms.py +msgid "The Debate XML archive to parse" +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Export Tournament Archive" +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Tournaments can be exported in an XML format for use outside Tabbycat." +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Export all data" +msgstr "" + +#: importer/templates/archive_importer.html +msgctxt "page title" +msgid "Import Tournament Archive" +msgstr "" + +#: importer/templates/archive_importer.html +msgid "This form will create a tournament with the data provided as a Debate XML format." +msgstr "" + +#: importer/templates/archive_importer.html +msgid "Import" +msgstr "" + +#: importer/templates/archive_importer.html +msgid "Go back to the site home page" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_adjudicators_numbers.html +msgctxt "page title" +msgid "Add Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_adjudicators_numbers.html +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_teams_numbers.html +#: importer/templates/simple_import_venues_details.html +#: importer/templates/simple_import_venues_raw.html +#, python-format +msgid "(Step %(step)s of %(count)s)" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_venues_details.html +msgid "Previous Step" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#, python-format +msgid "As per this tournament's configuration, an adjudicator's rating must be between %(min)s and %(max)s. Providing email addresses is optional but can be useful if using private URLs for feedback or ballots." +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#, python-format +msgid "Adjudicators for %(institution)s" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +msgid "Unaffiliated Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +msgid "Save All Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +#, python-format +msgid "You need to add institutions before adding adjudicators." +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +msgid "Specify the number of new adjudicators to add per institution. In the next step you can specify their names and ratings." +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +msgid "You can add up to 198 adjudicators at a time. If you have more than 198 adjudicators, split them into chunks. (Please don't try to add more than 198 in one go; the system will crash, and you will lose data.)" +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +#: importer/templates/simple_import_teams_numbers.html +msgctxt "button" +msgid "Next Step" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Simple Importer" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "There are several ways to import data into Tabbycat. Which one is best depends on the size of your tournament and your technical background. This simple importer is the easiest to use and works well for small- and medium-sized tournaments." +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Institutions" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Teams" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Adjudicators" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Rooms" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Room Categories" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Room Constraints" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Team Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Institution Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Team-Institution Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Break Categories" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Speaker Categories" +msgstr "" + +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_institutions_raw.html +msgctxt "page title" +msgid "Add Institutions" +msgstr "" + +#: importer/templates/simple_import_institutions_details.html +msgid "Save All Institutions" +msgstr "" + +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_venues_raw.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_venues_raw.html +msgid "Next Step" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_teams_numbers.html +msgctxt "page title" +msgid "Add Teams" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +#, python-format +msgid "Teams for %(institution)s" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +msgid "Unaffiliated Teams" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +msgid "Save All Teams" +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +#, python-format +msgid "You need to add institutions before adding teams." +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +msgid "Specify the number of new teams to add per institution. In the next step you can specify team and speaker names." +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +msgid "You can add up to 141 teams at a time. If you have more than 141 teams, split them into chunks. (Please don't try to add more than 141 in one go; the system will crash, and you will lose data.)" +msgstr "" + +#: importer/templates/simple_import_venues_details.html +#: importer/templates/simple_import_venues_raw.html +msgctxt "page title" +msgid "Add Rooms" +msgstr "" + +#: importer/templates/simple_import_venues_details.html +msgid "Priorities indicate how much you want to use the room. Larger numbers indicate higher priority. If you have more rooms than debates, the rooms with the lowest priorities will not be used." +msgstr "" + +#: importer/templates/simple_import_venues_details.html +msgid "Save All Rooms" +msgstr "" + +#: importer/templates/simple_import_venues_raw.html +msgid "Paste a list of rooms with one room per line and following the format of: name,priority. For example:" +msgstr "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d institution." +msgid_plural "Added %(count)d institutions." +msgstr[0] "" +msgstr[1] "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d room." +msgid_plural "Added %(count)d rooms." +msgstr[0] "" +msgstr[1] "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d team." +msgid_plural "Added %(count)d teams." +msgstr[0] "" +msgstr[1] "" + +#: importer/views.py +#, python-format +msgid "Adjudicator %(number)d" +msgstr "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d adjudicator." +msgid_plural "Added %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" + +#: importer/views.py +msgid "

There were one or more errors creating the demo tournament. Before retrying, please delete the existing demo tournament and the institutions in the Edit Database Area.

Technical information: The errors are as follows:

" +msgstr "" + +#: importer/views.py +msgid "Created new demo tournament. You can now configure it below." +msgstr "" + +#: importer/views.py +msgid "Tournament archive has been imported." +msgstr "" + diff --git a/tabbycat/importer/locale/sk/LC_MESSAGES/django.po b/tabbycat/importer/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..359457b1711 --- /dev/null +++ b/tabbycat/importer/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,453 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/importer/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 932\n" + +#: importer/forms.py +#, python-format +msgid "line %(lineno)d: %(message)s" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This line (for %(institution)s) didn't have a code" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This line (for %(institution)s) had too many columns" +msgstr "" + +#: importer/forms.py +msgid "There were no institutions to import." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d institution at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d institutions at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/forms.py +msgid "There were no rooms to import." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d room at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d rooms at a time. (You currently have %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/forms.py +msgid "Speakers' names" +msgstr "" + +#: importer/forms.py +msgid "Can be separated by newlines, tabs, commas or ampersands" +msgstr "" + +#: importer/forms.py +msgid "Speakers' email addresses" +msgstr "" + +#: importer/forms.py +msgid "Optional, useful to include if distributing private URLs, list in same order as speakers' names" +msgstr "" + +#: importer/forms.py +msgid "Name (excluding institution name)" +msgstr "" + +#: importer/forms.py +msgid "Prefix team name with institution name?" +msgstr "" + +#: importer/forms.py +msgid "Do not include institution name (check the \"Prefix team name with institution name?\" field instead)" +msgstr "" + +#: importer/forms.py +msgid "(Not applicable to unaffiliated teams)" +msgstr "" + +#: importer/forms.py +msgid "One speaker's name per line" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Speaker %d" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "speaker%d@example.edu" +msgstr "" + +#: importer/forms.py +msgid "Unseeded" +msgstr "" + +#: importer/forms.py +msgid "Free seed" +msgstr "" + +#: importer/forms.py +msgid "Half seed" +msgstr "" + +#: importer/forms.py +msgid "Full seed" +msgstr "" + +#: importer/forms.py +msgid "There must be at least one speaker." +msgstr "" + +#: importer/forms.py +#, python-format +msgid "%(email)s is not a valid email address." +msgstr "" + +#: importer/forms.py +msgid "There are more email addresses than speakers." +msgstr "" + +#: importer/forms.py +msgid "Every team in a single tournament from the same institution must have a different name. Please correct the duplicate data." +msgstr "" + +#: importer/forms.py +msgid "Rating" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "This value must be between %(min)d and %(max)d." +msgstr "" + +#: importer/forms.py +msgid "Unaffiliated (no institution)" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "%(name)s (%(code)s)" +msgstr "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d team at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d teams at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/forms.py +#, python-format +msgid "Sorry, you can only import up to %(max_allowed)d adjudicator at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgid_plural "Sorry, you can only import up to %(max_allowed)d adjudicators at a time. (These numbers currently add to %(given)d.) Try splitting your import into smaller chunks." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/forms.py +msgid "XML" +msgstr "" + +#: importer/forms.py +msgid "The Debate XML archive to parse" +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Export Tournament Archive" +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Tournaments can be exported in an XML format for use outside Tabbycat." +msgstr "" + +#: importer/templates/archive_export_index.html +msgid "Export all data" +msgstr "" + +#: importer/templates/archive_importer.html +msgctxt "page title" +msgid "Import Tournament Archive" +msgstr "" + +#: importer/templates/archive_importer.html +msgid "This form will create a tournament with the data provided as a Debate XML format." +msgstr "" + +#: importer/templates/archive_importer.html +msgid "Import" +msgstr "" + +#: importer/templates/archive_importer.html +msgid "Go back to the site home page" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_adjudicators_numbers.html +msgctxt "page title" +msgid "Add Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_adjudicators_numbers.html +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_teams_numbers.html +#: importer/templates/simple_import_venues_details.html +#: importer/templates/simple_import_venues_raw.html +#, python-format +msgid "(Step %(step)s of %(count)s)" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_venues_details.html +msgid "Previous Step" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#, python-format +msgid "As per this tournament's configuration, an adjudicator's rating must be between %(min)s and %(max)s. Providing email addresses is optional but can be useful if using private URLs for feedback or ballots." +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +#, python-format +msgid "Adjudicators for %(institution)s" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +msgid "Unaffiliated Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_details.html +msgid "Save All Adjudicators" +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +#, python-format +msgid "You need to add institutions before adding adjudicators." +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +msgid "Specify the number of new adjudicators to add per institution. In the next step you can specify their names and ratings." +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +msgid "You can add up to 198 adjudicators at a time. If you have more than 198 adjudicators, split them into chunks. (Please don't try to add more than 198 in one go; the system will crash, and you will lose data.)" +msgstr "" + +#: importer/templates/simple_import_adjudicators_numbers.html +#: importer/templates/simple_import_teams_numbers.html +msgctxt "button" +msgid "Next Step" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Simple Importer" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "There are several ways to import data into Tabbycat. Which one is best depends on the size of your tournament and your technical background. This simple importer is the easiest to use and works well for small- and medium-sized tournaments." +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Institutions" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Teams" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Adjudicators" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add Rooms" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Room Categories" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Room Constraints" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Team Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Adjudicator Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Adjudicator-Institution Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Team-Institution Conflicts" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Break Categories" +msgstr "" + +#: importer/templates/simple_import_index.html +msgid "Add/Edit Speaker Categories" +msgstr "" + +#: importer/templates/simple_import_institutions_details.html +#: importer/templates/simple_import_institutions_raw.html +msgctxt "page title" +msgid "Add Institutions" +msgstr "" + +#: importer/templates/simple_import_institutions_details.html +msgid "Save All Institutions" +msgstr "" + +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_venues_raw.html +msgid "There are some problems with the data on this form:" +msgstr "" + +#: importer/templates/simple_import_institutions_raw.html +#: importer/templates/simple_import_venues_raw.html +msgid "Next Step" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +#: importer/templates/simple_import_teams_numbers.html +msgctxt "page title" +msgid "Add Teams" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +#, python-format +msgid "Teams for %(institution)s" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +msgid "Unaffiliated Teams" +msgstr "" + +#: importer/templates/simple_import_teams_details.html +msgid "Save All Teams" +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +#, python-format +msgid "You need to add institutions before adding teams." +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +msgid "Specify the number of new teams to add per institution. In the next step you can specify team and speaker names." +msgstr "" + +#: importer/templates/simple_import_teams_numbers.html +msgid "You can add up to 141 teams at a time. If you have more than 141 teams, split them into chunks. (Please don't try to add more than 141 in one go; the system will crash, and you will lose data.)" +msgstr "" + +#: importer/templates/simple_import_venues_details.html +#: importer/templates/simple_import_venues_raw.html +msgctxt "page title" +msgid "Add Rooms" +msgstr "" + +#: importer/templates/simple_import_venues_details.html +msgid "Priorities indicate how much you want to use the room. Larger numbers indicate higher priority. If you have more rooms than debates, the rooms with the lowest priorities will not be used." +msgstr "" + +#: importer/templates/simple_import_venues_details.html +msgid "Save All Rooms" +msgstr "" + +#: importer/templates/simple_import_venues_raw.html +msgid "Paste a list of rooms with one room per line and following the format of: name,priority. For example:" +msgstr "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d institution." +msgid_plural "Added %(count)d institutions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d room." +msgid_plural "Added %(count)d rooms." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d team." +msgid_plural "Added %(count)d teams." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/views.py +#, python-format +msgid "Adjudicator %(number)d" +msgstr "" + +#: importer/views.py +#, python-format +msgid "Added %(count)d adjudicator." +msgid_plural "Added %(count)d adjudicators." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: importer/views.py +msgid "

There were one or more errors creating the demo tournament. Before retrying, please delete the existing demo tournament and the institutions in the Edit Database Area.

Technical information: The errors are as follows:

" +msgstr "" + +#: importer/views.py +msgid "Created new demo tournament. You can now configure it below." +msgstr "" + +#: importer/views.py +msgid "Tournament archive has been imported." +msgstr "" + diff --git a/tabbycat/locale/cs/LC_MESSAGES/django.po b/tabbycat/locale/cs/LC_MESSAGES/django.po index 37c1b3aefcb..811c208f50b 100644 --- a/tabbycat/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:40+1000\n" -"PO-Revision-Date: 2025-07-05 23:50\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -200,7 +200,7 @@ msgstr "Rozhodčí" #: checkins/views.py msgid "Rooms" -msgstr "" +msgstr "Místnosti" #: checkins/views.py #, python-format @@ -814,11 +814,11 @@ msgstr "" #: templates/base.html #, python-format msgid "The tab for %(tournament)s runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" -msgstr "" +msgstr "Tab turnaje %(tournament)s běží na Tabbycatu, tabovacím systému s veřejně dostupným kódem pro řadu debatních formátů" #: templates/base.html msgid "This tab runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" -msgstr "" +msgstr "Tento tab běží na Tabbycatu, tabovacím systému s veřejně dostupným kódem pro řadu debatních formátů" #: templates/components/form-errors.html msgid "Whoops! There was an error with one or more fields." @@ -1166,7 +1166,7 @@ msgstr "" #: templates/nav/public_nav.html msgid "Motions Tab" -msgstr "" +msgstr "Tab tezí" #: templates/nav/public_nav.html msgid "By round" @@ -1451,7 +1451,7 @@ msgstr "" #: users/models.py msgid "user" -msgstr "" +msgstr "uživatel" #: users/models.py msgid "permission" diff --git a/tabbycat/locale/el/LC_MESSAGES/django.po b/tabbycat/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..b5c26c18eca --- /dev/null +++ b/tabbycat/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,2006 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:40+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 934\n" + +#: api/apps.py +msgid "Application Programming Interface" +msgstr "" + +#: checkins/admin.py +msgid "Type" +msgstr "" + +#: checkins/admin.py +msgid "Checkin time" +msgstr "" + +#: checkins/apps.py templates/nav/admin_nav.html +#: templates/nav/assistant_nav.html templates/nav/public_nav.html +msgid "Check-Ins" +msgstr "" + +#: checkins/consumers.py +msgid "Sent checkin identifier doesn't exist" +msgstr "" + +#: checkins/consumers.py +msgid "Checkins" +msgstr "" + +#: checkins/consumers.py +msgid "No checkin identifiers exist for sent barcodes" +msgstr "" + +#: checkins/models.py +msgid "The barcode must contain exactly six digits." +msgstr "" + +#: checkins/models.py +msgid "barcode" +msgstr "" + +#: checkins/models.py +msgid "" +msgstr "" + +#: checkins/models.py +#, python-format +msgid "%(classname)s %(barcode)s" +msgstr "" + +#: checkins/models.py +msgid "person" +msgstr "" + +#: checkins/models.py +msgid "person identifier" +msgstr "" + +#: checkins/models.py +msgid "person identifiers" +msgstr "" + +#: checkins/models.py +msgid "debate" +msgstr "" + +#: checkins/models.py +msgid "debate identifier" +msgstr "" + +#: checkins/models.py +msgid "debate identifiers" +msgstr "" + +#: checkins/models.py +msgid "room identifier" +msgstr "" + +#: checkins/models.py +msgid "room identifiers" +msgstr "" + +#: checkins/models.py +msgid "identifier" +msgstr "" + +#: checkins/models.py +msgid "check-in time" +msgstr "" + +#: checkins/models.py registration/models.py users/models.py +msgid "tournament" +msgstr "" + +#: checkins/models.py +msgid "check-in event" +msgstr "" + +#: checkins/models.py +msgid "check-in events" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "With identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "View as barcodes" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "Generate missing identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "Generate all identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "There are no identifiers available to view. An admin will need to generate them." +msgstr "" + +#: checkins/templates/checkin_printables.html +msgid "Each of the barcodes below is also an image file that can be downloaded individually. If you want to download them all at once try using a 'bulk downloader' extension/plugin for your browser, such as this one (for Chrome). To download them as a list you can go to Check-Ins section of the Edit Database area and copy/paste from the relevant table." +msgstr "" + +#: checkins/templates/checkin_printables.html +msgid "You can use Ctrl+P for printing or saving the barcodes PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: checkins/templates/checkin_scan.html +msgid "To scan an identifier type the number below (it will auto-submit). You can also use a barcode scanner (configured to work as a keyboard) or scan from a webcam or phone camera using the button below." +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "Not checked in (barcode %(barcode)s)" +msgstr "" + +#: checkins/utils.py +msgid "Not checked in; no barcode assigned" +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "checked in at %(time)s" +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "%(speaker)s checked in at %(time)s." +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "%(speaker)s is missing." +msgstr "" + +#: checkins/views.py templates/nav/admin_nav.html +#: templates/nav/assistant_nav.html +msgid "Scan Identifiers" +msgstr "" + +#: checkins/views.py +msgid "People's Check-In Statuses" +msgstr "" + +#: checkins/views.py +msgid "Rooms' Check-In Statuses" +msgstr "" + +#: checkins/views.py templates/nav/admin_nav.html +msgid "Make Identifiers" +msgstr "" + +#: checkins/views.py registration/templates/answer_tables/teams.html +#: templates/nav/admin_nav.html +msgid "Speakers" +msgstr "" + +#: checkins/views.py registration/views.py templates/nav/admin_nav.html +#: templates/nav/public_nav.html +msgid "Adjudicators" +msgstr "" + +#: checkins/views.py +msgid "Rooms" +msgstr "" + +#: checkins/views.py +#, python-format +msgid "Generated identifiers for %s" +msgstr "" + +#: checkins/views.py +msgid "Identifiers" +msgstr "" + +#: checkins/views.py +msgid "Could not check you in as you do not have an identifying code — your tab director may need to make you an identifier." +msgstr "" + +#: checkins/views.py +msgid "You have revoked your check-in." +msgstr "" + +#: checkins/views.py +msgid "Whoops! Looks like your check-in was already revoked." +msgstr "" + +#: checkins/views.py +msgid "Whoops! Looks like you're already checked in." +msgstr "" + +#: checkins/views.py +msgid "You are now checked in." +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "This field is required." +msgstr "" + +#: registration/forms.py +msgid "Coach name" +msgstr "" + +#: registration/forms.py +msgid "Unseeded" +msgstr "" + +#: registration/forms.py +msgid "Free seed" +msgstr "" + +#: registration/forms.py +msgid "Half seed" +msgstr "" + +#: registration/forms.py +msgid "Full seed" +msgstr "" + +#: registration/forms.py +msgid "Full name for tab" +msgstr "" + +#: registration/models.py +msgid "content type" +msgstr "" + +#: registration/models.py +msgid "object id" +msgstr "" + +#: registration/models.py +msgid "question" +msgstr "" + +#: registration/models.py +msgid "answer" +msgstr "" + +#: registration/models.py +msgid "answers" +msgstr "" + +#: registration/models.py +msgid "checkbox" +msgstr "" + +#: registration/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: registration/models.py +msgid "integer (textbox)" +msgstr "" + +#: registration/models.py +msgid "integer scale" +msgstr "" + +#: registration/models.py +msgid "float" +msgstr "" + +#: registration/models.py +msgid "text" +msgstr "" + +#: registration/models.py +msgid "long text" +msgstr "" + +#: registration/models.py +msgid "select one" +msgstr "" + +#: registration/models.py +msgid "select multiple" +msgstr "" + +#: registration/models.py +msgid "date + time" +msgstr "" + +#: registration/models.py +msgid "for content type" +msgstr "" + +#: registration/models.py +msgid "sequence number" +msgstr "" + +#: registration/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: registration/models.py +msgid "help text" +msgstr "" + +#: registration/models.py +msgid "Additional context for the question" +msgstr "" + +#: registration/models.py users/models.py +msgid "name" +msgstr "" + +#: registration/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: registration/models.py +msgid "answer type" +msgstr "" + +#: registration/models.py +msgid "required" +msgstr "" + +#: registration/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: registration/models.py +msgid "minimum value" +msgstr "" + +#: registration/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: registration/models.py +msgid "maximum value" +msgstr "" + +#: registration/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: registration/models.py +msgid "choices" +msgstr "" + +#: registration/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: registration/models.py +msgid "questions" +msgstr "" + +#: registration/models.py +msgid "institution" +msgstr "" + +#: registration/models.py +msgid "team" +msgstr "" + +#: registration/models.py +msgid "URL key" +msgstr "" + +#: registration/models.py +msgid "created on" +msgstr "" + +#: registration/models.py +msgid "invitation" +msgstr "" + +#: registration/models.py +msgid "invitations" +msgstr "" + +#: registration/templates/adjudicator_registration_form.html +msgctxt "button" +msgid "Register as Adjudicator" +msgstr "" + +#: registration/templates/adjudicator_registration_form.html +#: registration/templates/wizard_registration_form.html +#: templates/registration/password_change_form.html +#: templates/registration/password_reset_confirm.html +msgid "Cancel and go back to the site home page" +msgstr "" + +#: registration/templates/answer_tables/adjudicators.html +msgid "Questions" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#: registration/templates/answer_tables/teams.html +msgid "Questions for" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +#: templates/nav/public_nav.html +msgid "Institutions" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +msgid "Coaches" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Requested: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Allocated: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Registered: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Requested: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Allocated: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Registered: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +msgid "Save allocations" +msgstr "" + +#: registration/templates/answer_tables/teams.html registration/views.py +#: templates/nav/admin_nav.html +msgid "Teams" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "Private URL" +msgstr "" + +#: registration/templates/coach_private_url.html +#, python-format +msgid "for %(name)s (%(institution)s)" +msgstr "" + +#: registration/templates/coach_private_url.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 manage participants for %(institution)s. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: registration/templates/coach_private_url.html registration/views.py +msgid "Register Adjudicator" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "Participant registration is not yet open" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "or distribute this link to allow members to register themselves as adjudicators:" +msgstr "" + +#: registration/templates/coach_private_url.html registration/views.py +msgid "Register Team" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "or distribute this link to allow members to register their teams:" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "View invoice" +msgstr "" + +#: registration/templates/questions_edit.html +msgid "These questions appear as extra fields for participants to answer, in feedback or registration forms." +msgstr "" + +#: registration/templates/questions_edit.html +#, python-format +msgid "If you want to delete questions (and their associated answers), use the Edit Database area." +msgstr "" + +#: registration/templates/questions_edit.html +msgid "Save Questions" +msgstr "" + +#: registration/templates/team_wizard_speakers.html +msgid "You may register speakers for the team, but if not all speakers are included, a link will be generated to let speakers register themselves to the team after submission which you can then distribute." +msgstr "" + +#: registration/templates/wizard_registration_form.html +msgctxt "button" +msgid "Continue" +msgstr "" + +#: registration/templates/wizard_registration_form.html +msgctxt "button" +msgid "Register" +msgstr "" + +#: registration/views.py +msgid "Register Institution" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Your institution %s has been registered!" +msgstr "" + +#: registration/views.py +msgid "Register Speaker" +msgid_plural "Register Speakers" +msgstr[0] "" +msgstr[1] "" + +#: registration/views.py +#, python-format +msgid "from %s" +msgstr "" + +#: registration/views.py +#, python-format +msgid "for %s" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Your team only has %(num)d speaker! Invite the other speakers to register using this link: %(link)s" +msgid_plural "Your team only has %(num)d speakers! Invite the other speakers to register using this link: %(link)s" +msgstr[0] "" +msgstr[1] "" + +#: registration/views.py +#, python-format +msgid "Your team %s has been registered!" +msgstr "" + +#: registration/views.py +msgid "You have been registered as an adjudicator!" +msgstr "" + +#: registration/views.py +msgid "You have been registered as a speaker!" +msgstr "" + +#: registration/views.py +msgid "Institutional Registration" +msgstr "" + +#: registration/views.py +msgid "Responses" +msgstr "" + +#: registration/views.py +msgid "Name" +msgstr "" + +#: registration/views.py +msgid "Coach" +msgstr "" + +#: registration/views.py +msgid "Teams Requested" +msgstr "" + +#: registration/views.py +msgid "Teams Allocated" +msgstr "" + +#: registration/views.py +msgid "Teams Registered" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Requested" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Allocated" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Registered" +msgstr "" + +#: registration/views.py +msgid "Successfully modified institution allocations" +msgstr "" + +#: registration/views.py +msgid "Team Registration" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Speaker %d" +msgstr "" + +#: registration/views.py +msgid "Email" +msgstr "" + +#: registration/views.py +msgid "Adjudicator Registration" +msgstr "" + +#: registration/views.py +msgid "Custom Questions" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Questions for %(model)s were successfully saved." +msgstr "" + +#: registration/views.py +msgid "No changes were made to the questions." +msgstr "" + +#: settings/core.py +msgid "Arabic" +msgstr "" + +#: settings/core.py +msgid "Asturian" +msgstr "" + +#: settings/core.py +msgid "Bengali" +msgstr "" + +#: settings/core.py +msgid "Bulgarian" +msgstr "" + +#: settings/core.py +msgid "Catalan" +msgstr "" + +#: settings/core.py +msgid "Czech" +msgstr "" + +#: settings/core.py +msgid "German" +msgstr "" + +#: settings/core.py +msgid "English" +msgstr "" + +#: settings/core.py +msgid "Spanish" +msgstr "" + +#: settings/core.py +msgid "French" +msgstr "" + +#: settings/core.py +msgid "Hebrew" +msgstr "" + +#: settings/core.py +msgid "Hindi" +msgstr "" + +#: settings/core.py +msgid "Indonesian" +msgstr "" + +#: settings/core.py +msgid "Italian" +msgstr "" + +#: settings/core.py +msgid "Japanese" +msgstr "" + +#: settings/core.py +msgid "Kazakh" +msgstr "" + +#: settings/core.py +msgid "Malay" +msgstr "" + +#: settings/core.py +msgid "Portuguese" +msgstr "" + +#: settings/core.py +msgid "Romanian" +msgstr "" + +#: settings/core.py +msgid "Russian" +msgstr "" + +#: settings/core.py +msgid "Turkish" +msgstr "" + +#: settings/core.py +msgid "Vietnamese" +msgstr "" + +#: settings/core.py +msgid "Simplified Chinese" +msgstr "" + +#: settings/core.py +msgid "Translation" +msgstr "" + +#: templates/admin/delete_protected_message.html +msgid "You need to delete the above objects first." +msgstr "" + +#: templates/admin/style_guide.html +msgid "This style of info card announces critical information. Link." +msgstr "" + +#: templates/admin/style_guide.html +msgid "This style of info card announces general information." +msgstr "" + +#: templates/admin/style_guide.html +msgctxt "page title" +msgid "Form Title" +msgstr "" + +#: templates/admin/style_guide.html +msgid "Sub Title Title" +msgstr "" + +#: templates/admin/style_guide.html templates/registration/login.html +msgctxt "button" +msgid "Log In" +msgstr "" + +#: templates/admin/style_guide.html templates/registration/login.html +msgctxt "button" +msgid "I forgot my password" +msgstr "" + +#: templates/base.html +msgid "Tabbycat" +msgstr "" + +#: templates/base.html +#, python-format +msgid "The tab for %(tournament)s runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" +msgstr "" + +#: templates/base.html +msgid "This tab runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" +msgstr "" + +#: templates/components/form-errors.html +msgid "Whoops! There was an error with one or more fields." +msgstr "" + +#: templates/components/formset.html +msgid "Save and Add More" +msgstr "" + +#: templates/errors/assistant_403.html templates/errors/public_403.html +msgid "Permission Denied (403)" +msgstr "" + +#: templates/errors/assistant_403.html +#, python-format +msgid "This assistant page isn't enabled for this tournament. Back to the assistant home page." +msgstr "" + +#: templates/errors/database_limit_warning.html +#, python-format +msgid "You're currently using %(nrows)s row in your database. If you haven't already upgraded your Heroku database to a paid tier, it's limited to a maximum of 10,000 rows. As you're close to this limit, you should not create new tournaments on this site unless and until you've upgraded your database to a paid tier." +msgid_plural "You're currently using %(nrows)s rows in your database. If you haven't already upgraded your Heroku database to a paid tier, it's limited to a maximum of 10,000 rows. As you're close to this limit, you should not create new tournaments on this site unless and until you've upgraded your database to a paid tier." +msgstr[0] "" +msgstr[1] "" + +#: templates/errors/legacy_sendgrid_warning.html +msgid "It looks like you're using the old SendGrid config vars on Heroku, SENDGRID_USERNAME and SENDGRID_PASSWORD. These are now deprecated (as of version 2.6), and will stop working in a future version of Tabbycat. Please change your config vars to use SENDGRID_API_KEY instead. For more information, please see our documentation on this topic." +msgstr "" + +#: templates/errors/public_403.html +#, python-format +msgid "Whoops! This page isn't enabled for this tournament. Back to the tournament home page." +msgstr "" + +#: templates/errors/public_403.html +#, python-format +msgid "Whoops! This page isn't enabled for this tournament. Back to the home page." +msgstr "" + +#: templates/footer.html +#, python-format +msgid "%(tournament)s runs on Tabbycat %(tabbycat_version)s (%(tabbycat_codename)s)" +msgstr "" + +#: templates/footer.html +#, python-format +msgid "This site runs on Tabbycat %(tabbycat_version)s (%(tabbycat_codename)s)" +msgstr "" + +#: templates/footer.html +msgid "Tabbycat is an open-source project developed by volunteers and is free to use." +msgstr "" + +#: templates/footer.html +#, python-format +msgid "For a tournament of this size, we suggest a donation of $%(amount)s." +msgstr "" + +#: templates/footer.html +msgid "Learn more about donating." +msgstr "" + +#: templates/footer.html +msgid "Donations to Tabbycat from individuals or organisations are much appreciated and help us to continue to develop, support, and maintain Tabbycat." +msgstr "" + +#: templates/footer.html +msgid "Still timing debates with the stopwatch app?" +msgstr "" + +#: templates/footer.html +#, python-format +msgid "Using an app designed for debate timekeeping makes speaking and adjudicating easier! Check out Timekept (iPhone/iPad) or Debatekeeper (Android)." +msgstr "" + +#: templates/footer.html +msgid "Our Organisation" +msgstr "" + +#: templates/footer.html +msgid "Tabbycat is supported by the Tabbycat Debate Association, a non-profit for advancing open debate technology." +msgstr "" + +#: templates/footer.html users/groups.py +msgid "Language" +msgstr "" + +#: templates/footer.html +msgid "GitHub" +msgstr "" + +#: templates/footer.html +msgid "Documentation" +msgstr "" + +#: templates/footer.html +msgid "Support" +msgstr "" + +#: templates/footer.html +msgid "Facebook" +msgstr "" + +#: templates/footer.html +msgid "Set Up A Copy" +msgstr "" + +#: templates/footer.html +msgid "Change Language" +msgstr "" + +#: templates/footer.html +msgid "Use this language" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Tabbycat Logo" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Site Home" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "New Tournament" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Edit Database" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Admin Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Assistant Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Public Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Overview" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Setup" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Configuration" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Import Data" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +#: templates/nav/public_nav.html +msgid "Participants" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Private URLs" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Schedule" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Emails" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Preformed Panels" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Export XML" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Sides" +msgstr "" + +#: templates/nav/admin_nav.html users/groups.py +msgid "Registration" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +msgid "People's Status" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Rooms' Status" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Feedback" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Latest" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Important" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Comments" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Find by Source" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Find by Target" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Unsubmitted" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Feedback Questions" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Add Feedback" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Bulk Update" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Standings" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "All Teams" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +#, python-format +msgid "%(category)s Teams" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "All Speakers" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +#, python-format +msgid "%(category)s Speakers" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Replies" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Motions" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Diversity" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Breaks" +msgstr "" + +#: templates/nav/admin_nav.html +#, python-format +msgid "%(category)s" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Adjudicators'" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Edit Categories" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Edit Eligibility" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Log Out" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Enter Results" +msgstr "" + +#: templates/nav/assistant_nav.html templates/nav/public_nav.html +msgid "Enter Feedback" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Participants List" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Code Names" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "View Identifiers" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Room's Status" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Display/Print Draw" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Team Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Speaker Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Replies Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Adjudicator Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Motions Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "By round" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Globally" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Draws" +msgstr "" + +#: templates/nav/public_nav.html +msgid "No Draws Available" +msgstr "" + +#: templates/nav/public_nav.html +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Current Draws" +msgstr "" + +#: templates/nav/public_nav.html templates/nav/round_panel.html +msgid "Results" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Break" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Feedback Progress" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Enter Ballot" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Availability" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Draw" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Display" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Administrator area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Assistant area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Public area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +msgid "Login" +msgstr "" + +#: templates/registration/logged_out.html +msgid "Goodbye" +msgstr "" + +#: templates/registration/logged_out.html +#, python-format +msgid "You have been logged out. Log in again?" +msgstr "" + +#: templates/registration/login.html +msgctxt "page title" +msgid "Login" +msgstr "" + +#: templates/registration/login.html +msgctxt "page title" +msgid "Log in to Tabbycat" +msgstr "" + +#: templates/registration/login.html +msgid "Your username and password didn't match." +msgstr "" + +#: templates/registration/login.html +msgid "Your account doesn't have access to this page. To proceed, please log in with an account that has access." +msgstr "" + +#: templates/registration/login.html +msgid "Please log in to see this page." +msgstr "" + +#: templates/registration/password_change_done.html +msgctxt "page title" +msgid "Password changed" +msgstr "" + +#: templates/registration/password_change_done.html +msgid "Your password has been changed." +msgstr "" + +#: templates/registration/password_change_done.html +msgid "Go to the home page" +msgstr "" + +#: templates/registration/password_change_form.html +msgctxt "page title" +msgid "Password Change" +msgstr "" + +#: templates/registration/password_change_form.html +#, python-format +msgid "API Token: %(api_token)s" +msgstr "" + +#: templates/registration/password_change_form.html +msgid "The API token will allow you to authorize external applications to access the site as staff." +msgstr "" + +#: templates/registration/password_change_form.html +msgid "Please enter your old password, then enter a new one." +msgstr "" + +#: templates/registration/password_change_form.html +#: templates/registration/password_reset_confirm.html +msgctxt "button" +msgid "Change my password" +msgstr "" + +#: templates/registration/password_reset_complete.html +msgctxt "page title" +msgid "Password reset complete" +msgstr "" + +#: templates/registration/password_reset_complete.html +msgid "Your password has been reset." +msgstr "" + +#: templates/registration/password_reset_complete.html +#: templates/registration/password_reset_done.html +msgid "Go to the login page" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgctxt "page title" +msgid "Password Reset Confirmation" +msgstr "" + +#: templates/registration/password_reset_confirm.html +#: templates/registration/password_reset_form.html +msgctxt "page title" +msgid "Password Reset" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgid "Please enter a new password (twice):" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/registration/password_reset_done.html +msgctxt "page title" +msgid "Password reset email sent" +msgstr "" + +#: templates/registration/password_reset_done.html +msgid "We've emailed you instructions for setting your password, if an account exists with the email address you entered. You should receive them shortly." +msgstr "" + +#: templates/registration/password_reset_done.html +msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Hi, %(user)s!" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Your username is: %(user)s" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Someone asked for a password reset for the email address %(email)s on the Tabbycat site at %(protocol)s://%(domain)s." +msgstr "" + +#: templates/registration/password_reset_email.html +msgid "If this was you, follow the link below to reset your password:" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "If this wasn't you, that probably means someone else typed your email address into the password reset form on the Tabbycat site at %(protocol)s://%(domain)s." +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Password Reset" +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Enter your email address below, and we'll email you a password reset link." +msgstr "" + +#: templates/registration/password_reset_form.html +msgctxt "button" +msgid "Reset my password" +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Back to the login page" +msgstr "" + +#: templates/registration/password_reset_subject.txt +#, python-format +msgid "Password reset on Tabbycat site at %(domain)s" +msgstr "" + +#: urls.py +#, python-format +msgid "Hi, %(user)s — you just logged in!" +msgstr "" + +#: urls.py +msgid "Welcome! You just logged in!" +msgstr "" + +#: users/admin.py +msgid "Users with staff status can view and edit the Edit Database area. This is potentially dangerous and should be reserved for the actual tab director(s)." +msgstr "" + +#: users/admin.py +msgid "Personal info" +msgstr "" + +#: users/admin.py +msgid "Permissions" +msgstr "" + +#: users/admin.py +msgid "Important dates" +msgstr "" + +#: users/forms.py +msgid "Email address" +msgstr "" + +#: users/forms.py +msgid "Username" +msgstr "" + +#: users/groups.py +msgid "Equity" +msgstr "" + +#: users/groups.py +msgid "Adjudication Core" +msgstr "" + +#: users/groups.py +msgid "Tabulation Director" +msgstr "" + +#: users/groups.py +msgid "Tabulation Assistant" +msgstr "" + +#: users/models.py +msgid "user" +msgstr "" + +#: users/models.py +msgid "permission" +msgstr "" + +#: users/models.py +msgid "user permission" +msgstr "" + +#: users/models.py +msgid "user permissions" +msgstr "" + +#: users/models.py +msgid "permissions" +msgstr "" + +#: users/models.py +msgid "group" +msgstr "" + +#: users/models.py +msgid "groups" +msgstr "" + +#: users/models.py +msgid "group membership" +msgstr "" + +#: users/models.py +msgid "group memberships" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-team conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-team conflicts" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-adjudicator conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-adjudicator conflicts" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "view team-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit team-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "view action log entries" +msgstr "" + +#: users/permissions.py +msgid "view teams" +msgstr "" + +#: users/permissions.py +msgid "add teams" +msgstr "" + +#: users/permissions.py +msgid "view decoded team names" +msgstr "" + +#: users/permissions.py +msgid "View names of anonymized participants" +msgstr "" + +#: users/permissions.py +msgid "view adjudicators" +msgstr "" + +#: users/permissions.py +msgid "add adjudicators" +msgstr "" + +#: users/permissions.py +msgid "view rooms" +msgstr "" + +#: users/permissions.py +msgid "add rooms" +msgstr "" + +#: users/permissions.py +msgid "view institutions" +msgstr "" + +#: users/permissions.py +msgid "add institutions" +msgstr "" + +#: users/permissions.py +msgid "view participants" +msgstr "" + +#: users/permissions.py +msgid "view participants' gender information" +msgstr "" + +#: users/permissions.py +msgid "view participants' contact information" +msgstr "" + +#: users/permissions.py +msgid "view participants' real names" +msgstr "" + +#: users/permissions.py +msgid "view participants' institution" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for teams" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for adjudicators" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for rooms" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for teams" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for adjudicators" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for rooms" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities" +msgstr "" + +#: users/permissions.py +msgid "view room constraints" +msgstr "" + +#: users/permissions.py +msgid "view room categories" +msgstr "" + +#: users/permissions.py +msgid "edit room constraints" +msgstr "" + +#: users/permissions.py +msgid "edit room categories" +msgstr "" + +#: users/permissions.py +msgid "view debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "view debates (detailed draw)" +msgstr "" + +#: users/permissions.py +msgid "generate debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "delete debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "edit debate teams (pairings)" +msgstr "" + +#: users/permissions.py +msgid "view debate adjudicators (allocations)" +msgstr "" + +#: users/permissions.py +msgid "edit debate adjudicators (allocations)" +msgstr "" + +#: users/permissions.py +msgid "view room allocations" +msgstr "" + +#: users/permissions.py +msgid "edit room allocations" +msgstr "" + +#: users/permissions.py +msgid "edit and confirm outround team positions" +msgstr "" + +#: users/permissions.py +msgid "view confirmed ballots" +msgstr "" + +#: users/permissions.py +msgid "edit non-confirmed ballots" +msgstr "" + +#: users/permissions.py +msgid "view any ballot" +msgstr "" + +#: users/permissions.py +msgid "edit any ballot" +msgstr "" + +#: users/permissions.py +msgid "create ballots" +msgstr "" + +#: users/permissions.py +msgid "confirm/discard any ballot" +msgstr "" + +#: users/permissions.py +msgid "confirm/discard others' ballots" +msgstr "" + +#: users/permissions.py +msgid "view ballot graph" +msgstr "" + +#: users/permissions.py +msgid "view results entry page" +msgstr "" + +#: users/permissions.py +msgid "view motion per round" +msgstr "" + +#: users/permissions.py +msgid "edit motion per round" +msgstr "" + +#: users/permissions.py +msgid "release draw to public" +msgstr "" + +#: users/permissions.py +msgid "release motion to public" +msgstr "" + +#: users/permissions.py +msgid "unrelease draw to public" +msgstr "" + +#: users/permissions.py +msgid "unrelease motion to public" +msgstr "" + +#: users/permissions.py +msgid "add debate start time" +msgstr "" + +#: users/permissions.py +msgid "view draws (for the briefing room)" +msgstr "" + +#: users/permissions.py +msgid "display motion (for the briefing room)" +msgstr "" + +#: users/permissions.py +msgid "view existing preformed panels" +msgstr "" + +#: users/permissions.py +msgid "edit preformed panels" +msgstr "" + +#: users/permissions.py +msgid "view the overviews of standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent team standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent speaker standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent replies standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent motions tab" +msgstr "" + +#: users/permissions.py +msgid "view the diversity tab" +msgstr "" + +#: users/permissions.py +msgid "view overview of judge feedback" +msgstr "" + +#: users/permissions.py +msgid "edit base scores of judges" +msgstr "" + +#: users/permissions.py +msgid "view feedback" +msgstr "" + +#: users/permissions.py +msgid "toggle ignore feedback" +msgstr "" + +#: users/permissions.py +msgid "toggle confirm feedback" +msgstr "" + +#: users/permissions.py +msgid "view feedback unsubmitted tab" +msgstr "" + +#: users/permissions.py +msgid "add feedback" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator break" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator break" +msgstr "" + +#: users/permissions.py +msgid "edit feedback questions" +msgstr "" + +#: users/permissions.py +msgid "edit break eligibility" +msgstr "" + +#: users/permissions.py +msgid "view break eligibility" +msgstr "" + +#: users/permissions.py +msgid "edit break categories" +msgstr "" + +#: users/permissions.py +msgid "view break categories" +msgstr "" + +#: users/permissions.py +msgid "view speaker categories" +msgstr "" + +#: users/permissions.py +msgid "edit speaker categories" +msgstr "" + +#: users/permissions.py +msgid "view speaker eligibility" +msgstr "" + +#: users/permissions.py +msgid "edit speaker eligibility" +msgstr "" + +#: users/permissions.py +msgid "view break overview" +msgstr "" + +#: users/permissions.py +msgid "view breaks" +msgstr "" + +#: users/permissions.py +msgid "generate all breaks" +msgstr "" + +#: users/permissions.py +msgid "view private urls" +msgstr "" + +#: users/permissions.py +msgid "generate private URLs" +msgstr "" + +#: users/permissions.py +msgid "view checkins" +msgstr "" + +#: users/permissions.py +msgid "edit participant check-in" +msgstr "" + +#: users/permissions.py +msgid "edit room check-in" +msgstr "" + +#: users/permissions.py +msgid "edit round attributes" +msgstr "" + +#: users/permissions.py +msgid "delete rounds" +msgstr "" + +#: users/permissions.py +msgid "create rounds" +msgstr "" + +#: users/permissions.py +msgid "confirm rounds" +msgstr "" + +#: users/permissions.py +msgid "silence rounds" +msgstr "" + +#: users/permissions.py +msgid "view email statuses" +msgstr "" + +#: users/permissions.py +msgid "send participants email messages" +msgstr "" + +#: users/permissions.py +msgid "export DebateXML" +msgstr "" + +#: users/permissions.py +msgid "view settings" +msgstr "" + +#: users/permissions.py +msgid "edit settings" +msgstr "" + +#: users/permissions.py +msgid "edit general questions" +msgstr "" + +#: users/permissions.py +msgid "delete general questions" +msgstr "" + +#: users/permissions.py +msgid "view answers to general questions" +msgstr "" + +#: users/permissions.py +msgid "edit events" +msgstr "" + +#: users/permissions.py +msgid "view events" +msgstr "" + +#: users/permissions.py +msgid "view registration responses" +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "Hello!" +msgstr "" + +#: users/templates/account_invitation_email.html +#, python-format +msgid "An administrator for the Tabbycat site hosting %(name)s has invited you to create an user account on their site, at %(protocol)s://%(domain)s." +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "If you accept, please use the link below to activate your account" +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "If you do not accept, there is no action to be taken." +msgstr "" + +#: users/templates/account_invitation_subject.txt +#, python-format +msgid "Invitation to join Tabbycat site for %(name)s" +msgstr "" + +#: users/templates/admin/auth/delete_user_warning.html +msgid "Warning: You shouldn't delete users from the database once they've done something, because the database logs actions taken by those users, and deleting the users also deletes the related logs. If you wish to deactivate a user account, go back to edit the user, click on the “Permissions” tab, unchecked the “Active” box, and save the user." +msgstr "" + +#: users/templates/invite_user.html +msgid "Back to Configuration" +msgstr "" + +#: users/templates/invite_user.html +msgctxt "button" +msgid "Invite User" +msgstr "" + +#: users/templates/invite_user.html +msgid "Note: if you submit this multiple times, multiple invite emails will be sent." +msgstr "" + +#: users/templates/signup.html +msgctxt "page title" +msgid "Create a new Account" +msgstr "" + +#: users/templates/signup.html +msgid "Create Account" +msgstr "" + +#: users/views.py +msgid "Whoops! It looks like someone's already created the first user account. Please log in." +msgstr "" + +#: users/views.py +#, python-format +msgid "Welcome! You've created an account for %s." +msgstr "" + +#: users/views.py +msgid "Invite User" +msgstr "" + +#: users/views.py +msgid "Successfully invited user to create an account for the tournament." +msgstr "" + +#: users/views.py +msgid "Accept Invitation" +msgstr "" + diff --git a/tabbycat/locale/el/LC_MESSAGES/djangojs.po b/tabbycat/locale/el/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000000..64cd59759d3 --- /dev/null +++ b/tabbycat/locale/el/LC_MESSAGES/djangojs.po @@ -0,0 +1,554 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-14 04:50+1100\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/locale/en/LC_MESSAGES/djangojs.po\n" +"X-Crowdin-File-ID: 962\n" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Scan Using Camera" +msgstr "" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Stop Camera Scan" +msgstr "" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Turn On Sounds" +msgstr "" + +#. Translators: %1: Time of checkin, %2: Barcode number, %3: Name of "owner" +#: checkins/templates/CheckInScanContainer.vue: +msgid "%1 checked in %2: %3" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "All" +msgstr "" + +#. Translators: %1: Option name +#: checkins/templates/CheckInStatusContainer.vue: +msgid "By %1" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "No matching rooms found." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "No matching people found." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "This page will live-update with new check-ins as they occur although the initial list may be up to a minute old." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid " All" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid " All" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Click to check-in manually" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "saving..." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "This person does not have a check-in identifier so they can't be checked in" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "If you want to view this page without the sidebar (i.e. for displaying to an auditorium) you can use the assistant version." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Open the assistant version." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Click to undo a check-in" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 of no institutional affiliation with identifier of %3" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 of no institutional affiliation with no assigned identifier" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 from %3 with identifier of %4" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 from %3 with no assigned identifier" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1 (Present; id=%2)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1 (Absent; id=%2)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a team with speakers %2" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Anonymous (due to team codes)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Anon" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Independent" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (%2) with identifier of %3" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (no category) with identifier of %2" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (%2) with no assigned identifier" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (no category) with no assigned identifier" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "Uncategorised" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "No Category" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "Priority %1" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 %4" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Chair)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Panellist)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Trainee)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "ID %1," +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Room:" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Chair for Panel of %1" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Solo Chair" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Panellist" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Trainee" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Team" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Mark speeches %1 to %2; %3." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Mark replies %1 to %2; %3." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Return ballots to %1." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "The motion is %1" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Debated" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Circle %1" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "%1: %2" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Aff Veto" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Neg Veto" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: printing/templates/PrintableTeamScores.vue: +msgid "%1:" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "tab entry" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "tab check" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: checkins/templates/PeopleStatusMixin.vue: +msgid "Unaffiliated" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "no ½ marks" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "½ marks are allowed" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "decimal marks are allowed" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "%1 (%2, %3)" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Adjudicating with %1." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "; " +msgstr "" + +#: printing/templates/PrintableFeedback.vue: +msgid "Did %1 deliver the adjudication?" +msgstr "" + +#: printing/templates/PrintableFeedback.vue: printing/templates/PrintableFeedbackQuestion.vue: +msgid "Yes" +msgstr "" + +#: printing/templates/PrintableFeedback.vue: +msgid "No, I am submitting feedback on:" +msgstr "" + +#: printing/templates/PrintableFeedbackQuestion.vue: +msgid "Unsure" +msgstr "" + +#: printing/templates/PrintableFeedbackQuestion.vue: +msgid "No" +msgstr "" + +#: printing/templates/PrintableScoresheet.vue: +msgid "Which team won the debate:" +msgstr "" + +#: printing/templates/PrintableScoresheet.vue: +msgid "By how many points did they win:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "%1, %2" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "IMPORTANT: Check and explicitly note if a speaker gives multiple speeches" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Score:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle the last digit of the %1's score:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle Rank:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Total:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle the last digit of the team's total:" +msgstr "" + +#: templates/tables/TablesContainer.vue:8 +msgid "Find in Table" +msgstr "" + +#: templates/tables/CheckboxTables.vue:30 +msgid "Set All Breaking as Available" +msgstr "" + +#: templates/tables/CheckboxTables.vue:36 +msgid "Set all the availabilities to exactly match what they were in the previous round." +msgstr "" + +#: templates/tables/CheckboxTables.vue:37 +msgid "Match" +msgstr "" + +#: templates/tables/CheckboxTables.vue:41 +msgid "Set all availabilities to exactly match check-ins." +msgstr "" + +#: templates/tables/CheckboxTables.vue:44 +msgid "Match Check-Ins" +msgstr "" + +#: templates/tables/CheckboxTables.vue: +msgid "Set people as available only if they have a check-in and are currently unavailable — i.e. it will not overwrite any existing availabilities." +msgstr "" + +#: templates/tables/CheckboxTables.vue:47 +msgid "Copy From Check-Ins" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Ballots Status" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Latest Actions" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "No Actions Yet" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Latest Results" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "No Confirmed Results Yet" +msgstr "" + +#: participants/templates/DiversityContainer.vue:6 +msgid "Speaker Demographics" +msgstr "" + +#: participants/templates/DiversityContainer.vue:11 +msgid "No Gender Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:18 +msgid "No Speaker Categories Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:33 +msgid "Speaker Results" +msgstr "" + +#: participants/templates/DiversityContainer.vue:36 +msgid "speakers with gender data" +msgstr "" + +#: participants/templates/DiversityContainer.vue:38 +msgid "speaker scores total" +msgstr "" + +#: participants/templates/DiversityContainer.vue:49 +msgid "No Region Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:56 +msgid "Adjudicator Demographics" +msgstr "" + +#: participants/templates/DiversityContainer.vue:68 +msgid "No Position Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:83 +msgid "Adjudicator Results" +msgstr "" + +#: participants/templates/DiversityContainer.vue:86 +msgid "adjudicators with gender data" +msgstr "" + +#: participants/templates/DiversityContainer.vue:88 +msgid "feedback scores total" +msgstr "" + +#: participants/templates/DiversityContainer.vue:94 +msgid "No Adjudicator Ratings Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:99 +msgid "No Adjudicator-Adjudicator Feedback Information" +msgstr "" + +#: results/templates/ResultsStats.vue:10 +msgid "Checked-In" +msgstr "" + +#: results/templates/ResultsStats.vue:15 +msgid "Not Checked-In" +msgstr "" + +#: results/templates/ResultsStats.vue:19 +msgid "Ballot Check-Ins" +msgstr "" + +#: results/templates/ResultsStats.vue:26 +msgid "Unknown" +msgstr "" + +#: results/templates/ResultsStats.vue:31 +msgid "Unconfirmed" +msgstr "" + +#: results/templates/ResultsStats.vue:36 +msgid "Confirmed" +msgstr "" + +#: results/templates/ResultsStats.vue:40 +msgid "Ballot Statuses" +msgstr "" + +#: results/templates/BallotsCell.vue:18 +msgid "You cannot confirm this ballot because you entered it" +msgstr "" + +#: results/templates/BallotsCell.vue:34 +msgid "Add Ballot" +msgstr "" + +#: results/templates/BallotsCell.vue:79 +msgid "Re-Edit" +msgstr "" + +#: results/templates/BallotsCell.vue:81 +msgid "Review" +msgstr "" + +#: utils/templates/AutoSaveCounter.vue:4 +msgid "No changes" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:8 +msgid "Return to Draw" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:15 +msgid "Auto-Prioritise" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:17 +msgid "Auto-Allocate" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Break" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Gender" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Rank" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Region" +msgstr "" + +#. Translators: Short for "Venue Category" +#: utils/templates/DragAndDropActions.vue:65 +msgid "Category" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:5 +msgid "The debate's bracket" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:9 +msgid "The bracket range of the hypothetical debate" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:20 +msgid "The total number of live break categories across all teams" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:26 +msgid "The estimated total number of live break categories across all teams of the hypothetical debate" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:33 +msgid "This debate's priority" +msgstr "" + +#: draw/templates/InlineTeam.vue:41 +msgid "No code name set" +msgstr "" + diff --git a/tabbycat/locale/es/LC_MESSAGES/djangojs.po b/tabbycat/locale/es/LC_MESSAGES/djangojs.po index b42160fb536..605046f5cd3 100644 --- a/tabbycat/locale/es/LC_MESSAGES/djangojs.po +++ b/tabbycat/locale/es/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-01-14 04:50+1100\n" -"PO-Revision-Date: 2023-08-24 11:53\n" +"PO-Revision-Date: 2025-08-23 16:31\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -257,7 +257,7 @@ msgstr "" #: printing/templates/PrintableDebateInfo.vue: checkins/templates/PeopleStatusMixin.vue: msgid "Unaffiliated" -msgstr "" +msgstr "Independiente" #: printing/templates/PrintableDebateInfo.vue: msgid "no ½ marks" diff --git a/tabbycat/locale/sk/LC_MESSAGES/django.po b/tabbycat/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..b07867c84ee --- /dev/null +++ b/tabbycat/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,2012 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:40+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 934\n" + +#: api/apps.py +msgid "Application Programming Interface" +msgstr "" + +#: checkins/admin.py +msgid "Type" +msgstr "" + +#: checkins/admin.py +msgid "Checkin time" +msgstr "" + +#: checkins/apps.py templates/nav/admin_nav.html +#: templates/nav/assistant_nav.html templates/nav/public_nav.html +msgid "Check-Ins" +msgstr "" + +#: checkins/consumers.py +msgid "Sent checkin identifier doesn't exist" +msgstr "" + +#: checkins/consumers.py +msgid "Checkins" +msgstr "" + +#: checkins/consumers.py +msgid "No checkin identifiers exist for sent barcodes" +msgstr "" + +#: checkins/models.py +msgid "The barcode must contain exactly six digits." +msgstr "" + +#: checkins/models.py +msgid "barcode" +msgstr "" + +#: checkins/models.py +msgid "" +msgstr "" + +#: checkins/models.py +#, python-format +msgid "%(classname)s %(barcode)s" +msgstr "" + +#: checkins/models.py +msgid "person" +msgstr "" + +#: checkins/models.py +msgid "person identifier" +msgstr "" + +#: checkins/models.py +msgid "person identifiers" +msgstr "" + +#: checkins/models.py +msgid "debate" +msgstr "" + +#: checkins/models.py +msgid "debate identifier" +msgstr "" + +#: checkins/models.py +msgid "debate identifiers" +msgstr "" + +#: checkins/models.py +msgid "room identifier" +msgstr "" + +#: checkins/models.py +msgid "room identifiers" +msgstr "" + +#: checkins/models.py +msgid "identifier" +msgstr "" + +#: checkins/models.py +msgid "check-in time" +msgstr "" + +#: checkins/models.py registration/models.py users/models.py +msgid "tournament" +msgstr "" + +#: checkins/models.py +msgid "check-in event" +msgstr "" + +#: checkins/models.py +msgid "check-in events" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "With identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "View as barcodes" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "Generate missing identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "Generate all identifiers" +msgstr "" + +#: checkins/templates/checkin_ids.html +msgid "There are no identifiers available to view. An admin will need to generate them." +msgstr "" + +#: checkins/templates/checkin_printables.html +msgid "Each of the barcodes below is also an image file that can be downloaded individually. If you want to download them all at once try using a 'bulk downloader' extension/plugin for your browser, such as this one (for Chrome). To download them as a list you can go to Check-Ins section of the Edit Database area and copy/paste from the relevant table." +msgstr "" + +#: checkins/templates/checkin_printables.html +msgid "You can use Ctrl+P for printing or saving the barcodes PDF. Be sure to set the appropriate page orientation, to turn off headers/footers and turn on background graphics. Works best in Chrome." +msgstr "" + +#: checkins/templates/checkin_scan.html +msgid "To scan an identifier type the number below (it will auto-submit). You can also use a barcode scanner (configured to work as a keyboard) or scan from a webcam or phone camera using the button below." +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "Not checked in (barcode %(barcode)s)" +msgstr "" + +#: checkins/utils.py +msgid "Not checked in; no barcode assigned" +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "checked in at %(time)s" +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "%(speaker)s checked in at %(time)s." +msgstr "" + +#: checkins/utils.py +#, python-format +msgid "%(speaker)s is missing." +msgstr "" + +#: checkins/views.py templates/nav/admin_nav.html +#: templates/nav/assistant_nav.html +msgid "Scan Identifiers" +msgstr "" + +#: checkins/views.py +msgid "People's Check-In Statuses" +msgstr "" + +#: checkins/views.py +msgid "Rooms' Check-In Statuses" +msgstr "" + +#: checkins/views.py templates/nav/admin_nav.html +msgid "Make Identifiers" +msgstr "" + +#: checkins/views.py registration/templates/answer_tables/teams.html +#: templates/nav/admin_nav.html +msgid "Speakers" +msgstr "" + +#: checkins/views.py registration/views.py templates/nav/admin_nav.html +#: templates/nav/public_nav.html +msgid "Adjudicators" +msgstr "" + +#: checkins/views.py +msgid "Rooms" +msgstr "" + +#: checkins/views.py +#, python-format +msgid "Generated identifiers for %s" +msgstr "" + +#: checkins/views.py +msgid "Identifiers" +msgstr "" + +#: checkins/views.py +msgid "Could not check you in as you do not have an identifying code — your tab director may need to make you an identifier." +msgstr "" + +#: checkins/views.py +msgid "You have revoked your check-in." +msgstr "" + +#: checkins/views.py +msgid "Whoops! Looks like your check-in was already revoked." +msgstr "" + +#: checkins/views.py +msgid "Whoops! Looks like you're already checked in." +msgstr "" + +#: checkins/views.py +msgid "You are now checked in." +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "Yes" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "No" +msgstr "" + +#. Translators: Please leave this blank, it should be left for the base Django translations. +#: registration/form_utils.py +msgid "This field is required." +msgstr "" + +#: registration/forms.py +msgid "Coach name" +msgstr "" + +#: registration/forms.py +msgid "Unseeded" +msgstr "" + +#: registration/forms.py +msgid "Free seed" +msgstr "" + +#: registration/forms.py +msgid "Half seed" +msgstr "" + +#: registration/forms.py +msgid "Full seed" +msgstr "" + +#: registration/forms.py +msgid "Full name for tab" +msgstr "" + +#: registration/models.py +msgid "content type" +msgstr "" + +#: registration/models.py +msgid "object id" +msgstr "" + +#: registration/models.py +msgid "question" +msgstr "" + +#: registration/models.py +msgid "answer" +msgstr "" + +#: registration/models.py +msgid "answers" +msgstr "" + +#: registration/models.py +msgid "checkbox" +msgstr "" + +#: registration/models.py +msgid "yes/no (dropdown)" +msgstr "" + +#: registration/models.py +msgid "integer (textbox)" +msgstr "" + +#: registration/models.py +msgid "integer scale" +msgstr "" + +#: registration/models.py +msgid "float" +msgstr "" + +#: registration/models.py +msgid "text" +msgstr "" + +#: registration/models.py +msgid "long text" +msgstr "" + +#: registration/models.py +msgid "select one" +msgstr "" + +#: registration/models.py +msgid "select multiple" +msgstr "" + +#: registration/models.py +msgid "date + time" +msgstr "" + +#: registration/models.py +msgid "for content type" +msgstr "" + +#: registration/models.py +msgid "sequence number" +msgstr "" + +#: registration/models.py +msgid "The question displayed to participants, e.g., \"Did you agree with the decision?\"" +msgstr "" + +#: registration/models.py +msgid "help text" +msgstr "" + +#: registration/models.py +msgid "Additional context for the question" +msgstr "" + +#: registration/models.py users/models.py +msgid "name" +msgstr "" + +#: registration/models.py +msgid "A short name for the question, e.g., \"Agree with decision\"" +msgstr "" + +#: registration/models.py +msgid "answer type" +msgstr "" + +#: registration/models.py +msgid "required" +msgstr "" + +#: registration/models.py +msgid "Whether participants are required to fill out this field" +msgstr "" + +#: registration/models.py +msgid "minimum value" +msgstr "" + +#: registration/models.py +msgid "Minimum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: registration/models.py +msgid "maximum value" +msgstr "" + +#: registration/models.py +msgid "Maximum allowed value for numeric fields (ignored for text or boolean fields)" +msgstr "" + +#: registration/models.py +msgid "choices" +msgstr "" + +#: registration/models.py +msgid "Permissible choices for select one/multiple fields (ignored for other fields)" +msgstr "" + +#: registration/models.py +msgid "questions" +msgstr "" + +#: registration/models.py +msgid "institution" +msgstr "" + +#: registration/models.py +msgid "team" +msgstr "" + +#: registration/models.py +msgid "URL key" +msgstr "" + +#: registration/models.py +msgid "created on" +msgstr "" + +#: registration/models.py +msgid "invitation" +msgstr "" + +#: registration/models.py +msgid "invitations" +msgstr "" + +#: registration/templates/adjudicator_registration_form.html +msgctxt "button" +msgid "Register as Adjudicator" +msgstr "" + +#: registration/templates/adjudicator_registration_form.html +#: registration/templates/wizard_registration_form.html +#: templates/registration/password_change_form.html +#: templates/registration/password_reset_confirm.html +msgid "Cancel and go back to the site home page" +msgstr "" + +#: registration/templates/answer_tables/adjudicators.html +msgid "Questions" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#: registration/templates/answer_tables/teams.html +msgid "Questions for" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +#: templates/nav/public_nav.html +msgid "Institutions" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +msgid "Coaches" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Requested: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Allocated: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Teams Registered: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Requested: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Allocated: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +#, python-format +msgid "Adjudicators Registered: %(num)s" +msgstr "" + +#: registration/templates/answer_tables/institutions.html +msgid "Save allocations" +msgstr "" + +#: registration/templates/answer_tables/teams.html registration/views.py +#: templates/nav/admin_nav.html +msgid "Teams" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "Private URL" +msgstr "" + +#: registration/templates/coach_private_url.html +#, python-format +msgid "for %(name)s (%(institution)s)" +msgstr "" + +#: registration/templates/coach_private_url.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 manage participants for %(institution)s. You may bookmark this page and return here after each debate for the available actions." +msgstr "" + +#: registration/templates/coach_private_url.html registration/views.py +msgid "Register Adjudicator" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "Participant registration is not yet open" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "or distribute this link to allow members to register themselves as adjudicators:" +msgstr "" + +#: registration/templates/coach_private_url.html registration/views.py +msgid "Register Team" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "or distribute this link to allow members to register their teams:" +msgstr "" + +#: registration/templates/coach_private_url.html +msgid "View invoice" +msgstr "" + +#: registration/templates/questions_edit.html +msgid "These questions appear as extra fields for participants to answer, in feedback or registration forms." +msgstr "" + +#: registration/templates/questions_edit.html +#, python-format +msgid "If you want to delete questions (and their associated answers), use the Edit Database area." +msgstr "" + +#: registration/templates/questions_edit.html +msgid "Save Questions" +msgstr "" + +#: registration/templates/team_wizard_speakers.html +msgid "You may register speakers for the team, but if not all speakers are included, a link will be generated to let speakers register themselves to the team after submission which you can then distribute." +msgstr "" + +#: registration/templates/wizard_registration_form.html +msgctxt "button" +msgid "Continue" +msgstr "" + +#: registration/templates/wizard_registration_form.html +msgctxt "button" +msgid "Register" +msgstr "" + +#: registration/views.py +msgid "Register Institution" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Your institution %s has been registered!" +msgstr "" + +#: registration/views.py +msgid "Register Speaker" +msgid_plural "Register Speakers" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: registration/views.py +#, python-format +msgid "from %s" +msgstr "" + +#: registration/views.py +#, python-format +msgid "for %s" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Your team only has %(num)d speaker! Invite the other speakers to register using this link: %(link)s" +msgid_plural "Your team only has %(num)d speakers! Invite the other speakers to register using this link: %(link)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: registration/views.py +#, python-format +msgid "Your team %s has been registered!" +msgstr "" + +#: registration/views.py +msgid "You have been registered as an adjudicator!" +msgstr "" + +#: registration/views.py +msgid "You have been registered as a speaker!" +msgstr "" + +#: registration/views.py +msgid "Institutional Registration" +msgstr "" + +#: registration/views.py +msgid "Responses" +msgstr "" + +#: registration/views.py +msgid "Name" +msgstr "" + +#: registration/views.py +msgid "Coach" +msgstr "" + +#: registration/views.py +msgid "Teams Requested" +msgstr "" + +#: registration/views.py +msgid "Teams Allocated" +msgstr "" + +#: registration/views.py +msgid "Teams Registered" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Requested" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Allocated" +msgstr "" + +#: registration/views.py +msgid "Adjudicators Registered" +msgstr "" + +#: registration/views.py +msgid "Successfully modified institution allocations" +msgstr "" + +#: registration/views.py +msgid "Team Registration" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Speaker %d" +msgstr "" + +#: registration/views.py +msgid "Email" +msgstr "" + +#: registration/views.py +msgid "Adjudicator Registration" +msgstr "" + +#: registration/views.py +msgid "Custom Questions" +msgstr "" + +#: registration/views.py +#, python-format +msgid "Questions for %(model)s were successfully saved." +msgstr "" + +#: registration/views.py +msgid "No changes were made to the questions." +msgstr "" + +#: settings/core.py +msgid "Arabic" +msgstr "" + +#: settings/core.py +msgid "Asturian" +msgstr "" + +#: settings/core.py +msgid "Bengali" +msgstr "" + +#: settings/core.py +msgid "Bulgarian" +msgstr "" + +#: settings/core.py +msgid "Catalan" +msgstr "" + +#: settings/core.py +msgid "Czech" +msgstr "" + +#: settings/core.py +msgid "German" +msgstr "" + +#: settings/core.py +msgid "English" +msgstr "" + +#: settings/core.py +msgid "Spanish" +msgstr "" + +#: settings/core.py +msgid "French" +msgstr "" + +#: settings/core.py +msgid "Hebrew" +msgstr "" + +#: settings/core.py +msgid "Hindi" +msgstr "" + +#: settings/core.py +msgid "Indonesian" +msgstr "" + +#: settings/core.py +msgid "Italian" +msgstr "" + +#: settings/core.py +msgid "Japanese" +msgstr "" + +#: settings/core.py +msgid "Kazakh" +msgstr "" + +#: settings/core.py +msgid "Malay" +msgstr "" + +#: settings/core.py +msgid "Portuguese" +msgstr "" + +#: settings/core.py +msgid "Romanian" +msgstr "" + +#: settings/core.py +msgid "Russian" +msgstr "" + +#: settings/core.py +msgid "Turkish" +msgstr "" + +#: settings/core.py +msgid "Vietnamese" +msgstr "" + +#: settings/core.py +msgid "Simplified Chinese" +msgstr "" + +#: settings/core.py +msgid "Translation" +msgstr "" + +#: templates/admin/delete_protected_message.html +msgid "You need to delete the above objects first." +msgstr "" + +#: templates/admin/style_guide.html +msgid "This style of info card announces critical information. Link." +msgstr "" + +#: templates/admin/style_guide.html +msgid "This style of info card announces general information." +msgstr "" + +#: templates/admin/style_guide.html +msgctxt "page title" +msgid "Form Title" +msgstr "" + +#: templates/admin/style_guide.html +msgid "Sub Title Title" +msgstr "" + +#: templates/admin/style_guide.html templates/registration/login.html +msgctxt "button" +msgid "Log In" +msgstr "" + +#: templates/admin/style_guide.html templates/registration/login.html +msgctxt "button" +msgid "I forgot my password" +msgstr "" + +#: templates/base.html +msgid "Tabbycat" +msgstr "" + +#: templates/base.html +#, python-format +msgid "The tab for %(tournament)s runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" +msgstr "" + +#: templates/base.html +msgid "This tab runs on Tabbycat, a source-available tab system for a variety of parliamentary debating formats" +msgstr "" + +#: templates/components/form-errors.html +msgid "Whoops! There was an error with one or more fields." +msgstr "" + +#: templates/components/formset.html +msgid "Save and Add More" +msgstr "" + +#: templates/errors/assistant_403.html templates/errors/public_403.html +msgid "Permission Denied (403)" +msgstr "" + +#: templates/errors/assistant_403.html +#, python-format +msgid "This assistant page isn't enabled for this tournament. Back to the assistant home page." +msgstr "" + +#: templates/errors/database_limit_warning.html +#, python-format +msgid "You're currently using %(nrows)s row in your database. If you haven't already upgraded your Heroku database to a paid tier, it's limited to a maximum of 10,000 rows. As you're close to this limit, you should not create new tournaments on this site unless and until you've upgraded your database to a paid tier." +msgid_plural "You're currently using %(nrows)s rows in your database. If you haven't already upgraded your Heroku database to a paid tier, it's limited to a maximum of 10,000 rows. As you're close to this limit, you should not create new tournaments on this site unless and until you've upgraded your database to a paid tier." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/errors/legacy_sendgrid_warning.html +msgid "It looks like you're using the old SendGrid config vars on Heroku, SENDGRID_USERNAME and SENDGRID_PASSWORD. These are now deprecated (as of version 2.6), and will stop working in a future version of Tabbycat. Please change your config vars to use SENDGRID_API_KEY instead. For more information, please see our documentation on this topic." +msgstr "" + +#: templates/errors/public_403.html +#, python-format +msgid "Whoops! This page isn't enabled for this tournament. Back to the tournament home page." +msgstr "" + +#: templates/errors/public_403.html +#, python-format +msgid "Whoops! This page isn't enabled for this tournament. Back to the home page." +msgstr "" + +#: templates/footer.html +#, python-format +msgid "%(tournament)s runs on Tabbycat %(tabbycat_version)s (%(tabbycat_codename)s)" +msgstr "" + +#: templates/footer.html +#, python-format +msgid "This site runs on Tabbycat %(tabbycat_version)s (%(tabbycat_codename)s)" +msgstr "" + +#: templates/footer.html +msgid "Tabbycat is an open-source project developed by volunteers and is free to use." +msgstr "" + +#: templates/footer.html +#, python-format +msgid "For a tournament of this size, we suggest a donation of $%(amount)s." +msgstr "" + +#: templates/footer.html +msgid "Learn more about donating." +msgstr "" + +#: templates/footer.html +msgid "Donations to Tabbycat from individuals or organisations are much appreciated and help us to continue to develop, support, and maintain Tabbycat." +msgstr "" + +#: templates/footer.html +msgid "Still timing debates with the stopwatch app?" +msgstr "" + +#: templates/footer.html +#, python-format +msgid "Using an app designed for debate timekeeping makes speaking and adjudicating easier! Check out Timekept (iPhone/iPad) or Debatekeeper (Android)." +msgstr "" + +#: templates/footer.html +msgid "Our Organisation" +msgstr "" + +#: templates/footer.html +msgid "Tabbycat is supported by the Tabbycat Debate Association, a non-profit for advancing open debate technology." +msgstr "" + +#: templates/footer.html users/groups.py +msgid "Language" +msgstr "" + +#: templates/footer.html +msgid "GitHub" +msgstr "" + +#: templates/footer.html +msgid "Documentation" +msgstr "" + +#: templates/footer.html +msgid "Support" +msgstr "" + +#: templates/footer.html +msgid "Facebook" +msgstr "" + +#: templates/footer.html +msgid "Set Up A Copy" +msgstr "" + +#: templates/footer.html +msgid "Change Language" +msgstr "" + +#: templates/footer.html +msgid "Use this language" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Tabbycat Logo" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Site Home" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "New Tournament" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Edit Database" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Admin Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Assistant Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Public Area" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Overview" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Setup" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Configuration" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Import Data" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +#: templates/nav/public_nav.html +msgid "Participants" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Private URLs" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Schedule" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Emails" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Preformed Panels" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Export XML" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Sides" +msgstr "" + +#: templates/nav/admin_nav.html users/groups.py +msgid "Registration" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/assistant_nav.html +msgid "People's Status" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Rooms' Status" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Feedback" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Latest" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Important" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Comments" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Find by Source" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Find by Target" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Unsubmitted" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Feedback Questions" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Add Feedback" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Bulk Update" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Standings" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "All Teams" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +#, python-format +msgid "%(category)s Teams" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "All Speakers" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +#, python-format +msgid "%(category)s Speakers" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Replies" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Motions" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/public_nav.html +msgid "Diversity" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Breaks" +msgstr "" + +#: templates/nav/admin_nav.html +#, python-format +msgid "%(category)s" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Adjudicators'" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Edit Categories" +msgstr "" + +#: templates/nav/admin_nav.html +msgid "Edit Eligibility" +msgstr "" + +#: templates/nav/admin_nav.html templates/nav/top_nav_base.html +msgid "Log Out" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Enter Results" +msgstr "" + +#: templates/nav/assistant_nav.html templates/nav/public_nav.html +msgid "Enter Feedback" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Participants List" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Code Names" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "View Identifiers" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Room's Status" +msgstr "" + +#: templates/nav/assistant_nav.html +msgid "Display/Print Draw" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Team Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Speaker Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Replies Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Adjudicator Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Motions Tab" +msgstr "" + +#: templates/nav/public_nav.html +msgid "By round" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Globally" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Draws" +msgstr "" + +#: templates/nav/public_nav.html +msgid "No Draws Available" +msgstr "" + +#: templates/nav/public_nav.html +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Current Draws" +msgstr "" + +#: templates/nav/public_nav.html templates/nav/round_panel.html +msgid "Results" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Break" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Feedback Progress" +msgstr "" + +#: templates/nav/public_nav.html +msgid "Enter Ballot" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Availability" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Draw" +msgstr "" + +#: templates/nav/round_panel.html +msgid "Display" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Administrator area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Assistant area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +#, python-format +msgid "Public area for %(tournament)s" +msgstr "" + +#: templates/nav/top_nav_base.html +msgid "Login" +msgstr "" + +#: templates/registration/logged_out.html +msgid "Goodbye" +msgstr "" + +#: templates/registration/logged_out.html +#, python-format +msgid "You have been logged out. Log in again?" +msgstr "" + +#: templates/registration/login.html +msgctxt "page title" +msgid "Login" +msgstr "" + +#: templates/registration/login.html +msgctxt "page title" +msgid "Log in to Tabbycat" +msgstr "" + +#: templates/registration/login.html +msgid "Your username and password didn't match." +msgstr "" + +#: templates/registration/login.html +msgid "Your account doesn't have access to this page. To proceed, please log in with an account that has access." +msgstr "" + +#: templates/registration/login.html +msgid "Please log in to see this page." +msgstr "" + +#: templates/registration/password_change_done.html +msgctxt "page title" +msgid "Password changed" +msgstr "" + +#: templates/registration/password_change_done.html +msgid "Your password has been changed." +msgstr "" + +#: templates/registration/password_change_done.html +msgid "Go to the home page" +msgstr "" + +#: templates/registration/password_change_form.html +msgctxt "page title" +msgid "Password Change" +msgstr "" + +#: templates/registration/password_change_form.html +#, python-format +msgid "API Token: %(api_token)s" +msgstr "" + +#: templates/registration/password_change_form.html +msgid "The API token will allow you to authorize external applications to access the site as staff." +msgstr "" + +#: templates/registration/password_change_form.html +msgid "Please enter your old password, then enter a new one." +msgstr "" + +#: templates/registration/password_change_form.html +#: templates/registration/password_reset_confirm.html +msgctxt "button" +msgid "Change my password" +msgstr "" + +#: templates/registration/password_reset_complete.html +msgctxt "page title" +msgid "Password reset complete" +msgstr "" + +#: templates/registration/password_reset_complete.html +msgid "Your password has been reset." +msgstr "" + +#: templates/registration/password_reset_complete.html +#: templates/registration/password_reset_done.html +msgid "Go to the login page" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgctxt "page title" +msgid "Password Reset Confirmation" +msgstr "" + +#: templates/registration/password_reset_confirm.html +#: templates/registration/password_reset_form.html +msgctxt "page title" +msgid "Password Reset" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgid "Please enter a new password (twice):" +msgstr "" + +#: templates/registration/password_reset_confirm.html +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/registration/password_reset_done.html +msgctxt "page title" +msgid "Password reset email sent" +msgstr "" + +#: templates/registration/password_reset_done.html +msgid "We've emailed you instructions for setting your password, if an account exists with the email address you entered. You should receive them shortly." +msgstr "" + +#: templates/registration/password_reset_done.html +msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Hi, %(user)s!" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Your username is: %(user)s" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "Someone asked for a password reset for the email address %(email)s on the Tabbycat site at %(protocol)s://%(domain)s." +msgstr "" + +#: templates/registration/password_reset_email.html +msgid "If this was you, follow the link below to reset your password:" +msgstr "" + +#: templates/registration/password_reset_email.html +#, python-format +msgid "If this wasn't you, that probably means someone else typed your email address into the password reset form on the Tabbycat site at %(protocol)s://%(domain)s." +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Password Reset" +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Enter your email address below, and we'll email you a password reset link." +msgstr "" + +#: templates/registration/password_reset_form.html +msgctxt "button" +msgid "Reset my password" +msgstr "" + +#: templates/registration/password_reset_form.html +msgid "Back to the login page" +msgstr "" + +#: templates/registration/password_reset_subject.txt +#, python-format +msgid "Password reset on Tabbycat site at %(domain)s" +msgstr "" + +#: urls.py +#, python-format +msgid "Hi, %(user)s — you just logged in!" +msgstr "" + +#: urls.py +msgid "Welcome! You just logged in!" +msgstr "" + +#: users/admin.py +msgid "Users with staff status can view and edit the Edit Database area. This is potentially dangerous and should be reserved for the actual tab director(s)." +msgstr "" + +#: users/admin.py +msgid "Personal info" +msgstr "" + +#: users/admin.py +msgid "Permissions" +msgstr "" + +#: users/admin.py +msgid "Important dates" +msgstr "" + +#: users/forms.py +msgid "Email address" +msgstr "" + +#: users/forms.py +msgid "Username" +msgstr "" + +#: users/groups.py +msgid "Equity" +msgstr "" + +#: users/groups.py +msgid "Adjudication Core" +msgstr "" + +#: users/groups.py +msgid "Tabulation Director" +msgstr "" + +#: users/groups.py +msgid "Tabulation Assistant" +msgstr "" + +#: users/models.py +msgid "user" +msgstr "" + +#: users/models.py +msgid "permission" +msgstr "" + +#: users/models.py +msgid "user permission" +msgstr "" + +#: users/models.py +msgid "user permissions" +msgstr "" + +#: users/models.py +msgid "permissions" +msgstr "" + +#: users/models.py +msgid "group" +msgstr "" + +#: users/models.py +msgid "groups" +msgstr "" + +#: users/models.py +msgid "group membership" +msgstr "" + +#: users/models.py +msgid "group memberships" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-team conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-team conflicts" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-adjudicator conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-adjudicator conflicts" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "view team-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "edit team-institution conflicts" +msgstr "" + +#: users/permissions.py +msgid "view action log entries" +msgstr "" + +#: users/permissions.py +msgid "view teams" +msgstr "" + +#: users/permissions.py +msgid "add teams" +msgstr "" + +#: users/permissions.py +msgid "view decoded team names" +msgstr "" + +#: users/permissions.py +msgid "View names of anonymized participants" +msgstr "" + +#: users/permissions.py +msgid "view adjudicators" +msgstr "" + +#: users/permissions.py +msgid "add adjudicators" +msgstr "" + +#: users/permissions.py +msgid "view rooms" +msgstr "" + +#: users/permissions.py +msgid "add rooms" +msgstr "" + +#: users/permissions.py +msgid "view institutions" +msgstr "" + +#: users/permissions.py +msgid "add institutions" +msgstr "" + +#: users/permissions.py +msgid "view participants" +msgstr "" + +#: users/permissions.py +msgid "view participants' gender information" +msgstr "" + +#: users/permissions.py +msgid "view participants' contact information" +msgstr "" + +#: users/permissions.py +msgid "view participants' real names" +msgstr "" + +#: users/permissions.py +msgid "view participants' institution" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for teams" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for adjudicators" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities for rooms" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for teams" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for adjudicators" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities for rooms" +msgstr "" + +#: users/permissions.py +msgid "view round availabilities" +msgstr "" + +#: users/permissions.py +msgid "edit round availabilities" +msgstr "" + +#: users/permissions.py +msgid "view room constraints" +msgstr "" + +#: users/permissions.py +msgid "view room categories" +msgstr "" + +#: users/permissions.py +msgid "edit room constraints" +msgstr "" + +#: users/permissions.py +msgid "edit room categories" +msgstr "" + +#: users/permissions.py +msgid "view debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "view debates (detailed draw)" +msgstr "" + +#: users/permissions.py +msgid "generate debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "delete debates (draw)" +msgstr "" + +#: users/permissions.py +msgid "edit debate teams (pairings)" +msgstr "" + +#: users/permissions.py +msgid "view debate adjudicators (allocations)" +msgstr "" + +#: users/permissions.py +msgid "edit debate adjudicators (allocations)" +msgstr "" + +#: users/permissions.py +msgid "view room allocations" +msgstr "" + +#: users/permissions.py +msgid "edit room allocations" +msgstr "" + +#: users/permissions.py +msgid "edit and confirm outround team positions" +msgstr "" + +#: users/permissions.py +msgid "view confirmed ballots" +msgstr "" + +#: users/permissions.py +msgid "edit non-confirmed ballots" +msgstr "" + +#: users/permissions.py +msgid "view any ballot" +msgstr "" + +#: users/permissions.py +msgid "edit any ballot" +msgstr "" + +#: users/permissions.py +msgid "create ballots" +msgstr "" + +#: users/permissions.py +msgid "confirm/discard any ballot" +msgstr "" + +#: users/permissions.py +msgid "confirm/discard others' ballots" +msgstr "" + +#: users/permissions.py +msgid "view ballot graph" +msgstr "" + +#: users/permissions.py +msgid "view results entry page" +msgstr "" + +#: users/permissions.py +msgid "view motion per round" +msgstr "" + +#: users/permissions.py +msgid "edit motion per round" +msgstr "" + +#: users/permissions.py +msgid "release draw to public" +msgstr "" + +#: users/permissions.py +msgid "release motion to public" +msgstr "" + +#: users/permissions.py +msgid "unrelease draw to public" +msgstr "" + +#: users/permissions.py +msgid "unrelease motion to public" +msgstr "" + +#: users/permissions.py +msgid "add debate start time" +msgstr "" + +#: users/permissions.py +msgid "view draws (for the briefing room)" +msgstr "" + +#: users/permissions.py +msgid "display motion (for the briefing room)" +msgstr "" + +#: users/permissions.py +msgid "view existing preformed panels" +msgstr "" + +#: users/permissions.py +msgid "edit preformed panels" +msgstr "" + +#: users/permissions.py +msgid "view the overviews of standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent team standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent speaker standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent replies standings" +msgstr "" + +#: users/permissions.py +msgid "view the most recent motions tab" +msgstr "" + +#: users/permissions.py +msgid "view the diversity tab" +msgstr "" + +#: users/permissions.py +msgid "view overview of judge feedback" +msgstr "" + +#: users/permissions.py +msgid "edit base scores of judges" +msgstr "" + +#: users/permissions.py +msgid "view feedback" +msgstr "" + +#: users/permissions.py +msgid "toggle ignore feedback" +msgstr "" + +#: users/permissions.py +msgid "toggle confirm feedback" +msgstr "" + +#: users/permissions.py +msgid "view feedback unsubmitted tab" +msgstr "" + +#: users/permissions.py +msgid "add feedback" +msgstr "" + +#: users/permissions.py +msgid "view adjudicator break" +msgstr "" + +#: users/permissions.py +msgid "edit adjudicator break" +msgstr "" + +#: users/permissions.py +msgid "edit feedback questions" +msgstr "" + +#: users/permissions.py +msgid "edit break eligibility" +msgstr "" + +#: users/permissions.py +msgid "view break eligibility" +msgstr "" + +#: users/permissions.py +msgid "edit break categories" +msgstr "" + +#: users/permissions.py +msgid "view break categories" +msgstr "" + +#: users/permissions.py +msgid "view speaker categories" +msgstr "" + +#: users/permissions.py +msgid "edit speaker categories" +msgstr "" + +#: users/permissions.py +msgid "view speaker eligibility" +msgstr "" + +#: users/permissions.py +msgid "edit speaker eligibility" +msgstr "" + +#: users/permissions.py +msgid "view break overview" +msgstr "" + +#: users/permissions.py +msgid "view breaks" +msgstr "" + +#: users/permissions.py +msgid "generate all breaks" +msgstr "" + +#: users/permissions.py +msgid "view private urls" +msgstr "" + +#: users/permissions.py +msgid "generate private URLs" +msgstr "" + +#: users/permissions.py +msgid "view checkins" +msgstr "" + +#: users/permissions.py +msgid "edit participant check-in" +msgstr "" + +#: users/permissions.py +msgid "edit room check-in" +msgstr "" + +#: users/permissions.py +msgid "edit round attributes" +msgstr "" + +#: users/permissions.py +msgid "delete rounds" +msgstr "" + +#: users/permissions.py +msgid "create rounds" +msgstr "" + +#: users/permissions.py +msgid "confirm rounds" +msgstr "" + +#: users/permissions.py +msgid "silence rounds" +msgstr "" + +#: users/permissions.py +msgid "view email statuses" +msgstr "" + +#: users/permissions.py +msgid "send participants email messages" +msgstr "" + +#: users/permissions.py +msgid "export DebateXML" +msgstr "" + +#: users/permissions.py +msgid "view settings" +msgstr "" + +#: users/permissions.py +msgid "edit settings" +msgstr "" + +#: users/permissions.py +msgid "edit general questions" +msgstr "" + +#: users/permissions.py +msgid "delete general questions" +msgstr "" + +#: users/permissions.py +msgid "view answers to general questions" +msgstr "" + +#: users/permissions.py +msgid "edit events" +msgstr "" + +#: users/permissions.py +msgid "view events" +msgstr "" + +#: users/permissions.py +msgid "view registration responses" +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "Hello!" +msgstr "" + +#: users/templates/account_invitation_email.html +#, python-format +msgid "An administrator for the Tabbycat site hosting %(name)s has invited you to create an user account on their site, at %(protocol)s://%(domain)s." +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "If you accept, please use the link below to activate your account" +msgstr "" + +#: users/templates/account_invitation_email.html +msgid "If you do not accept, there is no action to be taken." +msgstr "" + +#: users/templates/account_invitation_subject.txt +#, python-format +msgid "Invitation to join Tabbycat site for %(name)s" +msgstr "" + +#: users/templates/admin/auth/delete_user_warning.html +msgid "Warning: You shouldn't delete users from the database once they've done something, because the database logs actions taken by those users, and deleting the users also deletes the related logs. If you wish to deactivate a user account, go back to edit the user, click on the “Permissions” tab, unchecked the “Active” box, and save the user." +msgstr "" + +#: users/templates/invite_user.html +msgid "Back to Configuration" +msgstr "" + +#: users/templates/invite_user.html +msgctxt "button" +msgid "Invite User" +msgstr "" + +#: users/templates/invite_user.html +msgid "Note: if you submit this multiple times, multiple invite emails will be sent." +msgstr "" + +#: users/templates/signup.html +msgctxt "page title" +msgid "Create a new Account" +msgstr "" + +#: users/templates/signup.html +msgid "Create Account" +msgstr "" + +#: users/views.py +msgid "Whoops! It looks like someone's already created the first user account. Please log in." +msgstr "" + +#: users/views.py +#, python-format +msgid "Welcome! You've created an account for %s." +msgstr "" + +#: users/views.py +msgid "Invite User" +msgstr "" + +#: users/views.py +msgid "Successfully invited user to create an account for the tournament." +msgstr "" + +#: users/views.py +msgid "Accept Invitation" +msgstr "" + diff --git a/tabbycat/locale/sk/LC_MESSAGES/djangojs.po b/tabbycat/locale/sk/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000000..c891a58ee97 --- /dev/null +++ b/tabbycat/locale/sk/LC_MESSAGES/djangojs.po @@ -0,0 +1,554 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-14 04:50+1100\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/locale/en/LC_MESSAGES/djangojs.po\n" +"X-Crowdin-File-ID: 962\n" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Scan Using Camera" +msgstr "" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Stop Camera Scan" +msgstr "" + +#: checkins/templates/CheckInScanContainer.vue: +msgid "Turn On Sounds" +msgstr "" + +#. Translators: %1: Time of checkin, %2: Barcode number, %3: Name of "owner" +#: checkins/templates/CheckInScanContainer.vue: +msgid "%1 checked in %2: %3" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "All" +msgstr "" + +#. Translators: %1: Option name +#: checkins/templates/CheckInStatusContainer.vue: +msgid "By %1" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "No matching rooms found." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "No matching people found." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "This page will live-update with new check-ins as they occur although the initial list may be up to a minute old." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid " All" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid " All" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Click to check-in manually" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "saving..." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "This person does not have a check-in identifier so they can't be checked in" +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "If you want to view this page without the sidebar (i.e. for displaying to an auditorium) you can use the assistant version." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Open the assistant version." +msgstr "" + +#: checkins/templates/CheckInStatusContainer.vue: +msgid "Click to undo a check-in" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 of no institutional affiliation with identifier of %3" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 of no institutional affiliation with no assigned identifier" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 from %3 with identifier of %4" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2 from %3 with no assigned identifier" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1 (Present; id=%2)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1 (Absent; id=%2)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a team with speakers %2" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "%1, a %2" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Anonymous (due to team codes)" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Anon" +msgstr "" + +#: checkins/templates/PeopleStatusMixin.vue: +msgid "Independent" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (%2) with identifier of %3" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (no category) with identifier of %2" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (%2) with no assigned identifier" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "%1 (no category) with no assigned identifier" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "Uncategorised" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "No Category" +msgstr "" + +#: checkins/templates/VenuesStatusMixin.vue: +msgid "Priority %1" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 %4" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Chair)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Panellist)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "%1 %2 from %3 on %4 (Trainee)" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "ID %1," +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Room:" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Chair for Panel of %1" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Solo Chair" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Panellist" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: printing/templates/PrintableDebateInfo.vue: +msgid "Trainee" +msgstr "" + +#: printing/templates/PrintableBallotHeader.vue: +msgid "Team" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Mark speeches %1 to %2; %3." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Mark replies %1 to %2; %3." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Return ballots to %1." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "The motion is %1" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Debated" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Circle %1" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "%1: %2" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Aff Veto" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Neg Veto" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: printing/templates/PrintableTeamScores.vue: +msgid "%1:" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "tab entry" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "tab check" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: checkins/templates/PeopleStatusMixin.vue: +msgid "Unaffiliated" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "no ½ marks" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "½ marks are allowed" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "decimal marks are allowed" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "%1 (%2, %3)" +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "Adjudicating with %1." +msgstr "" + +#: printing/templates/PrintableDebateInfo.vue: +msgid "; " +msgstr "" + +#: printing/templates/PrintableFeedback.vue: +msgid "Did %1 deliver the adjudication?" +msgstr "" + +#: printing/templates/PrintableFeedback.vue: printing/templates/PrintableFeedbackQuestion.vue: +msgid "Yes" +msgstr "" + +#: printing/templates/PrintableFeedback.vue: +msgid "No, I am submitting feedback on:" +msgstr "" + +#: printing/templates/PrintableFeedbackQuestion.vue: +msgid "Unsure" +msgstr "" + +#: printing/templates/PrintableFeedbackQuestion.vue: +msgid "No" +msgstr "" + +#: printing/templates/PrintableScoresheet.vue: +msgid "Which team won the debate:" +msgstr "" + +#: printing/templates/PrintableScoresheet.vue: +msgid "By how many points did they win:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "%1, %2" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "IMPORTANT: Check and explicitly note if a speaker gives multiple speeches" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Score:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle the last digit of the %1's score:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle Rank:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Total:" +msgstr "" + +#: printing/templates/PrintableTeamScores.vue: +msgid "Circle the last digit of the team's total:" +msgstr "" + +#: templates/tables/TablesContainer.vue:8 +msgid "Find in Table" +msgstr "" + +#: templates/tables/CheckboxTables.vue:30 +msgid "Set All Breaking as Available" +msgstr "" + +#: templates/tables/CheckboxTables.vue:36 +msgid "Set all the availabilities to exactly match what they were in the previous round." +msgstr "" + +#: templates/tables/CheckboxTables.vue:37 +msgid "Match" +msgstr "" + +#: templates/tables/CheckboxTables.vue:41 +msgid "Set all availabilities to exactly match check-ins." +msgstr "" + +#: templates/tables/CheckboxTables.vue:44 +msgid "Match Check-Ins" +msgstr "" + +#: templates/tables/CheckboxTables.vue: +msgid "Set people as available only if they have a check-in and are currently unavailable — i.e. it will not overwrite any existing availabilities." +msgstr "" + +#: templates/tables/CheckboxTables.vue:47 +msgid "Copy From Check-Ins" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Ballots Status" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Latest Actions" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "No Actions Yet" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "Latest Results" +msgstr "" + +#: tournaments/templates/TournamentOverviewContainer.vue: +msgid "No Confirmed Results Yet" +msgstr "" + +#: participants/templates/DiversityContainer.vue:6 +msgid "Speaker Demographics" +msgstr "" + +#: participants/templates/DiversityContainer.vue:11 +msgid "No Gender Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:18 +msgid "No Speaker Categories Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:33 +msgid "Speaker Results" +msgstr "" + +#: participants/templates/DiversityContainer.vue:36 +msgid "speakers with gender data" +msgstr "" + +#: participants/templates/DiversityContainer.vue:38 +msgid "speaker scores total" +msgstr "" + +#: participants/templates/DiversityContainer.vue:49 +msgid "No Region Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:56 +msgid "Adjudicator Demographics" +msgstr "" + +#: participants/templates/DiversityContainer.vue:68 +msgid "No Position Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:83 +msgid "Adjudicator Results" +msgstr "" + +#: participants/templates/DiversityContainer.vue:86 +msgid "adjudicators with gender data" +msgstr "" + +#: participants/templates/DiversityContainer.vue:88 +msgid "feedback scores total" +msgstr "" + +#: participants/templates/DiversityContainer.vue:94 +msgid "No Adjudicator Ratings Information" +msgstr "" + +#: participants/templates/DiversityContainer.vue:99 +msgid "No Adjudicator-Adjudicator Feedback Information" +msgstr "" + +#: results/templates/ResultsStats.vue:10 +msgid "Checked-In" +msgstr "" + +#: results/templates/ResultsStats.vue:15 +msgid "Not Checked-In" +msgstr "" + +#: results/templates/ResultsStats.vue:19 +msgid "Ballot Check-Ins" +msgstr "" + +#: results/templates/ResultsStats.vue:26 +msgid "Unknown" +msgstr "" + +#: results/templates/ResultsStats.vue:31 +msgid "Unconfirmed" +msgstr "" + +#: results/templates/ResultsStats.vue:36 +msgid "Confirmed" +msgstr "" + +#: results/templates/ResultsStats.vue:40 +msgid "Ballot Statuses" +msgstr "" + +#: results/templates/BallotsCell.vue:18 +msgid "You cannot confirm this ballot because you entered it" +msgstr "" + +#: results/templates/BallotsCell.vue:34 +msgid "Add Ballot" +msgstr "" + +#: results/templates/BallotsCell.vue:79 +msgid "Re-Edit" +msgstr "" + +#: results/templates/BallotsCell.vue:81 +msgid "Review" +msgstr "" + +#: utils/templates/AutoSaveCounter.vue:4 +msgid "No changes" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:8 +msgid "Return to Draw" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:15 +msgid "Auto-Prioritise" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:17 +msgid "Auto-Allocate" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Break" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Gender" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Rank" +msgstr "" + +#: utils/templates/DragAndDropActions.vue:65 +msgid "Region" +msgstr "" + +#. Translators: Short for "Venue Category" +#: utils/templates/DragAndDropActions.vue:65 +msgid "Category" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:5 +msgid "The debate's bracket" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:9 +msgid "The bracket range of the hypothetical debate" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:20 +msgid "The total number of live break categories across all teams" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:26 +msgid "The estimated total number of live break categories across all teams of the hypothetical debate" +msgstr "" + +#: utils/templates/DragAndDropDebate.vue:33 +msgid "This debate's priority" +msgstr "" + +#: draw/templates/InlineTeam.vue:41 +msgid "No code name set" +msgstr "" + diff --git a/tabbycat/locale/uk/LC_MESSAGES/django.po b/tabbycat/locale/uk/LC_MESSAGES/django.po index 88db8b0a22b..a693478b8c4 100644 --- a/tabbycat/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:40+1000\n" -"PO-Revision-Date: 2025-07-05 23:48\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -404,7 +404,7 @@ msgstr "інституція" #: registration/models.py msgid "team" -msgstr "" +msgstr "команда" #: registration/models.py msgid "URL key" diff --git a/tabbycat/motions/locale/cs/LC_MESSAGES/django.po b/tabbycat/motions/locale/cs/LC_MESSAGES/django.po index 17aba91dacb..062177e4ee9 100644 --- a/tabbycat/motions/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/motions/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-24 07:48+1000\n" -"PO-Revision-Date: 2024-07-10 12:24\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -145,7 +145,7 @@ msgstr "" #: motions/statistics.py msgid "probably balanced" -msgstr "" +msgstr "pravděpodobně vyrovnaná" #: motions/statistics.py #, python-format @@ -156,7 +156,7 @@ msgstr "" #: motions/templates/motion_round_statistics.html #: motions/templates/public_motions.html msgid "View Info Slide" -msgstr "" +msgstr "Zobrazit Info Slide" #: motions/templates/motion_statistics_bp_elim.html #, python-format @@ -264,7 +264,7 @@ msgstr "" #, python-format msgid "%(count)s %(side)s win" msgid_plural "%(count)s %(side)s wins" -msgstr[0] "" +msgstr[0] "%(count)s %(side)s výhra" msgstr[1] "" msgstr[2] "%(count)s %(side)s výher" msgstr[3] "%(count)s %(side)s výher" @@ -364,7 +364,7 @@ msgstr[3] "" #, python-format msgid "Reveal Motion for %(round)s" msgid_plural "Reveal Motions for %(round)s" -msgstr[0] "" +msgstr[0] "Zveřejnit tezi pro %(round)s" msgstr[1] "" msgstr[2] "" msgstr[3] "" @@ -438,5 +438,5 @@ msgstr "" #: motions/views.py msgid "Motion Statistics" -msgstr "" +msgstr "Statistiky Tezí" diff --git a/tabbycat/motions/locale/el/LC_MESSAGES/django.po b/tabbycat/motions/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..ca3d09735b3 --- /dev/null +++ b/tabbycat/motions/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,406 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-24 07:48+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/motions/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 936\n" + +#: motions/apps.py motions/templates/public_motions.html +msgid "Motions" +msgstr "" + +#: motions/models.py +msgid "text" +msgstr "" + +#: motions/models.py +msgid "The full motion e.g., \"This House would straighten all bananas\"" +msgstr "" + +#: motions/models.py +msgid "reference" +msgstr "" + +#: motions/models.py +msgid "Shortcode for the motion, e.g., \"Bananas\"" +msgstr "" + +#: motions/models.py +msgid "info slide" +msgstr "" + +#: motions/models.py +msgid "The information slide for this topic; if it has one" +msgstr "" + +#: motions/models.py +msgid "tournament" +msgstr "" + +#: motions/models.py +msgid "rounds" +msgstr "" + +#: motions/models.py +msgid "motion" +msgstr "" + +#: motions/models.py +msgid "motions" +msgstr "" + +#: motions/models.py +msgid "debate team" +msgstr "" + +#: motions/models.py +msgid "preferences" +msgstr "" + +#: motions/models.py +msgid "ballot submission" +msgstr "" + +#: motions/models.py +msgid "debate team motion preference" +msgstr "" + +#: motions/models.py +msgid "debate team motion preferences" +msgstr "" + +#: motions/models.py +msgid "round" +msgstr "" + +#: motions/models.py +msgid "sequence number" +msgstr "" + +#: motions/models.py +msgid "The order in which motions are displayed" +msgstr "" + +#: motions/models.py +msgid "round motion" +msgstr "" + +#: motions/models.py +msgid "round motions" +msgstr "" + +#: motions/statistics.py +msgid "extremely strong evidence" +msgstr "" + +#: motions/statistics.py +msgid "strong evidence" +msgstr "" + +#: motions/statistics.py +msgid "moderate evidence" +msgstr "" + +#: motions/statistics.py +msgid "weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "very weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "extremely weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "balance inconclusive" +msgstr "" + +#: motions/statistics.py +msgid "too few debates to get a meaningful statistic" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "imbalanced at %(level)s level" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "χ² statistic is %(chisq).3f, providing %(evidence)s to suggest that this motion was imbalanced — at a %(level)s level of significance." +msgstr "" + +#: motions/statistics.py +msgid "probably balanced" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "χ² statistic is %(chisq).3f, providing insufficient evidence to suggest that this motion was imbalanced at any level of significance." +msgstr "" + +#: motions/templates/motion_global_statistics.html +#: motions/templates/motion_round_statistics.html +#: motions/templates/public_motions.html +msgid "View Info Slide" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "results from %(ndebates)s debate" +msgid_plural "results from %(ndebates)s debates" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(advancing)s of %(ndebates)s team on %(side)s (%(percentage)s%%) advanced" +msgid_plural "%(advancing)s of %(ndebates)s teams on %(side)s (%(percentage)s%%) advanced" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(eliminated)s of %(ndebates)s team on %(side)s (%(percentage)s%%) were eliminated" +msgid_plural "%(eliminated)s of %(ndebates)s teams on %(side)s (%(percentage)s%%) were eliminated" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_bp_elim.html +msgid "advanced" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgctxt "abbreviation for 'advanced', used when not enough space" +msgid "adv." +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgid "eliminated" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgctxt "abbreviation for 'eliminated', used when not enough space" +msgid "elim." +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(side)s results distribution" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#: motions/templates/motion_statistics_bp_prelim.html +msgid "No results for this motion" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Government" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Opposition" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Average Points per bench" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Opening" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Closing" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Average Points per half" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "average points per position (%(ndebates)s debate)" +msgid_plural "average points per position (%(ndebates)s debates)" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "%(count)s result for %(side)s (%(percentage)s%%) were for %(points)s points" +msgid_plural "%(count)s results for %(side)s (%(percentage)s%%) were for %(points)s points" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "%(side)s results" +msgstr "" + +#: motions/templates/motion_statistics_twoteam.html +#, python-format +msgid "%(count)s %(side)s win" +msgid_plural "%(count)s %(side)s wins" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_twoteam.html +msgid "No teams debated this motion" +msgstr "" + +#: motions/templates/motion_statistics_twoteam.html +#, python-format +msgid "%(count)s %(side)s veto" +msgid_plural "%(count)s %(side)s vetoes" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motion_statistics_twoteam.html +msgid "No teams vetoed this motion" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Edit Motion" +msgid_plural "Edit Motions" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motions_edit.html +msgid "Display Draw" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "This will replace all existing motions for this round. The motions themselves will still be in the database." +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Reuse Motions from Last Round" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Use Existing Motions" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "The motion for this round is currently publicly displayed because it was released. Any changes made here will be publicly visible as well as soon as they are saved." +msgid_plural "The motions for this round are currently publicly displayed because they were released. Any changes made here will be publicly visible as well as soon as they are saved." +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motions_edit.html +msgid "Save Motion" +msgid_plural "Save Motions" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/motions_info.html +msgid "Info Slide" +msgstr "" + +#: motions/templates/public_motions.html +msgid "There are no motions available for this round." +msgstr "" + +#: motions/templates/public_motions.html +msgid "The motions for this round have not been released." +msgstr "" + +#: motions/templates/public_motions.html +msgid "The motion for this round has not been released." +msgstr "" + +#: motions/templates/show.html +#, python-format +msgid "Motion for %(round)s" +msgid_plural "Motions for %(round)s" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/show.html +#, python-format +msgid "Reveal Info Slide for %(round)s" +msgid_plural "Reveal Info Slides for %(round)s" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/show.html +#, python-format +msgid "Reveal Motion for %(round)s" +msgid_plural "Reveal Motions for %(round)s" +msgstr[0] "" +msgstr[1] "" + +#: motions/templates/show.html +msgid "There are no motions for this round entered into Tabbycat." +msgstr "" + +#: motions/utils.py +msgid "Not all latest ballots have the same motion. The correct motion must be set manually." +msgstr "" + +#: motions/utils.py +msgid "Motion vetos are inconsistent; they must be set manually." +msgstr "" + +#: motions/views.py +msgid "The motion has been saved." +msgstr "" + +#: motions/views.py +#, python-format +msgid "%(count)d motion has been saved." +msgid_plural "%(count)d motions have been saved." +msgstr[0] "" +msgstr[1] "" + +#: motions/views.py +#, python-format +msgid "%(count)d motion has been deleted." +msgid_plural "%(count)d motions have been deleted." +msgstr[0] "" +msgstr[1] "" + +#: motions/views.py +msgid "Motions cannot be copied to the first round." +msgstr "" + +#: motions/views.py +#, python-format +msgid "Reused the motion from the previous round." +msgid_plural "Reused the %(count)d motions from the previous round." +msgstr[0] "" +msgstr[1] "" + +#: motions/views.py +msgid "Released the motion." +msgid_plural "Released the motions." +msgstr[0] "" +msgstr[1] "" + +#: motions/views.py +msgid "Unreleased the motion." +msgid_plural "Unreleased the motions." +msgstr[0] "" +msgstr[1] "" + +#: motions/views.py +msgid "Round Motions" +msgstr "" + +#: motions/views.py +msgid "Motion Statistics" +msgstr "" + diff --git a/tabbycat/motions/locale/sk/LC_MESSAGES/django.po b/tabbycat/motions/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a4e66e11391 --- /dev/null +++ b/tabbycat/motions/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,442 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-24 07:48+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: \n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/motions/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 936\n" + +#: motions/apps.py motions/templates/public_motions.html +msgid "Motions" +msgstr "" + +#: motions/models.py +msgid "text" +msgstr "" + +#: motions/models.py +msgid "The full motion e.g., \"This House would straighten all bananas\"" +msgstr "" + +#: motions/models.py +msgid "reference" +msgstr "" + +#: motions/models.py +msgid "Shortcode for the motion, e.g., \"Bananas\"" +msgstr "" + +#: motions/models.py +msgid "info slide" +msgstr "" + +#: motions/models.py +msgid "The information slide for this topic; if it has one" +msgstr "" + +#: motions/models.py +msgid "tournament" +msgstr "" + +#: motions/models.py +msgid "rounds" +msgstr "" + +#: motions/models.py +msgid "motion" +msgstr "" + +#: motions/models.py +msgid "motions" +msgstr "" + +#: motions/models.py +msgid "debate team" +msgstr "" + +#: motions/models.py +msgid "preferences" +msgstr "" + +#: motions/models.py +msgid "ballot submission" +msgstr "" + +#: motions/models.py +msgid "debate team motion preference" +msgstr "" + +#: motions/models.py +msgid "debate team motion preferences" +msgstr "" + +#: motions/models.py +msgid "round" +msgstr "" + +#: motions/models.py +msgid "sequence number" +msgstr "" + +#: motions/models.py +msgid "The order in which motions are displayed" +msgstr "" + +#: motions/models.py +msgid "round motion" +msgstr "" + +#: motions/models.py +msgid "round motions" +msgstr "" + +#: motions/statistics.py +msgid "extremely strong evidence" +msgstr "" + +#: motions/statistics.py +msgid "strong evidence" +msgstr "" + +#: motions/statistics.py +msgid "moderate evidence" +msgstr "" + +#: motions/statistics.py +msgid "weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "very weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "extremely weak evidence" +msgstr "" + +#: motions/statistics.py +msgid "balance inconclusive" +msgstr "" + +#: motions/statistics.py +msgid "too few debates to get a meaningful statistic" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "imbalanced at %(level)s level" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "χ² statistic is %(chisq).3f, providing %(evidence)s to suggest that this motion was imbalanced — at a %(level)s level of significance." +msgstr "" + +#: motions/statistics.py +msgid "probably balanced" +msgstr "" + +#: motions/statistics.py +#, python-format +msgid "χ² statistic is %(chisq).3f, providing insufficient evidence to suggest that this motion was imbalanced at any level of significance." +msgstr "" + +#: motions/templates/motion_global_statistics.html +#: motions/templates/motion_round_statistics.html +#: motions/templates/public_motions.html +msgid "View Info Slide" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "results from %(ndebates)s debate" +msgid_plural "results from %(ndebates)s debates" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(advancing)s of %(ndebates)s team on %(side)s (%(percentage)s%%) advanced" +msgid_plural "%(advancing)s of %(ndebates)s teams on %(side)s (%(percentage)s%%) advanced" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(eliminated)s of %(ndebates)s team on %(side)s (%(percentage)s%%) were eliminated" +msgid_plural "%(eliminated)s of %(ndebates)s teams on %(side)s (%(percentage)s%%) were eliminated" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_bp_elim.html +msgid "advanced" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgctxt "abbreviation for 'advanced', used when not enough space" +msgid "adv." +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgid "eliminated" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +msgctxt "abbreviation for 'eliminated', used when not enough space" +msgid "elim." +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#, python-format +msgid "%(side)s results distribution" +msgstr "" + +#: motions/templates/motion_statistics_bp_elim.html +#: motions/templates/motion_statistics_bp_prelim.html +msgid "No results for this motion" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Government" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Opposition" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Average Points per bench" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Opening" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Closing" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +msgid "Average Points per half" +msgstr "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "average points per position (%(ndebates)s debate)" +msgid_plural "average points per position (%(ndebates)s debates)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "%(count)s result for %(side)s (%(percentage)s%%) were for %(points)s points" +msgid_plural "%(count)s results for %(side)s (%(percentage)s%%) were for %(points)s points" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_bp_prelim.html +#, python-format +msgid "%(side)s results" +msgstr "" + +#: motions/templates/motion_statistics_twoteam.html +#, python-format +msgid "%(count)s %(side)s win" +msgid_plural "%(count)s %(side)s wins" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_twoteam.html +msgid "No teams debated this motion" +msgstr "" + +#: motions/templates/motion_statistics_twoteam.html +#, python-format +msgid "%(count)s %(side)s veto" +msgid_plural "%(count)s %(side)s vetoes" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motion_statistics_twoteam.html +msgid "No teams vetoed this motion" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Edit Motion" +msgid_plural "Edit Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motions_edit.html +msgid "Display Draw" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "This will replace all existing motions for this round. The motions themselves will still be in the database." +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Reuse Motions from Last Round" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "Use Existing Motions" +msgstr "" + +#: motions/templates/motions_edit.html +msgid "The motion for this round is currently publicly displayed because it was released. Any changes made here will be publicly visible as well as soon as they are saved." +msgid_plural "The motions for this round are currently publicly displayed because they were released. Any changes made here will be publicly visible as well as soon as they are saved." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motions_edit.html +msgid "Save Motion" +msgid_plural "Save Motions" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/motions_info.html +msgid "Info Slide" +msgstr "" + +#: motions/templates/public_motions.html +msgid "There are no motions available for this round." +msgstr "" + +#: motions/templates/public_motions.html +msgid "The motions for this round have not been released." +msgstr "" + +#: motions/templates/public_motions.html +msgid "The motion for this round has not been released." +msgstr "" + +#: motions/templates/show.html +#, python-format +msgid "Motion for %(round)s" +msgid_plural "Motions for %(round)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/show.html +#, python-format +msgid "Reveal Info Slide for %(round)s" +msgid_plural "Reveal Info Slides for %(round)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/show.html +#, python-format +msgid "Reveal Motion for %(round)s" +msgid_plural "Reveal Motions for %(round)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/templates/show.html +msgid "There are no motions for this round entered into Tabbycat." +msgstr "" + +#: motions/utils.py +msgid "Not all latest ballots have the same motion. The correct motion must be set manually." +msgstr "" + +#: motions/utils.py +msgid "Motion vetos are inconsistent; they must be set manually." +msgstr "" + +#: motions/views.py +msgid "The motion has been saved." +msgstr "" + +#: motions/views.py +#, python-format +msgid "%(count)d motion has been saved." +msgid_plural "%(count)d motions have been saved." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/views.py +#, python-format +msgid "%(count)d motion has been deleted." +msgid_plural "%(count)d motions have been deleted." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/views.py +msgid "Motions cannot be copied to the first round." +msgstr "" + +#: motions/views.py +#, python-format +msgid "Reused the motion from the previous round." +msgid_plural "Reused the %(count)d motions from the previous round." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/views.py +msgid "Released the motion." +msgid_plural "Released the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/views.py +msgid "Unreleased the motion." +msgid_plural "Unreleased the motions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: motions/views.py +msgid "Round Motions" +msgstr "" + +#: motions/views.py +msgid "Motion Statistics" +msgstr "" + diff --git a/tabbycat/notifications/locale/el/LC_MESSAGES/django.po b/tabbycat/notifications/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..9f4863b4f87 --- /dev/null +++ b/tabbycat/notifications/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,420 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/notifications/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 938\n" + +#: notifications/apps.py +msgid "Notifications" +msgstr "" + +#: notifications/forms.py +msgid "Recipient email address" +msgstr "" + +#: notifications/forms.py +#, python-format +msgid "Test email from %(host)s" +msgstr "" + +#: notifications/forms.py +#, python-format +msgid "Congratulations! If you're reading this message, your email backend on %(host)s looks all good to go!" +msgstr "" + +#: notifications/forms.py +msgid "Subject" +msgstr "" + +#: notifications/forms.py +msgid "Message" +msgstr "" + +#: notifications/models.py +msgid "email" +msgstr "" + +#: notifications/models.py +msgid "SMS" +msgstr "" + +#: notifications/models.py +msgid "recipient" +msgstr "" + +#: notifications/models.py +msgid "method" +msgstr "" + +#: notifications/models.py +msgid "context" +msgstr "" + +#: notifications/models.py +msgid "notification" +msgstr "" + +#: notifications/models.py +msgid "timestamp" +msgstr "" + +#: notifications/models.py +msgid "sent message" +msgstr "" + +#: notifications/models.py +msgid "sent messages" +msgstr "" + +#: notifications/models.py +msgid "team points" +msgstr "" + +#: notifications/models.py +msgid "ballot confirmed" +msgstr "" + +#: notifications/models.py +msgid "feedback URL" +msgstr "" + +#: notifications/models.py +msgid "ballot URL" +msgstr "" + +#: notifications/models.py +msgid "landing page URL" +msgstr "" + +#: notifications/models.py +msgid "adjudicator draw released" +msgstr "" + +#: notifications/models.py +msgid "team registration" +msgstr "" + +#: notifications/models.py +msgid "adjudicator registration" +msgstr "" + +#: notifications/models.py +msgid "motion(s) released" +msgstr "" + +#: notifications/models.py +msgid "team draw released" +msgstr "" + +#: notifications/models.py +msgid "custom message" +msgstr "" + +#: notifications/models.py +msgid "event" +msgstr "" + +#: notifications/models.py +msgid "tournament" +msgstr "" + +#: notifications/models.py +msgid "round" +msgstr "" + +#: notifications/models.py +msgid "subject template" +msgstr "" + +#: notifications/models.py +msgid "body template" +msgstr "" + +#: notifications/models.py +msgid "bulk notification" +msgstr "" + +#: notifications/models.py +msgid "bulk notifications" +msgstr "" + +#: notifications/models.py +msgid "Processed" +msgstr "" + +#: notifications/models.py +msgid "Dropped" +msgstr "" + +#: notifications/models.py +msgid "Deferred" +msgstr "" + +#: notifications/models.py +msgid "Delivered" +msgstr "" + +#: notifications/models.py +msgid "Bounced" +msgstr "" + +#: notifications/models.py +msgid "Opened" +msgstr "" + +#: notifications/models.py +msgid "Clicked" +msgstr "" + +#: notifications/models.py +msgid "Unsubscribed" +msgstr "" + +#: notifications/models.py +msgid "Marked as spam" +msgstr "" + +#: notifications/models.py +msgid "Unsubscribed from group" +msgstr "" + +#: notifications/models.py +msgid "Resubscribed to group" +msgstr "" + +#: notifications/models.py +msgid "Failed to send" +msgstr "" + +#: notifications/models.py +msgid "email message" +msgstr "" + +#: notifications/models.py +msgid "email status" +msgstr "" + +#: notifications/models.py +msgid "email statuses" +msgstr "" + +#: notifications/templates/email_participants.html +#, python-format +msgid "You have not specified a reply-to address. This means that participants may not reply to the message if they have questions. Please set one in the Notifications section of the preferences." +msgstr "" + +#: notifications/templates/email_participants.html +#, python-format +msgid "The webhook URL for use in SendGrid is %(notifications_webhook_url)s. Please point the HTTP POST URL in SendGrid to that." +msgstr "" + +#: notifications/templates/email_participants.html +msgid "Send Message(s)" +msgstr "" + +#: notifications/templates/email_statuses.html +msgid "Emails can be sent by Tabbycat for a variety of purposes. Emails are sent when specific preferences are enabled (i.e. enabling Ballot Receipts) or through actions available on specific pages (i.e. the Draw Display page for matchups; or the Participants page for team registration). This page shows the status of previously-sent emails." +msgstr "" + +#: notifications/templates/notifications_nav.html notifications/views.py +msgid "Email Statuses" +msgstr "" + +#: notifications/templates/notifications_nav.html +#: notifications/templates/test_email.html +msgid "Send Test Email" +msgstr "" + +#: notifications/templates/notifications_nav.html +msgid "Send Custom Email" +msgstr "" + +#: notifications/templates/test_email.html +msgctxt "page title" +msgid "Send Test Email" +msgstr "" + +#: notifications/templates/test_email.html +msgid "You can use this form to send a test email, to check that your email backend settings are working, before you try to send email notifications to participants." +msgstr "" + +#: notifications/templates/test_email.html +#, python-format +msgid "The email will be sent from: %(default_from_email)s. If this doesn't look right, change the DEFAULT_FROM_EMAIL config var in Heroku (or environment variable)." +msgstr "" + +#: notifications/templates/test_email.html +msgid "Go back to the site home page" +msgstr "" + +#: notifications/utils.py +msgid "the chair" +msgstr "" + +#: notifications/utils.py +msgid "the only" +msgstr "" + +#: notifications/utils.py +msgid "a panellist" +msgstr "" + +#: notifications/utils.py +msgid "a trainee" +msgstr "" + +#: notifications/utils.py +msgid "TBA" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "%(tournament)s %(round)s @ %(room)s" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(side)s: %(team)s (%(points)d points with %(speaks)s total speaks)" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(side)s: %(team)s (%(points)s - %(speaks)s total speaks)" +msgstr "" + +#: notifications/utils.py +msgid "Win" +msgstr "" + +#: notifications/utils.py +msgid "Loss" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(pos)s: %(speaker)s (%(score)s)
  • " +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(text)s (%(ref)s)
  • " +msgstr "" + +#: notifications/utils.py +msgid ", " +msgstr "" + +#: notifications/views.py +#, python-format +msgid "The email (SMTP) server returned an error sending the test email: [SMTP code %(code)d] %(error)s" +msgstr "" + +#: notifications/views.py +msgid "Hint: If the error is about sender identity verification in SendGrid, and you've already completed the steps in SendGrid, it may be that you need to update the DEFAULT_FROM_EMAIL config var in Heroku to match your verified sender identity." +msgstr "" + +#: notifications/views.py +#, python-format +msgid "There was an error sending the test email: %(error)s" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "A test email has been sent to %(recipient)s." +msgstr "" + +#: notifications/views.py +msgid "N/A" +msgstr "" + +#: notifications/views.py +msgid "Not known" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "%(status)s @ %(time)s" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "@ %s" +msgstr "" + +#: notifications/views.py +msgid "Timeline" +msgstr "" + +#: notifications/views.py +msgid "Participant" +msgstr "" + +#: notifications/views.py +msgid "Email address" +msgstr "" + +#: notifications/views.py +msgid "Status" +msgstr "" + +#: notifications/views.py +msgid "Time" +msgstr "" + +#: notifications/views.py +msgid "Email Participants" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "%(email_count)s email has been queued for sending." +msgid_plural "%(email_count)s emails have been queued for sending." +msgstr[0] "" +msgstr[1] "" + +#: notifications/views.py +msgid "No emails were sent — likely because no recipients were selected." +msgstr "" + +#: notifications/views.py +msgid "Send Email" +msgstr "" + +#: notifications/views.py +msgid "Not Provided" +msgstr "" + +#: notifications/views.py +msgid "Role" +msgstr "" + +#: notifications/views.py +msgid "Adjudicator" +msgstr "" + +#: notifications/views.py +msgid "Speaker" +msgstr "" + +#: notifications/views.py +msgid "Speakers" +msgstr "" + +#: notifications/views.py +msgid "Adjudicators" +msgstr "" + diff --git a/tabbycat/notifications/locale/sk/LC_MESSAGES/django.po b/tabbycat/notifications/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..7b5d738a04a --- /dev/null +++ b/tabbycat/notifications/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,422 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/notifications/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 938\n" + +#: notifications/apps.py +msgid "Notifications" +msgstr "" + +#: notifications/forms.py +msgid "Recipient email address" +msgstr "" + +#: notifications/forms.py +#, python-format +msgid "Test email from %(host)s" +msgstr "" + +#: notifications/forms.py +#, python-format +msgid "Congratulations! If you're reading this message, your email backend on %(host)s looks all good to go!" +msgstr "" + +#: notifications/forms.py +msgid "Subject" +msgstr "" + +#: notifications/forms.py +msgid "Message" +msgstr "" + +#: notifications/models.py +msgid "email" +msgstr "" + +#: notifications/models.py +msgid "SMS" +msgstr "" + +#: notifications/models.py +msgid "recipient" +msgstr "" + +#: notifications/models.py +msgid "method" +msgstr "" + +#: notifications/models.py +msgid "context" +msgstr "" + +#: notifications/models.py +msgid "notification" +msgstr "" + +#: notifications/models.py +msgid "timestamp" +msgstr "" + +#: notifications/models.py +msgid "sent message" +msgstr "" + +#: notifications/models.py +msgid "sent messages" +msgstr "" + +#: notifications/models.py +msgid "team points" +msgstr "" + +#: notifications/models.py +msgid "ballot confirmed" +msgstr "" + +#: notifications/models.py +msgid "feedback URL" +msgstr "" + +#: notifications/models.py +msgid "ballot URL" +msgstr "" + +#: notifications/models.py +msgid "landing page URL" +msgstr "" + +#: notifications/models.py +msgid "adjudicator draw released" +msgstr "" + +#: notifications/models.py +msgid "team registration" +msgstr "" + +#: notifications/models.py +msgid "adjudicator registration" +msgstr "" + +#: notifications/models.py +msgid "motion(s) released" +msgstr "" + +#: notifications/models.py +msgid "team draw released" +msgstr "" + +#: notifications/models.py +msgid "custom message" +msgstr "" + +#: notifications/models.py +msgid "event" +msgstr "" + +#: notifications/models.py +msgid "tournament" +msgstr "" + +#: notifications/models.py +msgid "round" +msgstr "" + +#: notifications/models.py +msgid "subject template" +msgstr "" + +#: notifications/models.py +msgid "body template" +msgstr "" + +#: notifications/models.py +msgid "bulk notification" +msgstr "" + +#: notifications/models.py +msgid "bulk notifications" +msgstr "" + +#: notifications/models.py +msgid "Processed" +msgstr "" + +#: notifications/models.py +msgid "Dropped" +msgstr "" + +#: notifications/models.py +msgid "Deferred" +msgstr "" + +#: notifications/models.py +msgid "Delivered" +msgstr "" + +#: notifications/models.py +msgid "Bounced" +msgstr "" + +#: notifications/models.py +msgid "Opened" +msgstr "" + +#: notifications/models.py +msgid "Clicked" +msgstr "" + +#: notifications/models.py +msgid "Unsubscribed" +msgstr "" + +#: notifications/models.py +msgid "Marked as spam" +msgstr "" + +#: notifications/models.py +msgid "Unsubscribed from group" +msgstr "" + +#: notifications/models.py +msgid "Resubscribed to group" +msgstr "" + +#: notifications/models.py +msgid "Failed to send" +msgstr "" + +#: notifications/models.py +msgid "email message" +msgstr "" + +#: notifications/models.py +msgid "email status" +msgstr "" + +#: notifications/models.py +msgid "email statuses" +msgstr "" + +#: notifications/templates/email_participants.html +#, python-format +msgid "You have not specified a reply-to address. This means that participants may not reply to the message if they have questions. Please set one in the Notifications section of the preferences." +msgstr "" + +#: notifications/templates/email_participants.html +#, python-format +msgid "The webhook URL for use in SendGrid is %(notifications_webhook_url)s. Please point the HTTP POST URL in SendGrid to that." +msgstr "" + +#: notifications/templates/email_participants.html +msgid "Send Message(s)" +msgstr "" + +#: notifications/templates/email_statuses.html +msgid "Emails can be sent by Tabbycat for a variety of purposes. Emails are sent when specific preferences are enabled (i.e. enabling Ballot Receipts) or through actions available on specific pages (i.e. the Draw Display page for matchups; or the Participants page for team registration). This page shows the status of previously-sent emails." +msgstr "" + +#: notifications/templates/notifications_nav.html notifications/views.py +msgid "Email Statuses" +msgstr "" + +#: notifications/templates/notifications_nav.html +#: notifications/templates/test_email.html +msgid "Send Test Email" +msgstr "" + +#: notifications/templates/notifications_nav.html +msgid "Send Custom Email" +msgstr "" + +#: notifications/templates/test_email.html +msgctxt "page title" +msgid "Send Test Email" +msgstr "" + +#: notifications/templates/test_email.html +msgid "You can use this form to send a test email, to check that your email backend settings are working, before you try to send email notifications to participants." +msgstr "" + +#: notifications/templates/test_email.html +#, python-format +msgid "The email will be sent from: %(default_from_email)s. If this doesn't look right, change the DEFAULT_FROM_EMAIL config var in Heroku (or environment variable)." +msgstr "" + +#: notifications/templates/test_email.html +msgid "Go back to the site home page" +msgstr "" + +#: notifications/utils.py +msgid "the chair" +msgstr "" + +#: notifications/utils.py +msgid "the only" +msgstr "" + +#: notifications/utils.py +msgid "a panellist" +msgstr "" + +#: notifications/utils.py +msgid "a trainee" +msgstr "" + +#: notifications/utils.py +msgid "TBA" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "%(tournament)s %(round)s @ %(room)s" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(side)s: %(team)s (%(points)d points with %(speaks)s total speaks)" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(side)s: %(team)s (%(points)s - %(speaks)s total speaks)" +msgstr "" + +#: notifications/utils.py +msgid "Win" +msgstr "" + +#: notifications/utils.py +msgid "Loss" +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(pos)s: %(speaker)s (%(score)s)
  • " +msgstr "" + +#: notifications/utils.py +#, python-format +msgid "
  • %(text)s (%(ref)s)
  • " +msgstr "" + +#: notifications/utils.py +msgid ", " +msgstr "" + +#: notifications/views.py +#, python-format +msgid "The email (SMTP) server returned an error sending the test email: [SMTP code %(code)d] %(error)s" +msgstr "" + +#: notifications/views.py +msgid "Hint: If the error is about sender identity verification in SendGrid, and you've already completed the steps in SendGrid, it may be that you need to update the DEFAULT_FROM_EMAIL config var in Heroku to match your verified sender identity." +msgstr "" + +#: notifications/views.py +#, python-format +msgid "There was an error sending the test email: %(error)s" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "A test email has been sent to %(recipient)s." +msgstr "" + +#: notifications/views.py +msgid "N/A" +msgstr "" + +#: notifications/views.py +msgid "Not known" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "%(status)s @ %(time)s" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "@ %s" +msgstr "" + +#: notifications/views.py +msgid "Timeline" +msgstr "" + +#: notifications/views.py +msgid "Participant" +msgstr "" + +#: notifications/views.py +msgid "Email address" +msgstr "" + +#: notifications/views.py +msgid "Status" +msgstr "" + +#: notifications/views.py +msgid "Time" +msgstr "" + +#: notifications/views.py +msgid "Email Participants" +msgstr "" + +#: notifications/views.py +#, python-format +msgid "%(email_count)s email has been queued for sending." +msgid_plural "%(email_count)s emails have been queued for sending." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: notifications/views.py +msgid "No emails were sent — likely because no recipients were selected." +msgstr "" + +#: notifications/views.py +msgid "Send Email" +msgstr "" + +#: notifications/views.py +msgid "Not Provided" +msgstr "" + +#: notifications/views.py +msgid "Role" +msgstr "" + +#: notifications/views.py +msgid "Adjudicator" +msgstr "" + +#: notifications/views.py +msgid "Speaker" +msgstr "" + +#: notifications/views.py +msgid "Speakers" +msgstr "" + +#: notifications/views.py +msgid "Adjudicators" +msgstr "" + diff --git a/tabbycat/options/locale/el/LC_MESSAGES/django.po b/tabbycat/options/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..e648a62a656 --- /dev/null +++ b/tabbycat/options/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1914 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/options/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 940\n" + +#: options/apps.py +msgid "Tournament Options" +msgstr "" + +#: options/forms.py +msgid "Mininum score must be less than maximum score" +msgstr "" + +#: options/forms.py +msgid "Intermediate 1 or 2 require preallocated sides" +msgstr "" + +#: options/forms.py +msgid "Four-team formats require consensus ballots" +msgstr "" + +#: options/forms.py +msgid "Must set a password if using a password is enabled" +msgstr "" + +#: options/forms.py +msgid "Showing team institutions defeats the purpose of code names" +msgstr "" + +#: options/models.py +msgid "instance" +msgstr "" + +#: options/models.py +msgid "tournament preference" +msgstr "" + +#: options/models.py +msgid "tournament preferences" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Score Rules" +msgstr "" + +#: options/preferences.py +msgid "Minimum allowed score for substantive speeches" +msgstr "" + +#: options/preferences.py +msgid "Minimum speaker score" +msgstr "" + +#: options/preferences.py +msgid "Maximum speaker score" +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed score for substantive speeches" +msgstr "" + +#: options/preferences.py +msgid "Speaker score step" +msgstr "" + +#: options/preferences.py +msgid "Score steps allowed for substantive speeches, e.g. full points (1) or half points (0.5)" +msgstr "" + +#: options/preferences.py +msgid "The largest amount by which one team can beat another (0 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Maximum margin" +msgstr "" + +#: options/preferences.py +msgid "Minimum allowed score for reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Minimum reply score" +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed score for reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Maximum reply score" +msgstr "" + +#: options/preferences.py +msgid "Score steps allowed for reply speeches, e.g. full points (1) or half points (0.5)" +msgstr "" + +#: options/preferences.py +msgid "Reply score step" +msgstr "" + +#: options/preferences.py +msgid "If checked, a team's winning margin includes dissenting adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Margin includes dissenters" +msgstr "" + +#: options/preferences.py +msgid "Any explanatory text needed to introduce the ballot form, e.g. speaker scale" +msgstr "" + +#: options/preferences.py +msgid "Ballot introduction/explanation" +msgstr "" + +#: options/preferences.py +msgid "If checked, all speaker scores, including for duplicate speeches, will be counted for team scores" +msgstr "" + +#: options/preferences.py +msgid "Team score includes ghosts" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Draw Rules" +msgstr "" + +#: options/preferences.py +msgid "The auto-allocator will only take adjudicators at or above this score as voting panellists" +msgstr "" + +#: options/preferences.py +msgid "Minimum adjudicator score to vote" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by adjudicator auto-allocator for conflicts" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator conflict penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by adjudicator auto-allocator for history" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator history penalty" +msgstr "" + +#: options/preferences.py +msgid "Penality applied by preformed panel auto-allocator for priority mismatch" +msgstr "" + +#: options/preferences.py +msgid "Importance mismatch penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams seeing their own institution" +msgstr "" + +#: options/preferences.py +msgid "Team institution penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams seeing each other twice or more" +msgstr "" + +#: options/preferences.py +msgid "Team history penalty" +msgstr "" + +#: options/preferences.py +msgid "If checked, the draw will try to avoid pairing teams against their own institution" +msgstr "" + +#: options/preferences.py +msgid "Avoid same institution" +msgstr "" + +#: options/preferences.py +msgid "If checked, the draw will try to avoid having teams see each other twice" +msgstr "" + +#: options/preferences.py +msgid "Avoid team history" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams being in a pullup many times. Leave 0 for no penalty." +msgstr "" + +#: options/preferences.py +msgid "Previously saw pullup penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by minimum cost matching to prefer pairings that balance sides." +msgstr "" + +#: options/preferences.py +msgid "Side balance penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by minimum cost matching to prefer pairings that follow the draw pairing method." +msgstr "" + +#: options/preferences.py +msgid "Pairing deviation penalty" +msgstr "" + +#: options/preferences.py +msgid "Hard preference applied by minimum cost matching to disallow pairings where a team would debate more than this many times on the same side. WARNING: if you set this to a low value, the draw algorithm may be unable to find a valid draw." +msgstr "" + +#: options/preferences.py +msgid "Maximum number of times per side" +msgstr "" + +#: options/preferences.py +msgid "How odd brackets are resolved (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Odd bracket resolution method" +msgstr "" + +#: options/preferences.py +msgid "Pull up from top" +msgstr "" + +#: options/preferences.py +msgid "Pull up from bottom" +msgstr "" + +#: options/preferences.py +msgid "Pull up from middle" +msgstr "" + +#: options/preferences.py +msgid "Pull up at random" +msgstr "" + +#: options/preferences.py +msgid "Intermediate brackets" +msgstr "" + +#: options/preferences.py +msgid "Intermediate brackets with bubble-up-bubble-down" +msgstr "" + +#: options/preferences.py +msgid "Intermediate 1 (pre-allocated sides)" +msgstr "" + +#: options/preferences.py +msgid "Intermediate 2 (pre-allocated sides)" +msgstr "" + +#: options/preferences.py +msgid "Pull up from the lowest draw strength by rank" +msgstr "" + +#: options/preferences.py +msgid "Pull up from the least pulled up, then the lowest draw strength by rank" +msgstr "" + +#: options/preferences.py +msgid "How affirmative/negative positions are assigned (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Side allocations method" +msgstr "" + +#: options/preferences.py +msgid "Random" +msgstr "" + +#: options/preferences.py +msgid "Balance" +msgstr "" + +#: options/preferences.py +msgid "Pre-allocated" +msgstr "" + +#: options/preferences.py +msgid "Manually enter from ballot" +msgstr "" + +#: options/preferences.py +msgid "Slide: 1 vs 6, 2 vs 7, …. Fold: 1 vs 10, 2 vs 9, …. Adjacent: 1 vs 2, 3 vs 4, …." +msgstr "" + +#: options/preferences.py +msgid "Pairing method" +msgstr "" + +#: options/preferences.py +msgid "Slide" +msgstr "" + +#: options/preferences.py +msgid "Fold" +msgstr "" + +#: options/preferences.py +msgid "Adjacent" +msgstr "" + +#: options/preferences.py +msgid "Fold top, adjacent rest" +msgstr "" + +#: options/preferences.py +msgid "Method used to try to avoid teams facing each other multiple times or their own institution (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Conflict avoidance method" +msgstr "" + +#: options/preferences.py +msgid "Off" +msgstr "" + +#: options/preferences.py +msgid "One-up-one-down" +msgstr "" + +#: options/preferences.py +msgid "Minimum cost matching (pullups determined beforehand)" +msgstr "" + +#: options/preferences.py +msgid "Minimum cost matching (including pullups)" +msgstr "" + +#: options/preferences.py +msgid "If using pull-ups, restrict which teams can be pulled up. Two-team formats only. Has no effect on BP or intermediate brackets." +msgstr "" + +#: options/preferences.py +msgid "Pullup restriction" +msgstr "" + +#: options/preferences.py +msgid "No restriction" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams with the lowest draw strength by wins so far" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied when determining which teams to pull up (for minimum cost matching)" +msgstr "" + +#: options/preferences.py +msgid "Pullup penalty" +msgstr "" + +#: options/preferences.py +msgid "In BP, how pullups are distributed. Only \"Anywhere\" is WUDC-compliant." +msgstr "" + +#: options/preferences.py +msgid "BP pullup distribution" +msgstr "" + +#: options/preferences.py +msgid "Anywhere in bracket" +msgstr "" + +#: options/preferences.py +msgid "All in the same room (not WUDC-compliant)" +msgstr "" + +#: options/preferences.py +msgid "In BP, which position cost function to use (see documentation for details)" +msgstr "" + +#: options/preferences.py +msgid "BP position cost" +msgstr "" + +#: options/preferences.py +msgid "Simple" +msgstr "" + +#: options/preferences.py +msgid "Rényi entropy" +msgstr "" + +#: options/preferences.py +msgid "Population variance" +msgstr "" + +#: options/preferences.py +msgid "Rényi order α, if BP position cost uses Rényi entropy. Shannon is α = 1, Hartley is α = 0, collision is α = 2. See documentation for details." +msgstr "" + +#: options/preferences.py +msgid "Rényi order (BP)" +msgstr "" + +#: options/preferences.py +msgid "The BP position cost is raised to this power; higher exponents bias towards resolving fewer large position imbalances over more small ones. See documentation for details." +msgstr "" + +#: options/preferences.py +msgid "BP position cost exponent" +msgstr "" + +#: options/preferences.py +msgid "In BP, which method to use to solve the assignment problem. Only Hungarian with preshuffling is WUDC-compliant." +msgstr "" + +#: options/preferences.py +msgid "BP assignment method" +msgstr "" + +#: options/preferences.py +msgid "Hungarian algorithm (not WUDC-compliant)" +msgstr "" + +#: options/preferences.py +msgid "Hungarian algorithm with preshuffling" +msgstr "" + +#: options/preferences.py +msgid "Automatically make all adjudicators available for all rounds" +msgstr "" + +#: options/preferences.py +msgid "Skip adjudicator check-ins" +msgstr "" + +#: options/preferences.py +msgid "Hide panellist positions in the UI (and don't allocate them)" +msgstr "" + +#: options/preferences.py +msgid "No panellist adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Hide trainee positions in the UI (and don't allocate them)" +msgstr "" + +#: options/preferences.py +msgid "No trainee adjudicators" +msgstr "" + +#: options/preferences.py +msgid "How to handle teams who were marked available yet excluded froma round (a bye)" +msgstr "" + +#: options/preferences.py +msgid "Bye team results" +msgstr "" + +#: options/preferences.py +msgid "Treat bye teams as absent" +msgstr "" + +#: options/preferences.py +msgid "Attribute a win to bye teams, without speaks" +msgstr "" + +#: options/preferences.py +msgid "If creating a draw with an uneven number of teams, how to decide who gets the bye (won't be allocated)" +msgstr "" + +#: options/preferences.py +msgid "Bye team selection method" +msgstr "" + +#: options/preferences.py +msgid "Don't choose bye teams" +msgstr "" + +#: options/preferences.py +msgid "Choose bye teams randomly" +msgstr "" + +#: options/preferences.py +msgid "Choose lowest ranking teams" +msgstr "" + +#: options/preferences.py +msgid "A limit for the side imbalance, where a pairing will not be made if that requires a team to debate more times on one side than the selected number. For use with the graph generator, with 0 as disabled." +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed side imbalance" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Feedback" +msgstr "" + +#: options/preferences.py +msgid "Minimum possible adjudicator score that can be given" +msgstr "" + +#: options/preferences.py +msgid "Minimum adjudicator score" +msgstr "" + +#: options/preferences.py +msgid "Maximum possible adjudicator score that can be given" +msgstr "" + +#: options/preferences.py +msgid "Maximum adjudicator score" +msgstr "" + +#: options/preferences.py +msgid "Used to inform available choices in the feedback forms for adjudicators (both online and printed) and feedback progress" +msgstr "" + +#: options/preferences.py +msgid "Allow and expect feedback to be submitted by" +msgstr "" + +#: options/preferences.py +msgid "Chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "Panellists on chairs, chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "Panellists and trainees on chairs, chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "All adjudicators (including trainees) on each other" +msgstr "" + +#: options/preferences.py +msgid "Panellists on eachother and chairs, trainees on chairs, chairs on everyone" +msgstr "" + +#: options/preferences.py +msgid "Neither chairs, nor panellists nor trainees" +msgstr "" + +#: options/preferences.py +msgid "Expect feedback to be submitted by teams on" +msgstr "" + +#: options/preferences.py +msgid "Used to inform available choices in the feedback forms for teams (both online and printed) and feedback progress; this option is used by, e.g., UADC" +msgstr "" + +#: options/preferences.py +msgid "Orallist only (voting panellists permitted, with prompts to select orallist)" +msgstr "" + +#: options/preferences.py +msgid "All adjudicators in their panels (including trainees)" +msgstr "" + +#: options/preferences.py +msgid "No one" +msgstr "" + +#: options/preferences.py +msgid "Show unexpected feedback submissions in participants pages" +msgstr "" + +#: options/preferences.py +msgid "Displays unexpected feedback with a question mark symbol; only relevant if public participants and feedback progress are both enabled" +msgstr "" + +#: options/preferences.py +msgid "Show if an adjudicator is a trainee (unaccredited)" +msgstr "" + +#: options/preferences.py +msgid "Show unaccredited" +msgstr "" + +#: options/preferences.py +msgid "Any explanatory text needed to introduce the feedback form" +msgstr "" + +#: options/preferences.py +msgid "Feedback introduction/explanation" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Debate Rules" +msgstr "" + +#: options/preferences.py +msgid "How many teams are in each debate (normally 2 but 4 for BP)" +msgstr "" + +#: options/preferences.py +msgid "Number of teams per debate" +msgstr "" + +#: options/preferences.py +msgid "Whether panels submit a ballot each or a single ballot for a debate during the preliminary rounds. Note: BP must use one per debate." +msgstr "" + +#: options/preferences.py +msgid "Ballots per debate, preliminary rounds" +msgstr "" + +#: options/preferences.py +msgid "One ballot per voting adjudicator" +msgstr "" + +#: options/preferences.py +msgid "Consensus ballot (one ballot per debate)" +msgstr "" + +#: options/preferences.py +msgid "Whether panels submit a ballot each or a single ballot for a debate during the elimination rounds. Note: BP must use one per debate." +msgstr "" + +#: options/preferences.py +msgid "Ballots per debate, elimination rounds" +msgstr "" + +#: options/preferences.py +msgid "Whether adjudicator(s) must select the winning team in their ballot, and how it should be treated. Note: Not supported in BP." +msgstr "" + +#: options/preferences.py +msgid "Winner Declaration in ballot(s)" +msgstr "" + +#: options/preferences.py +msgid "Do not require separate winner selection" +msgstr "" + +#: options/preferences.py +msgid "Require separate winner selection as a check on correct scores" +msgstr "" + +#: options/preferences.py +msgid "Require winner selection to break tied-point debates" +msgstr "" + +#: options/preferences.py +msgid "Require winner selection, overriding scores" +msgstr "" + +#: options/preferences.py +msgid "When ballots should ask for speaker scores." +msgstr "" + +#: options/preferences.py +msgid "Require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Always require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Only require speaker scores in preliminary rounds" +msgstr "" + +#: options/preferences.py +msgid "Never require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "How many substantive speakers on a team" +msgstr "" + +#: options/preferences.py +msgid "Substantive speakers" +msgstr "" + +#: options/preferences.py +msgid "What to call the teams" +msgstr "" + +#: options/preferences.py +msgid "Side names" +msgstr "" + +#: options/preferences.py +msgid "Whether this style features scored reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Reply scores" +msgstr "" + +#: options/preferences.py +msgid "Whether to limit reply speeches to speakers who gave a substantive speech in the debate" +msgstr "" + +#: options/preferences.py +msgid "Require reply speaker to have given a substantive speech" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use speech ranks within a debate" +msgstr "" + +#: options/preferences.py +msgid "Use of speech ranks" +msgstr "" + +#: options/preferences.py +msgid "How long, in minutes, after motion release does the round start (-1 to deactivate)" +msgstr "" + +#: options/preferences.py +msgid "Preparation Time" +msgstr "" + +#: options/preferences.py +msgid "Whether there should be an option in ballot forms to mark a team as having forfeitted a round, rendering the debate win/loss without speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Enable forfeits" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Standings" +msgstr "" + +#: options/preferences.py +msgid "The number of substantive speeches a speaker can miss and still be on the speaker tab (-1 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Speeches missable for standings eligibility" +msgstr "" + +#: options/preferences.py +msgid "The number of reply speeches a speaker can miss and still be on the replies tab (-1 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Replies missable for standings eligibility" +msgstr "" + +#: options/preferences.py +msgid "Metrics to use to rank teams (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Team standings precedence" +msgstr "" + +#: options/preferences.py +msgid "Metrics to calculate, but not used to rank teams" +msgstr "" + +#: options/preferences.py +msgid "Team standings extra metrics" +msgstr "" + +#: options/preferences.py +msgid "Metrics to use to rank speakers (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Speaker standings precedence" +msgstr "" + +#: options/preferences.py +msgid "Metrics to calculate, but not used to rank speakers" +msgstr "" + +#: options/preferences.py +msgid "Speaker standings extra metrics" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Tab Release" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the team tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release team tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X teams in the public tab (set to 0 to show all teams)." +msgstr "" + +#: options/preferences.py +msgid "Top teams cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the speaker tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release speaker tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X speakers in the public tab (set to 0 to show all speakers)." +msgstr "" + +#: options/preferences.py +msgid "Top speakers cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the replies tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release replies tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X repliers in the public tab (set to 0 to show all repliers)." +msgstr "" + +#: options/preferences.py +msgid "Top replies cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of all motions and win/loss/selection information. This includes all motions — whether they have been marked as released or not. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release motions tab to public" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the feedback scores of all adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Release adjudicator tab to public" +msgstr "" + +#: options/preferences.py +msgid "What (if released) the adjudicator tab shows" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator tab displays" +msgstr "" + +#: options/preferences.py +msgid "Only shows base score" +msgstr "" + +#: options/preferences.py +msgid "Only shows final score" +msgstr "" + +#: options/preferences.py +msgid "Shows base, final, and per-round scores" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of every adjudicator's ballot. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release ballots to public" +msgstr "" + +#: options/preferences.py +msgid "This releases all the results for all rounds (including silent and break rounds). Do so only after the tournament is finished!" +msgstr "" + +#: options/preferences.py +msgid "Release all round results to public" +msgstr "" + +#: options/preferences.py +msgid "Enables display of confirmed ballots through private URLs. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release ballots through private URLs" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Data Entry" +msgstr "" + +#: options/preferences.py +msgid "Whether adjudicators can submit ballots themselves, and how they do so" +msgstr "" + +#: options/preferences.py +msgid "Ballot submissions from adjudicators" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Disabled (tab staff only)" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Use private URLs" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Use publicly accessible form" +msgstr "" + +#: options/preferences.py +msgid "Whether participants can submit feedback themselves, and how they do so" +msgstr "" + +#: options/preferences.py +msgid "Feedback submissions from participants" +msgstr "" + +#: options/preferences.py +msgid "If checked, users must enter a password when submitting public feedback and ballots" +msgstr "" + +#: options/preferences.py +msgid "Require password for submission" +msgstr "" + +#: options/preferences.py +msgid "Value of the password required for public submissions, if passwords are required" +msgstr "" + +#: options/preferences.py +msgid "Password for public submission" +msgstr "" + +#: options/preferences.py +msgid "Bypasses double checking by setting ballots to be automatically confirmed" +msgstr "" + +#: options/preferences.py +msgid "Bypass double checking" +msgstr "" + +#: options/preferences.py +msgid "Requires scores of draft ballots to be re-entered as part of the confirmation stage (to create more stringent check). Only applies to BP formats." +msgstr "" + +#: options/preferences.py +msgid "Enforce blind confirmations" +msgstr "" + +#: options/preferences.py +msgid "Whether assistants can access pages that can reveal matchups and motions ahead of public release (these pages are useful for displaying draws/motions to the public and for printing ballots)." +msgstr "" + +#: options/preferences.py +msgid "Assistant user access" +msgstr "" + +#: options/preferences.py +msgid "All areas (results entry, draw display, and motions)" +msgstr "" + +#: options/preferences.py +msgid "Just results entry and draw display" +msgstr "" + +#: options/preferences.py +msgid "Only results entry" +msgstr "" + +#: options/preferences.py +msgid "No access" +msgstr "" + +#: options/preferences.py +msgid "Whether participants can check themselves in/out through their private URL." +msgstr "" + +#: options/preferences.py +msgid "Participant self-checkin" +msgstr "" + +#: options/preferences.py +msgid "The amount of time (in hours) before a speaker or adjudicator's check-in event expires" +msgstr "" + +#: options/preferences.py +msgid "Check-In Window (People)" +msgstr "" + +#: options/preferences.py +msgid "The amount of time (in hours) before a room's check-in event expires" +msgstr "" + +#: options/preferences.py +msgid "Check-In Window (Rooms)" +msgstr "" + +#: options/preferences.py +msgid "Whether the printed scoresheets should show the 'circle digits' prompt to help check bad handwriting" +msgstr "" + +#: options/preferences.py +msgid "Ballot Digit Checks" +msgstr "" + +#: options/preferences.py +msgid "The location to return scoresheets to, printed on pre-printed ballots. Set to 'TBA' to hide." +msgstr "" + +#: options/preferences.py +msgid "Score return location" +msgstr "" + +#: options/preferences.py +msgid "The location to return feedback to, printed on pre-printed feedback forms. Set to 'TBA' to hide." +msgstr "" + +#: options/preferences.py +msgid "Feedback return location" +msgstr "" + +#: options/preferences.py +msgid "Lets debates have their status as postponed, as to not block draw generation." +msgstr "" + +#: options/preferences.py +msgid "Enable postponements" +msgstr "" + +#: options/preferences.py +msgid "Have each voting adjudicator submit a separate ballot." +msgstr "" + +#: options/preferences.py +msgid "Individual voting ballots" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Public Features" +msgstr "" + +#: options/preferences.py +msgid "Adds a flag signaling search engines to not include tournament pages in search results.Note that it may get ignored, and the other available settings will provide greater privacy." +msgstr "" + +#: options/preferences.py +msgid "Include site in search engines" +msgstr "" + +#: options/preferences.py +msgid "Allow all pages to be indexed by search engines." +msgstr "" + +#: options/preferences.py +msgid "Only allow the homepage to be indexed, do not allow any other pages (e.g. tabs, ballots, etc)." +msgstr "" + +#: options/preferences.py +msgid "Do not allow any pages to be indexed by search engines." +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing all participants in the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of participants list" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing all institutions in the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of institutions list" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing diversity statistics" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of diversity info" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing checkin statuses for individuals, institutions, and teams. Note that this page can be slow when used at very large tournaments." +msgstr "" + +#: options/preferences.py +msgid "Enable public view of the checkin statuses" +msgstr "" + +#: options/preferences.py +msgid "If the participants list is enabled, displays break category eligibility on that page" +msgstr "" + +#: options/preferences.py +msgid "Show break categories on participants page" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing pre-allocated sides" +msgstr "" + +#: options/preferences.py +msgid "Show pre-allocated sides to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing released draws" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of draw" +msgstr "" + +#: options/preferences.py +msgid "Disabled" +msgstr "" + +#: options/preferences.py +msgid "Show a single page for the current round's draw" +msgstr "" + +#: options/preferences.py +msgid "Show individual pages for all released draws" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing results of non-silent rounds" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of results" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing motions that have been explicitly released to the public" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of motions" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing team standings, showing wins only (not speaker scores or ranking)" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of team standings" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page for each team and adjudicator showing their records" +msgstr "" + +#: options/preferences.py +msgid "Enable public record pages" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing the team breaks. Intended for use after the break announcement." +msgstr "" + +#: options/preferences.py +msgid "Release team breaks to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing breaking adjudicators. Intended for use after the break announcement." +msgstr "" + +#: options/preferences.py +msgid "Release adjudicators break to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page detailing who has unsubmitted feedback" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of unsubmitted feedback" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing the schedule" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of shedule" +msgstr "" + +#: options/preferences.py +msgid "List of tournament staff, to be displayed on the tournament home page. Leave this blank or with the default text if you want to not show this information." +msgstr "" + +#: options/preferences.py +msgid "Tournament staff" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the tournament home page" +msgstr "" + +#: options/preferences.py +msgid "Welcome message" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "UI Options" +msgstr "" + +#: options/preferences.py +msgid "If showing results to public, show splitting adjudicators in them" +msgstr "" + +#: options/preferences.py +msgid "Show splitting adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use code names for teams" +msgstr "" + +#: options/preferences.py +msgid "Team code names" +msgstr "" + +#: options/preferences.py +msgid "Do not use code names" +msgstr "" + +#: options/preferences.py +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: options/preferences.py +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: options/preferences.py +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: options/preferences.py +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use code names for participants" +msgstr "" + +#: options/preferences.py +msgid "Participant code names" +msgstr "" + +#: options/preferences.py +msgid "Display team emoji in the public and admin interfaces" +msgstr "" + +#: options/preferences.py +msgid "Show emoji" +msgstr "" + +#: options/preferences.py +msgid "In tables listing teams, adds a column showing their institutions" +msgstr "" + +#: options/preferences.py +msgid "Show team institutions" +msgstr "" + +#: options/preferences.py +msgid "Hide the institutions of adjudicators on public pages and on printed ballots" +msgstr "" + +#: options/preferences.py +msgid "Show adjudicator institutions" +msgstr "" + +#: options/preferences.py +msgid "Enables a hover element on every team's name showing that team's speakers" +msgstr "" + +#: options/preferences.py +msgid "Show speakers in draw" +msgstr "" + +#: options/preferences.py +msgid "Input team seed in simple team importer" +msgstr "" + +#: options/preferences.py +msgid "Enable team seed in importer" +msgstr "" + +#: options/preferences.py +msgid "Do not ask for team seed" +msgstr "" + +#: options/preferences.py +msgid "Ask for numeric team seed" +msgstr "" + +#: options/preferences.py +msgid "Ask for descriptive team seed name" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Notifications" +msgstr "" + +#: options/preferences.py +msgid "The name of the organizer tasked with managing emails (in case of replies)" +msgstr "" + +#: options/preferences.py +msgid "Reply-to name" +msgstr "" + +#: options/preferences.py +msgid "The email address for handling replies" +msgstr "" + +#: options/preferences.py +msgid "Reply-to address" +msgstr "" + +#: options/preferences.py +msgid "A secret key to accept email status events" +msgstr "" + +#: options/preferences.py +msgid "Email status secret key" +msgstr "" + +#: options/preferences.py +msgid "Enables a copy of adjudicators' ballots to be automatically sent to them (by email) after they are entered in Tabbycat (for confirmation or checking)" +msgstr "" + +#: options/preferences.py +msgid "Ballot receipts" +msgstr "" + +#: options/preferences.py +msgid "The subject line for emails sent to adjudicators with their submitted ballot. Use '{{ DEBATE }}' as a placeholder for the associated debate" +msgstr "" + +#: options/preferences.py +msgid "Ballot receipt subject line" +msgstr "" + +#: options/preferences.py +msgid "The message body for emails sent to adjudicators with their submitted ballot." +msgstr "" + +#: options/preferences.py +msgid "Ballot receipt message" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Motions" +msgstr "" + +#: options/preferences.py +msgid "If checked, ballots require a motion to be entered" +msgstr "" + +#: options/preferences.py +msgid "Enable motions" +msgstr "" + +#: options/preferences.py +msgid "Whether the printed scoresheets should hide the text of motions (even if they have been entered and released)" +msgstr "" + +#: options/preferences.py +msgid "Ballot Hide Motions" +msgstr "" + +#: options/preferences.py +msgid "Enables the motion veto field on ballots, to track veto statistics" +msgstr "" + +#: options/preferences.py +msgid "Motion vetoes" +msgstr "" + +#: options/preferences.py +msgid "If showing results to public, show which motions were selected in the record" +msgstr "" + +#: options/preferences.py +msgid "Show motions in results" +msgstr "" + +#: options/preferences.py +msgid "Order in which are listed by round in the public view" +msgstr "" + +#: options/preferences.py +msgid "Order to display motions" +msgstr "" + +#: options/preferences.py +msgid "Earliest round first" +msgstr "" + +#: options/preferences.py +msgid "Latest round first" +msgstr "" + +#: options/preferences.py +msgid "Whether motions can be reused from one round to another." +msgstr "" + +#: options/preferences.py +msgid "Allow motion reuse" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Global Settings" +msgstr "" + +#: options/preferences.py +msgid "Enables external applications to access the site through a dedicated interface, subject to public information settings." +msgstr "" + +#: options/preferences.py +msgid "Enable API access" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Registration" +msgstr "" + +#: options/preferences.py +msgid "How many speakers should each team have" +msgstr "" + +#: options/preferences.py +msgid "Speakers per team" +msgstr "" + +#: options/preferences.py +msgid "How should team names be assigned" +msgstr "" + +#: options/preferences.py +msgid "Team name standard" +msgstr "" + +#: options/preferences.py +msgid "Assigned by user" +msgstr "" + +#: options/preferences.py +msgid "Alphabetical (Team A, Team B, ...)" +msgstr "" + +#: options/preferences.py +msgid "Numerical (Team 1, Team 2, ...)" +msgstr "" + +#: options/preferences.py +msgid "Speaker initials (Team CZ, Team BT, ...)" +msgstr "" + +#: options/preferences.py +msgid "Which fields should teams be allowed to submit, in addition to fields with handling through other settings." +msgstr "" + +#: options/preferences.py +msgid "Customizable team fields" +msgstr "" + +#: options/preferences.py +msgid "Prefix name with institution" +msgstr "" + +#: options/preferences.py +msgid "Break categories" +msgstr "" + +#: options/preferences.py +msgid "Seed" +msgstr "" + +#: options/preferences.py +msgid "Emoji" +msgstr "" + +#: options/preferences.py +msgid "Which fields should speakers submit, in addition to fields with handling through other settings." +msgstr "" + +#: options/preferences.py +msgid "Customizable speaker fields" +msgstr "" + +#: options/preferences.py +msgid "Email address" +msgstr "" + +#: options/preferences.py +msgid "Phone number" +msgstr "" + +#: options/preferences.py +msgid "Gender" +msgstr "" + +#: options/preferences.py +msgid "Public speaker categories" +msgstr "" + +#: options/preferences.py +msgid "Which fields should adjudicators be allowed to submit" +msgstr "" + +#: options/preferences.py +msgid "Customizable adjudicator fields" +msgstr "" + +#: options/preferences.py +msgid "Allow institutions to register for the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable institutional registration" +msgstr "" + +#: options/preferences.py +msgid "Allow institutions to register participants (up to their allocated slots)" +msgstr "" + +#: options/preferences.py +msgid "Enable institutional participant registration" +msgstr "" + +#: options/preferences.py +msgid "Whether to require institutions to declare the number of teams and adjudicators it wishes to send with approval required before registering." +msgstr "" + +#: options/preferences.py +msgid "Use participant slots" +msgstr "" + +#: options/preferences.py +msgid "Allow teams to register independently to an institution" +msgstr "" + +#: options/preferences.py +msgid "Enable open team registration" +msgstr "" + +#: options/preferences.py +msgid "Allow adjudicators to register independently to an institution" +msgstr "" + +#: options/preferences.py +msgid "Enable open adjudicator registration" +msgstr "" + +#: options/preferences.py +msgid "If using code names, how should they be generated" +msgstr "" + +#: options/preferences.py +msgid "Code name standard" +msgstr "" + +#: options/preferences.py +msgid "Emojis" +msgstr "" + +#: options/preferences.py +msgid "Last names (e.g. 'Jones & Smith')" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the institution registration form" +msgstr "" + +#: options/preferences.py +msgid "Institution register message" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the adjudicator registration form" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator register message" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the team registration form" +msgstr "" + +#: options/preferences.py +msgid "Team register message" +msgstr "" + +#: options/presets.py +msgid "Enable Public Information" +msgstr "" + +#: options/presets.py +msgid "Disable Public Information" +msgstr "" + +#: options/presets.py +msgid "Australs Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, intermediate brackets, one-up-one-down. Compliant with AIDA rules." +msgstr "" + +#: options/presets.py +msgid "British Parliamentary Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 vs 2 vs 2. Compliant with WUDC rules." +msgstr "" + +#: options/presets.py +msgid "Canadian Parliamentary Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with replies (unscored) and POIs. May require additional configuration depending on regional variations." +msgstr "" + +#: options/presets.py +msgid "Australian Easters Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 without replies, set motions, novices, intermediate bubbles, one-up-one-down. Compliant with AIDA rules." +msgstr "" + +#: options/presets.py +msgid "2 vs 2 Impromptu" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with replies, chosen motions, chosen sides, and novice statuses." +msgstr "" + +#: options/presets.py +msgid "3 vs 3 Prepared" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with preallocated sides, publicly displayed sides and motions, and novice statuses." +msgstr "" + +#: options/presets.py +msgid "UADC Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, and all adjudicators can receive feedback from teams." +msgstr "" + +#: options/presets.py +msgid "WSDC Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, prop/opp side labels, and all adjudicators can receive feedback from teams." +msgstr "" + +#: options/presets.py +msgid "APDA Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with speech rankings and byes" +msgstr "" + +#: options/presets.py +msgid "Public Speaking" +msgstr "" + +#: options/presets.py +msgid "Arbitrary number of teams per room, one speech each, no team points" +msgstr "" + +#: options/presets.py +msgid "Public Information Options" +msgstr "" + +#: options/presets.py +msgid "For tournaments hosted online: this sets it up so that people can access the draw and other generally useful information via the tab site." +msgstr "" + +#: options/presets.py +msgid "Tab Release Options" +msgstr "" + +#: options/presets.py +msgid "For when a tab is ready to be released. This will publicly display the results of all rounds, the team tab, the speaker tab, etc" +msgstr "" + +#: options/presets.py +msgid "Use Private URLs" +msgstr "" + +#: options/presets.py +msgid "Enables participant data entry through private URLs." +msgstr "" + +#: options/presets.py +msgid "Use Public Forms" +msgstr "" + +#: options/presets.py +msgid "Enables participant data entry through public forms." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Configuration" +msgstr "" + +#: options/templates/preferences_index.html +msgid "The range of scores that can awarded to speeches, replies, and teams" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How teams are paired in the draw and how adjudicators are auto-allocated" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How many speeches in a debate, how motions are decided, and whether reply speeches are used" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How teams and speakers are ranked in the released tabs" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How adjudicators are ranked and who can submit feedback" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How and where are motions used" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How participants can register for the tournament" +msgstr "" + +#: options/templates/preferences_index.html +msgid "When to release a public tab is made visible and what data it shows" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How ballots, feedback, and check-ins are entered, including online submission options" +msgstr "" + +#: options/templates/preferences_index.html +msgid "What information the site displays on the publicly accessible pages" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Small tweaks in what information is presented by the interface" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Configures sending notifications, such as emails confirming ballot submissions or team points" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Settings which can affect all tournaments on the site" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Manually Set Current Round" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Tabbycat will prompt you to advance the current round on each round's results page. However, if there are special circumstances that require you to override this and set the current round to something else, use this page." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Set Round Weights for Tapered Scoring" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Rounds can be weighted so that certain rounds are worth more team points." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Invite User to Create an Account" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Users can be created through an invitation link sent to their email, with associated permissions." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Presets" +msgstr "" + +#: options/templates/preferences_index.html +msgid "These show changes to your configuration for common situations and debate formats. You may apply these settings or modify them for your tournament directly on the preset's page." +msgstr "" + +#: options/templates/preferences_index.html +#, python-format +msgid "Apply %(preset)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#, python-format +msgid "Configuration: %(section)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#, python-format +msgid "Edit Configuration: %(section)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#: options/templates/preset_edit.html +msgid "Back to Configuration" +msgstr "" + +#: options/templates/preset_edit.html +#, python-format +msgid "This preference will be changed" +msgid_plural "These %(counter)s preferences will be changed" +msgstr[0] "" +msgstr[1] "" + +#: options/templates/preset_edit.html +#, python-format +msgid "This preference will not change" +msgid_plural "These %(counter)s preferences will not change" +msgstr[0] "" +msgstr[1] "" + +#: options/templates/preset_edit.html +msgid "Apply Changes" +msgstr "" + +#: options/templates/preset_edit.html +msgid "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." +msgstr "" + +#: options/utils.py +#, python-format +msgid "The following metrics can't be listed twice: %(duplicates)s" +msgstr "" + +#: options/views.py +#, python-format +msgid "Tournament options (%(section)s) saved." +msgstr "" + +#: options/views.py +#, python-format +msgid "Apply Preset: %s" +msgstr "" + +#: options/views.py +#, python-format +msgid "Tournament options saved based on preset %(name)s." +msgstr "" + diff --git a/tabbycat/options/locale/sk/LC_MESSAGES/django.po b/tabbycat/options/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..12c9c9873fa --- /dev/null +++ b/tabbycat/options/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1918 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/options/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 940\n" + +#: options/apps.py +msgid "Tournament Options" +msgstr "" + +#: options/forms.py +msgid "Mininum score must be less than maximum score" +msgstr "" + +#: options/forms.py +msgid "Intermediate 1 or 2 require preallocated sides" +msgstr "" + +#: options/forms.py +msgid "Four-team formats require consensus ballots" +msgstr "" + +#: options/forms.py +msgid "Must set a password if using a password is enabled" +msgstr "" + +#: options/forms.py +msgid "Showing team institutions defeats the purpose of code names" +msgstr "" + +#: options/models.py +msgid "instance" +msgstr "" + +#: options/models.py +msgid "tournament preference" +msgstr "" + +#: options/models.py +msgid "tournament preferences" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Score Rules" +msgstr "" + +#: options/preferences.py +msgid "Minimum allowed score for substantive speeches" +msgstr "" + +#: options/preferences.py +msgid "Minimum speaker score" +msgstr "" + +#: options/preferences.py +msgid "Maximum speaker score" +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed score for substantive speeches" +msgstr "" + +#: options/preferences.py +msgid "Speaker score step" +msgstr "" + +#: options/preferences.py +msgid "Score steps allowed for substantive speeches, e.g. full points (1) or half points (0.5)" +msgstr "" + +#: options/preferences.py +msgid "The largest amount by which one team can beat another (0 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Maximum margin" +msgstr "" + +#: options/preferences.py +msgid "Minimum allowed score for reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Minimum reply score" +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed score for reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Maximum reply score" +msgstr "" + +#: options/preferences.py +msgid "Score steps allowed for reply speeches, e.g. full points (1) or half points (0.5)" +msgstr "" + +#: options/preferences.py +msgid "Reply score step" +msgstr "" + +#: options/preferences.py +msgid "If checked, a team's winning margin includes dissenting adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Margin includes dissenters" +msgstr "" + +#: options/preferences.py +msgid "Any explanatory text needed to introduce the ballot form, e.g. speaker scale" +msgstr "" + +#: options/preferences.py +msgid "Ballot introduction/explanation" +msgstr "" + +#: options/preferences.py +msgid "If checked, all speaker scores, including for duplicate speeches, will be counted for team scores" +msgstr "" + +#: options/preferences.py +msgid "Team score includes ghosts" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Draw Rules" +msgstr "" + +#: options/preferences.py +msgid "The auto-allocator will only take adjudicators at or above this score as voting panellists" +msgstr "" + +#: options/preferences.py +msgid "Minimum adjudicator score to vote" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by adjudicator auto-allocator for conflicts" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator conflict penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by adjudicator auto-allocator for history" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator history penalty" +msgstr "" + +#: options/preferences.py +msgid "Penality applied by preformed panel auto-allocator for priority mismatch" +msgstr "" + +#: options/preferences.py +msgid "Importance mismatch penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams seeing their own institution" +msgstr "" + +#: options/preferences.py +msgid "Team institution penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams seeing each other twice or more" +msgstr "" + +#: options/preferences.py +msgid "Team history penalty" +msgstr "" + +#: options/preferences.py +msgid "If checked, the draw will try to avoid pairing teams against their own institution" +msgstr "" + +#: options/preferences.py +msgid "Avoid same institution" +msgstr "" + +#: options/preferences.py +msgid "If checked, the draw will try to avoid having teams see each other twice" +msgstr "" + +#: options/preferences.py +msgid "Avoid team history" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by conflict avoidance method for teams being in a pullup many times. Leave 0 for no penalty." +msgstr "" + +#: options/preferences.py +msgid "Previously saw pullup penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by minimum cost matching to prefer pairings that balance sides." +msgstr "" + +#: options/preferences.py +msgid "Side balance penalty" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied by minimum cost matching to prefer pairings that follow the draw pairing method." +msgstr "" + +#: options/preferences.py +msgid "Pairing deviation penalty" +msgstr "" + +#: options/preferences.py +msgid "Hard preference applied by minimum cost matching to disallow pairings where a team would debate more than this many times on the same side. WARNING: if you set this to a low value, the draw algorithm may be unable to find a valid draw." +msgstr "" + +#: options/preferences.py +msgid "Maximum number of times per side" +msgstr "" + +#: options/preferences.py +msgid "How odd brackets are resolved (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Odd bracket resolution method" +msgstr "" + +#: options/preferences.py +msgid "Pull up from top" +msgstr "" + +#: options/preferences.py +msgid "Pull up from bottom" +msgstr "" + +#: options/preferences.py +msgid "Pull up from middle" +msgstr "" + +#: options/preferences.py +msgid "Pull up at random" +msgstr "" + +#: options/preferences.py +msgid "Intermediate brackets" +msgstr "" + +#: options/preferences.py +msgid "Intermediate brackets with bubble-up-bubble-down" +msgstr "" + +#: options/preferences.py +msgid "Intermediate 1 (pre-allocated sides)" +msgstr "" + +#: options/preferences.py +msgid "Intermediate 2 (pre-allocated sides)" +msgstr "" + +#: options/preferences.py +msgid "Pull up from the lowest draw strength by rank" +msgstr "" + +#: options/preferences.py +msgid "Pull up from the least pulled up, then the lowest draw strength by rank" +msgstr "" + +#: options/preferences.py +msgid "How affirmative/negative positions are assigned (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Side allocations method" +msgstr "" + +#: options/preferences.py +msgid "Random" +msgstr "" + +#: options/preferences.py +msgid "Balance" +msgstr "" + +#: options/preferences.py +msgid "Pre-allocated" +msgstr "" + +#: options/preferences.py +msgid "Manually enter from ballot" +msgstr "" + +#: options/preferences.py +msgid "Slide: 1 vs 6, 2 vs 7, …. Fold: 1 vs 10, 2 vs 9, …. Adjacent: 1 vs 2, 3 vs 4, …." +msgstr "" + +#: options/preferences.py +msgid "Pairing method" +msgstr "" + +#: options/preferences.py +msgid "Slide" +msgstr "" + +#: options/preferences.py +msgid "Fold" +msgstr "" + +#: options/preferences.py +msgid "Adjacent" +msgstr "" + +#: options/preferences.py +msgid "Fold top, adjacent rest" +msgstr "" + +#: options/preferences.py +msgid "Method used to try to avoid teams facing each other multiple times or their own institution (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Conflict avoidance method" +msgstr "" + +#: options/preferences.py +msgid "Off" +msgstr "" + +#: options/preferences.py +msgid "One-up-one-down" +msgstr "" + +#: options/preferences.py +msgid "Minimum cost matching (pullups determined beforehand)" +msgstr "" + +#: options/preferences.py +msgid "Minimum cost matching (including pullups)" +msgstr "" + +#: options/preferences.py +msgid "If using pull-ups, restrict which teams can be pulled up. Two-team formats only. Has no effect on BP or intermediate brackets." +msgstr "" + +#: options/preferences.py +msgid "Pullup restriction" +msgstr "" + +#: options/preferences.py +msgid "No restriction" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams who have been pulled up the fewest times so far" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams with the lowest draw strength by wins so far" +msgstr "" + +#: options/preferences.py +msgid "Choose from teams with the lowest draw strength by speaks so far" +msgstr "" + +#: options/preferences.py +msgid "Penalty applied when determining which teams to pull up (for minimum cost matching)" +msgstr "" + +#: options/preferences.py +msgid "Pullup penalty" +msgstr "" + +#: options/preferences.py +msgid "In BP, how pullups are distributed. Only \"Anywhere\" is WUDC-compliant." +msgstr "" + +#: options/preferences.py +msgid "BP pullup distribution" +msgstr "" + +#: options/preferences.py +msgid "Anywhere in bracket" +msgstr "" + +#: options/preferences.py +msgid "All in the same room (not WUDC-compliant)" +msgstr "" + +#: options/preferences.py +msgid "In BP, which position cost function to use (see documentation for details)" +msgstr "" + +#: options/preferences.py +msgid "BP position cost" +msgstr "" + +#: options/preferences.py +msgid "Simple" +msgstr "" + +#: options/preferences.py +msgid "Rényi entropy" +msgstr "" + +#: options/preferences.py +msgid "Population variance" +msgstr "" + +#: options/preferences.py +msgid "Rényi order α, if BP position cost uses Rényi entropy. Shannon is α = 1, Hartley is α = 0, collision is α = 2. See documentation for details." +msgstr "" + +#: options/preferences.py +msgid "Rényi order (BP)" +msgstr "" + +#: options/preferences.py +msgid "The BP position cost is raised to this power; higher exponents bias towards resolving fewer large position imbalances over more small ones. See documentation for details." +msgstr "" + +#: options/preferences.py +msgid "BP position cost exponent" +msgstr "" + +#: options/preferences.py +msgid "In BP, which method to use to solve the assignment problem. Only Hungarian with preshuffling is WUDC-compliant." +msgstr "" + +#: options/preferences.py +msgid "BP assignment method" +msgstr "" + +#: options/preferences.py +msgid "Hungarian algorithm (not WUDC-compliant)" +msgstr "" + +#: options/preferences.py +msgid "Hungarian algorithm with preshuffling" +msgstr "" + +#: options/preferences.py +msgid "Automatically make all adjudicators available for all rounds" +msgstr "" + +#: options/preferences.py +msgid "Skip adjudicator check-ins" +msgstr "" + +#: options/preferences.py +msgid "Hide panellist positions in the UI (and don't allocate them)" +msgstr "" + +#: options/preferences.py +msgid "No panellist adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Hide trainee positions in the UI (and don't allocate them)" +msgstr "" + +#: options/preferences.py +msgid "No trainee adjudicators" +msgstr "" + +#: options/preferences.py +msgid "How to handle teams who were marked available yet excluded froma round (a bye)" +msgstr "" + +#: options/preferences.py +msgid "Bye team results" +msgstr "" + +#: options/preferences.py +msgid "Treat bye teams as absent" +msgstr "" + +#: options/preferences.py +msgid "Attribute a win to bye teams, without speaks" +msgstr "" + +#: options/preferences.py +msgid "If creating a draw with an uneven number of teams, how to decide who gets the bye (won't be allocated)" +msgstr "" + +#: options/preferences.py +msgid "Bye team selection method" +msgstr "" + +#: options/preferences.py +msgid "Don't choose bye teams" +msgstr "" + +#: options/preferences.py +msgid "Choose bye teams randomly" +msgstr "" + +#: options/preferences.py +msgid "Choose lowest ranking teams" +msgstr "" + +#: options/preferences.py +msgid "A limit for the side imbalance, where a pairing will not be made if that requires a team to debate more times on one side than the selected number. For use with the graph generator, with 0 as disabled." +msgstr "" + +#: options/preferences.py +msgid "Maximum allowed side imbalance" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Feedback" +msgstr "" + +#: options/preferences.py +msgid "Minimum possible adjudicator score that can be given" +msgstr "" + +#: options/preferences.py +msgid "Minimum adjudicator score" +msgstr "" + +#: options/preferences.py +msgid "Maximum possible adjudicator score that can be given" +msgstr "" + +#: options/preferences.py +msgid "Maximum adjudicator score" +msgstr "" + +#: options/preferences.py +msgid "Used to inform available choices in the feedback forms for adjudicators (both online and printed) and feedback progress" +msgstr "" + +#: options/preferences.py +msgid "Allow and expect feedback to be submitted by" +msgstr "" + +#: options/preferences.py +msgid "Chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "Panellists on chairs, chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "Panellists and trainees on chairs, chairs on panellists and trainees" +msgstr "" + +#: options/preferences.py +msgid "All adjudicators (including trainees) on each other" +msgstr "" + +#: options/preferences.py +msgid "Panellists on eachother and chairs, trainees on chairs, chairs on everyone" +msgstr "" + +#: options/preferences.py +msgid "Neither chairs, nor panellists nor trainees" +msgstr "" + +#: options/preferences.py +msgid "Expect feedback to be submitted by teams on" +msgstr "" + +#: options/preferences.py +msgid "Used to inform available choices in the feedback forms for teams (both online and printed) and feedback progress; this option is used by, e.g., UADC" +msgstr "" + +#: options/preferences.py +msgid "Orallist only (voting panellists permitted, with prompts to select orallist)" +msgstr "" + +#: options/preferences.py +msgid "All adjudicators in their panels (including trainees)" +msgstr "" + +#: options/preferences.py +msgid "No one" +msgstr "" + +#: options/preferences.py +msgid "Show unexpected feedback submissions in participants pages" +msgstr "" + +#: options/preferences.py +msgid "Displays unexpected feedback with a question mark symbol; only relevant if public participants and feedback progress are both enabled" +msgstr "" + +#: options/preferences.py +msgid "Show if an adjudicator is a trainee (unaccredited)" +msgstr "" + +#: options/preferences.py +msgid "Show unaccredited" +msgstr "" + +#: options/preferences.py +msgid "Any explanatory text needed to introduce the feedback form" +msgstr "" + +#: options/preferences.py +msgid "Feedback introduction/explanation" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Debate Rules" +msgstr "" + +#: options/preferences.py +msgid "How many teams are in each debate (normally 2 but 4 for BP)" +msgstr "" + +#: options/preferences.py +msgid "Number of teams per debate" +msgstr "" + +#: options/preferences.py +msgid "Whether panels submit a ballot each or a single ballot for a debate during the preliminary rounds. Note: BP must use one per debate." +msgstr "" + +#: options/preferences.py +msgid "Ballots per debate, preliminary rounds" +msgstr "" + +#: options/preferences.py +msgid "One ballot per voting adjudicator" +msgstr "" + +#: options/preferences.py +msgid "Consensus ballot (one ballot per debate)" +msgstr "" + +#: options/preferences.py +msgid "Whether panels submit a ballot each or a single ballot for a debate during the elimination rounds. Note: BP must use one per debate." +msgstr "" + +#: options/preferences.py +msgid "Ballots per debate, elimination rounds" +msgstr "" + +#: options/preferences.py +msgid "Whether adjudicator(s) must select the winning team in their ballot, and how it should be treated. Note: Not supported in BP." +msgstr "" + +#: options/preferences.py +msgid "Winner Declaration in ballot(s)" +msgstr "" + +#: options/preferences.py +msgid "Do not require separate winner selection" +msgstr "" + +#: options/preferences.py +msgid "Require separate winner selection as a check on correct scores" +msgstr "" + +#: options/preferences.py +msgid "Require winner selection to break tied-point debates" +msgstr "" + +#: options/preferences.py +msgid "Require winner selection, overriding scores" +msgstr "" + +#: options/preferences.py +msgid "When ballots should ask for speaker scores." +msgstr "" + +#: options/preferences.py +msgid "Require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Always require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Only require speaker scores in preliminary rounds" +msgstr "" + +#: options/preferences.py +msgid "Never require speaker scores" +msgstr "" + +#: options/preferences.py +msgid "How many substantive speakers on a team" +msgstr "" + +#: options/preferences.py +msgid "Substantive speakers" +msgstr "" + +#: options/preferences.py +msgid "What to call the teams" +msgstr "" + +#: options/preferences.py +msgid "Side names" +msgstr "" + +#: options/preferences.py +msgid "Whether this style features scored reply speeches" +msgstr "" + +#: options/preferences.py +msgid "Reply scores" +msgstr "" + +#: options/preferences.py +msgid "Whether to limit reply speeches to speakers who gave a substantive speech in the debate" +msgstr "" + +#: options/preferences.py +msgid "Require reply speaker to have given a substantive speech" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use speech ranks within a debate" +msgstr "" + +#: options/preferences.py +msgid "Use of speech ranks" +msgstr "" + +#: options/preferences.py +msgid "How long, in minutes, after motion release does the round start (-1 to deactivate)" +msgstr "" + +#: options/preferences.py +msgid "Preparation Time" +msgstr "" + +#: options/preferences.py +msgid "Whether there should be an option in ballot forms to mark a team as having forfeitted a round, rendering the debate win/loss without speaker scores" +msgstr "" + +#: options/preferences.py +msgid "Enable forfeits" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Standings" +msgstr "" + +#: options/preferences.py +msgid "The number of substantive speeches a speaker can miss and still be on the speaker tab (-1 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Speeches missable for standings eligibility" +msgstr "" + +#: options/preferences.py +msgid "The number of reply speeches a speaker can miss and still be on the replies tab (-1 means no limit)" +msgstr "" + +#: options/preferences.py +msgid "Replies missable for standings eligibility" +msgstr "" + +#: options/preferences.py +msgid "Metrics to use to rank teams (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Team standings precedence" +msgstr "" + +#: options/preferences.py +msgid "Metrics to calculate, but not used to rank teams" +msgstr "" + +#: options/preferences.py +msgid "Team standings extra metrics" +msgstr "" + +#: options/preferences.py +msgid "Metrics to use to rank speakers (see documentation for further details)" +msgstr "" + +#: options/preferences.py +msgid "Speaker standings precedence" +msgstr "" + +#: options/preferences.py +msgid "Metrics to calculate, but not used to rank speakers" +msgstr "" + +#: options/preferences.py +msgid "Speaker standings extra metrics" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Tab Release" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the team tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release team tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X teams in the public tab (set to 0 to show all teams)." +msgstr "" + +#: options/preferences.py +msgid "Top teams cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the speaker tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release speaker tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X speakers in the public tab (set to 0 to show all speakers)." +msgstr "" + +#: options/preferences.py +msgid "Top speakers cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the replies tab. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release replies tab to public" +msgstr "" + +#: options/preferences.py +msgid "Only show scores for the top X repliers in the public tab (set to 0 to show all repliers)." +msgstr "" + +#: options/preferences.py +msgid "Top replies cutoff" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of all motions and win/loss/selection information. This includes all motions — whether they have been marked as released or not. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release motions tab to public" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of the feedback scores of all adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Release adjudicator tab to public" +msgstr "" + +#: options/preferences.py +msgid "What (if released) the adjudicator tab shows" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator tab displays" +msgstr "" + +#: options/preferences.py +msgid "Only shows base score" +msgstr "" + +#: options/preferences.py +msgid "Only shows final score" +msgstr "" + +#: options/preferences.py +msgid "Shows base, final, and per-round scores" +msgstr "" + +#: options/preferences.py +msgid "Enables public display of every adjudicator's ballot. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release ballots to public" +msgstr "" + +#: options/preferences.py +msgid "This releases all the results for all rounds (including silent and break rounds). Do so only after the tournament is finished!" +msgstr "" + +#: options/preferences.py +msgid "Release all round results to public" +msgstr "" + +#: options/preferences.py +msgid "Enables display of confirmed ballots through private URLs. Intended for use after the tournament." +msgstr "" + +#: options/preferences.py +msgid "Release ballots through private URLs" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Data Entry" +msgstr "" + +#: options/preferences.py +msgid "Whether adjudicators can submit ballots themselves, and how they do so" +msgstr "" + +#: options/preferences.py +msgid "Ballot submissions from adjudicators" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Disabled (tab staff only)" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Use private URLs" +msgstr "" + +#: options/preferences.py options/presets.py +msgid "Use publicly accessible form" +msgstr "" + +#: options/preferences.py +msgid "Whether participants can submit feedback themselves, and how they do so" +msgstr "" + +#: options/preferences.py +msgid "Feedback submissions from participants" +msgstr "" + +#: options/preferences.py +msgid "If checked, users must enter a password when submitting public feedback and ballots" +msgstr "" + +#: options/preferences.py +msgid "Require password for submission" +msgstr "" + +#: options/preferences.py +msgid "Value of the password required for public submissions, if passwords are required" +msgstr "" + +#: options/preferences.py +msgid "Password for public submission" +msgstr "" + +#: options/preferences.py +msgid "Bypasses double checking by setting ballots to be automatically confirmed" +msgstr "" + +#: options/preferences.py +msgid "Bypass double checking" +msgstr "" + +#: options/preferences.py +msgid "Requires scores of draft ballots to be re-entered as part of the confirmation stage (to create more stringent check). Only applies to BP formats." +msgstr "" + +#: options/preferences.py +msgid "Enforce blind confirmations" +msgstr "" + +#: options/preferences.py +msgid "Whether assistants can access pages that can reveal matchups and motions ahead of public release (these pages are useful for displaying draws/motions to the public and for printing ballots)." +msgstr "" + +#: options/preferences.py +msgid "Assistant user access" +msgstr "" + +#: options/preferences.py +msgid "All areas (results entry, draw display, and motions)" +msgstr "" + +#: options/preferences.py +msgid "Just results entry and draw display" +msgstr "" + +#: options/preferences.py +msgid "Only results entry" +msgstr "" + +#: options/preferences.py +msgid "No access" +msgstr "" + +#: options/preferences.py +msgid "Whether participants can check themselves in/out through their private URL." +msgstr "" + +#: options/preferences.py +msgid "Participant self-checkin" +msgstr "" + +#: options/preferences.py +msgid "The amount of time (in hours) before a speaker or adjudicator's check-in event expires" +msgstr "" + +#: options/preferences.py +msgid "Check-In Window (People)" +msgstr "" + +#: options/preferences.py +msgid "The amount of time (in hours) before a room's check-in event expires" +msgstr "" + +#: options/preferences.py +msgid "Check-In Window (Rooms)" +msgstr "" + +#: options/preferences.py +msgid "Whether the printed scoresheets should show the 'circle digits' prompt to help check bad handwriting" +msgstr "" + +#: options/preferences.py +msgid "Ballot Digit Checks" +msgstr "" + +#: options/preferences.py +msgid "The location to return scoresheets to, printed on pre-printed ballots. Set to 'TBA' to hide." +msgstr "" + +#: options/preferences.py +msgid "Score return location" +msgstr "" + +#: options/preferences.py +msgid "The location to return feedback to, printed on pre-printed feedback forms. Set to 'TBA' to hide." +msgstr "" + +#: options/preferences.py +msgid "Feedback return location" +msgstr "" + +#: options/preferences.py +msgid "Lets debates have their status as postponed, as to not block draw generation." +msgstr "" + +#: options/preferences.py +msgid "Enable postponements" +msgstr "" + +#: options/preferences.py +msgid "Have each voting adjudicator submit a separate ballot." +msgstr "" + +#: options/preferences.py +msgid "Individual voting ballots" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Public Features" +msgstr "" + +#: options/preferences.py +msgid "Adds a flag signaling search engines to not include tournament pages in search results.Note that it may get ignored, and the other available settings will provide greater privacy." +msgstr "" + +#: options/preferences.py +msgid "Include site in search engines" +msgstr "" + +#: options/preferences.py +msgid "Allow all pages to be indexed by search engines." +msgstr "" + +#: options/preferences.py +msgid "Only allow the homepage to be indexed, do not allow any other pages (e.g. tabs, ballots, etc)." +msgstr "" + +#: options/preferences.py +msgid "Do not allow any pages to be indexed by search engines." +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing all participants in the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of participants list" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing all institutions in the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of institutions list" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing diversity statistics" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of diversity info" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing checkin statuses for individuals, institutions, and teams. Note that this page can be slow when used at very large tournaments." +msgstr "" + +#: options/preferences.py +msgid "Enable public view of the checkin statuses" +msgstr "" + +#: options/preferences.py +msgid "If the participants list is enabled, displays break category eligibility on that page" +msgstr "" + +#: options/preferences.py +msgid "Show break categories on participants page" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page listing pre-allocated sides" +msgstr "" + +#: options/preferences.py +msgid "Show pre-allocated sides to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing released draws" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of draw" +msgstr "" + +#: options/preferences.py +msgid "Disabled" +msgstr "" + +#: options/preferences.py +msgid "Show a single page for the current round's draw" +msgstr "" + +#: options/preferences.py +msgid "Show individual pages for all released draws" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing results of non-silent rounds" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of results" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing motions that have been explicitly released to the public" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of motions" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing team standings, showing wins only (not speaker scores or ranking)" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of team standings" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page for each team and adjudicator showing their records" +msgstr "" + +#: options/preferences.py +msgid "Enable public record pages" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing the team breaks. Intended for use after the break announcement." +msgstr "" + +#: options/preferences.py +msgid "Release team breaks to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing breaking adjudicators. Intended for use after the break announcement." +msgstr "" + +#: options/preferences.py +msgid "Release adjudicators break to public" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page detailing who has unsubmitted feedback" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of unsubmitted feedback" +msgstr "" + +#: options/preferences.py +msgid "Enables the public page showing the schedule" +msgstr "" + +#: options/preferences.py +msgid "Enable public view of shedule" +msgstr "" + +#: options/preferences.py +msgid "List of tournament staff, to be displayed on the tournament home page. Leave this blank or with the default text if you want to not show this information." +msgstr "" + +#: options/preferences.py +msgid "Tournament staff" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the tournament home page" +msgstr "" + +#: options/preferences.py +msgid "Welcome message" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "UI Options" +msgstr "" + +#: options/preferences.py +msgid "If showing results to public, show splitting adjudicators in them" +msgstr "" + +#: options/preferences.py +msgid "Show splitting adjudicators" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use code names for teams" +msgstr "" + +#: options/preferences.py +msgid "Team code names" +msgstr "" + +#: options/preferences.py +msgid "Do not use code names" +msgstr "" + +#: options/preferences.py +msgid "Use real names everywhere, and show code names in tooltips" +msgstr "" + +#: options/preferences.py +msgid "Use code names for public; real names with code names in tooltips for admins" +msgstr "" + +#: options/preferences.py +msgid "Use code names for public; code names with real names in tooltips for admins" +msgstr "" + +#: options/preferences.py +msgid "Use code names everywhere; do not use tooltips (real names show in some admin views)" +msgstr "" + +#: options/preferences.py +msgid "Whether and how to use code names for participants" +msgstr "" + +#: options/preferences.py +msgid "Participant code names" +msgstr "" + +#: options/preferences.py +msgid "Display team emoji in the public and admin interfaces" +msgstr "" + +#: options/preferences.py +msgid "Show emoji" +msgstr "" + +#: options/preferences.py +msgid "In tables listing teams, adds a column showing their institutions" +msgstr "" + +#: options/preferences.py +msgid "Show team institutions" +msgstr "" + +#: options/preferences.py +msgid "Hide the institutions of adjudicators on public pages and on printed ballots" +msgstr "" + +#: options/preferences.py +msgid "Show adjudicator institutions" +msgstr "" + +#: options/preferences.py +msgid "Enables a hover element on every team's name showing that team's speakers" +msgstr "" + +#: options/preferences.py +msgid "Show speakers in draw" +msgstr "" + +#: options/preferences.py +msgid "Input team seed in simple team importer" +msgstr "" + +#: options/preferences.py +msgid "Enable team seed in importer" +msgstr "" + +#: options/preferences.py +msgid "Do not ask for team seed" +msgstr "" + +#: options/preferences.py +msgid "Ask for numeric team seed" +msgstr "" + +#: options/preferences.py +msgid "Ask for descriptive team seed name" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Notifications" +msgstr "" + +#: options/preferences.py +msgid "The name of the organizer tasked with managing emails (in case of replies)" +msgstr "" + +#: options/preferences.py +msgid "Reply-to name" +msgstr "" + +#: options/preferences.py +msgid "The email address for handling replies" +msgstr "" + +#: options/preferences.py +msgid "Reply-to address" +msgstr "" + +#: options/preferences.py +msgid "A secret key to accept email status events" +msgstr "" + +#: options/preferences.py +msgid "Email status secret key" +msgstr "" + +#: options/preferences.py +msgid "Enables a copy of adjudicators' ballots to be automatically sent to them (by email) after they are entered in Tabbycat (for confirmation or checking)" +msgstr "" + +#: options/preferences.py +msgid "Ballot receipts" +msgstr "" + +#: options/preferences.py +msgid "The subject line for emails sent to adjudicators with their submitted ballot. Use '{{ DEBATE }}' as a placeholder for the associated debate" +msgstr "" + +#: options/preferences.py +msgid "Ballot receipt subject line" +msgstr "" + +#: options/preferences.py +msgid "The message body for emails sent to adjudicators with their submitted ballot." +msgstr "" + +#: options/preferences.py +msgid "Ballot receipt message" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Motions" +msgstr "" + +#: options/preferences.py +msgid "If checked, ballots require a motion to be entered" +msgstr "" + +#: options/preferences.py +msgid "Enable motions" +msgstr "" + +#: options/preferences.py +msgid "Whether the printed scoresheets should hide the text of motions (even if they have been entered and released)" +msgstr "" + +#: options/preferences.py +msgid "Ballot Hide Motions" +msgstr "" + +#: options/preferences.py +msgid "Enables the motion veto field on ballots, to track veto statistics" +msgstr "" + +#: options/preferences.py +msgid "Motion vetoes" +msgstr "" + +#: options/preferences.py +msgid "If showing results to public, show which motions were selected in the record" +msgstr "" + +#: options/preferences.py +msgid "Show motions in results" +msgstr "" + +#: options/preferences.py +msgid "Order in which are listed by round in the public view" +msgstr "" + +#: options/preferences.py +msgid "Order to display motions" +msgstr "" + +#: options/preferences.py +msgid "Earliest round first" +msgstr "" + +#: options/preferences.py +msgid "Latest round first" +msgstr "" + +#: options/preferences.py +msgid "Whether motions can be reused from one round to another." +msgstr "" + +#: options/preferences.py +msgid "Allow motion reuse" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Global Settings" +msgstr "" + +#: options/preferences.py +msgid "Enables external applications to access the site through a dedicated interface, subject to public information settings." +msgstr "" + +#: options/preferences.py +msgid "Enable API access" +msgstr "" + +#: options/preferences.py options/templates/preferences_index.html +msgid "Registration" +msgstr "" + +#: options/preferences.py +msgid "How many speakers should each team have" +msgstr "" + +#: options/preferences.py +msgid "Speakers per team" +msgstr "" + +#: options/preferences.py +msgid "How should team names be assigned" +msgstr "" + +#: options/preferences.py +msgid "Team name standard" +msgstr "" + +#: options/preferences.py +msgid "Assigned by user" +msgstr "" + +#: options/preferences.py +msgid "Alphabetical (Team A, Team B, ...)" +msgstr "" + +#: options/preferences.py +msgid "Numerical (Team 1, Team 2, ...)" +msgstr "" + +#: options/preferences.py +msgid "Speaker initials (Team CZ, Team BT, ...)" +msgstr "" + +#: options/preferences.py +msgid "Which fields should teams be allowed to submit, in addition to fields with handling through other settings." +msgstr "" + +#: options/preferences.py +msgid "Customizable team fields" +msgstr "" + +#: options/preferences.py +msgid "Prefix name with institution" +msgstr "" + +#: options/preferences.py +msgid "Break categories" +msgstr "" + +#: options/preferences.py +msgid "Seed" +msgstr "" + +#: options/preferences.py +msgid "Emoji" +msgstr "" + +#: options/preferences.py +msgid "Which fields should speakers submit, in addition to fields with handling through other settings." +msgstr "" + +#: options/preferences.py +msgid "Customizable speaker fields" +msgstr "" + +#: options/preferences.py +msgid "Email address" +msgstr "" + +#: options/preferences.py +msgid "Phone number" +msgstr "" + +#: options/preferences.py +msgid "Gender" +msgstr "" + +#: options/preferences.py +msgid "Public speaker categories" +msgstr "" + +#: options/preferences.py +msgid "Which fields should adjudicators be allowed to submit" +msgstr "" + +#: options/preferences.py +msgid "Customizable adjudicator fields" +msgstr "" + +#: options/preferences.py +msgid "Allow institutions to register for the tournament" +msgstr "" + +#: options/preferences.py +msgid "Enable institutional registration" +msgstr "" + +#: options/preferences.py +msgid "Allow institutions to register participants (up to their allocated slots)" +msgstr "" + +#: options/preferences.py +msgid "Enable institutional participant registration" +msgstr "" + +#: options/preferences.py +msgid "Whether to require institutions to declare the number of teams and adjudicators it wishes to send with approval required before registering." +msgstr "" + +#: options/preferences.py +msgid "Use participant slots" +msgstr "" + +#: options/preferences.py +msgid "Allow teams to register independently to an institution" +msgstr "" + +#: options/preferences.py +msgid "Enable open team registration" +msgstr "" + +#: options/preferences.py +msgid "Allow adjudicators to register independently to an institution" +msgstr "" + +#: options/preferences.py +msgid "Enable open adjudicator registration" +msgstr "" + +#: options/preferences.py +msgid "If using code names, how should they be generated" +msgstr "" + +#: options/preferences.py +msgid "Code name standard" +msgstr "" + +#: options/preferences.py +msgid "Emojis" +msgstr "" + +#: options/preferences.py +msgid "Last names (e.g. 'Jones & Smith')" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the institution registration form" +msgstr "" + +#: options/preferences.py +msgid "Institution register message" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the adjudicator registration form" +msgstr "" + +#: options/preferences.py +msgid "Adjudicator register message" +msgstr "" + +#: options/preferences.py +msgid "Message to be displayed on the team registration form" +msgstr "" + +#: options/preferences.py +msgid "Team register message" +msgstr "" + +#: options/presets.py +msgid "Enable Public Information" +msgstr "" + +#: options/presets.py +msgid "Disable Public Information" +msgstr "" + +#: options/presets.py +msgid "Australs Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, intermediate brackets, one-up-one-down. Compliant with AIDA rules." +msgstr "" + +#: options/presets.py +msgid "British Parliamentary Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 vs 2 vs 2. Compliant with WUDC rules." +msgstr "" + +#: options/presets.py +msgid "Canadian Parliamentary Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with replies (unscored) and POIs. May require additional configuration depending on regional variations." +msgstr "" + +#: options/presets.py +msgid "Australian Easters Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 without replies, set motions, novices, intermediate bubbles, one-up-one-down. Compliant with AIDA rules." +msgstr "" + +#: options/presets.py +msgid "2 vs 2 Impromptu" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with replies, chosen motions, chosen sides, and novice statuses." +msgstr "" + +#: options/presets.py +msgid "3 vs 3 Prepared" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with preallocated sides, publicly displayed sides and motions, and novice statuses." +msgstr "" + +#: options/presets.py +msgid "UADC Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, and all adjudicators can receive feedback from teams." +msgstr "" + +#: options/presets.py +msgid "WSDC Rules" +msgstr "" + +#: options/presets.py +msgid "3 vs 3 with replies, chosen motions, prop/opp side labels, and all adjudicators can receive feedback from teams." +msgstr "" + +#: options/presets.py +msgid "APDA Rules" +msgstr "" + +#: options/presets.py +msgid "2 vs 2 with speech rankings and byes" +msgstr "" + +#: options/presets.py +msgid "Public Speaking" +msgstr "" + +#: options/presets.py +msgid "Arbitrary number of teams per room, one speech each, no team points" +msgstr "" + +#: options/presets.py +msgid "Public Information Options" +msgstr "" + +#: options/presets.py +msgid "For tournaments hosted online: this sets it up so that people can access the draw and other generally useful information via the tab site." +msgstr "" + +#: options/presets.py +msgid "Tab Release Options" +msgstr "" + +#: options/presets.py +msgid "For when a tab is ready to be released. This will publicly display the results of all rounds, the team tab, the speaker tab, etc" +msgstr "" + +#: options/presets.py +msgid "Use Private URLs" +msgstr "" + +#: options/presets.py +msgid "Enables participant data entry through private URLs." +msgstr "" + +#: options/presets.py +msgid "Use Public Forms" +msgstr "" + +#: options/presets.py +msgid "Enables participant data entry through public forms." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Configuration" +msgstr "" + +#: options/templates/preferences_index.html +msgid "The range of scores that can awarded to speeches, replies, and teams" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How teams are paired in the draw and how adjudicators are auto-allocated" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How many speeches in a debate, how motions are decided, and whether reply speeches are used" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How teams and speakers are ranked in the released tabs" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How adjudicators are ranked and who can submit feedback" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How and where are motions used" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How participants can register for the tournament" +msgstr "" + +#: options/templates/preferences_index.html +msgid "When to release a public tab is made visible and what data it shows" +msgstr "" + +#: options/templates/preferences_index.html +msgid "How ballots, feedback, and check-ins are entered, including online submission options" +msgstr "" + +#: options/templates/preferences_index.html +msgid "What information the site displays on the publicly accessible pages" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Small tweaks in what information is presented by the interface" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Configures sending notifications, such as emails confirming ballot submissions or team points" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Settings which can affect all tournaments on the site" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Manually Set Current Round" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Tabbycat will prompt you to advance the current round on each round's results page. However, if there are special circumstances that require you to override this and set the current round to something else, use this page." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Set Round Weights for Tapered Scoring" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Rounds can be weighted so that certain rounds are worth more team points." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Invite User to Create an Account" +msgstr "" + +#: options/templates/preferences_index.html +msgid "Users can be created through an invitation link sent to their email, with associated permissions." +msgstr "" + +#: options/templates/preferences_index.html +msgid "Presets" +msgstr "" + +#: options/templates/preferences_index.html +msgid "These show changes to your configuration for common situations and debate formats. You may apply these settings or modify them for your tournament directly on the preset's page." +msgstr "" + +#: options/templates/preferences_index.html +#, python-format +msgid "Apply %(preset)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#, python-format +msgid "Configuration: %(section)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#, python-format +msgid "Edit Configuration: %(section)s" +msgstr "" + +#: options/templates/preferences_section_set.html +#: options/templates/preset_edit.html +msgid "Back to Configuration" +msgstr "" + +#: options/templates/preset_edit.html +#, python-format +msgid "This preference will be changed" +msgid_plural "These %(counter)s preferences will be changed" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: options/templates/preset_edit.html +#, python-format +msgid "This preference will not change" +msgid_plural "These %(counter)s preferences will not change" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: options/templates/preset_edit.html +msgid "Apply Changes" +msgstr "" + +#: options/templates/preset_edit.html +msgid "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." +msgstr "" + +#: options/utils.py +#, python-format +msgid "The following metrics can't be listed twice: %(duplicates)s" +msgstr "" + +#: options/views.py +#, python-format +msgid "Tournament options (%(section)s) saved." +msgstr "" + +#: options/views.py +#, python-format +msgid "Apply Preset: %s" +msgstr "" + +#: options/views.py +#, python-format +msgid "Tournament options saved based on preset %(name)s." +msgstr "" + diff --git a/tabbycat/participants/locale/cs/LC_MESSAGES/django.po b/tabbycat/participants/locale/cs/LC_MESSAGES/django.po index 7d052f9dc4f..3f6e7d11533 100644 --- a/tabbycat/participants/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:50\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: philip_tc\n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -594,7 +594,7 @@ msgstr "Teze:" #: participants/templates/current_round/common.html msgid "View Info Slide" -msgstr "" +msgstr "Zobrazit Info Slide" #: participants/templates/current_round/common.html msgid "The motion(s) for this round haven't yet been released." @@ -723,22 +723,22 @@ msgstr "" #: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating as the %(side)s team against %(opponent)s." -msgstr "" +msgstr "%(team)s debatuje jako %(side)s proti %(opponent)s." #: participants/templates/current_round/round_team.html #, python-format msgid "You are debating as the %(side)s team against %(opponent)s." -msgstr "" +msgstr "Debatujete jako %(side)s proti %(opponent)s." #: participants/templates/current_round/round_team.html #, python-format msgid "%(team)s is debating against %(opponent)s." -msgstr "" +msgstr "%(team)s debatuje proti %(opponent)s." #: participants/templates/current_round/round_team.html #, python-format msgid "You are debating against %(opponent)s." -msgstr "" +msgstr "Debatujete proti %(opponent)s." #: participants/templates/current_round/round_team.html #, python-format diff --git a/tabbycat/participants/locale/el/LC_MESSAGES/django.po b/tabbycat/participants/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..0f89be176ec --- /dev/null +++ b/tabbycat/participants/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1016 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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 "" + +#: participants/models.py +msgid "Team slots requested" +msgstr "" + +#: participants/models.py +msgid "Team slots allocated" +msgstr "" + +#: participants/models.py +msgid "Adjudicator slots requested" +msgstr "" + +#: participants/models.py +msgid "Adjudicator slots allocated" +msgstr "" + +#: participants/models.py +msgid "tournament institution" +msgstr "" + +#: participants/models.py +msgid "tournament institutions" +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 "last name" +msgstr "" + +#: participants/models.py +msgid "The last name may be used for team names or code names" +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 "Redacted" +msgstr "" + +#: participants/models.py +msgid "coach" +msgstr "" + +#: participants/models.py +msgid "coaches" +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 "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 +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 "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/views.py +#, python-format +msgid "Record for %(name)s" +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 "Custom Questions:" +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 +msgid "View Info Slide" +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 +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/es/LC_MESSAGES/django.po b/tabbycat/participants/locale/es/LC_MESSAGES/django.po index cc13ab78668..7e5b0193857 100644 --- a/tabbycat/participants/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/es/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:49\n" +"PO-Revision-Date: 2025-08-23 16:31\n" "Last-Translator: philip_tc\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -458,7 +458,7 @@ msgstr "Institución:" #: participants/templates/adjudicator_registration_card.html #: participants/templates/team_registration_card.html msgid "Unaffiliated" -msgstr "" +msgstr "Independiente" #: participants/templates/adjudicator_registration_card.html #: participants/templates/team_registration_card.html diff --git a/tabbycat/participants/locale/sk/LC_MESSAGES/django.po b/tabbycat/participants/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..0e3ea6d6f46 --- /dev/null +++ b/tabbycat/participants/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1030 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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 "" + +#: participants/models.py +msgid "Team slots requested" +msgstr "" + +#: participants/models.py +msgid "Team slots allocated" +msgstr "" + +#: participants/models.py +msgid "Adjudicator slots requested" +msgstr "" + +#: participants/models.py +msgid "Adjudicator slots allocated" +msgstr "" + +#: participants/models.py +msgid "tournament institution" +msgstr "" + +#: participants/models.py +msgid "tournament institutions" +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 "last name" +msgstr "" + +#: participants/models.py +msgid "The last name may be used for team names or code names" +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 "Redacted" +msgstr "" + +#: participants/models.py +msgid "coach" +msgstr "" + +#: participants/models.py +msgid "coaches" +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 "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 +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 "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/views.py +#, python-format +msgid "Record for %(name)s" +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 "Custom Questions:" +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] "" +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 "" + +#: participants/templates/current_round/common.html +msgid "View Info Slide" +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 "" + +#: 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 +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/uk/LC_MESSAGES/django.po b/tabbycat/participants/locale/uk/LC_MESSAGES/django.po index bbf8fd04050..9ba517f0cee 100644 --- a/tabbycat/participants/locale/uk/LC_MESSAGES/django.po +++ b/tabbycat/participants/locale/uk/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:48\n" +"PO-Revision-Date: 2025-07-10 06:33\n" "Last-Translator: philip_tc\n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -205,7 +205,7 @@ msgstr "" #: participants/models.py msgid "anonymous" -msgstr "" +msgstr "анонімно" #: participants/models.py msgid "Anonymous persons will have their name and team redacted on public tab releases" @@ -357,7 +357,7 @@ msgstr "" #: participants/models.py msgid "team" -msgstr "" +msgstr "команда" #: participants/models.py msgid "teams" diff --git a/tabbycat/printing/locale/el/LC_MESSAGES/django.po b/tabbycat/printing/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..548522e9a2b --- /dev/null +++ b/tabbycat/printing/locale/el/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: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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/es/LC_MESSAGES/django.po b/tabbycat/printing/locale/es/LC_MESSAGES/django.po index 61d69ee486b..95f5f90246f 100644 --- a/tabbycat/printing/locale/es/LC_MESSAGES/django.po +++ b/tabbycat/printing/locale/es/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ 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" +"PO-Revision-Date: 2025-08-23 16:31\n" "Last-Translator: philip_tc\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -20,59 +20,59 @@ msgstr "" #: printing/templates/feedback_list.html msgid "Feedback Forms" -msgstr "Formularios de Feedback" +msgstr "Formularios de comentarios" #: printing/templates/feedback_list.html #, python-format msgid "Printable Feedback Forms for %(round)s" -msgstr "Formularios de Feedback imprimibles para %(round)s" +msgstr "Formularios de comentarios imprimibles para %(round)s" #: 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." +msgstr "Ninguna pregunta de comentarios ha sido añadida para que las personas juezas o los equipos respondan." #: 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." +msgstr "Ninguna pregunta de comentarios ha sido añadida para que los equipos respondan." #: 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." +msgstr "Ninguna pregunta de comentarios ha sido añadida para que las personas juezas respondan." #: 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 "" +msgstr "%(first_sentence)s Revisa la documentación para obtener información sobre cómo añadirlas (si no, estos formularios van a estar bastante vacíos)." #: printing/templates/feedback_list.html msgid "There are no feedback sheets available — perhaps adjudicators have not been allocated?" -msgstr "" +msgstr "No hay formatos de comentarios disponibles - ¿quizás las personas juezas no han sido asignadas?" #: 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 "Usa Ctrl+P para imprimir o guardar en PDF. Asegúrate de establecer la orientación de página adecuada, deshabilitar encabezados/piés de página y habilitar fondos de página. Esto funciona mejor en Chrome." #: printing/templates/randomised_url_sheets.html #, python-format msgid "Printable %(sheet)s URLs" -msgstr "" +msgstr "URLs %(sheet)s imprimibles" #: 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 "" +msgstr "Esta página está diseñada para ser impresa en hojas A4 por lado y lado, con la cara externa mostrando el nombre de la participante, y la cara interna mostrando la URL. Usa Ctrl+P para imprimir; usa Chrome para mejores resultados." #: printing/templates/randomised_url_sheets.html #, python-format msgid "Private URL for %(name)s (%(group)s)" -msgstr "" +msgstr "URL privada para %(name)s (%(group)s)" #: printing/templates/randomised_url_sheets.html msgid "Please bookmark the following URL, you will use it to submit forms throughout the tournament:" -msgstr "" +msgstr "Por favor pon un marcador en la siguiente URL, la usarás para enviar formularios durante del torneo:" #: printing/templates/scoresheet_list.html msgid "Printable Scoresheets" -msgstr "" +msgstr "Hojas de puntuación imprimibles" #: printing/templates/scoresheet_list.html #, python-format @@ -81,15 +81,15 @@ msgstr "para %(round)s" #: printing/templates/scoresheet_list.html msgid "Edit Motion(s)" -msgstr "" +msgstr "Editar Moción(es)" #: printing/templates/scoresheet_list.html msgid "There are no scoresheets available — perhaps the round has not been drawn?" -msgstr "" +msgstr "No hay hojas de puntuación disponibles - ¿quizás la ronda no ha sido generada?" #: printing/templates/scoresheet_list.html msgid "Edit Ballot Motions" -msgstr "" +msgstr "Editar Mociones de Balota" #: printing/templates/scoresheet_list.html msgid "×" @@ -97,19 +97,19 @@ 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 "" +msgstr "Editar mociones acá no las guardará permanentemente - solo actualizará el texto usado en las balotas imprimidas abajo. Esto puede ser útil para usar mociones que solo marquen la posición (para asegurar confidencialidad) en Tabbycat, pero seguirás queriendo imprimir balotas con mociones correctas." #: printing/templates/scoresheet_list.html msgid "Motion" -msgstr "" +msgstr "Moción" #: printing/templates/scoresheet_list.html msgid "Changes to motions will update in the displayed ballots automatically" -msgstr "" +msgstr "Cambios en las mociones se actualizarán automáticamente en las balotas visualizadas" #: 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 "Los discursos duran x minutos, el rango de puntaje de persona oradora va de x a x. Tienes x minutos para adjudicar el debate." #: printing/views.py msgid "Overall Score" @@ -117,7 +117,7 @@ msgstr "Puntaje general" #: printing/views.py msgid "Unaffiliated" -msgstr "" +msgstr "Independiente" #: printing/views.py msgid "Team" diff --git a/tabbycat/printing/locale/sk/LC_MESSAGES/django.po b/tabbycat/printing/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..83ee2e38e4a --- /dev/null +++ b/tabbycat/printing/locale/sk/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: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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/privateurls/locale/cs/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po index 7106ee74907..37377ce3b24 100644 --- a/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/privateurls/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:47\n" +"PO-Revision-Date: 2025-12-01 14:28\n" "Last-Translator: philip_tc\n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -162,7 +162,7 @@ msgstr "Rozhodčí" #: privateurls/views.py msgid "All participants already have private URLs. If you want to delete them, use the Edit Database area." -msgstr "" +msgstr "Všichni účastníci již mají soukromé URL. Pokud je chcete smazat, použijte " #: privateurls/views.py #, python-format diff --git a/tabbycat/privateurls/locale/el/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..41463b7b1a9 --- /dev/null +++ b/tabbycat/privateurls/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,188 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\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_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Your team has an incomplete number of speakers. Please share the registration link with your partner(s): %(link)s" +msgstr "" + +#: privateurls/templates/private_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/private_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/private_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/private_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "Show barcode for check-in" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +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/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/sk/LC_MESSAGES/django.po b/tabbycat/privateurls/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..4c5147504d8 --- /dev/null +++ b/tabbycat/privateurls/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,192 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\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_url_landing.html +msgid "Private URL" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "for %(name)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "(%(team)s)" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Your team has an incomplete number of speakers. Please share the registration link with your partner(s): %(link)s" +msgstr "" + +#: privateurls/templates/private_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/private_url_landing.html +#, python-format +msgid "Revoke check-in from %(check_time)s" +msgstr "" + +#: privateurls/templates/private_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/private_url_landing.html +#, python-format +msgid "You have been checked in at %(check_time)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "You are not currently checked in." +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "Show barcode for check-in" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Submit Ballot for %(round)s" +msgstr "" + +#: privateurls/templates/private_url_landing.html +msgid "Submit Feedback" +msgstr "" + +#: privateurls/templates/private_url_landing.html +#, python-format +msgid "Registration (%(name)s)" +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/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] "" +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 "" + diff --git a/tabbycat/results/locale/el/LC_MESSAGES/django.po b/tabbycat/results/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..ab7a5a2a369 --- /dev/null +++ b/tabbycat/results/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1175 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/results/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 948\n" + +#: results/admin.py +msgid "Resave results" +msgstr "" + +#: results/admin.py +#, python-format +msgid "Resaved results for %(count)d ballot submission." +msgid_plural "Resaved results for %(count)d ballot submissions." +msgstr[0] "" +msgstr[1] "" + +#: results/admin.py +msgid "Speaker" +msgstr "" + +#: results/apps.py results/templates/public_results_index.html results/views.py +msgid "Results" +msgstr "" + +#: results/forms.py +msgid "Tournament password" +msgstr "" + +#: results/forms.py +msgid "That password isn't correct." +msgstr "" + +#: results/forms.py +msgid "The ballot set can't be both discarded and confirmed." +msgstr "" + +#: results/forms.py +msgid "The debate status can't be confirmed unless one of the ballot sets is confirmed." +msgstr "" + +#: results/forms.py +msgid "---------" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(aff_team)s affirmed, %(neg_team)s negated" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(side)s's motion veto" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(team)s (%(side)s)" +msgstr "" + +#: results/forms.py +msgid "Winner" +msgstr "" + +#: results/forms.py +msgid "Mark as a duplicate speech" +msgstr "" + +#: results/forms.py +msgid "Only one team can forfeit" +msgstr "" + +#: results/forms.py +msgid "This field is required." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The speaker %(speaker)s doesn't appear to be on team %(team)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(speaker)s appears to have given %(count)d substantive speech." +msgid_plural "%(speaker)s appears to have given %(count)d substantive speeches." +msgstr[0] "" +msgstr[1] "" + +#: results/forms.py +msgid "The last substantive speaker and reply speaker can't be the same." +msgstr "" + +#: results/forms.py +msgid "The reply speaker for this team did not give a substantive speech." +msgstr "" + +#: results/forms.py +msgid "The total scores for the teams are the same (i.e. a draw)." +msgstr "" + +#: results/forms.py +msgid "The declared winner does not correspond to the team with the highest score." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The total scores for the following teams are the same: %(teams)s" +msgstr "" + +#: results/forms.py +#, python-format +msgid "The margin (%(margin).1f) exceeds the maximum allowable margin (%(max_margin).1f)." +msgstr "" + +#: results/forms.py +msgid "Ranks cannot be tied." +msgstr "" + +#: results/forms.py +msgid "Ranks must correspond to speaker scores" +msgstr "" + +#: results/forms.py +#, python-format +msgid "The total scores for the teams are the same (i.e. a draw) for adjudicator %(adjudicator)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The declared winner does not correspond to the team with the highest score for adjudicator %(adjudicator)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The margin (%(margin).1f) in the ballot of adjudicator %(adjudicator)s exceeds the maximum allowable margin (%(max_margin).1f)." +msgstr "" + +#: results/forms.py +msgid "Sides for this debate are not confirmed. You can't save a result for this debate until the sides have been confirmed in the draw." +msgstr "" + +#: results/forms.py +#, python-format +msgid "There must be exactly %(n)d team advancing." +msgid_plural "There must be exactly %(n)d teams advancing." +msgstr[0] "" +msgstr[1] "" + +#: results/forms.py +msgid "There must be exactly 1 team advancing." +msgstr "" + +#: results/models.py +msgid "Tab room" +msgstr "" + +#: results/models.py +msgid "Public" +msgstr "" + +#: results/models.py +msgid "Automation" +msgstr "" + +#: results/models.py +msgid "timestamp" +msgstr "" + +#: results/models.py +msgid "version" +msgstr "" + +#: results/models.py +msgid "submitter type" +msgstr "" + +#: results/models.py +msgid "confirmed" +msgstr "" + +#: results/models.py +msgid "from private URL" +msgstr "" + +#: results/models.py +msgid "from participant" +msgstr "" + +#: results/models.py +msgid "submitter" +msgstr "" + +#: results/models.py +msgid "confirmer" +msgstr "" + +#: results/models.py +msgid "confirm timestamp" +msgstr "" + +#: results/models.py +msgid "IP address" +msgstr "" + +#: results/models.py +msgid "A tab room ballot must have a user associated." +msgstr "" + +#: results/models.py +msgid "debate" +msgstr "" + +#: results/models.py +msgid "motion" +msgstr "" + +#: results/models.py +msgid "discarded" +msgstr "" + +#: results/models.py +msgid "single adjudicator" +msgstr "" + +#: results/models.py +msgid "Whether this submission represents only the submitting adjudicator on a panel, when individual adjudicator ballots are enabled." +msgstr "" + +#: results/models.py +msgid "forfeit" +msgstr "" + +#: results/models.py +msgid "Whether a team had forfeited the debate and so speaker scores were exceptionally not attributed." +msgstr "" + +#: results/models.py +msgid "ballot submission" +msgstr "" + +#: results/models.py +msgid "ballot submissions" +msgstr "" + +#: results/models.py +#, python-format +msgid "Debate is in %(round)s but motion (%(motion)s) is not in round" +msgstr "" + +#: results/models.py +msgid "A ballot can't be both confirmed and discarded!" +msgstr "" + +#: results/models.py +msgid "debate adjudicator" +msgstr "" + +#: results/models.py +msgid "debate team" +msgstr "" + +#: results/models.py +msgid "win" +msgstr "" + +#: results/models.py +msgid "margin" +msgstr "" + +#: results/models.py +msgid "score" +msgstr "" + +#: results/models.py +msgid "team score by adjudicator" +msgstr "" + +#: results/models.py +msgid "team scores by adjudicator" +msgstr "" + +#: results/models.py +msgid "The debate team, debate adjudicator and ballot submission must all relate to the same debate." +msgstr "" + +#: results/models.py +msgid "position" +msgstr "" + +#: results/models.py +msgid "speaker score by adjudicator" +msgstr "" + +#: results/models.py +msgid "speaker scores by adjudicator" +msgstr "" + +#: results/models.py +msgid "points" +msgstr "" + +#: results/models.py +msgid "votes given" +msgstr "" + +#: results/models.py +msgid "votes possible" +msgstr "" + +#: results/models.py +msgid "has ghost score" +msgstr "" + +#: results/models.py +msgid "team score" +msgstr "" + +#: results/models.py +msgid "team scores" +msgstr "" + +#: results/models.py +msgid "speaker" +msgstr "" + +#: results/models.py +msgid "rank" +msgstr "" + +#: results/models.py +msgid "ghost" +msgstr "" + +#: results/models.py +msgid "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)." +msgstr "" + +#: results/models.py +msgid "speaker score" +msgstr "" + +#: results/models.py +msgid "speaker scores" +msgstr "" + +#: results/models.py +msgid "The debate team and speaker must be from the same team." +msgstr "" + +#: results/models.py +msgid "The ballot submission and debate team must relate to the same debate." +msgstr "" + +#: results/models.py +msgid "tournament" +msgstr "" + +#: results/models.py +msgid "sequence" +msgstr "" + +#: results/models.py +msgid "weight" +msgstr "" + +#: results/models.py +msgid "minimum score" +msgstr "" + +#: results/models.py +msgid "maximum score" +msgstr "" + +#: results/models.py +msgid "step" +msgstr "" + +#: results/models.py +msgid "score criterion" +msgstr "" + +#: results/models.py +msgid "score criteria" +msgstr "" + +#: results/models.py +msgid "speaker score for criterion" +msgstr "" + +#: results/models.py +msgid "speaker scores for criteria" +msgstr "" + +#: results/models.py +msgid "speaker score for criterion by adjudicator" +msgstr "" + +#: results/models.py +msgid "speaker scores for criteria by adjudicator" +msgstr "" + +#: results/result.py +msgid "Inconsistent speaker order" +msgstr "" + +#: results/result.py +msgid "Inconsistent marking of duplicate (iron-person) speeches" +msgstr "" + +#: results/result.py +msgid "Winners are not identical" +msgstr "" + +#: results/result.py +msgid "Criterion scores are not identical" +msgstr "" + +#: results/result.py +msgid "Scores are not identical" +msgstr "" + +#: results/result.py +msgid "Speech ranks are not identical" +msgstr "" + +#: results/tables.py +msgid "Whether this debate's ballot has been checked in" +msgstr "" + +#: results/tables.py +msgid "Status of this debate's ballot" +msgstr "" + +#: results/templates/admin_results.html +msgid "Display Draw" +msgstr "" + +#: results/templates/admin_results.html +msgid "Check-In Ballots" +msgstr "" + +#: results/templates/admin_results.html +msgid "Recent 'Iron-Persons'" +msgstr "" + +#: results/templates/admin_results.html +msgid "Teams who have recently missed a speaker" +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "A speaker from %(team)s gave multiple speeches in the previous round" +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "A speaker from %(team)s gave multiple speeches in the current round" +msgstr "" + +#: results/templates/admin_results.html +msgid "No known cases in the current or previous round" +msgstr "" + +#: results/templates/admin_results.html +msgid "Complete Round" +msgstr "" + +#: results/templates/admin_results.html +msgid "This page automatically updates with the new ballot entries and checkins as they occur. You will, however, need to reload it once all ballots are completed in order to advance the round." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "The following debate appears to have scoresheets from trainees: %(debates_list)s." +msgid_plural "The following %(ndebates)s debates appear to have scoresheets from trainees: %(debates_list)s." +msgstr[0] "" +msgstr[1] "" + +#: results/templates/admin_results.html +#, python-format +msgid "This can happen if you demote a panellist to trainee after a result has been submitted for that debate. This may indicate that there is an inconsistency in results data, which may cause unexpected results (or crashes). Please consider going to the Edit Database area and deleting the offending \"speaker scores by adj\" objects, and then opening and resaving the result here." +msgstr "" + +#: results/templates/admin_results.html +msgid "One or more debates in this round appear to have more than one confirmed ballot submission. This can cause unexpected results (or crashes), because Tabbycat assumes that each debate has at most one confirmed ballot submission. This inconsistency can generally only arise if you manipulate the database with SQL queries directly. You'll need to find the offending debate(s) and ballot submissions yourself in the Edit Database area, or if that doesn't work, you might need to find them using SQL queries directly." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "This tournament's configuration is set to British Parliamentary with one ballot per voting adjudicator. This combination isn't allowed: BP tournaments must use consensus ballots. Results can't be entered while this configuration is in place. Please revise this tournament's configuration before you try to enter results." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Currently there are no motions entered for this round, so debate results cannot be entered. Add Motions." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Your tournament configuration allows ballots to be submitted online by adjudicators. The draw must be released before they can do so for this round." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Your tournament configuration allows feedback to be submitted online by participants. The draw must be released before they can do so for this round." +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/ballot_entry_base.html +msgid "Back to All Results" +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/ballot_entry_base.html +msgid "Create a new ballot set for this debate" +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "You can't confirm this ballot set because you entered it." +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "You can't confirm this ballot set because it is for a single adjudicator. Use the merge function." +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "Confirm results" +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "Results are incorrect" +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/enter_results.html +#: results/templates/public_enter_results.html +msgid "Emails will be sent to adjudicators when the ballot is confirmed." +msgstr "" + +#: results/templates/assistant_results.html results/views.py +msgid "Enter Results" +msgstr "" + +#: results/templates/assistant_results.html +msgid "This page automatically updates with the new ballot entries and checkins as they occur." +msgstr "" + +#: results/templates/assistant_results.html +msgid "Currently there are no motions entered for this round, so debate results cannot be entered. Please ask an administrator to add motions." +msgstr "" + +#: results/templates/assistant_results.html +#, python-format +msgid "One debate does not have its sides confirmed. Results for this debate cannot be entered until its side allocations are marked as confirmed." +msgid_plural "%(ndebates)s debate do not have their sides confirmed. Results for these debates cannot be entered until their side allocations are marked as confirmed." +msgstr[0] "" +msgstr[1] "" + +#: results/templates/assistant_results.html +#, python-format +msgid "One debate has a panel with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgid_plural "%(num_even_panel)s debates have panels with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgstr[0] "" +msgstr[1] "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "Debate Information" +msgstr "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "No speakers spoke twice (no 'iron-person' speeches)" +msgstr "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "A speaker spoke twice (an 'iron-person' speech)" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Result" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Rank" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Margin" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "There are some problems with this scoresheet. Please review and correct them." +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Ballot from %(name)s (%(institution)s)" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Ballot from %(name)s" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/public_ballot_set.html +msgid "Scoresheet" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Solo Chair" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +msgid "Chair" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +msgid "Panellist" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Trainee" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Assign sides before entering scores" +msgstr "" + +#: results/templates/ballot/ballot_speaks.html +msgid "Duplicate speeches are hidden from the speaker tab. If a speaker is 'iron-personing' you would typically mark only the lesser of their scores as a duplicate." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "There is %(number)s existing ballot set for this debate." +msgid_plural "There are %(number)s existing ballot sets for this debate." +msgstr[0] "" +msgstr[1] "" + +#: results/templates/ballot/other_ballots_list.html +msgid "This ballot set is confirmed." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "This ballot set is discarded." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "CURRENTLY VIEWING" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "MERGING" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "Version %(version)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "entered by %(submitter)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "submitted from %(adjudicator)s's private URL," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "submitted from the public form on %(ip_address)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "%(timestamp)s (%(timeago)s ago)," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "unknown" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "confirmed by %(confirmer)s" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "unconfirmed" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "(discarded)" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "(identical to version %(others)s)" +msgid_plural "(identical to versions %(others)s)" +msgstr[0] "" +msgstr[1] "" + +#: results/templates/ballot_entry.html +#, python-format +msgid "This ballot entry interface is in beta, if you encounter any problems the older version of the interface is available here." +msgstr "" + +#: results/templates/ballot_entry_base.html +msgid "This debate has a panel with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgstr "" + +#: results/templates/ballot_entry_base.html +#, python-format +msgid "%(team)s had speakers who spoke multiple times in the last round — i.e. an 'iron' person speech. Please carefully check the ballot to see if that is still the case for this round. If it is, ensure the speakers selected below reflect this." +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Scoresheet from chair %(chair)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +msgid "Scoresheet, no chair set" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's speaker field: %(error)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's duplicate speaker field: %(error)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's score field: %(error)s" +msgstr "" + +#: results/templates/debate_postponement_form.html +msgid "Postponed" +msgstr "" + +#: results/templates/debate_postponement_form.html +msgid "Postpone" +msgstr "" + +#: results/templates/enter_results.html +msgid "Ballot Status" +msgstr "" + +#: results/templates/enter_results.html +msgid "only the confirmed ballot set will affect this debate's result" +msgstr "" + +#: results/templates/enter_results.html +msgid "Debate Status" +msgstr "" + +#: results/templates/enter_results.html +msgid "all debates must be confirmed to complete the round" +msgstr "" + +#: results/templates/enter_results.html +msgid "Save Ballot" +msgstr "" + +#: results/templates/enter_results.html +msgid "Cancel Entry" +msgstr "" + +#: results/templates/includes/public_enter_results_info.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 "" + +#: results/templates/privateurl_ballot_set.html +#: results/templates/privateurl_ballot_set_error.html +#, python-format +msgid "The page is provided to allow you, %(name)s, to verify your own scoresheet. You must not share this URL with anyone. Sharing the URL will allow others to access all actions from your personal landing page." +msgstr "" + +#: results/templates/privateurl_ballot_set_error.html +#: results/templates/public_ballot_set_error.html +msgid "Ballot Not Available" +msgstr "" + +#: results/templates/privateurl_ballot_set_error.html +#, python-format +msgid "Back to your private landing page." +msgstr "" + +#: results/templates/public_add_ballot.html +#: results/templates/public_add_ballot_unreleased.html +msgid "Enter Ballot" +msgstr "" + +#: results/templates/public_add_ballot.html +msgid "Who are you?" +msgstr "" + +#: results/templates/public_add_ballot.html +msgid "(click your name on this list)" +msgstr "" + +#: results/templates/public_add_ballot_unreleased.html +#, python-format +msgid "The draw and/or motions for %(round)s have yet to be released." +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Ballot for %(matchup)s" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "%(round)s @ %(room)s" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Return to landing page" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Return to Results for %(round)s" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Motion" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "From %(name)s (%(institution)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Total for %(name)s (%(side)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "%(name)s (%(side)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Won" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Lost" +msgstr "" + +#: results/templates/public_ballot_set_error.html +#, python-format +msgid "Back to the tournament home page." +msgstr "" + +#: results/templates/public_enter_results.html +#, python-format +msgid "%(adjudicator)s, note that you must enter all of the ballots from your panel, not just your own!" +msgstr "" + +#: results/templates/public_enter_results.html +msgid "Some information, such as speaker order, shown is based on a previous ballot. If anything is incorrect, please correct it and contact the tab team." +msgstr "" + +#: results/templates/public_enter_results.html +#, python-format +msgid "This form has already been submitted once. Please contact a tab official after submitting your form." +msgid_plural "This form has already been submitted %(nsubmissions)s times. Please contact a tab official after submitting your form." +msgstr[0] "" +msgstr[1] "" + +#: results/templates/public_enter_results.html +msgid "Submit Ballot" +msgid_plural "Submit Ballots" +msgstr[0] "" +msgstr[1] "" + +#: results/templates/public_enter_results.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: results/templates/public_enter_results_error.html +#, python-format +msgid "No Result to Enter (%(adjudicator)s)" +msgstr "" + +#: results/templates/public_enter_results_error.html +msgid "No Result to Enter" +msgstr "" + +#: results/templates/public_results_for_round.html +msgid "View by Team" +msgstr "" + +#: results/templates/public_results_for_round.html +msgid "View by Debate" +msgstr "" + +#: results/templates/public_results_index.html +#, python-format +msgid "Results for %(round)s" +msgstr "" + +#: results/templates/public_results_not_available.html +#: results/templates/public_results_silent.html +msgid "Results Not Available" +msgstr "" + +#: results/templates/public_results_not_available.html +#, python-format +msgid "The results for %(round)s aren't yet available." +msgstr "" + +#: results/templates/public_results_silent.html +#, python-format +msgid "%(round)s is a silent round." +msgstr "" + +#: results/utils.py +msgid "No Ballot" +msgstr "" + +#: results/utils.py +msgid "Debate was Postponed" +msgstr "" + +#: results/utils.py +msgid "Ballot is Unconfirmed" +msgstr "" + +#: results/utils.py +msgid "Ballot is Confirmed" +msgstr "" + +#. Translators: e.g. "{Melbourne 1} as {OG}", "{Cape Town 1} as {CO}" +#: results/utils.py +#, python-format +msgid "%(team)s as %(side)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "%(team)s (%(side)s) won" +msgstr "" + +#. Translators: The team here is the losing team +#: results/utils.py +#, python-format +msgid "vs %(team)s (%(side)s)" +msgstr "" + +#: results/utils.py +#, python-format +msgid "Advancing: %(advancing_list)s
    " +msgstr "" + +#: results/utils.py +#, python-format +msgid "Eliminated: %(eliminated_list)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "1st: %(first_team)s
    " +msgstr "" + +#: results/utils.py +#, python-format +msgid "2nd: %(second_team)s
    \n" +"3rd: %(third_team)s
    \n" +"4th: %(fourth_team)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "Error with result for %(debate)s" +msgstr "" + +#. Translators: Abbreviation for Prime Minister +#: results/utils.py +msgid "PM" +msgstr "" + +#. Translators: Abbreviation for Deputy Prime Minister +#: results/utils.py +msgid "DPM" +msgstr "" + +#. Translators: Abbreviation for Leader of the Opposition +#: results/utils.py +msgid "LO" +msgstr "" + +#. Translators: Abbreviation for Deputy Leader of the Opposition +#: results/utils.py +msgid "DLO" +msgstr "" + +#. Translators: Abbreviation for Member for the Government +#: results/utils.py +msgid "MG" +msgstr "" + +#. Translators: Abbreviation for Government Whip +#: results/utils.py +msgid "GW" +msgstr "" + +#. Translators: Abbreviation for Member for the Opposition +#: results/utils.py +msgid "MO" +msgstr "" + +#. Translators: Abbreviation for Opposition Whip +#: results/utils.py +msgid "OW" +msgstr "" + +#: results/utils.py +msgid "Reply" +msgstr "" + +#: results/views.py +msgid " vs " +msgstr "" + +#: results/views.py +#, python-format +msgid "%(matchup)s: %(round)s @ %(room)s" +msgstr "" + +#: results/views.py +msgid "N/A" +msgstr "" + +#: results/views.py +msgid "New Ballot Set" +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(debate)s added." +msgstr "" + +#: results/views.py +msgid " Email receipts queued to be sent." +msgstr "" + +#: results/views.py +#, python-format +msgid "Whoops! The debate %(debate)s doesn't have a chair, so you can't enter results for it." +msgstr "" + +#: results/views.py +#, python-format +msgid "Whoops! The debate %(debate)s doesn't have its sides confirmed, so you can't enter results for it." +msgstr "" + +#: results/views.py +msgid "Edit Ballot Set" +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(matchup)s discarded." +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(matchup)s confirmed." +msgstr "" + +#: results/views.py +#, python-format +msgid "Edits to ballot set for %(matchup)s saved." +msgstr "" + +#: results/views.py +#, python-format +msgid "Thanks, %(user)s! Your ballot for %(debate)s has been recorded." +msgstr "" + +#: results/views.py +msgid "The draw for this round hasn't been released yet." +msgstr "" + +#: results/views.py +msgid "The motions for this round haven't been released yet." +msgstr "" + +#: results/views.py +msgid "It looks like you don't have a debate this round." +msgstr "" + +#: results/views.py +msgid "It looks like you're assigned to two or more debates this round. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "Your debate doesn't have a chair, so you can't enter results for it. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "It looks like the sides for this debate haven't yet been confirmed, so you can't enter results for it. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "It looks like you were assigned to two or more debates. Please contact a tab room official." +msgstr "" + +#: results/views.py +#, python-format +msgid "This debate is in %s, which is a silent round." +msgstr "" + +#: results/views.py +#, python-format +msgid "This debate is in %s, the results for which aren't available yet." +msgstr "" + +#: results/views.py +#, python-format +msgid "The result for debate %s is not confirmed." +msgstr "" + +#: results/views.py +#, python-format +msgid "The debate %s does not have a confirmed ballot." +msgstr "" + +#: results/views.py +#, python-format +msgid "There is no result yet for debate %s." +msgstr "" + +#: results/views.py +#, python-format +msgid "Add result from %(adjudicator)s" +msgstr "" + +#: results/views.py +msgid "Adjudicator" +msgstr "" + +#: results/views.py +msgid "Merge Ballots" +msgstr "" + diff --git a/tabbycat/results/locale/ms/LC_MESSAGES/django.po b/tabbycat/results/locale/ms/LC_MESSAGES/django.po index c6cb266e5a4..a94cdf9c53c 100644 --- a/tabbycat/results/locale/ms/LC_MESSAGES/django.po +++ b/tabbycat/results/locale/ms/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:47\n" +"PO-Revision-Date: 2026-02-27 16:10\n" "Last-Translator: philip_tc\n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -1039,7 +1039,7 @@ msgstr "" #: results/views.py msgid " vs " -msgstr "" +msgstr " vs " #: results/views.py #, python-format diff --git a/tabbycat/results/locale/sk/LC_MESSAGES/django.po b/tabbycat/results/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..59178a1dbab --- /dev/null +++ b/tabbycat/results/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1195 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/results/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 948\n" + +#: results/admin.py +msgid "Resave results" +msgstr "" + +#: results/admin.py +#, python-format +msgid "Resaved results for %(count)d ballot submission." +msgid_plural "Resaved results for %(count)d ballot submissions." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/admin.py +msgid "Speaker" +msgstr "" + +#: results/apps.py results/templates/public_results_index.html results/views.py +msgid "Results" +msgstr "" + +#: results/forms.py +msgid "Tournament password" +msgstr "" + +#: results/forms.py +msgid "That password isn't correct." +msgstr "" + +#: results/forms.py +msgid "The ballot set can't be both discarded and confirmed." +msgstr "" + +#: results/forms.py +msgid "The debate status can't be confirmed unless one of the ballot sets is confirmed." +msgstr "" + +#: results/forms.py +msgid "---------" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(aff_team)s affirmed, %(neg_team)s negated" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(side)s's motion veto" +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(team)s (%(side)s)" +msgstr "" + +#: results/forms.py +msgid "Winner" +msgstr "" + +#: results/forms.py +msgid "Mark as a duplicate speech" +msgstr "" + +#: results/forms.py +msgid "Only one team can forfeit" +msgstr "" + +#: results/forms.py +msgid "This field is required." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The speaker %(speaker)s doesn't appear to be on team %(team)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "%(speaker)s appears to have given %(count)d substantive speech." +msgid_plural "%(speaker)s appears to have given %(count)d substantive speeches." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/forms.py +msgid "The last substantive speaker and reply speaker can't be the same." +msgstr "" + +#: results/forms.py +msgid "The reply speaker for this team did not give a substantive speech." +msgstr "" + +#: results/forms.py +msgid "The total scores for the teams are the same (i.e. a draw)." +msgstr "" + +#: results/forms.py +msgid "The declared winner does not correspond to the team with the highest score." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The total scores for the following teams are the same: %(teams)s" +msgstr "" + +#: results/forms.py +#, python-format +msgid "The margin (%(margin).1f) exceeds the maximum allowable margin (%(max_margin).1f)." +msgstr "" + +#: results/forms.py +msgid "Ranks cannot be tied." +msgstr "" + +#: results/forms.py +msgid "Ranks must correspond to speaker scores" +msgstr "" + +#: results/forms.py +#, python-format +msgid "The total scores for the teams are the same (i.e. a draw) for adjudicator %(adjudicator)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The declared winner does not correspond to the team with the highest score for adjudicator %(adjudicator)s." +msgstr "" + +#: results/forms.py +#, python-format +msgid "The margin (%(margin).1f) in the ballot of adjudicator %(adjudicator)s exceeds the maximum allowable margin (%(max_margin).1f)." +msgstr "" + +#: results/forms.py +msgid "Sides for this debate are not confirmed. You can't save a result for this debate until the sides have been confirmed in the draw." +msgstr "" + +#: results/forms.py +#, python-format +msgid "There must be exactly %(n)d team advancing." +msgid_plural "There must be exactly %(n)d teams advancing." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/forms.py +msgid "There must be exactly 1 team advancing." +msgstr "" + +#: results/models.py +msgid "Tab room" +msgstr "" + +#: results/models.py +msgid "Public" +msgstr "" + +#: results/models.py +msgid "Automation" +msgstr "" + +#: results/models.py +msgid "timestamp" +msgstr "" + +#: results/models.py +msgid "version" +msgstr "" + +#: results/models.py +msgid "submitter type" +msgstr "" + +#: results/models.py +msgid "confirmed" +msgstr "" + +#: results/models.py +msgid "from private URL" +msgstr "" + +#: results/models.py +msgid "from participant" +msgstr "" + +#: results/models.py +msgid "submitter" +msgstr "" + +#: results/models.py +msgid "confirmer" +msgstr "" + +#: results/models.py +msgid "confirm timestamp" +msgstr "" + +#: results/models.py +msgid "IP address" +msgstr "" + +#: results/models.py +msgid "A tab room ballot must have a user associated." +msgstr "" + +#: results/models.py +msgid "debate" +msgstr "" + +#: results/models.py +msgid "motion" +msgstr "" + +#: results/models.py +msgid "discarded" +msgstr "" + +#: results/models.py +msgid "single adjudicator" +msgstr "" + +#: results/models.py +msgid "Whether this submission represents only the submitting adjudicator on a panel, when individual adjudicator ballots are enabled." +msgstr "" + +#: results/models.py +msgid "forfeit" +msgstr "" + +#: results/models.py +msgid "Whether a team had forfeited the debate and so speaker scores were exceptionally not attributed." +msgstr "" + +#: results/models.py +msgid "ballot submission" +msgstr "" + +#: results/models.py +msgid "ballot submissions" +msgstr "" + +#: results/models.py +#, python-format +msgid "Debate is in %(round)s but motion (%(motion)s) is not in round" +msgstr "" + +#: results/models.py +msgid "A ballot can't be both confirmed and discarded!" +msgstr "" + +#: results/models.py +msgid "debate adjudicator" +msgstr "" + +#: results/models.py +msgid "debate team" +msgstr "" + +#: results/models.py +msgid "win" +msgstr "" + +#: results/models.py +msgid "margin" +msgstr "" + +#: results/models.py +msgid "score" +msgstr "" + +#: results/models.py +msgid "team score by adjudicator" +msgstr "" + +#: results/models.py +msgid "team scores by adjudicator" +msgstr "" + +#: results/models.py +msgid "The debate team, debate adjudicator and ballot submission must all relate to the same debate." +msgstr "" + +#: results/models.py +msgid "position" +msgstr "" + +#: results/models.py +msgid "speaker score by adjudicator" +msgstr "" + +#: results/models.py +msgid "speaker scores by adjudicator" +msgstr "" + +#: results/models.py +msgid "points" +msgstr "" + +#: results/models.py +msgid "votes given" +msgstr "" + +#: results/models.py +msgid "votes possible" +msgstr "" + +#: results/models.py +msgid "has ghost score" +msgstr "" + +#: results/models.py +msgid "team score" +msgstr "" + +#: results/models.py +msgid "team scores" +msgstr "" + +#: results/models.py +msgid "speaker" +msgstr "" + +#: results/models.py +msgid "rank" +msgstr "" + +#: results/models.py +msgid "ghost" +msgstr "" + +#: results/models.py +msgid "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)." +msgstr "" + +#: results/models.py +msgid "speaker score" +msgstr "" + +#: results/models.py +msgid "speaker scores" +msgstr "" + +#: results/models.py +msgid "The debate team and speaker must be from the same team." +msgstr "" + +#: results/models.py +msgid "The ballot submission and debate team must relate to the same debate." +msgstr "" + +#: results/models.py +msgid "tournament" +msgstr "" + +#: results/models.py +msgid "sequence" +msgstr "" + +#: results/models.py +msgid "weight" +msgstr "" + +#: results/models.py +msgid "minimum score" +msgstr "" + +#: results/models.py +msgid "maximum score" +msgstr "" + +#: results/models.py +msgid "step" +msgstr "" + +#: results/models.py +msgid "score criterion" +msgstr "" + +#: results/models.py +msgid "score criteria" +msgstr "" + +#: results/models.py +msgid "speaker score for criterion" +msgstr "" + +#: results/models.py +msgid "speaker scores for criteria" +msgstr "" + +#: results/models.py +msgid "speaker score for criterion by adjudicator" +msgstr "" + +#: results/models.py +msgid "speaker scores for criteria by adjudicator" +msgstr "" + +#: results/result.py +msgid "Inconsistent speaker order" +msgstr "" + +#: results/result.py +msgid "Inconsistent marking of duplicate (iron-person) speeches" +msgstr "" + +#: results/result.py +msgid "Winners are not identical" +msgstr "" + +#: results/result.py +msgid "Criterion scores are not identical" +msgstr "" + +#: results/result.py +msgid "Scores are not identical" +msgstr "" + +#: results/result.py +msgid "Speech ranks are not identical" +msgstr "" + +#: results/tables.py +msgid "Whether this debate's ballot has been checked in" +msgstr "" + +#: results/tables.py +msgid "Status of this debate's ballot" +msgstr "" + +#: results/templates/admin_results.html +msgid "Display Draw" +msgstr "" + +#: results/templates/admin_results.html +msgid "Check-In Ballots" +msgstr "" + +#: results/templates/admin_results.html +msgid "Recent 'Iron-Persons'" +msgstr "" + +#: results/templates/admin_results.html +msgid "Teams who have recently missed a speaker" +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "A speaker from %(team)s gave multiple speeches in the previous round" +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "A speaker from %(team)s gave multiple speeches in the current round" +msgstr "" + +#: results/templates/admin_results.html +msgid "No known cases in the current or previous round" +msgstr "" + +#: results/templates/admin_results.html +msgid "Complete Round" +msgstr "" + +#: results/templates/admin_results.html +msgid "This page automatically updates with the new ballot entries and checkins as they occur. You will, however, need to reload it once all ballots are completed in order to advance the round." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "The following debate appears to have scoresheets from trainees: %(debates_list)s." +msgid_plural "The following %(ndebates)s debates appear to have scoresheets from trainees: %(debates_list)s." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/admin_results.html +#, python-format +msgid "This can happen if you demote a panellist to trainee after a result has been submitted for that debate. This may indicate that there is an inconsistency in results data, which may cause unexpected results (or crashes). Please consider going to the Edit Database area and deleting the offending \"speaker scores by adj\" objects, and then opening and resaving the result here." +msgstr "" + +#: results/templates/admin_results.html +msgid "One or more debates in this round appear to have more than one confirmed ballot submission. This can cause unexpected results (or crashes), because Tabbycat assumes that each debate has at most one confirmed ballot submission. This inconsistency can generally only arise if you manipulate the database with SQL queries directly. You'll need to find the offending debate(s) and ballot submissions yourself in the Edit Database area, or if that doesn't work, you might need to find them using SQL queries directly." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "This tournament's configuration is set to British Parliamentary with one ballot per voting adjudicator. This combination isn't allowed: BP tournaments must use consensus ballots. Results can't be entered while this configuration is in place. Please revise this tournament's configuration before you try to enter results." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Currently there are no motions entered for this round, so debate results cannot be entered. Add Motions." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Your tournament configuration allows ballots to be submitted online by adjudicators. The draw must be released before they can do so for this round." +msgstr "" + +#: results/templates/admin_results.html +#, python-format +msgid "Your tournament configuration allows feedback to be submitted online by participants. The draw must be released before they can do so for this round." +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/ballot_entry_base.html +msgid "Back to All Results" +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/ballot_entry_base.html +msgid "Create a new ballot set for this debate" +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "You can't confirm this ballot set because you entered it." +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "You can't confirm this ballot set because it is for a single adjudicator. Use the merge function." +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "Confirm results" +msgstr "" + +#: results/templates/assistant_enter_results.html +msgid "Results are incorrect" +msgstr "" + +#: results/templates/assistant_enter_results.html +#: results/templates/enter_results.html +#: results/templates/public_enter_results.html +msgid "Emails will be sent to adjudicators when the ballot is confirmed." +msgstr "" + +#: results/templates/assistant_results.html results/views.py +msgid "Enter Results" +msgstr "" + +#: results/templates/assistant_results.html +msgid "This page automatically updates with the new ballot entries and checkins as they occur." +msgstr "" + +#: results/templates/assistant_results.html +msgid "Currently there are no motions entered for this round, so debate results cannot be entered. Please ask an administrator to add motions." +msgstr "" + +#: results/templates/assistant_results.html +#, python-format +msgid "One debate does not have its sides confirmed. Results for this debate cannot be entered until its side allocations are marked as confirmed." +msgid_plural "%(ndebates)s debate do not have their sides confirmed. Results for these debates cannot be entered until their side allocations are marked as confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/assistant_results.html +#, python-format +msgid "One debate has a panel with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgid_plural "%(num_even_panel)s debates have panels with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "Debate Information" +msgstr "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "No speakers spoke twice (no 'iron-person' speeches)" +msgstr "" + +#: results/templates/ballot/ballot_debate_info.html +msgid "A speaker spoke twice (an 'iron-person' speech)" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Result" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Rank" +msgstr "" + +#: results/templates/ballot/ballot_scoresheet.html +msgid "Margin" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "There are some problems with this scoresheet. Please review and correct them." +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Ballot from %(name)s (%(institution)s)" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Ballot from %(name)s" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/public_ballot_set.html +msgid "Scoresheet" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Solo Chair" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +msgid "Chair" +msgstr "" + +#: results/templates/ballot/ballot_set.html +#: results/templates/ballot_entry_form.html +msgid "Panellist" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Trainee" +msgstr "" + +#: results/templates/ballot/ballot_set.html +msgid "Assign sides before entering scores" +msgstr "" + +#: results/templates/ballot/ballot_speaks.html +msgid "Duplicate speeches are hidden from the speaker tab. If a speaker is 'iron-personing' you would typically mark only the lesser of their scores as a duplicate." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "There is %(number)s existing ballot set for this debate." +msgid_plural "There are %(number)s existing ballot sets for this debate." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/ballot/other_ballots_list.html +msgid "This ballot set is confirmed." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "This ballot set is discarded." +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "CURRENTLY VIEWING" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "MERGING" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "Version %(version)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "entered by %(submitter)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "submitted from %(adjudicator)s's private URL," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "submitted from the public form on %(ip_address)s," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "%(timestamp)s (%(timeago)s ago)," +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "unknown" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "confirmed by %(confirmer)s" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "unconfirmed" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +msgid "(discarded)" +msgstr "" + +#: results/templates/ballot/other_ballots_list.html +#, python-format +msgid "(identical to version %(others)s)" +msgid_plural "(identical to versions %(others)s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/ballot_entry.html +#, python-format +msgid "This ballot entry interface is in beta, if you encounter any problems the older version of the interface is available here." +msgstr "" + +#: results/templates/ballot_entry_base.html +msgid "This debate has a panel with an even number of voting adjudicators. If the adjudicators split evenly, the debate will be awarded to the team for which the chair voted." +msgstr "" + +#: results/templates/ballot_entry_base.html +#, python-format +msgid "%(team)s had speakers who spoke multiple times in the last round — i.e. an 'iron' person speech. Please carefully check the ballot to see if that is still the case for this round. If it is, ensure the speakers selected below reflect this." +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Scoresheet from chair %(chair)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +msgid "Scoresheet, no chair set" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's speaker field: %(error)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's duplicate speaker field: %(error)s" +msgstr "" + +#: results/templates/ballot_entry_form.html +#, python-format +msgid "Error with %(pos)s's score field: %(error)s" +msgstr "" + +#: results/templates/debate_postponement_form.html +msgid "Postponed" +msgstr "" + +#: results/templates/debate_postponement_form.html +msgid "Postpone" +msgstr "" + +#: results/templates/enter_results.html +msgid "Ballot Status" +msgstr "" + +#: results/templates/enter_results.html +msgid "only the confirmed ballot set will affect this debate's result" +msgstr "" + +#: results/templates/enter_results.html +msgid "Debate Status" +msgstr "" + +#: results/templates/enter_results.html +msgid "all debates must be confirmed to complete the round" +msgstr "" + +#: results/templates/enter_results.html +msgid "Save Ballot" +msgstr "" + +#: results/templates/enter_results.html +msgid "Cancel Entry" +msgstr "" + +#: results/templates/includes/public_enter_results_info.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 "" + +#: results/templates/privateurl_ballot_set.html +#: results/templates/privateurl_ballot_set_error.html +#, python-format +msgid "The page is provided to allow you, %(name)s, to verify your own scoresheet. You must not share this URL with anyone. Sharing the URL will allow others to access all actions from your personal landing page." +msgstr "" + +#: results/templates/privateurl_ballot_set_error.html +#: results/templates/public_ballot_set_error.html +msgid "Ballot Not Available" +msgstr "" + +#: results/templates/privateurl_ballot_set_error.html +#, python-format +msgid "Back to your private landing page." +msgstr "" + +#: results/templates/public_add_ballot.html +#: results/templates/public_add_ballot_unreleased.html +msgid "Enter Ballot" +msgstr "" + +#: results/templates/public_add_ballot.html +msgid "Who are you?" +msgstr "" + +#: results/templates/public_add_ballot.html +msgid "(click your name on this list)" +msgstr "" + +#: results/templates/public_add_ballot_unreleased.html +#, python-format +msgid "The draw and/or motions for %(round)s have yet to be released." +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Ballot for %(matchup)s" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "%(round)s @ %(room)s" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Return to landing page" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Return to Results for %(round)s" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Motion" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "From %(name)s (%(institution)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "Total for %(name)s (%(side)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +#, python-format +msgid "%(name)s (%(side)s)" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Won" +msgstr "" + +#: results/templates/public_ballot_set.html +msgid "Lost" +msgstr "" + +#: results/templates/public_ballot_set_error.html +#, python-format +msgid "Back to the tournament home page." +msgstr "" + +#: results/templates/public_enter_results.html +#, python-format +msgid "%(adjudicator)s, note that you must enter all of the ballots from your panel, not just your own!" +msgstr "" + +#: results/templates/public_enter_results.html +msgid "Some information, such as speaker order, shown is based on a previous ballot. If anything is incorrect, please correct it and contact the tab team." +msgstr "" + +#: results/templates/public_enter_results.html +#, python-format +msgid "This form has already been submitted once. Please contact a tab official after submitting your form." +msgid_plural "This form has already been submitted %(nsubmissions)s times. Please contact a tab official after submitting your form." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/public_enter_results.html +msgid "Submit Ballot" +msgid_plural "Submit Ballots" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: results/templates/public_enter_results.html +msgid "When submitting this form your IP address will be stored for logging purposes." +msgstr "" + +#: results/templates/public_enter_results_error.html +#, python-format +msgid "No Result to Enter (%(adjudicator)s)" +msgstr "" + +#: results/templates/public_enter_results_error.html +msgid "No Result to Enter" +msgstr "" + +#: results/templates/public_results_for_round.html +msgid "View by Team" +msgstr "" + +#: results/templates/public_results_for_round.html +msgid "View by Debate" +msgstr "" + +#: results/templates/public_results_index.html +#, python-format +msgid "Results for %(round)s" +msgstr "" + +#: results/templates/public_results_not_available.html +#: results/templates/public_results_silent.html +msgid "Results Not Available" +msgstr "" + +#: results/templates/public_results_not_available.html +#, python-format +msgid "The results for %(round)s aren't yet available." +msgstr "" + +#: results/templates/public_results_silent.html +#, python-format +msgid "%(round)s is a silent round." +msgstr "" + +#: results/utils.py +msgid "No Ballot" +msgstr "" + +#: results/utils.py +msgid "Debate was Postponed" +msgstr "" + +#: results/utils.py +msgid "Ballot is Unconfirmed" +msgstr "" + +#: results/utils.py +msgid "Ballot is Confirmed" +msgstr "" + +#. Translators: e.g. "{Melbourne 1} as {OG}", "{Cape Town 1} as {CO}" +#: results/utils.py +#, python-format +msgid "%(team)s as %(side)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "%(team)s (%(side)s) won" +msgstr "" + +#. Translators: The team here is the losing team +#: results/utils.py +#, python-format +msgid "vs %(team)s (%(side)s)" +msgstr "" + +#: results/utils.py +#, python-format +msgid "Advancing: %(advancing_list)s
    " +msgstr "" + +#: results/utils.py +#, python-format +msgid "Eliminated: %(eliminated_list)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "1st: %(first_team)s
    " +msgstr "" + +#: results/utils.py +#, python-format +msgid "2nd: %(second_team)s
    \n" +"3rd: %(third_team)s
    \n" +"4th: %(fourth_team)s" +msgstr "" + +#: results/utils.py +#, python-format +msgid "Error with result for %(debate)s" +msgstr "" + +#. Translators: Abbreviation for Prime Minister +#: results/utils.py +msgid "PM" +msgstr "" + +#. Translators: Abbreviation for Deputy Prime Minister +#: results/utils.py +msgid "DPM" +msgstr "" + +#. Translators: Abbreviation for Leader of the Opposition +#: results/utils.py +msgid "LO" +msgstr "" + +#. Translators: Abbreviation for Deputy Leader of the Opposition +#: results/utils.py +msgid "DLO" +msgstr "" + +#. Translators: Abbreviation for Member for the Government +#: results/utils.py +msgid "MG" +msgstr "" + +#. Translators: Abbreviation for Government Whip +#: results/utils.py +msgid "GW" +msgstr "" + +#. Translators: Abbreviation for Member for the Opposition +#: results/utils.py +msgid "MO" +msgstr "" + +#. Translators: Abbreviation for Opposition Whip +#: results/utils.py +msgid "OW" +msgstr "" + +#: results/utils.py +msgid "Reply" +msgstr "" + +#: results/views.py +msgid " vs " +msgstr "" + +#: results/views.py +#, python-format +msgid "%(matchup)s: %(round)s @ %(room)s" +msgstr "" + +#: results/views.py +msgid "N/A" +msgstr "" + +#: results/views.py +msgid "New Ballot Set" +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(debate)s added." +msgstr "" + +#: results/views.py +msgid " Email receipts queued to be sent." +msgstr "" + +#: results/views.py +#, python-format +msgid "Whoops! The debate %(debate)s doesn't have a chair, so you can't enter results for it." +msgstr "" + +#: results/views.py +#, python-format +msgid "Whoops! The debate %(debate)s doesn't have its sides confirmed, so you can't enter results for it." +msgstr "" + +#: results/views.py +msgid "Edit Ballot Set" +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(matchup)s discarded." +msgstr "" + +#: results/views.py +#, python-format +msgid "Ballot set for %(matchup)s confirmed." +msgstr "" + +#: results/views.py +#, python-format +msgid "Edits to ballot set for %(matchup)s saved." +msgstr "" + +#: results/views.py +#, python-format +msgid "Thanks, %(user)s! Your ballot for %(debate)s has been recorded." +msgstr "" + +#: results/views.py +msgid "The draw for this round hasn't been released yet." +msgstr "" + +#: results/views.py +msgid "The motions for this round haven't been released yet." +msgstr "" + +#: results/views.py +msgid "It looks like you don't have a debate this round." +msgstr "" + +#: results/views.py +msgid "It looks like you're assigned to two or more debates this round. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "Your debate doesn't have a chair, so you can't enter results for it. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "It looks like the sides for this debate haven't yet been confirmed, so you can't enter results for it. Please contact a tab room official." +msgstr "" + +#: results/views.py +msgid "It looks like you were assigned to two or more debates. Please contact a tab room official." +msgstr "" + +#: results/views.py +#, python-format +msgid "This debate is in %s, which is a silent round." +msgstr "" + +#: results/views.py +#, python-format +msgid "This debate is in %s, the results for which aren't available yet." +msgstr "" + +#: results/views.py +#, python-format +msgid "The result for debate %s is not confirmed." +msgstr "" + +#: results/views.py +#, python-format +msgid "The debate %s does not have a confirmed ballot." +msgstr "" + +#: results/views.py +#, python-format +msgid "There is no result yet for debate %s." +msgstr "" + +#: results/views.py +#, python-format +msgid "Add result from %(adjudicator)s" +msgstr "" + +#: results/views.py +msgid "Adjudicator" +msgstr "" + +#: results/views.py +msgid "Merge Ballots" +msgstr "" + diff --git a/tabbycat/standings/locale/el/LC_MESSAGES/django.po b/tabbycat/standings/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..34e00346572 --- /dev/null +++ b/tabbycat/standings/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,636 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/standings/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 950\n" + +#: standings/base.py +msgid "The same metric would be added twice:" +msgstr "" + +#: standings/base.py +msgid "The same ranking would be added twice:" +msgstr "" + +#: standings/base.py +#, python-format +msgid "Unrecognized metric code: \"%(code)s\"" +msgstr "" + +#: standings/diversity.py +msgid "All" +msgstr "" + +#: standings/diversity.py +msgid "Breaking" +msgstr "" + +#: standings/diversity.py +#, python-format +msgid "Not %(category)s" +msgstr "" + +#: standings/diversity.py +msgid "All Speakers" +msgstr "" + +#: standings/diversity.py +msgid "IAs" +msgstr "" + +#: standings/diversity.py +msgid "Chairs" +msgstr "" + +#: standings/diversity.py +msgid "Panellists" +msgstr "" + +#: standings/diversity.py +msgid "Trainees" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating" +msgstr "" + +#: standings/diversity.py +msgid "Median Rating" +msgstr "" + +#: standings/diversity.py +msgid "Upper Quartile Rating" +msgstr "" + +#: standings/diversity.py +msgid "Lower Quartile Rating" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Teams" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Chairs" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Panellists" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Trainees" +msgstr "" + +#: standings/diversity.py +msgid "Average Score" +msgstr "" + +#: standings/diversity.py +msgid "Median Score" +msgstr "" + +#: standings/diversity.py +msgid "Upper Quartile Score" +msgstr "" + +#: standings/diversity.py +msgid "Lower Quartile Score" +msgstr "" + +#: standings/diversity.py +msgid "Reply Speaker Average" +msgstr "" + +#: standings/diversity.py +#, python-format +msgid "Speaker %(num)d Average" +msgstr "" + +#: standings/diversity.py +msgid "Average Finals Score" +msgstr "" + +#: standings/speakers.py +msgid "total" +msgstr "" + +#: standings/speakers.py +msgid "Total" +msgstr "" + +#: standings/speakers.py +msgid "average" +msgstr "" + +#: standings/speakers.py +msgid "Avg" +msgstr "" + +#: standings/speakers.py +msgid "team points" +msgstr "" + +#: standings/speakers.py +msgid "Team" +msgstr "" + +#: standings/speakers.py standings/teams.py standings/views.py +msgid "Wins" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of firsts" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "1sts" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of seconds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "2nds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of thirds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "3rds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of adjudicators who voted for this team" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "Ballots" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "votes/ballots carried" +msgstr "" + +#: standings/speakers.py +msgid "standard deviation" +msgstr "" + +#: standings/speakers.py +msgid "Stdev" +msgstr "" + +#: standings/speakers.py +msgid "number of speeches given" +msgstr "" + +#: standings/speakers.py +msgid "Num" +msgstr "" + +#: standings/speakers.py +msgid "replies given" +msgstr "" + +#: standings/speakers.py +msgid "trimmed mean (high-low drop)" +msgstr "" + +#: standings/speakers.py +msgid "Trim" +msgstr "" + +#: standings/speakers.py +msgid "speech ranks" +msgstr "" + +#: standings/speakers.py +msgid "SRank" +msgstr "" + +#: standings/teams.py +msgid "points" +msgstr "" + +#: standings/teams.py +msgid "Pts" +msgstr "" + +#: standings/teams.py +msgid "wins" +msgstr "" + +#: standings/teams.py +msgid "total speaker score" +msgstr "" + +#: standings/teams.py +msgid "Spk" +msgstr "" + +#: standings/teams.py +msgid "average total speaker score" +msgstr "" + +#: standings/teams.py +msgid "ATSS" +msgstr "" + +#: standings/teams.py +msgid "speaker score standard deviation" +msgstr "" + +#: standings/teams.py +msgid "SSD" +msgstr "" + +#: standings/teams.py +msgid "sum of margins" +msgstr "" + +#: standings/teams.py +msgid "Marg" +msgstr "" + +#: standings/teams.py +msgid "average margin" +msgstr "" + +#: standings/teams.py +msgid "AWM" +msgstr "" + +#: standings/teams.py +msgid "average individual speaker score" +msgstr "" + +#: standings/teams.py +msgid "AISS" +msgstr "" + +#: standings/teams.py +msgid "draw strength by rank" +msgstr "" + +#: standings/teams.py +msgid "DSR" +msgstr "" + +#: standings/teams.py +msgid "draw strength by wins" +msgstr "" + +#: standings/teams.py +msgid "DS" +msgstr "" + +#: standings/teams.py +msgid "draw strength by total speaker score" +msgstr "" + +#: standings/teams.py +msgid "DSS" +msgstr "" + +#: standings/teams.py +msgid "number of pullups" +msgstr "" + +#: standings/teams.py +msgid "PU" +msgstr "" + +#: standings/teams.py +msgid "number of times in pullup debates" +msgstr "" + +#: standings/teams.py +msgid "SPu" +msgstr "" + +#: standings/teams.py +msgid "number of times ironed" +msgstr "" + +#: standings/teams.py +msgid "Irons" +msgstr "" + +#: standings/teams.py +msgid "Who-beat-whom" +msgstr "" + +#: standings/teams.py +msgid "WBW" +msgstr "" + +#: standings/teams.py +msgid "who-beat-whom" +msgstr "" + +#: standings/templates/current_standings.html +msgid "It also excludes results from silent rounds (if any) and from the current round." +msgstr "" + +#: standings/templates/current_standings.html +#, python-format +msgid "This list is sorted by team points, then alphabetically by team name. It does not indicate each team's ranking within each bracket. %(silent_round_sentence)s" +msgstr "" + +#: standings/templates/current_standings.html +#, python-format +msgid "This list is sorted by number of wins, then alphabetically by team name. It does not indicate each team's ranking within each bracket. %(silent_round_sentence)s" +msgstr "" + +#: standings/templates/current_standings_no_round.html +msgid "There aren't any rounds for which results are available." +msgstr "" + +#: standings/templates/reply_standings.html +msgid "Reply speakers are ranked by their average reply score." +msgstr "" + +#: standings/templates/reply_standings.html +#, python-format +msgid "Speakers can miss up to %(count)s reply speeches before they are omitted from the replies tab." +msgstr "" + +#: standings/templates/reply_standings.html +msgid "All reply speakers appear in these standings, no matter how many replies they've missed." +msgstr "" + +#: standings/templates/reply_standings.html +#: standings/templates/speaker_standings.html +#, python-format +msgid "These settings can be changed in the Standings section of this tournament's configuration." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "The speaker standings precedence is empty. This means that speakers aren't ranked according to any metrics, so everyone is first equal. If this isn't what you intended, set the speaker standings precedence in the Standings section of this tournament's configuration. In most tournaments, the first metric should be total or average." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "Speakers are ranked by their average score." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "Speakers are ranked by their total score. Any speaker who misses a single debate will be severely punished in these rankings." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "Speakers can miss up to %(count)s debates before they are omitted from the speaker tab." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "All speakers appear in these standings, no matter how many debates they've missed." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "Enforcing the limit on the number of missed debates requires the \"number of speeches given\" metric to be included in the speaker standings calculations, so it's been automatically added. To remove this warning message, add Number of speeches given to the Speaker standings extra metrics in the Standings section of this tournament's configuration." +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Diversity Overview" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "The results data displayed here is presented without tests for statistical significance. Correlations should not be automatically considered reliable; particularly at small tournaments. A 'region' is a customisable category assigned to a set of institutions, and counted using the number of participants assigned to those institutions." +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Non-cis male identifying" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Cis-male identifying" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Unspecified/unrecorded" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Standings" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Top Speaks" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(speaker)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "No data yet" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Bottom Speaks" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Largest Margins" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(team)s vs %(opp)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Closest Margins" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Top Team Scores" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(team)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Bottom Team Scores" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Most/Least Popular Motions" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Average Speaks" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Overview" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Teams" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "All [Teams]" +msgid "All" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Speakers" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "Substantive speeches" +msgid "Substantives" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "All [Speakers]" +msgid "All" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Speakers " +msgstr "" + +#: standings/templates/standings_menu.html +#, python-format +msgid "%(category)s" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Replies" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Motions" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "By Round" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Diversity" +msgstr "" + +#: standings/templates/team_standings.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so everyone is first equal. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: standings/views.py +#, python-format +msgid "

    There was an error generating the standings: %(message)s

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

    You may need to double-check the standings configuration under the Setup section. If this issue persists and you're not sure how to fix it, please contact the developers.

    " +msgstr "" + +#: standings/views.py +msgid "

    The tab director will need to resolve this issue.

    " +msgstr "" + +#: standings/views.py +#, python-format +msgid "as of %(round)s" +msgstr "" + +#. Translators: 'title' is the main title; "(Top 15 Only)" is just a suffix +#: standings/views.py +#, python-format +msgid "%(title)s (Top %(limit)d Only)" +msgstr "" + +#: standings/views.py +msgid "The tab can't be displayed because all rounds so far in this tournament are silent." +msgstr "" + +#: standings/views.py +msgid "Speaker Standings" +msgstr "" + +#: standings/views.py +msgid "Speaker Tab" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Speaker Standings" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Speaker Tab" +msgstr "" + +#: standings/views.py +msgid "Reply Speaker Standings" +msgstr "" + +#: standings/views.py +msgid "Reply speeches aren't enabled in this tournament." +msgstr "" + +#: standings/views.py +msgid "Reply Speaker Tab" +msgstr "" + +#: standings/views.py +msgid "Team Standings" +msgstr "" + +#: standings/views.py +msgid "Team Tab" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Team Standings" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Team Tab" +msgstr "" + +#: standings/views.py +msgid "Current Team Standings" +msgstr "" + +#: standings/views.py +msgid "Points" +msgstr "" + +#: standings/views.py +msgid "Feedback Overview" +msgstr "" + +#: standings/views.py +msgid "An adjudicator's score is determined by a customisable mix of their base score and their feedback ratings. The current mix is specified below as the 'Score Components.' Feedback ratings are determined by averaging the results of all individual pieces of feedback across all rounds. Read more." +msgstr "" + diff --git a/tabbycat/standings/locale/sk/LC_MESSAGES/django.po b/tabbycat/standings/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..9aec692667b --- /dev/null +++ b/tabbycat/standings/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,636 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/standings/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 950\n" + +#: standings/base.py +msgid "The same metric would be added twice:" +msgstr "" + +#: standings/base.py +msgid "The same ranking would be added twice:" +msgstr "" + +#: standings/base.py +#, python-format +msgid "Unrecognized metric code: \"%(code)s\"" +msgstr "" + +#: standings/diversity.py +msgid "All" +msgstr "" + +#: standings/diversity.py +msgid "Breaking" +msgstr "" + +#: standings/diversity.py +#, python-format +msgid "Not %(category)s" +msgstr "" + +#: standings/diversity.py +msgid "All Speakers" +msgstr "" + +#: standings/diversity.py +msgid "IAs" +msgstr "" + +#: standings/diversity.py +msgid "Chairs" +msgstr "" + +#: standings/diversity.py +msgid "Panellists" +msgstr "" + +#: standings/diversity.py +msgid "Trainees" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating" +msgstr "" + +#: standings/diversity.py +msgid "Median Rating" +msgstr "" + +#: standings/diversity.py +msgid "Upper Quartile Rating" +msgstr "" + +#: standings/diversity.py +msgid "Lower Quartile Rating" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Teams" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Chairs" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Panellists" +msgstr "" + +#: standings/diversity.py +msgid "Average Rating From Trainees" +msgstr "" + +#: standings/diversity.py +msgid "Average Score" +msgstr "" + +#: standings/diversity.py +msgid "Median Score" +msgstr "" + +#: standings/diversity.py +msgid "Upper Quartile Score" +msgstr "" + +#: standings/diversity.py +msgid "Lower Quartile Score" +msgstr "" + +#: standings/diversity.py +msgid "Reply Speaker Average" +msgstr "" + +#: standings/diversity.py +#, python-format +msgid "Speaker %(num)d Average" +msgstr "" + +#: standings/diversity.py +msgid "Average Finals Score" +msgstr "" + +#: standings/speakers.py +msgid "total" +msgstr "" + +#: standings/speakers.py +msgid "Total" +msgstr "" + +#: standings/speakers.py +msgid "average" +msgstr "" + +#: standings/speakers.py +msgid "Avg" +msgstr "" + +#: standings/speakers.py +msgid "team points" +msgstr "" + +#: standings/speakers.py +msgid "Team" +msgstr "" + +#: standings/speakers.py standings/teams.py standings/views.py +msgid "Wins" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of firsts" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "1sts" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of seconds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "2nds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of thirds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "3rds" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "number of adjudicators who voted for this team" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "Ballots" +msgstr "" + +#: standings/speakers.py standings/teams.py +msgid "votes/ballots carried" +msgstr "" + +#: standings/speakers.py +msgid "standard deviation" +msgstr "" + +#: standings/speakers.py +msgid "Stdev" +msgstr "" + +#: standings/speakers.py +msgid "number of speeches given" +msgstr "" + +#: standings/speakers.py +msgid "Num" +msgstr "" + +#: standings/speakers.py +msgid "replies given" +msgstr "" + +#: standings/speakers.py +msgid "trimmed mean (high-low drop)" +msgstr "" + +#: standings/speakers.py +msgid "Trim" +msgstr "" + +#: standings/speakers.py +msgid "speech ranks" +msgstr "" + +#: standings/speakers.py +msgid "SRank" +msgstr "" + +#: standings/teams.py +msgid "points" +msgstr "" + +#: standings/teams.py +msgid "Pts" +msgstr "" + +#: standings/teams.py +msgid "wins" +msgstr "" + +#: standings/teams.py +msgid "total speaker score" +msgstr "" + +#: standings/teams.py +msgid "Spk" +msgstr "" + +#: standings/teams.py +msgid "average total speaker score" +msgstr "" + +#: standings/teams.py +msgid "ATSS" +msgstr "" + +#: standings/teams.py +msgid "speaker score standard deviation" +msgstr "" + +#: standings/teams.py +msgid "SSD" +msgstr "" + +#: standings/teams.py +msgid "sum of margins" +msgstr "" + +#: standings/teams.py +msgid "Marg" +msgstr "" + +#: standings/teams.py +msgid "average margin" +msgstr "" + +#: standings/teams.py +msgid "AWM" +msgstr "" + +#: standings/teams.py +msgid "average individual speaker score" +msgstr "" + +#: standings/teams.py +msgid "AISS" +msgstr "" + +#: standings/teams.py +msgid "draw strength by rank" +msgstr "" + +#: standings/teams.py +msgid "DSR" +msgstr "" + +#: standings/teams.py +msgid "draw strength by wins" +msgstr "" + +#: standings/teams.py +msgid "DS" +msgstr "" + +#: standings/teams.py +msgid "draw strength by total speaker score" +msgstr "" + +#: standings/teams.py +msgid "DSS" +msgstr "" + +#: standings/teams.py +msgid "number of pullups" +msgstr "" + +#: standings/teams.py +msgid "PU" +msgstr "" + +#: standings/teams.py +msgid "number of times in pullup debates" +msgstr "" + +#: standings/teams.py +msgid "SPu" +msgstr "" + +#: standings/teams.py +msgid "number of times ironed" +msgstr "" + +#: standings/teams.py +msgid "Irons" +msgstr "" + +#: standings/teams.py +msgid "Who-beat-whom" +msgstr "" + +#: standings/teams.py +msgid "WBW" +msgstr "" + +#: standings/teams.py +msgid "who-beat-whom" +msgstr "" + +#: standings/templates/current_standings.html +msgid "It also excludes results from silent rounds (if any) and from the current round." +msgstr "" + +#: standings/templates/current_standings.html +#, python-format +msgid "This list is sorted by team points, then alphabetically by team name. It does not indicate each team's ranking within each bracket. %(silent_round_sentence)s" +msgstr "" + +#: standings/templates/current_standings.html +#, python-format +msgid "This list is sorted by number of wins, then alphabetically by team name. It does not indicate each team's ranking within each bracket. %(silent_round_sentence)s" +msgstr "" + +#: standings/templates/current_standings_no_round.html +msgid "There aren't any rounds for which results are available." +msgstr "" + +#: standings/templates/reply_standings.html +msgid "Reply speakers are ranked by their average reply score." +msgstr "" + +#: standings/templates/reply_standings.html +#, python-format +msgid "Speakers can miss up to %(count)s reply speeches before they are omitted from the replies tab." +msgstr "" + +#: standings/templates/reply_standings.html +msgid "All reply speakers appear in these standings, no matter how many replies they've missed." +msgstr "" + +#: standings/templates/reply_standings.html +#: standings/templates/speaker_standings.html +#, python-format +msgid "These settings can be changed in the Standings section of this tournament's configuration." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "The speaker standings precedence is empty. This means that speakers aren't ranked according to any metrics, so everyone is first equal. If this isn't what you intended, set the speaker standings precedence in the Standings section of this tournament's configuration. In most tournaments, the first metric should be total or average." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "Speakers are ranked by their average score." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "Speakers are ranked by their total score. Any speaker who misses a single debate will be severely punished in these rankings." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "Speakers can miss up to %(count)s debates before they are omitted from the speaker tab." +msgstr "" + +#: standings/templates/speaker_standings.html +msgid "All speakers appear in these standings, no matter how many debates they've missed." +msgstr "" + +#: standings/templates/speaker_standings.html +#, python-format +msgid "Enforcing the limit on the number of missed debates requires the \"number of speeches given\" metric to be included in the speaker standings calculations, so it's been automatically added. To remove this warning message, add Number of speeches given to the Speaker standings extra metrics in the Standings section of this tournament's configuration." +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Diversity Overview" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "The results data displayed here is presented without tests for statistical significance. Correlations should not be automatically considered reliable; particularly at small tournaments. A 'region' is a customisable category assigned to a set of institutions, and counted using the number of participants assigned to those institutions." +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Non-cis male identifying" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Cis-male identifying" +msgstr "" + +#: standings/templates/standings_diversity.html +msgid "Unspecified/unrecorded" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Standings" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Top Speaks" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(speaker)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "No data yet" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Bottom Speaks" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Largest Margins" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(team)s vs %(opp)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Closest Margins" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Top Team Scores" +msgstr "" + +#: standings/templates/standings_index.html +#, python-format +msgid "%(team)s in %(round)s" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Bottom Team Scores" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Most/Least Popular Motions" +msgstr "" + +#: standings/templates/standings_index.html +msgid "Average Speaks" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Overview" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Teams" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "All [Teams]" +msgid "All" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Speakers" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "Substantive speeches" +msgid "Substantives" +msgstr "" + +#: standings/templates/standings_menu.html +msgctxt "All [Speakers]" +msgid "All" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Speakers " +msgstr "" + +#: standings/templates/standings_menu.html +#, python-format +msgid "%(category)s" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Replies" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Motions" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "By Round" +msgstr "" + +#: standings/templates/standings_menu.html +msgid "Diversity" +msgstr "" + +#: standings/templates/team_standings.html +#, python-format +msgid "The team standings precedence is empty. This means that teams aren't ranked according to any metrics, so everyone is first equal. If this isn't what you intended, set the team standings precedence in the Standings section of this tournament's configuration. In most tournaments, the first metric should be points or wins." +msgstr "" + +#: standings/views.py +#, python-format +msgid "

    There was an error generating the standings: %(message)s

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

    You may need to double-check the standings configuration under the Setup section. If this issue persists and you're not sure how to fix it, please contact the developers.

    " +msgstr "" + +#: standings/views.py +msgid "

    The tab director will need to resolve this issue.

    " +msgstr "" + +#: standings/views.py +#, python-format +msgid "as of %(round)s" +msgstr "" + +#. Translators: 'title' is the main title; "(Top 15 Only)" is just a suffix +#: standings/views.py +#, python-format +msgid "%(title)s (Top %(limit)d Only)" +msgstr "" + +#: standings/views.py +msgid "The tab can't be displayed because all rounds so far in this tournament are silent." +msgstr "" + +#: standings/views.py +msgid "Speaker Standings" +msgstr "" + +#: standings/views.py +msgid "Speaker Tab" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Speaker Standings" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Speaker Tab" +msgstr "" + +#: standings/views.py +msgid "Reply Speaker Standings" +msgstr "" + +#: standings/views.py +msgid "Reply speeches aren't enabled in this tournament." +msgstr "" + +#: standings/views.py +msgid "Reply Speaker Tab" +msgstr "" + +#: standings/views.py +msgid "Team Standings" +msgstr "" + +#: standings/views.py +msgid "Team Tab" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Team Standings" +msgstr "" + +#: standings/views.py +#, python-format +msgid "%(category)s Team Tab" +msgstr "" + +#: standings/views.py +msgid "Current Team Standings" +msgstr "" + +#: standings/views.py +msgid "Points" +msgstr "" + +#: standings/views.py +msgid "Feedback Overview" +msgstr "" + +#: standings/views.py +msgid "An adjudicator's score is determined by a customisable mix of their base score and their feedback ratings. The current mix is specified below as the 'Score Components.' Feedback ratings are determined by averaging the results of all individual pieces of feedback across all rounds. Read more." +msgstr "" + diff --git a/tabbycat/tournaments/locale/cs/LC_MESSAGES/django.po b/tabbycat/tournaments/locale/cs/LC_MESSAGES/django.po index ef0da47039e..1573b8dcc52 100644 --- a/tabbycat/tournaments/locale/cs/LC_MESSAGES/django.po +++ b/tabbycat/tournaments/locale/cs/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: tabbycat\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-07-06 09:38+1000\n" -"PO-Revision-Date: 2025-07-05 23:50\n" +"PO-Revision-Date: 2025-12-01 16:31\n" "Last-Translator: philip_tc\n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -627,7 +627,7 @@ msgstr "" #: tournaments/templates/public_tournament_index.html msgid "Motions Tab" -msgstr "" +msgstr "Tab tezí" #: tournaments/templates/public_tournament_index.html msgid "Sides" diff --git a/tabbycat/tournaments/locale/el/LC_MESSAGES/django.po b/tabbycat/tournaments/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..b9e41cf8e64 --- /dev/null +++ b/tabbycat/tournaments/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,1201 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/tournaments/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 952\n" + +#: tournaments/apps.py +msgid "Tournaments" +msgstr "" + +#: tournaments/forms.py +msgid "Number of preliminary rounds" +msgstr "" + +#: tournaments/forms.py +msgid "Number of teams in the open break" +msgstr "" + +#: tournaments/forms.py +msgid "Leave blank if there are no break rounds." +msgstr "" + +#: tournaments/forms.py +msgid "Did you agree with their decision?" +msgstr "" + +#: tournaments/forms.py +msgid "Agree?" +msgstr "" + +#: tournaments/forms.py +msgid "Comments" +msgstr "" + +#. Translators: This is the name given to the 'Open Break'. +#: tournaments/forms.py +msgid "Open" +msgstr "" + +#: tournaments/forms.py +msgid "Format Configuration" +msgstr "" + +#: tournaments/forms.py +msgid "Apply a standard set of settings to match a common debate format. These can be changed afterwards and should be checked for your needs." +msgstr "" + +#: tournaments/forms.py +msgid "Public Configuration" +msgstr "" + +#: tournaments/forms.py +msgid "Show non-sensitive information on the public-facing side of this site, like draws (once released) and the motions of previous rounds" +msgstr "" + +#: tournaments/forms.py +msgid "Participant Data Entry" +msgstr "" + +#: tournaments/forms.py +msgid "Whether participants can submit ballots and feedback themselves, and how they do so" +msgstr "" + +#: tournaments/forms.py +msgid "Tabulation: [list tabulation staff here]
    Equity: [list equity members here]
    Organisation: [list organising committee members here]
    Adjudication: [list chief adjudicators here]" +msgstr "" + +#: tournaments/forms.py +msgid "Current preliminary round" +msgstr "" + +#: tournaments/forms.py +msgid "All preliminary rounds have been completed" +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "Current elimination round in %(category)s (only if all preliminary rounds have been completed)" +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "All elimination rounds in %(category)s have been completed" +msgstr "" + +#: tournaments/forms.py +msgid "If the current round is a preliminary round, this field must be blank." +msgstr "" + +#: tournaments/forms.py +msgid "If all preliminary rounds have been completed, this field is required." +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "%(name)s (%(abbreviation)s)" +msgstr "" + +#: tournaments/mixins.py +#, python-format +msgid "You've been redirected to this page because tournament %(tournament)s has no rounds. Please create some before returning to the admin site." +msgstr "" + +#: tournaments/mixins.py +#, python-format +msgid "There's a problem with the data for the tournament %(tournament)s. Please contact a tab director and ask them to investigate." +msgstr "" + +#: tournaments/mixins.py +msgid "You've been redirected to this page because of a problem with how teams are assigned to sides in a debate." +msgstr "" + +#: tournaments/mixins.py +msgid "There's a problem with how teams are assigned to sides in a debate. The tab director will need to resolve this issue." +msgstr "" + +#: tournaments/mixins.py tournaments/templates/round_complete_check.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: tournaments/mixins.py +msgid "Return to Draw" +msgstr "" + +#: tournaments/models.py +msgid "You can't use this as a tournament slug, because it's reserved for a Tabbycat system URL. Please try another one." +msgstr "" + +#: tournaments/models.py +msgid "name" +msgstr "" + +#: tournaments/models.py +msgid "The full name, e.g. \"Australasian Intervarsity Debating Championships 2016\"" +msgstr "" + +#: tournaments/models.py +msgid "short name" +msgstr "" + +#: tournaments/models.py +msgid "The name used in the menu, e.g. \"Australs 2016\"" +msgstr "" + +#: tournaments/models.py +msgid "sequence number" +msgstr "" + +#: tournaments/models.py +msgid "A number that determines the relative order in which tournaments are displayed on the homepage." +msgstr "" + +#: tournaments/models.py +msgid "slug" +msgstr "" + +#: tournaments/models.py +msgid "The sub-URL of the tournament, cannot have spaces, e.g. \"australs2016\"" +msgstr "" + +#: tournaments/models.py +msgid "active" +msgstr "" + +#: tournaments/models.py +msgid "tournament" +msgstr "" + +#: tournaments/models.py +msgid "tournaments" +msgstr "" + +#: tournaments/models.py +msgid "Random" +msgstr "" + +#: tournaments/models.py +msgid "Manual" +msgstr "" + +#: tournaments/models.py +msgid "Round-robin" +msgstr "" + +#: tournaments/models.py +msgid "Power-paired" +msgstr "" + +#: tournaments/models.py +msgid "Elimination" +msgstr "" + +#: tournaments/models.py +msgid "Seeded" +msgstr "" + +#: tournaments/models.py +msgid "Preliminary" +msgstr "" + +#: tournaments/models.py +msgid "None" +msgstr "" + +#: tournaments/models.py +msgid "Draft" +msgstr "" + +#: tournaments/models.py +msgid "Confirmed" +msgstr "" + +#: tournaments/models.py +msgid "Released" +msgstr "" + +#: tournaments/models.py +msgid "A number that determines the order of the round, should count consecutively from 1 for the first round" +msgstr "" + +#: tournaments/models.py +msgid "completed" +msgstr "" + +#: tournaments/models.py +msgid "True if the round is over, which normally means all results have been entered and confirmed" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"Round 1\"" +msgstr "" + +#: tournaments/models.py +msgid "abbreviation" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"R1\"" +msgstr "" + +#: tournaments/models.py +msgid "stage" +msgstr "" + +#: tournaments/models.py +msgid "Preliminary = inrounds, elimination = outrounds" +msgstr "" + +#: tournaments/models.py +msgid "draw type" +msgstr "" + +#: tournaments/models.py +msgid "Which draw method to use" +msgstr "" + +#: tournaments/models.py +msgid "break category" +msgstr "" + +#: tournaments/models.py +msgid "If elimination round, which break category" +msgstr "" + +#: tournaments/models.py +msgid "draw status" +msgstr "" + +#: tournaments/models.py +msgid "The status of this round's draw" +msgstr "" + +#: tournaments/models.py +msgid "feedback weight" +msgstr "" + +#: tournaments/models.py +#, no-python-format +msgid "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." +msgstr "" + +#. Translators: A silent round is a round for which results are not disclosed once the round is over. +#: tournaments/models.py +msgid "silent" +msgstr "" + +#: tournaments/models.py +msgid "If marked silent, information about this round (such as its results) will not be shown publicly." +msgstr "" + +#: tournaments/models.py +msgid "motions released" +msgstr "" + +#: tournaments/models.py +msgid "Whether motions will appear on the public website, assuming that feature is turned on" +msgstr "" + +#: tournaments/models.py +msgid "starts at" +msgstr "" + +#: tournaments/models.py +msgid "weight" +msgstr "" + +#: tournaments/models.py +msgid "A factor for the points received in the round. For example, if 2, all points are doubled." +msgstr "" + +#: tournaments/models.py +msgid "round" +msgstr "" + +#: tournaments/models.py +msgid "rounds" +msgstr "" + +#: tournaments/models.py +msgid "The \"Elimination\" draw type is only for elimination rounds, where it is mandatory." +msgstr "" + +#: tournaments/models.py +msgid "An elimination round must have a break category and preliminary round must not." +msgstr "" + +#: tournaments/models.py +msgid "Break category must be for the same tournament." +msgstr "" + +#: tournaments/models.py +msgid "Check-in" +msgstr "" + +#: tournaments/models.py +msgid "Briefing" +msgstr "" + +#: tournaments/models.py +msgid "Draw/motion announcement" +msgstr "" + +#: tournaments/models.py +msgid "Preparation time" +msgstr "" + +#: tournaments/models.py +msgid "Debate" +msgstr "" + +#: tournaments/models.py +msgid "Adjudication" +msgstr "" + +#: tournaments/models.py +msgid "Meal/break" +msgstr "" + +#: tournaments/models.py +msgid "Break announcement" +msgstr "" + +#: tournaments/models.py +msgid "Award ceremony" +msgstr "" + +#: tournaments/models.py +msgid "Other" +msgstr "" + +#: tournaments/models.py +msgid "The tournament the event takes place in" +msgstr "" + +#: tournaments/models.py +msgid "title" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"Lunch\"" +msgstr "" + +#: tournaments/models.py +msgid "event type" +msgstr "" + +#: tournaments/models.py +msgid "What sort of event this is, use \"Other\" if the type is not available" +msgstr "" + +#: tournaments/models.py +msgid "start time" +msgstr "" + +#: tournaments/models.py +msgid "The time the event starts" +msgstr "" + +#: tournaments/models.py +msgid "end time" +msgstr "" + +#: tournaments/models.py +msgid "The time at which the event ends, may be empty" +msgstr "" + +#: tournaments/models.py +msgid "If the event belongs to a specific round, which round" +msgstr "" + +#: tournaments/models.py +msgid "schedule event" +msgstr "" + +#: tournaments/models.py +msgid "schedule events" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +msgid "Dashboard" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +msgid "Overview" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +#, python-format +msgid "current round: %(round)s, status: %(status)s" +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "Welcome to Tabbycat!" +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "To get started, you'll need to create the first user account. This account is a \"superuser\" account: it will be able to edit anything on the site. Therefore, you should use a strong password." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "You can only create this account once, but if you like, you can change the username and password after it's created, or add new superusers afterwards." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "The email address is used for password resets. You don't have to provide one, but if you don't, you won't be able to reset your password if you forget it." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "Create Account" +msgstr "" + +#: tournaments/templates/configure_tournament.html +#, python-format +msgid "Configure Tournament %(tournament)s" +msgstr "" + +#: tournaments/templates/configure_tournament.html +#: tournaments/templates/create_tournament.html +msgid "Tabbycat" +msgstr "" + +#: tournaments/templates/configure_tournament.html +msgid "To finish creating your tournament select a basic configuration options. Note that these can always be changed later (and with more precise control) if needed." +msgstr "" + +#: tournaments/templates/configure_tournament.html +msgid "Configure Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Create New Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Tabbycat is free to use, although donations are encouraged." +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Just trying out Tabbycat?" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "If you're learning or playing around with Tabbycat, it's easiest to create a demo tournament that is prepopulated with a fake (but typical) set of teams, adjudicators, rooms, and the like. You can then delete this demo tournament later on, or deploy a new instance for your real tournament." +msgstr "" + +#: tournaments/templates/create_tournament.html +#, python-format +msgid "Load %(demo)s" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "You already have a tournament set up using this data set. Reloading the data will delete all data from that tournament." +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Create Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Cancel and go back to the site home page" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Debate Team Missing" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Tabbycat always requires that, in every debate, one and only one team is assigned to each side. When that is not the case, this error occurs. Usually, this is the result of debates having been manually edited." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "A list of offending debates is presented below. To fix them, you'll need to do the following:" +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Click the Fix this debate button for that debate." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Ensure that every side that should be present in the debate is present and has a team assigned. If a team is missing, find an empty row and use the magnifying glass to select a team. Then set the new team's side accordingly." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Ensure that no side appears more than once in the debate." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Save the changes." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Once you've fixed all the debates, you should then be able to return to whatever page you were originally on without the error reoccurring." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +#, python-format +msgid "You can also see all the debates in the Debates section of the Edit Database Area." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Debate ID" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +#, python-format +msgid "Teams on %(side)s" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Link to fix this debate" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "No teams" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Multiple teams" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgctxt "button label" +msgid "Fix this debate" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "It looks like all debates are in good shape!" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "If you keep getting redirected to this page and you're not sure why, please contact the developers of Tabbycat." +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Welcome to %(tournament)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "There is currently no public information available for this tournament." +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Team Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Team Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Speaker Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Speaker Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Replies Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Adjudicator Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Motions Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Sides" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Draws for Current Rounds" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(round)s's draw has yet to be released" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "The draw for the next round has yet to be released" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#: tournaments/templates/tournament_schedule_edit.html +msgid "Schedule" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Check-Ins" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Results" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Motions" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Team Standings" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Breaking Adjudicators" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Diversity" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Participants" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Institutions" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Feedback Progress" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Enter Ballot for %(round)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Enter Feedback" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Institution" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Open Team" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Open Adjudicator" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Tournament Staff" +msgstr "" + +#: tournaments/templates/public_tournament_schedule.html +#, python-format +msgid "Schedule is in time zone: %(schedule_timezone_label)s" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Confirm Round Completion" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Enter Results" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Emails have already been sent." +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Email Team Wins/Losses" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Email Team Points" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Unmark as Silent" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Mark as Silent" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Mark %(round)s as Completed" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Mark %(round)s as Completed Anyway" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Go to %(round)s" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "%(round)s has already been marked as completed!" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "The following prior round has not yet been completed: %(prior_rounds_not_completed)s. You should complete it before marking this round as completed." +msgid_plural "The following prior rounds have not yet been completed: %(prior_rounds_not_completed)s. You should complete those before marking this round as completed." +msgstr[0] "" +msgstr[1] "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "All ballots from %(round)s are confirmed. You should be good to go!" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "There is still %(num_unconfirmed)s ballot that is not confirmed. You should not proceed to the next round until all ballots are confirmed." +msgid_plural "There are still %(num_unconfirmed)s ballots that are not confirmed. You should not proceed to the next round until all ballots are confirmed." +msgstr[0] "" +msgstr[1] "" + +#: tournaments/templates/round_complete_check.html +msgid "

    This round is a silent round.

    Even though public view of results is enabled, results for this round will still be hidden from public view after completing this round.

    You can change whether this round is silent using the button above.

    " +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "

    Results for %(round)s will be published online once you mark this round as complete!

    This round is not a silent round, and public view of results is enabled.

    If you want to keep the results for just this round hidden, you can mark this round as silent using the button above.

    If you want to disable the public view of results, you can do so in the tournament configuration.

    " +msgstr "" + +#: tournaments/templates/set_current_round.html +msgid "Back to Configuration" +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "No round is currently set. In order for Tabbycat to work, please set the current round of the tournament %(tournament)s." +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "On this page, you can set the current round of the tournament %(tournament)s." +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "The tournament %(tournament)s has no rounds. You'll need to add rounds and associate them with this tournament before you can set the current round." +msgstr "" + +#: tournaments/templates/set_current_round.html +msgctxt "button" +msgid "Set Current Rounds" +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgctxt "page title" +msgid "Set Round Weights for Tapered Scoring" +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgid "Round weights are coefficients for the points received in each round. A team would get triple their team points obtained in a round with a weight of 3." +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgctxt "button" +msgid "Set weights" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Welcome!" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "It looks like there aren't any tournaments on this site. Would you like to create one?" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "There are currently no active tournaments set up on this site." +msgstr "" + +#: tournaments/templates/site_index.html +msgid "There are currently no tournaments set up on this site." +msgstr "" + +#: tournaments/templates/site_index.html +msgid "(inactive)" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "New Tournament" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Edit Database Area" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Send a Test Email" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Import DebateXML" +msgstr "" + +#: tournaments/templates/site_index.html +#, python-format +msgid "Get API Token / Change Password (%(user)s)" +msgstr "" + +#: tournaments/templates/site_index.html +#, python-format +msgid "Log Out (%(user)s)" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Log In as Admin" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "We hope you've enjoyed using Tabbycat for your tournament. We would appreciate if you would make a donation to the project in order to support its ongoing development and maintenance. For a tournament of this size, we suggest a donation of $%(amount)s. Learn more about donating." +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "Welcome to your new tournament!" +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "The next step is to import your initial tournament data: the institutions, teams, adjudicators and rooms that are in your tournament. There are a number of ways to do this. For small-to-medium tournaments, the simple importer is your best bet." +msgstr "" + +#. Translators: The documentation where the link goes to is in English; translations should mention this with "(in English)" after the link. +#: tournaments/templates/tournament_index.html +#, python-format +msgid "For more information, please consult our documentation on importing initial data." +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "Use the simple importer to add your initial data." +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Mark participants as available to prepare a draw for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Go to the draw area to allocate adjudicators for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Go to the results area to enter ballots for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Administrator area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Assistant area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Public area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_schedule_edit.html +msgid "This page allows you to set the public schedule for the tournament." +msgstr "" + +#: tournaments/templates/tournament_schedule_edit.html +msgid "Save Schedule" +msgstr "" + +#: tournaments/utils.py +msgid "affirmative" +msgstr "" + +#: tournaments/utils.py +msgid "negative" +msgstr "" + +#: tournaments/utils.py +msgid "affirmative team" +msgstr "" + +#: tournaments/utils.py +msgid "negative team" +msgstr "" + +#: tournaments/utils.py +msgid "Aff" +msgstr "" + +#: tournaments/utils.py +msgid "Neg" +msgstr "" + +#: tournaments/utils.py +msgid "government" +msgstr "" + +#: tournaments/utils.py +msgid "opposition" +msgstr "" + +#: tournaments/utils.py +msgid "government team" +msgstr "" + +#: tournaments/utils.py +msgid "opposition team" +msgstr "" + +#: tournaments/utils.py +msgid "Gov" +msgstr "" + +#: tournaments/utils.py +msgid "Opp" +msgstr "" + +#: tournaments/utils.py +msgid "proposition" +msgstr "" + +#: tournaments/utils.py +msgid "proposition team" +msgstr "" + +#: tournaments/utils.py +msgid "Prop" +msgstr "" + +#: tournaments/utils.py +msgid "pro" +msgstr "" + +#: tournaments/utils.py +msgid "con" +msgstr "" + +#: tournaments/utils.py +msgid "pro team" +msgstr "" + +#: tournaments/utils.py +msgid "con team" +msgstr "" + +#: tournaments/utils.py +msgid "Pro" +msgstr "" + +#: tournaments/utils.py +msgid "Con" +msgstr "" + +#: tournaments/utils.py +msgid "appellant" +msgstr "" + +#: tournaments/utils.py +msgid "respondent" +msgstr "" + +#: tournaments/utils.py +msgid "appellant team" +msgstr "" + +#: tournaments/utils.py +msgid "respondent team" +msgstr "" + +#: tournaments/utils.py +msgid "App" +msgstr "" + +#: tournaments/utils.py +msgid "Res" +msgstr "" + +#: tournaments/utils.py +msgid "1st team" +msgstr "" + +#: tournaments/utils.py +msgid "2nd team" +msgstr "" + +#: tournaments/utils.py +msgid "opening government" +msgstr "" + +#: tournaments/utils.py +msgid "opening opposition" +msgstr "" + +#: tournaments/utils.py +msgid "closing government" +msgstr "" + +#: tournaments/utils.py +msgid "closing opposition" +msgstr "" + +#: tournaments/utils.py +msgid "opening government team" +msgstr "" + +#: tournaments/utils.py +msgid "opening opposition team" +msgstr "" + +#: tournaments/utils.py +msgid "closing government team" +msgstr "" + +#: tournaments/utils.py +msgid "closing opposition team" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "OG" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "OO" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "CG" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "CO" +msgstr "" + +#: tournaments/utils.py +#, python-format +msgid "Round %(number)d" +msgstr "" + +#. Translators: This stands for "Round %(number)d". +#: tournaments/utils.py +#, python-format +msgid "R%(number)d" +msgstr "" + +#: tournaments/utils.py +msgid "bye" +msgstr "" + +#: tournaments/utils.py +#, python-format +msgid "Team %d" +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as silent." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been unmarked as silent." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. All rounds are now completed, so you're done with the tournament! Congratulations!" +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. That's the last round in that sequence! Going back to the first round that hasn't been marked as completed." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. You've made it to the end of the preliminary rounds! Congratulations! The next step is to generate the break." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. That was the last preliminary round, but one or more preliminary rounds are still not completed. Going back to the first incomplete preliminary round." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(this_round)s has been marked as completed. Moving on to %(next_round)s! Woohoo! Keep it up!" +msgstr "" + +#: tournaments/views.py +msgid "8-team generic dataset" +msgstr "" + +#: tournaments/views.py +msgid "24-team Australs dataset" +msgstr "" + +#: tournaments/views.py +msgid "88-team BP dataset" +msgstr "" + +#: tournaments/views.py +msgid "Set Current Round" +msgstr "" + +#: tournaments/views.py +msgid "Successfully set round weights for tapered scoring." +msgstr "" + +#: tournaments/views.py +msgid "Tournament Schedule" +msgstr "" + diff --git a/tabbycat/tournaments/locale/sk/LC_MESSAGES/django.po b/tabbycat/tournaments/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..bbd324f9650 --- /dev/null +++ b/tabbycat/tournaments/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,1205 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/tournaments/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 952\n" + +#: tournaments/apps.py +msgid "Tournaments" +msgstr "" + +#: tournaments/forms.py +msgid "Number of preliminary rounds" +msgstr "" + +#: tournaments/forms.py +msgid "Number of teams in the open break" +msgstr "" + +#: tournaments/forms.py +msgid "Leave blank if there are no break rounds." +msgstr "" + +#: tournaments/forms.py +msgid "Did you agree with their decision?" +msgstr "" + +#: tournaments/forms.py +msgid "Agree?" +msgstr "" + +#: tournaments/forms.py +msgid "Comments" +msgstr "" + +#. Translators: This is the name given to the 'Open Break'. +#: tournaments/forms.py +msgid "Open" +msgstr "" + +#: tournaments/forms.py +msgid "Format Configuration" +msgstr "" + +#: tournaments/forms.py +msgid "Apply a standard set of settings to match a common debate format. These can be changed afterwards and should be checked for your needs." +msgstr "" + +#: tournaments/forms.py +msgid "Public Configuration" +msgstr "" + +#: tournaments/forms.py +msgid "Show non-sensitive information on the public-facing side of this site, like draws (once released) and the motions of previous rounds" +msgstr "" + +#: tournaments/forms.py +msgid "Participant Data Entry" +msgstr "" + +#: tournaments/forms.py +msgid "Whether participants can submit ballots and feedback themselves, and how they do so" +msgstr "" + +#: tournaments/forms.py +msgid "Tabulation: [list tabulation staff here]
    Equity: [list equity members here]
    Organisation: [list organising committee members here]
    Adjudication: [list chief adjudicators here]" +msgstr "" + +#: tournaments/forms.py +msgid "Current preliminary round" +msgstr "" + +#: tournaments/forms.py +msgid "All preliminary rounds have been completed" +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "Current elimination round in %(category)s (only if all preliminary rounds have been completed)" +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "All elimination rounds in %(category)s have been completed" +msgstr "" + +#: tournaments/forms.py +msgid "If the current round is a preliminary round, this field must be blank." +msgstr "" + +#: tournaments/forms.py +msgid "If all preliminary rounds have been completed, this field is required." +msgstr "" + +#: tournaments/forms.py +#, python-format +msgid "%(name)s (%(abbreviation)s)" +msgstr "" + +#: tournaments/mixins.py +#, python-format +msgid "You've been redirected to this page because tournament %(tournament)s has no rounds. Please create some before returning to the admin site." +msgstr "" + +#: tournaments/mixins.py +#, python-format +msgid "There's a problem with the data for the tournament %(tournament)s. Please contact a tab director and ask them to investigate." +msgstr "" + +#: tournaments/mixins.py +msgid "You've been redirected to this page because of a problem with how teams are assigned to sides in a debate." +msgstr "" + +#: tournaments/mixins.py +msgid "There's a problem with how teams are assigned to sides in a debate. The tab director will need to resolve this issue." +msgstr "" + +#: tournaments/mixins.py tournaments/templates/round_complete_check.html +#, python-format +msgid "for %(round)s" +msgstr "" + +#: tournaments/mixins.py +msgid "Return to Draw" +msgstr "" + +#: tournaments/models.py +msgid "You can't use this as a tournament slug, because it's reserved for a Tabbycat system URL. Please try another one." +msgstr "" + +#: tournaments/models.py +msgid "name" +msgstr "" + +#: tournaments/models.py +msgid "The full name, e.g. \"Australasian Intervarsity Debating Championships 2016\"" +msgstr "" + +#: tournaments/models.py +msgid "short name" +msgstr "" + +#: tournaments/models.py +msgid "The name used in the menu, e.g. \"Australs 2016\"" +msgstr "" + +#: tournaments/models.py +msgid "sequence number" +msgstr "" + +#: tournaments/models.py +msgid "A number that determines the relative order in which tournaments are displayed on the homepage." +msgstr "" + +#: tournaments/models.py +msgid "slug" +msgstr "" + +#: tournaments/models.py +msgid "The sub-URL of the tournament, cannot have spaces, e.g. \"australs2016\"" +msgstr "" + +#: tournaments/models.py +msgid "active" +msgstr "" + +#: tournaments/models.py +msgid "tournament" +msgstr "" + +#: tournaments/models.py +msgid "tournaments" +msgstr "" + +#: tournaments/models.py +msgid "Random" +msgstr "" + +#: tournaments/models.py +msgid "Manual" +msgstr "" + +#: tournaments/models.py +msgid "Round-robin" +msgstr "" + +#: tournaments/models.py +msgid "Power-paired" +msgstr "" + +#: tournaments/models.py +msgid "Elimination" +msgstr "" + +#: tournaments/models.py +msgid "Seeded" +msgstr "" + +#: tournaments/models.py +msgid "Preliminary" +msgstr "" + +#: tournaments/models.py +msgid "None" +msgstr "" + +#: tournaments/models.py +msgid "Draft" +msgstr "" + +#: tournaments/models.py +msgid "Confirmed" +msgstr "" + +#: tournaments/models.py +msgid "Released" +msgstr "" + +#: tournaments/models.py +msgid "A number that determines the order of the round, should count consecutively from 1 for the first round" +msgstr "" + +#: tournaments/models.py +msgid "completed" +msgstr "" + +#: tournaments/models.py +msgid "True if the round is over, which normally means all results have been entered and confirmed" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"Round 1\"" +msgstr "" + +#: tournaments/models.py +msgid "abbreviation" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"R1\"" +msgstr "" + +#: tournaments/models.py +msgid "stage" +msgstr "" + +#: tournaments/models.py +msgid "Preliminary = inrounds, elimination = outrounds" +msgstr "" + +#: tournaments/models.py +msgid "draw type" +msgstr "" + +#: tournaments/models.py +msgid "Which draw method to use" +msgstr "" + +#: tournaments/models.py +msgid "break category" +msgstr "" + +#: tournaments/models.py +msgid "If elimination round, which break category" +msgstr "" + +#: tournaments/models.py +msgid "draw status" +msgstr "" + +#: tournaments/models.py +msgid "The status of this round's draw" +msgstr "" + +#: tournaments/models.py +msgid "feedback weight" +msgstr "" + +#: tournaments/models.py +#, no-python-format +msgid "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." +msgstr "" + +#. Translators: A silent round is a round for which results are not disclosed once the round is over. +#: tournaments/models.py +msgid "silent" +msgstr "" + +#: tournaments/models.py +msgid "If marked silent, information about this round (such as its results) will not be shown publicly." +msgstr "" + +#: tournaments/models.py +msgid "motions released" +msgstr "" + +#: tournaments/models.py +msgid "Whether motions will appear on the public website, assuming that feature is turned on" +msgstr "" + +#: tournaments/models.py +msgid "starts at" +msgstr "" + +#: tournaments/models.py +msgid "weight" +msgstr "" + +#: tournaments/models.py +msgid "A factor for the points received in the round. For example, if 2, all points are doubled." +msgstr "" + +#: tournaments/models.py +msgid "round" +msgstr "" + +#: tournaments/models.py +msgid "rounds" +msgstr "" + +#: tournaments/models.py +msgid "The \"Elimination\" draw type is only for elimination rounds, where it is mandatory." +msgstr "" + +#: tournaments/models.py +msgid "An elimination round must have a break category and preliminary round must not." +msgstr "" + +#: tournaments/models.py +msgid "Break category must be for the same tournament." +msgstr "" + +#: tournaments/models.py +msgid "Check-in" +msgstr "" + +#: tournaments/models.py +msgid "Briefing" +msgstr "" + +#: tournaments/models.py +msgid "Draw/motion announcement" +msgstr "" + +#: tournaments/models.py +msgid "Preparation time" +msgstr "" + +#: tournaments/models.py +msgid "Debate" +msgstr "" + +#: tournaments/models.py +msgid "Adjudication" +msgstr "" + +#: tournaments/models.py +msgid "Meal/break" +msgstr "" + +#: tournaments/models.py +msgid "Break announcement" +msgstr "" + +#: tournaments/models.py +msgid "Award ceremony" +msgstr "" + +#: tournaments/models.py +msgid "Other" +msgstr "" + +#: tournaments/models.py +msgid "The tournament the event takes place in" +msgstr "" + +#: tournaments/models.py +msgid "title" +msgstr "" + +#: tournaments/models.py +msgid "e.g. \"Lunch\"" +msgstr "" + +#: tournaments/models.py +msgid "event type" +msgstr "" + +#: tournaments/models.py +msgid "What sort of event this is, use \"Other\" if the type is not available" +msgstr "" + +#: tournaments/models.py +msgid "start time" +msgstr "" + +#: tournaments/models.py +msgid "The time the event starts" +msgstr "" + +#: tournaments/models.py +msgid "end time" +msgstr "" + +#: tournaments/models.py +msgid "The time at which the event ends, may be empty" +msgstr "" + +#: tournaments/models.py +msgid "If the event belongs to a specific round, which round" +msgstr "" + +#: tournaments/models.py +msgid "schedule event" +msgstr "" + +#: tournaments/models.py +msgid "schedule events" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +msgid "Dashboard" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +msgid "Overview" +msgstr "" + +#: tournaments/templates/assistant_tournament_index.html +#, python-format +msgid "current round: %(round)s, status: %(status)s" +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "Welcome to Tabbycat!" +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "To get started, you'll need to create the first user account. This account is a \"superuser\" account: it will be able to edit anything on the site. Therefore, you should use a strong password." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "You can only create this account once, but if you like, you can change the username and password after it's created, or add new superusers afterwards." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "The email address is used for password resets. You don't have to provide one, but if you don't, you won't be able to reset your password if you forget it." +msgstr "" + +#: tournaments/templates/blank_site_start.html +msgid "Create Account" +msgstr "" + +#: tournaments/templates/configure_tournament.html +#, python-format +msgid "Configure Tournament %(tournament)s" +msgstr "" + +#: tournaments/templates/configure_tournament.html +#: tournaments/templates/create_tournament.html +msgid "Tabbycat" +msgstr "" + +#: tournaments/templates/configure_tournament.html +msgid "To finish creating your tournament select a basic configuration options. Note that these can always be changed later (and with more precise control) if needed." +msgstr "" + +#: tournaments/templates/configure_tournament.html +msgid "Configure Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Create New Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Tabbycat is free to use, although donations are encouraged." +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Just trying out Tabbycat?" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "If you're learning or playing around with Tabbycat, it's easiest to create a demo tournament that is prepopulated with a fake (but typical) set of teams, adjudicators, rooms, and the like. You can then delete this demo tournament later on, or deploy a new instance for your real tournament." +msgstr "" + +#: tournaments/templates/create_tournament.html +#, python-format +msgid "Load %(demo)s" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "You already have a tournament set up using this data set. Reloading the data will delete all data from that tournament." +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Create Tournament" +msgstr "" + +#: tournaments/templates/create_tournament.html +msgid "Cancel and go back to the site home page" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Debate Team Missing" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Tabbycat always requires that, in every debate, one and only one team is assigned to each side. When that is not the case, this error occurs. Usually, this is the result of debates having been manually edited." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "A list of offending debates is presented below. To fix them, you'll need to do the following:" +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Click the Fix this debate button for that debate." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Ensure that every side that should be present in the debate is present and has a team assigned. If a team is missing, find an empty row and use the magnifying glass to select a team. Then set the new team's side accordingly." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Ensure that no side appears more than once in the debate." +msgstr "" + +#. Translators: This is in a list of instructions. +#: tournaments/templates/fix_debate_teams.html +msgid "Save the changes." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Once you've fixed all the debates, you should then be able to return to whatever page you were originally on without the error reoccurring." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +#, python-format +msgid "You can also see all the debates in the Debates section of the Edit Database Area." +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Debate ID" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +#, python-format +msgid "Teams on %(side)s" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Link to fix this debate" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "No teams" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "Multiple teams" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgctxt "button label" +msgid "Fix this debate" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "It looks like all debates are in good shape!" +msgstr "" + +#: tournaments/templates/fix_debate_teams.html +msgid "If you keep getting redirected to this page and you're not sure why, please contact the developers of Tabbycat." +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Welcome to %(tournament)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "There is currently no public information available for this tournament." +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Team Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Team Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Speaker Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Speaker Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Replies Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Adjudicator Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Motions Tab" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Sides" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Draw for %(round)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Draws for Current Rounds" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(round)s's draw has yet to be released" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "The draw for the next round has yet to be released" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#: tournaments/templates/tournament_schedule_edit.html +msgid "Schedule" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Check-Ins" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Results" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Motions" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Team Standings" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "%(category)s Break" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Breaking Adjudicators" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Diversity" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Participants" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Institutions" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Feedback Progress" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +#, python-format +msgid "Enter Ballot for %(round)s" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Enter Feedback" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Institution" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Open Team" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Register Open Adjudicator" +msgstr "" + +#: tournaments/templates/public_tournament_index.html +msgid "Tournament Staff" +msgstr "" + +#: tournaments/templates/public_tournament_schedule.html +#, python-format +msgid "Schedule is in time zone: %(schedule_timezone_label)s" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Confirm Round Completion" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Enter Results" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Emails have already been sent." +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Email Team Wins/Losses" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Email Team Points" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Unmark as Silent" +msgstr "" + +#: tournaments/templates/round_complete_check.html +msgid "Mark as Silent" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Mark %(round)s as Completed" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Mark %(round)s as Completed Anyway" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "Go to %(round)s" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "%(round)s has already been marked as completed!" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "The following prior round has not yet been completed: %(prior_rounds_not_completed)s. You should complete it before marking this round as completed." +msgid_plural "The following prior rounds have not yet been completed: %(prior_rounds_not_completed)s. You should complete those before marking this round as completed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "All ballots from %(round)s are confirmed. You should be good to go!" +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "There is still %(num_unconfirmed)s ballot that is not confirmed. You should not proceed to the next round until all ballots are confirmed." +msgid_plural "There are still %(num_unconfirmed)s ballots that are not confirmed. You should not proceed to the next round until all ballots are confirmed." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: tournaments/templates/round_complete_check.html +msgid "

    This round is a silent round.

    Even though public view of results is enabled, results for this round will still be hidden from public view after completing this round.

    You can change whether this round is silent using the button above.

    " +msgstr "" + +#: tournaments/templates/round_complete_check.html +#, python-format +msgid "

    Results for %(round)s will be published online once you mark this round as complete!

    This round is not a silent round, and public view of results is enabled.

    If you want to keep the results for just this round hidden, you can mark this round as silent using the button above.

    If you want to disable the public view of results, you can do so in the tournament configuration.

    " +msgstr "" + +#: tournaments/templates/set_current_round.html +msgid "Back to Configuration" +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "No round is currently set. In order for Tabbycat to work, please set the current round of the tournament %(tournament)s." +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "On this page, you can set the current round of the tournament %(tournament)s." +msgstr "" + +#: tournaments/templates/set_current_round.html +#, python-format +msgid "The tournament %(tournament)s has no rounds. You'll need to add rounds and associate them with this tournament before you can set the current round." +msgstr "" + +#: tournaments/templates/set_current_round.html +msgctxt "button" +msgid "Set Current Rounds" +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgctxt "page title" +msgid "Set Round Weights for Tapered Scoring" +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgid "Round weights are coefficients for the points received in each round. A team would get triple their team points obtained in a round with a weight of 3." +msgstr "" + +#: tournaments/templates/set_round_weights.html +msgctxt "button" +msgid "Set weights" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Welcome!" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "It looks like there aren't any tournaments on this site. Would you like to create one?" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "There are currently no active tournaments set up on this site." +msgstr "" + +#: tournaments/templates/site_index.html +msgid "There are currently no tournaments set up on this site." +msgstr "" + +#: tournaments/templates/site_index.html +msgid "(inactive)" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "New Tournament" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Edit Database Area" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Send a Test Email" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Import DebateXML" +msgstr "" + +#: tournaments/templates/site_index.html +#, python-format +msgid "Get API Token / Change Password (%(user)s)" +msgstr "" + +#: tournaments/templates/site_index.html +#, python-format +msgid "Log Out (%(user)s)" +msgstr "" + +#: tournaments/templates/site_index.html +msgid "Log In as Admin" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "We hope you've enjoyed using Tabbycat for your tournament. We would appreciate if you would make a donation to the project in order to support its ongoing development and maintenance. For a tournament of this size, we suggest a donation of $%(amount)s. Learn more about donating." +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "Welcome to your new tournament!" +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "The next step is to import your initial tournament data: the institutions, teams, adjudicators and rooms that are in your tournament. There are a number of ways to do this. For small-to-medium tournaments, the simple importer is your best bet." +msgstr "" + +#. Translators: The documentation where the link goes to is in English; translations should mention this with "(in English)" after the link. +#: tournaments/templates/tournament_index.html +#, python-format +msgid "For more information, please consult our documentation on importing initial data." +msgstr "" + +#: tournaments/templates/tournament_index.html +msgid "Use the simple importer to add your initial data." +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Mark participants as available to prepare a draw for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Go to the draw area to allocate adjudicators for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index.html +#, python-format +msgid "Go to the results area to enter ballots for %(round)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Administrator area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Assistant area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_index_links.html +#, python-format +msgid "Public area for %(tn)s" +msgstr "" + +#: tournaments/templates/tournament_schedule_edit.html +msgid "This page allows you to set the public schedule for the tournament." +msgstr "" + +#: tournaments/templates/tournament_schedule_edit.html +msgid "Save Schedule" +msgstr "" + +#: tournaments/utils.py +msgid "affirmative" +msgstr "" + +#: tournaments/utils.py +msgid "negative" +msgstr "" + +#: tournaments/utils.py +msgid "affirmative team" +msgstr "" + +#: tournaments/utils.py +msgid "negative team" +msgstr "" + +#: tournaments/utils.py +msgid "Aff" +msgstr "" + +#: tournaments/utils.py +msgid "Neg" +msgstr "" + +#: tournaments/utils.py +msgid "government" +msgstr "" + +#: tournaments/utils.py +msgid "opposition" +msgstr "" + +#: tournaments/utils.py +msgid "government team" +msgstr "" + +#: tournaments/utils.py +msgid "opposition team" +msgstr "" + +#: tournaments/utils.py +msgid "Gov" +msgstr "" + +#: tournaments/utils.py +msgid "Opp" +msgstr "" + +#: tournaments/utils.py +msgid "proposition" +msgstr "" + +#: tournaments/utils.py +msgid "proposition team" +msgstr "" + +#: tournaments/utils.py +msgid "Prop" +msgstr "" + +#: tournaments/utils.py +msgid "pro" +msgstr "" + +#: tournaments/utils.py +msgid "con" +msgstr "" + +#: tournaments/utils.py +msgid "pro team" +msgstr "" + +#: tournaments/utils.py +msgid "con team" +msgstr "" + +#: tournaments/utils.py +msgid "Pro" +msgstr "" + +#: tournaments/utils.py +msgid "Con" +msgstr "" + +#: tournaments/utils.py +msgid "appellant" +msgstr "" + +#: tournaments/utils.py +msgid "respondent" +msgstr "" + +#: tournaments/utils.py +msgid "appellant team" +msgstr "" + +#: tournaments/utils.py +msgid "respondent team" +msgstr "" + +#: tournaments/utils.py +msgid "App" +msgstr "" + +#: tournaments/utils.py +msgid "Res" +msgstr "" + +#: tournaments/utils.py +msgid "1st team" +msgstr "" + +#: tournaments/utils.py +msgid "2nd team" +msgstr "" + +#: tournaments/utils.py +msgid "opening government" +msgstr "" + +#: tournaments/utils.py +msgid "opening opposition" +msgstr "" + +#: tournaments/utils.py +msgid "closing government" +msgstr "" + +#: tournaments/utils.py +msgid "closing opposition" +msgstr "" + +#: tournaments/utils.py +msgid "opening government team" +msgstr "" + +#: tournaments/utils.py +msgid "opening opposition team" +msgstr "" + +#: tournaments/utils.py +msgid "closing government team" +msgstr "" + +#: tournaments/utils.py +msgid "closing opposition team" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "OG" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "OO" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "CG" +msgstr "" + +#: tournaments/utils.py +msgctxt "BP position" +msgid "CO" +msgstr "" + +#: tournaments/utils.py +#, python-format +msgid "Round %(number)d" +msgstr "" + +#. Translators: This stands for "Round %(number)d". +#: tournaments/utils.py +#, python-format +msgid "R%(number)d" +msgstr "" + +#: tournaments/utils.py +msgid "bye" +msgstr "" + +#: tournaments/utils.py +#, python-format +msgid "Team %d" +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as silent." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been unmarked as silent." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. All rounds are now completed, so you're done with the tournament! Congratulations!" +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. That's the last round in that sequence! Going back to the first round that hasn't been marked as completed." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. You've made it to the end of the preliminary rounds! Congratulations! The next step is to generate the break." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(round)s has been marked as completed. That was the last preliminary round, but one or more preliminary rounds are still not completed. Going back to the first incomplete preliminary round." +msgstr "" + +#: tournaments/views.py +#, python-format +msgid "%(this_round)s has been marked as completed. Moving on to %(next_round)s! Woohoo! Keep it up!" +msgstr "" + +#: tournaments/views.py +msgid "8-team generic dataset" +msgstr "" + +#: tournaments/views.py +msgid "24-team Australs dataset" +msgstr "" + +#: tournaments/views.py +msgid "88-team BP dataset" +msgstr "" + +#: tournaments/views.py +msgid "Set Current Round" +msgstr "" + +#: tournaments/views.py +msgid "Successfully set round weights for tapered scoring." +msgstr "" + +#: tournaments/views.py +msgid "Tournament Schedule" +msgstr "" + diff --git a/tabbycat/utils/locale/el/LC_MESSAGES/django.po b/tabbycat/utils/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..1cab2939a50 --- /dev/null +++ b/tabbycat/utils/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,352 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/utils/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 954\n" + +#: utils/admin.py utils/tables.py +msgid "Round" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Team" +msgstr "" + +#: utils/admin.py +msgid "Speaker" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Tournament" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Side" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Motion" +msgstr "" + +#: utils/admin.py +msgid "Confirmed" +msgstr "" + +#: utils/admin.py +msgid "Adjudicator" +msgstr "" + +#: utils/tables.py +msgid "No Data Available" +msgstr "" + +#: utils/tables.py +msgid "Ⓒ" +msgstr "" + +#: utils/tables.py +msgid "Ⓣ" +msgstr "" + +#: utils/tables.py +msgid "chair" +msgstr "" + +#: utils/tables.py +msgid "panellist" +msgstr "" + +#: utils/tables.py +msgid "trainee" +msgstr "" + +#: utils/tables.py +msgid "—" +msgstr "" + +#: utils/tables.py +msgid "Redacted" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "View %(a)s's %(d)s Record" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "View %(team)s's Record" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Code name: %(name)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Real name: %(name)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s won" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s lost" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s—no result" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s placed %(place)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s is advancing" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s was eliminated" +msgstr "" + +#: utils/tables.py +msgid "View/edit debate ballot" +msgstr "" + +#: utils/tables.py +msgid "View debate ballot" +msgstr "" + +#: utils/tables.py +#, python-format +msgid " vs %(opposition)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Won against %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Lost to %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "No result for debate against %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Total speaker score: %s" +msgstr "" + +#: utils/tables.py +msgid "Teams in debate:" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s (%(side)s)" +msgstr "" + +#: utils/tables.py +msgid "??" +msgstr "" + +#: utils/tables.py +msgid "advancing" +msgstr "" + +#: utils/tables.py +msgid "Advancing" +msgstr "" + +#: utils/tables.py +msgid "eliminated" +msgstr "" + +#: utils/tables.py +msgid "Eliminated" +msgstr "" + +#: utils/tables.py +msgid "No result for debate" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Placed %(place)s" +msgstr "" + +#: utils/tables.py +msgid "Name" +msgstr "" + +#: utils/tables.py +msgid "Institution" +msgstr "" + +#: utils/tables.py +msgid "Member of the Adjudication Core" +msgstr "" + +#: utils/tables.py +msgid "Independent Adjudicator" +msgstr "" + +#: utils/tables.py +msgid "Always Trainee" +msgstr "" + +#: utils/tables.py +msgid "in minority" +msgstr "" + +#: utils/tables.py +msgid "Debate Adjudicators" +msgstr "" + +#: utils/tables.py +msgid "Categories" +msgstr "" + +#: utils/tables.py +msgid "Category" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "This room %(predicate)s." +msgstr "" + +#: utils/tables.py +#, python-format +msgid "This room %(predicates)s, and %(last_predicate)s." +msgstr "" + +#: utils/tables.py +msgid "Room" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Teams have met once" +msgid_plural "Teams have met %(count)d times" +msgstr[0] "" +msgstr[1] "" + +#: utils/tables.py +msgid "Teams are from the same institution" +msgstr "" + +#: utils/tables.py +msgid "Conflicts/Flags" +msgstr "" + +#: utils/tables.py +msgid "The confirmed ballot" +msgstr "" + +#: utils/tables.py +msgid "No ballot" +msgstr "" + +#: utils/tables.py +msgid "No scores" +msgstr "" + +#: utils/tables.py +msgid "View Ballot" +msgstr "" + +#: utils/tables.py +msgid "The ballot you submitted" +msgstr "" + +#: utils/tables.py +msgid "No Ballot" +msgstr "" + +#: utils/tables.py +msgid "View/Edit Ballot" +msgstr "" + +#: utils/tables.py +msgid "Result" +msgstr "" + +#. Translators: "TBC" stands for "to be confirmed". +#: utils/tables.py +msgid "TBC" +msgstr "" + +#: utils/tables.py +msgid "Bye" +msgstr "" + +#: utils/tables.py +msgid "Team was given a bye this round" +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed this round and the last." +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed this round." +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed last round." +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "" + +#: utils/tables.py +msgid "Postpone" +msgstr "" + +#: utils/tables.py +msgid "Event" +msgstr "" + +#: utils/tables.py +msgid "Start Time" +msgstr "" + +#: utils/tables.py +msgid "End Time" +msgstr "" + +#: utils/views.py +msgid "Whoops! You're not meant to type that URL into your browser." +msgstr "" + diff --git a/tabbycat/utils/locale/sk/LC_MESSAGES/django.po b/tabbycat/utils/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..cbce8372525 --- /dev/null +++ b/tabbycat/utils/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,354 @@ +msgid "" +msgstr "" +"Project-Id-Version: tabbycat\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-07-06 09:38+1000\n" +"PO-Revision-Date: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/utils/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 954\n" + +#: utils/admin.py utils/tables.py +msgid "Round" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Team" +msgstr "" + +#: utils/admin.py +msgid "Speaker" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Tournament" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Side" +msgstr "" + +#: utils/admin.py utils/tables.py +msgid "Motion" +msgstr "" + +#: utils/admin.py +msgid "Confirmed" +msgstr "" + +#: utils/admin.py +msgid "Adjudicator" +msgstr "" + +#: utils/tables.py +msgid "No Data Available" +msgstr "" + +#: utils/tables.py +msgid "Ⓒ" +msgstr "" + +#: utils/tables.py +msgid "Ⓣ" +msgstr "" + +#: utils/tables.py +msgid "chair" +msgstr "" + +#: utils/tables.py +msgid "panellist" +msgstr "" + +#: utils/tables.py +msgid "trainee" +msgstr "" + +#: utils/tables.py +msgid "—" +msgstr "" + +#: utils/tables.py +msgid "Redacted" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "View %(a)s's %(d)s Record" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "View %(team)s's Record" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Code name: %(name)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Real name: %(name)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s won" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s lost" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s—no result" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s placed %(place)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s is advancing" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s was eliminated" +msgstr "" + +#: utils/tables.py +msgid "View/edit debate ballot" +msgstr "" + +#: utils/tables.py +msgid "View debate ballot" +msgstr "" + +#: utils/tables.py +#, python-format +msgid " vs %(opposition)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Won against %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Lost to %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "No result for debate against %(team)s" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Total speaker score: %s" +msgstr "" + +#: utils/tables.py +msgid "Teams in debate:" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "%(team)s (%(side)s)" +msgstr "" + +#: utils/tables.py +msgid "??" +msgstr "" + +#: utils/tables.py +msgid "advancing" +msgstr "" + +#: utils/tables.py +msgid "Advancing" +msgstr "" + +#: utils/tables.py +msgid "eliminated" +msgstr "" + +#: utils/tables.py +msgid "Eliminated" +msgstr "" + +#: utils/tables.py +msgid "No result for debate" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Placed %(place)s" +msgstr "" + +#: utils/tables.py +msgid "Name" +msgstr "" + +#: utils/tables.py +msgid "Institution" +msgstr "" + +#: utils/tables.py +msgid "Member of the Adjudication Core" +msgstr "" + +#: utils/tables.py +msgid "Independent Adjudicator" +msgstr "" + +#: utils/tables.py +msgid "Always Trainee" +msgstr "" + +#: utils/tables.py +msgid "in minority" +msgstr "" + +#: utils/tables.py +msgid "Debate Adjudicators" +msgstr "" + +#: utils/tables.py +msgid "Categories" +msgstr "" + +#: utils/tables.py +msgid "Category" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "This room %(predicate)s." +msgstr "" + +#: utils/tables.py +#, python-format +msgid "This room %(predicates)s, and %(last_predicate)s." +msgstr "" + +#: utils/tables.py +msgid "Room" +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Teams have met once" +msgid_plural "Teams have met %(count)d times" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: utils/tables.py +msgid "Teams are from the same institution" +msgstr "" + +#: utils/tables.py +msgid "Conflicts/Flags" +msgstr "" + +#: utils/tables.py +msgid "The confirmed ballot" +msgstr "" + +#: utils/tables.py +msgid "No ballot" +msgstr "" + +#: utils/tables.py +msgid "No scores" +msgstr "" + +#: utils/tables.py +msgid "View Ballot" +msgstr "" + +#: utils/tables.py +msgid "The ballot you submitted" +msgstr "" + +#: utils/tables.py +msgid "No Ballot" +msgstr "" + +#: utils/tables.py +msgid "View/Edit Ballot" +msgstr "" + +#: utils/tables.py +msgid "Result" +msgstr "" + +#. Translators: "TBC" stands for "to be confirmed". +#: utils/tables.py +msgid "TBC" +msgstr "" + +#: utils/tables.py +msgid "Bye" +msgstr "" + +#: utils/tables.py +msgid "Team was given a bye this round" +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed this round and the last." +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed this round." +msgstr "" + +#: utils/tables.py +msgid "Team iron-personed last round." +msgstr "" + +#: utils/tables.py +#, python-format +msgid "Team %(num)d" +msgstr "" + +#: utils/tables.py +msgid "Postpone" +msgstr "" + +#: utils/tables.py +msgid "Event" +msgstr "" + +#: utils/tables.py +msgid "Start Time" +msgstr "" + +#: utils/tables.py +msgid "End Time" +msgstr "" + +#: utils/views.py +msgid "Whoops! You're not meant to type that URL into your browser." +msgstr "" + diff --git a/tabbycat/venues/locale/el/LC_MESSAGES/django.po b/tabbycat/venues/locale/el/LC_MESSAGES/django.po new file mode 100644 index 00000000000..2fe440bc954 --- /dev/null +++ b/tabbycat/venues/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,222 @@ +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: 2025-08-07 00:12\n" +"Last-Translator: philip_tc\n" +"Language-Team: Greek\n" +"Language: el_GR\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: el\n" +"X-Crowdin-File: /develop/tabbycat/venues/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 956\n" + +#: venues/apps.py +msgid "Rooms" +msgstr "" + +#: venues/consumers.py +msgid "Draw is already released, unrelease draw to assign rooms." +msgstr "" + +#: venues/consumers.py +msgid "Draw is not confirmed, confirm draw to assign rooms." +msgstr "" + +#: venues/consumers.py +msgid "Successfully auto-allocated rooms to debates." +msgstr "" + +#: venues/models.py +msgid "name" +msgstr "" + +#: venues/models.py +msgid "priority" +msgstr "" + +#: venues/models.py +msgid "Rooms with a higher priority number will be preferred when allocating rooms to debates" +msgstr "" + +#: venues/models.py +msgid "tournament" +msgstr "" + +#: venues/models.py +msgid "URL" +msgstr "" + +#: venues/models.py +msgid "A URL that contains extra information about this room, e.g. a map or a meeting link (for online tournaments)" +msgstr "" + +#: venues/models.py +msgid "room" +msgstr "" + +#: venues/models.py +msgid "rooms" +msgstr "" + +#: venues/models.py +msgid "Don't display in room name" +msgstr "" + +#: venues/models.py +msgid "Display as prefix" +msgstr "" + +#: venues/models.py +msgid "Display as suffix" +msgstr "" + +#: venues/models.py +msgid "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 room name in the draw, e.g., \"Purple – G05\"." +msgstr "" + +#: venues/models.py +msgid "description" +msgstr "" + +#: venues/models.py +msgid "Description, as the predicate of a sentence, e.g. \"has step-free access\", \"is close to the briefing hall\". This description follows \"This room\" when shown in tooltips, e.g., \"This room is close to the briefing hall.\"." +msgstr "" + +#: venues/models.py +msgid "display in room name" +msgstr "" + +#: venues/models.py +msgid "Prefix: \"Purple – G05\", Suffix: \"G05 – Purple\"" +msgstr "" + +#: venues/models.py +msgid "display in public tooltip" +msgstr "" + +#: venues/models.py +msgid "Displays the description in the tooltip for the room on public pages. The description, if not blank, will always show on admin pages." +msgstr "" + +#: venues/models.py +msgid "room category" +msgstr "" + +#: venues/models.py +msgid "room categories" +msgstr "" + +#: venues/models.py +msgid "category" +msgstr "" + +#: venues/models.py +msgid "subject content type" +msgstr "" + +#: venues/models.py +msgid "subject ID" +msgstr "" + +#: venues/models.py +msgid "room constraint" +msgstr "" + +#: venues/models.py +msgid "room constraints" +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Room Categories" +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Room categories allow you to group rooms together into \"zones\" to display in the draw and make navigation easier for participants, and/or specify constraints on room allocation that require teams, adjudicators or institutions to be put in a room in a particular category." +msgstr "" + +#: venues/templates/venue_categories_edit.html +#, python-format +msgid "If you want to delete room categories, use the Edit Database area." +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Save Room Categories" +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Room Constraints" +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Room constraints tell the room allocator to try to keep the specified team or adjudicator, or all teams (but not adjudicators) from the specified institution, in a room in the given category. The \"priority\" field resolves conflicting constraints: the higher priority takes precedence. You can also use the priority field to specify \"lower-preference\" constraints, which are taken if a higher-priority constraint couldn't be met." +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Save Room Constraints" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room constraint of %(name)s met (%(category)s)" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room does not meet any constraint of %(name)s" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room constraint of %(team)s met (%(category)s, via institution %(institution)s)" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room does not meet any constraint of institution %(institution)s (%(team)s)" +msgstr "" + +#: venues/views.py +msgid "Edit Rooms" +msgstr "" + +#: venues/views.py +#, python-format +msgid "Saved room category: %(list)s" +msgid_plural "Saved venue categories: %(list)s" +msgstr[0] "" +msgstr[1] "" + +#: venues/views.py +msgid "No changes were made to the room categories." +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Adjudicator)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Team)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Institution)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "Saved %(count)d room constraint." +msgid_plural "Saved %(count)d room constraints." +msgstr[0] "" +msgstr[1] "" + diff --git a/tabbycat/venues/locale/sk/LC_MESSAGES/django.po b/tabbycat/venues/locale/sk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..c8e6253fc56 --- /dev/null +++ b/tabbycat/venues/locale/sk/LC_MESSAGES/django.po @@ -0,0 +1,226 @@ +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: 2026-04-29 23:51\n" +"Last-Translator: philip_tc\n" +"Language-Team: Slovak\n" +"Language: sk_SK\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: sk\n" +"X-Crowdin-File: /develop/tabbycat/venues/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-Project-ID: 364715\n" +"X-Crowdin-File-ID: 956\n" + +#: venues/apps.py +msgid "Rooms" +msgstr "" + +#: venues/consumers.py +msgid "Draw is already released, unrelease draw to assign rooms." +msgstr "" + +#: venues/consumers.py +msgid "Draw is not confirmed, confirm draw to assign rooms." +msgstr "" + +#: venues/consumers.py +msgid "Successfully auto-allocated rooms to debates." +msgstr "" + +#: venues/models.py +msgid "name" +msgstr "" + +#: venues/models.py +msgid "priority" +msgstr "" + +#: venues/models.py +msgid "Rooms with a higher priority number will be preferred when allocating rooms to debates" +msgstr "" + +#: venues/models.py +msgid "tournament" +msgstr "" + +#: venues/models.py +msgid "URL" +msgstr "" + +#: venues/models.py +msgid "A URL that contains extra information about this room, e.g. a map or a meeting link (for online tournaments)" +msgstr "" + +#: venues/models.py +msgid "room" +msgstr "" + +#: venues/models.py +msgid "rooms" +msgstr "" + +#: venues/models.py +msgid "Don't display in room name" +msgstr "" + +#: venues/models.py +msgid "Display as prefix" +msgstr "" + +#: venues/models.py +msgid "Display as suffix" +msgstr "" + +#: venues/models.py +msgid "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 room name in the draw, e.g., \"Purple – G05\"." +msgstr "" + +#: venues/models.py +msgid "description" +msgstr "" + +#: venues/models.py +msgid "Description, as the predicate of a sentence, e.g. \"has step-free access\", \"is close to the briefing hall\". This description follows \"This room\" when shown in tooltips, e.g., \"This room is close to the briefing hall.\"." +msgstr "" + +#: venues/models.py +msgid "display in room name" +msgstr "" + +#: venues/models.py +msgid "Prefix: \"Purple – G05\", Suffix: \"G05 – Purple\"" +msgstr "" + +#: venues/models.py +msgid "display in public tooltip" +msgstr "" + +#: venues/models.py +msgid "Displays the description in the tooltip for the room on public pages. The description, if not blank, will always show on admin pages." +msgstr "" + +#: venues/models.py +msgid "room category" +msgstr "" + +#: venues/models.py +msgid "room categories" +msgstr "" + +#: venues/models.py +msgid "category" +msgstr "" + +#: venues/models.py +msgid "subject content type" +msgstr "" + +#: venues/models.py +msgid "subject ID" +msgstr "" + +#: venues/models.py +msgid "room constraint" +msgstr "" + +#: venues/models.py +msgid "room constraints" +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Room Categories" +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Room categories allow you to group rooms together into \"zones\" to display in the draw and make navigation easier for participants, and/or specify constraints on room allocation that require teams, adjudicators or institutions to be put in a room in a particular category." +msgstr "" + +#: venues/templates/venue_categories_edit.html +#, python-format +msgid "If you want to delete room categories, use the Edit Database area." +msgstr "" + +#: venues/templates/venue_categories_edit.html +msgid "Save Room Categories" +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Room Constraints" +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Room constraints tell the room allocator to try to keep the specified team or adjudicator, or all teams (but not adjudicators) from the specified institution, in a room in the given category. The \"priority\" field resolves conflicting constraints: the higher priority takes precedence. You can also use the priority field to specify \"lower-preference\" constraints, which are taken if a higher-priority constraint couldn't be met." +msgstr "" + +#: venues/templates/venue_constraints_edit.html +msgid "Save Room Constraints" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room constraint of %(name)s met (%(category)s)" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room does not meet any constraint of %(name)s" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room constraint of %(team)s met (%(category)s, via institution %(institution)s)" +msgstr "" + +#: venues/utils.py +#, python-format +msgid "Room does not meet any constraint of institution %(institution)s (%(team)s)" +msgstr "" + +#: venues/views.py +msgid "Edit Rooms" +msgstr "" + +#: venues/views.py +#, python-format +msgid "Saved room category: %(list)s" +msgid_plural "Saved venue categories: %(list)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: venues/views.py +msgid "No changes were made to the room categories." +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Adjudicator)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Team)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "%s (Institution)" +msgstr "" + +#: venues/views.py +#, python-format +msgid "Saved %(count)d room constraint." +msgid_plural "Saved %(count)d room constraints." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +