diff --git a/src/locale/_src/LC_MESSAGES/django.po b/src/locale/_src/LC_MESSAGES/django.po index 995a23678..9d0c6877b 100644 --- a/src/locale/_src/LC_MESSAGES/django.po +++ b/src/locale/_src/LC_MESSAGES/django.po @@ -1673,6 +1673,14 @@ msgstr "" msgid "Co-Speaking Proposals" msgstr "" +#: templates/default/users/user_dashboard.html:76 +#, python-format +msgid "" +"The editable time is over. If you have any questions, please contact us " +"at program@python.tw" +msgstr "" + #: templates/default/users/user_profile_update.html:6 msgid "Update Speaker Profile" msgstr "" diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index ab539105a..b504c9732 100644 --- a/src/locale/en_US/LC_MESSAGES/django.po +++ b/src/locale/en_US/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PyCon TW\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-24 10:21+0800\n" +"POT-Creation-Date: 2024-07-29 20:25+0800\n" "PO-Revision-Date: 2022-07-11 02:23+0800\n" "Last-Translator: Tom Chen \n" "Language-Team: English (United States) (http://www.transifex.com/pycon-" @@ -29,11 +29,11 @@ msgstr "" msgid "token" msgstr "token" -#: attendee/models.py:7 users/models.py:166 +#: attendee/models.py:7 users/models.py:164 msgid "verified" msgstr "verified" -#: attendee/models.py:9 core/models.py:162 events/models.py:469 +#: attendee/models.py:9 core/models.py:162 msgid "created at" msgstr "created at" @@ -79,16 +79,15 @@ msgctxt "CCIP event type" msgid "talk" msgstr "talk" -#: core/admin.py:15 +#: core/admin.py:14 msgid "Current" msgstr "" -#: core/admin.py:16 core/choices.py:24 events/models.py:157 -#: events/templatetags/events.py:21 +#: core/admin.py:15 core/choices.py:24 events/models.py:138 msgid "Other" msgstr "Other" -#: core/admin.py:17 +#: core/admin.py:16 msgid "All" msgstr "" @@ -214,29 +213,13 @@ msgstr "Intermediate" msgid "Experienced" msgstr "Experienced" -#: core/choices.py:41 -msgid "Day 1, September 21st, 2024 Morning" -msgstr "Day 1, September 21st, 2024 Morning with Taiwan Standard Time(UTC+8)" - -#: core/choices.py:42 -msgid "Day 1, September 21st, 2024 Afternoon" -msgstr "Day 1, September 21st, 2024 Afternoon with Taiwan Standard Time(UTC+8)" - -#: core/choices.py:43 -msgid "Day 2, September 22nd, 2024 Morning" -msgstr "Day 2, September 22nd, 2024 Morning with Taiwan Standard Time(UTC+8)" - -#: core/choices.py:44 -msgid "Day 2, September 22nd, 2024 Afternoon" -msgstr "Day 2, September 22nd, 2024 Afternoon with Taiwan Standard Time(UTC+8)" - -#: core/choices.py:48 core/choices.py:53 core/choices.py:58 core/choices.py:63 -#: core/choices.py:68 reviews/models.py:122 reviews/models.py:137 +#: core/choices.py:41 core/choices.py:46 core/choices.py:51 core/choices.py:56 +#: core/choices.py:61 reviews/models.py:121 reviews/models.py:136 msgid "Yes" msgstr "Yes" -#: core/choices.py:49 core/choices.py:54 core/choices.py:59 core/choices.py:64 -#: core/choices.py:69 reviews/models.py:123 reviews/models.py:138 +#: core/choices.py:42 core/choices.py:47 core/choices.py:52 core/choices.py:57 +#: core/choices.py:62 reviews/models.py:122 reviews/models.py:137 msgid "No" msgstr "No" @@ -249,7 +232,7 @@ msgstr "{model_name_cap} creation requires a request object." msgid "conference" msgstr "conference" -#: core/models.py:93 events/models.py:193 +#: core/models.py:93 events/models.py:174 msgid "title" msgstr "title" @@ -293,7 +276,7 @@ msgstr "slide link" msgid "slido embed link" msgstr "Slido embed link" -#: core/models.py:156 events/models.py:258 +#: core/models.py:156 events/models.py:239 msgid "HackMD embed link" msgstr "HackMD embed link" @@ -313,8 +296,8 @@ msgstr "attending PyCon TW in person" msgid "Key" msgstr "Key" -#: core/models.py:215 proposals/models.py:62 users/models.py:198 -#: users/models.py:313 +#: core/models.py:215 proposals/models.py:67 users/models.py:196 +#: users/models.py:311 msgid "user" msgstr "user" @@ -330,99 +313,99 @@ msgstr "" msgid "Tokens" msgstr "" -#: events/admin.py:26 +#: events/admin.py:34 msgid "time value" msgstr "time value" -#: events/admin.py:100 events/models.py:173 +#: events/admin.py:108 events/models.py:154 msgid "begin time" msgstr "begin time" -#: events/admin.py:106 events/models.py:182 +#: events/admin.py:114 events/models.py:163 msgid "end time" msgstr "end time" -#: events/admin.py:128 +#: events/admin.py:136 #: templates/default/users/_includes/dashboard_proposal_table.html:32 msgid "Edit" msgstr "Edit" -#: events/models.py:73 +#: events/models.py:70 msgid "value" msgstr "value" -#: events/models.py:80 +#: events/models.py:77 msgid "time" msgstr "time" -#: events/models.py:81 +#: events/models.py:78 msgid "times" msgstr "times" -#: events/models.py:144 +#: events/models.py:125 msgid "All rooms" msgstr "All rooms" -#: events/models.py:145 +#: events/models.py:126 msgid "R0, R1, R2" msgstr "R1, R2, R3" -#: events/models.py:146 +#: events/models.py:127 msgid "R0" msgstr "R0" -#: events/models.py:147 +#: events/models.py:128 msgid "R0_1" msgstr "R0_1" -#: events/models.py:148 +#: events/models.py:129 msgid "R0_2" msgstr "R0_2" # #: events/models.py:122 # msgid "R0" # msgstr "R0" -#: events/models.py:149 events/templatetags/events.py:15 +#: events/models.py:130 msgid "R1" msgstr "R1" -#: events/models.py:150 +#: events/models.py:131 msgid "R1_1" msgstr "R1_1" -#: events/models.py:151 +#: events/models.py:132 msgid "R1_2" msgstr "R1_2" -#: events/models.py:152 events/templatetags/events.py:16 +#: events/models.py:133 msgid "R2" msgstr "R2" -#: events/models.py:153 +#: events/models.py:134 msgid "R2_1" msgstr "R2_1" -#: events/models.py:154 +#: events/models.py:135 msgid "R2_2" msgstr "R2_2" -#: events/models.py:155 events/templatetags/events.py:17 +#: events/models.py:136 msgid "R3" msgstr "R3" -#: events/models.py:156 +#: events/models.py:137 msgid "Open Space" msgstr "Open Spaces" -#: events/models.py:165 +#: events/models.py:146 msgid "location" msgstr "location" -#: events/models.py:197 +#: events/models.py:178 msgid "is break event" msgstr "is break event" -#: events/models.py:200 +#: events/models.py:181 msgid "" "Whether this event is displays as a break. A break can be visually " "distinguished from \"real\" conference sessions, such as keynotes, talks, " @@ -431,71 +414,71 @@ msgstr "" "Whether this event is displays as a break. A break can be visually " "distinguished from “real” conference sessions, such as keynotes, talks, etc." -#: events/models.py:206 +#: events/models.py:187 msgid "event description" msgstr "event description" -#: events/models.py:209 +#: events/models.py:190 msgid "link path" msgstr "link path" -#: events/models.py:214 +#: events/models.py:195 msgid "custom event" msgstr "custom event" -#: events/models.py:215 +#: events/models.py:196 msgid "custom events" msgstr "custom events" -#: events/models.py:224 users/models.py:118 +#: events/models.py:205 users/models.py:116 msgid "speaker name" msgstr "speaker name" -#: events/models.py:229 +#: events/models.py:210 msgid "speaker bio" msgstr "speaker bio" -#: events/models.py:233 +#: events/models.py:214 msgid "speaker photo" msgstr "speaker photo" -#: events/models.py:237 +#: events/models.py:218 msgid "Raster format of the speaker's photo, e.g. PNG, JPEG." msgstr "Raster format of the speaker's photo, e.g. PNG, JPEG." -#: events/models.py:241 +#: events/models.py:222 msgid "keynote session title" msgstr "keynote session title" -#: events/models.py:246 +#: events/models.py:227 msgid "keynote session description" msgstr "keynote session description" -#: events/models.py:250 +#: events/models.py:231 msgid "session slides" msgstr "session slides" -#: events/models.py:254 +#: events/models.py:235 msgid "slido" msgstr "Slido" -#: events/models.py:263 +#: events/models.py:244 msgid "social linkedin" msgstr "Linkedin" -#: events/models.py:267 +#: events/models.py:248 msgid "social twitter" msgstr "Twitter" -#: events/models.py:271 +#: events/models.py:252 msgid "social github" msgstr "Github" -#: events/models.py:275 events/models.py:360 +#: events/models.py:256 events/models.py:341 msgid "slug" msgstr "slug" -#: events/models.py:277 +#: events/models.py:258 #, python-brace-format msgid "" "This is used to link to the speaker's introduction on the Keynote page, e.g. " @@ -504,33 +487,33 @@ msgstr "" "This is used to link to the speaker's introduction on the Keynote page, e.g. " "'liang2' will link to '{link}#keynote-speaker-liang2'." -#: events/models.py:284 events/models.py:403 events/models.py:439 +#: events/models.py:265 events/models.py:384 events/models.py:420 msgid "is remote" msgstr "is remote" -#: events/models.py:288 events/models.py:363 events/models.py:407 -#: events/models.py:443 +#: events/models.py:269 events/models.py:344 events/models.py:388 +#: events/models.py:424 msgid "youtube id" msgstr "youtube id" -#: events/models.py:294 +#: events/models.py:275 msgid "keynote event" msgstr "keynote event" -#: events/models.py:295 +#: events/models.py:276 msgid "keynote events" msgstr "keynote events" -#: events/models.py:298 +#: events/models.py:279 #, python-brace-format msgid "Keynote: {speaker}" msgstr "Keynote: {speaker}" -#: events/models.py:337 sponsors/models.py:101 sponsors/models.py:117 +#: events/models.py:318 sponsors/models.py:107 sponsors/models.py:123 msgid "sponsor" msgstr "sponsor" -#: events/models.py:342 events/models.py:343 +#: events/models.py:323 events/models.py:324 #: templates/pycontw-2020/_includes/menu.html:104 #: templates/pycontw-2020/contents/_default/events/job-listings.html:33 #: templates/pycontw-2021/contents/_default/events/job-listings.html:33 @@ -540,120 +523,48 @@ msgstr "sponsor" msgid "Job Listings" msgstr "Job Listings" -#: events/models.py:346 +#: events/models.py:327 #, python-brace-format msgid "Open Role of Sponsor: {sponsor}" msgstr "Open Role of Sponsor: {sponsor}" -#: events/models.py:355 +#: events/models.py:336 msgid "host" msgstr "host" -#: events/models.py:369 +#: events/models.py:350 msgid "sponsored event" msgstr "sponsored event" -#: events/models.py:370 +#: events/models.py:351 msgid "sponsored events" msgstr "sponsored events" -#: events/models.py:398 events/models.py:429 reviews/models.py:76 -#: reviews/models.py:197 +#: events/models.py:379 events/models.py:410 reviews/models.py:75 +#: reviews/models.py:196 msgid "proposal" msgstr "proposal" -#: events/models.py:415 +#: events/models.py:396 msgid "talk event" msgstr "talk event" -#: events/models.py:416 +#: events/models.py:397 msgid "talk events" msgstr "talk events" -#: events/models.py:434 +#: events/models.py:415 msgid "registration link" msgstr "registration link" -#: events/models.py:451 +#: events/models.py:432 msgid "tutorial event" msgstr "tutorial event" -#: events/models.py:452 +#: events/models.py:433 msgid "tutorial events" msgstr "tutorial events" -#: events/models.py:466 -msgid "HTML" -msgstr "HTML" - -#: events/models.py:474 templates/pycontw-2016/_includes/nav/front_nav.html:40 -#: templates/pycontw-2016/events/schedule.html:6 -#: templates/pycontw-2016/events/schedule.html:8 -#: templates/pycontw-2017/contents/_default/portal.html:16 -#: templates/pycontw-2017/events/schedule.html:6 -#: templates/pycontw-2017/events/schedule.html:17 -#: templates/pycontw-2018/_includes/menu.html:54 -#: templates/pycontw-2018/contents/_default/portal.html:17 -#: templates/pycontw-2018/events/schedule.html:6 -#: templates/pycontw-2018/events/schedule.html:20 -#: templates/pycontw-2019/_includes/menu.html:59 -#: templates/pycontw-2019/_includes/portal.html:4 -#: templates/pycontw-2019/events/schedule.html:6 -#: templates/pycontw-2019/events/schedule.html:20 -#: templates/pycontw-2020/_includes/menu.html:80 -#: templates/pycontw-2020/_includes/portal.html:4 -#: templates/pycontw-2020/events/schedule.html:6 -#: templates/pycontw-2020/events/schedule.html:21 -#: templates/pycontw-2021/_includes/portal.html:4 -#: templates/pycontw-2021/events/schedule.html:6 -#: templates/pycontw-2021/events/schedule.html:21 -#: templates/pycontw-2022/_includes/portal.html:4 -#: templates/pycontw-2022/events/schedule.html:6 -#: templates/pycontw-2022/events/schedule.html:21 -#: templates/pycontw-2023/_includes/portal.html:4 -#: templates/pycontw-2023/events/schedule.html:6 -#: templates/pycontw-2023/events/schedule.html:21 -#: templates/pycontw-2024/_includes/portal.html:4 -#: templates/pycontw-2024/events/schedule.html:6 -#: templates/pycontw-2024/events/schedule.html:21 -msgid "Schedule" -msgstr "Schedule" - -#: events/models.py:475 -msgid "Schedules" -msgstr "Schedules" - -#: events/models.py:480 -msgid "Schedule created at {}" -msgstr "Schedule created at {}" - -#: events/renderers.py:34 -msgid "Keynote" -msgstr "Keynote" - -#: events/renderers.py:43 -msgid "EN Slides" -msgstr "EN Slides" - -# #: events/models.py:125 -# msgid "R4" -# msgstr "R4" -#: events/templatetags/events.py:18 -msgid "Multifunction room" -msgstr "Multifunction room" - -#: events/templatetags/events.py:19 -msgid "Goodideas Studio" -msgstr "Goodideas Studio" - -#: events/templatetags/events.py:20 -msgid "R1, R2, R3" -msgstr "R1, R2, R3" - -#: events/views.py:121 -msgid "New talk schedule generated successfully." -msgstr "New talk schedule generated successfully." - #: proposals/forms/mixins.py:16 #, python-brace-format msgid "" @@ -852,11 +763,11 @@ msgstr "" msgid "duration" msgstr "Duration" -#: proposals/forms/speakers.py:19 +#: proposals/forms/speakers.py:18 msgid "speaker email" msgstr "speaker email" -#: proposals/forms/speakers.py:21 +#: proposals/forms/speakers.py:20 msgid "" "The speaker should have a registered account, and have completed both email " "validation and the speaker profile." @@ -864,7 +775,7 @@ msgstr "" "The speaker should have a registered account, and have completed both email " "validation and the speaker profile." -#: proposals/forms/speakers.py:29 +#: proposals/forms/speakers.py:28 #, python-brace-format msgid "" "Only authenticated user with complete speaker profile may create an " @@ -873,161 +784,161 @@ msgstr "" "Only authenticated user with complete speaker profile may create an " "{model_name}." -#: proposals/forms/speakers.py:33 +#: proposals/forms/speakers.py:32 msgid "Additional speaker creation requires a proposal instance." msgstr "Additional speaker creation requires a proposal instance." -#: proposals/forms/speakers.py:36 +#: proposals/forms/speakers.py:35 msgid "User can only add additional speakers to owned proposals." msgstr "User can only add additional speakers to owned proposals." -#: proposals/forms/speakers.py:39 +#: proposals/forms/speakers.py:38 msgid "This user is already a speaker for the proposal." msgstr "This user is already a speaker for the proposal." -#: proposals/forms/speakers.py:41 +#: proposals/forms/speakers.py:40 msgid "No valid speaker found with your selection." msgstr "No valid speaker found with your selection." -#: proposals/models.py:55 +#: proposals/models.py:60 msgid "Proposal author" msgstr "Proposal author" -#: proposals/models.py:68 +#: proposals/models.py:73 msgid "proposal model type" msgstr "proposal model type" -#: proposals/models.py:72 +#: proposals/models.py:77 msgid "proposal ID" msgstr "proposal ID" -#: proposals/models.py:80 +#: proposals/models.py:85 msgid "Pending" msgstr "Pending" -#: proposals/models.py:81 proposals/models.py:160 +#: proposals/models.py:86 proposals/models.py:162 msgid "Accepted" msgstr "Accepted" -#: proposals/models.py:82 +#: proposals/models.py:87 msgid "Declined" msgstr "Declined" -#: proposals/models.py:91 proposals/models.py:153 +#: proposals/models.py:96 proposals/models.py:155 msgid "cancelled" msgstr "cancelled" -#: proposals/models.py:99 +#: proposals/models.py:104 msgid "additional speaker" msgstr "additional speaker" -#: proposals/models.py:100 +#: proposals/models.py:105 msgid "additional speakers" msgstr "additional speakers" -#: proposals/models.py:132 +#: proposals/models.py:134 msgid "submitter" msgstr "submitter" -#: proposals/models.py:137 +#: proposals/models.py:139 msgid "outline" msgstr "outline" -#: proposals/models.py:142 +#: proposals/models.py:144 msgid "objective" msgstr "objective" -#: proposals/models.py:147 +#: proposals/models.py:149 msgid "supplementary" msgstr "supplementary" -#: proposals/models.py:161 +#: proposals/models.py:163 msgid "Rejected" msgstr "Rejected" -#: proposals/models.py:164 +#: proposals/models.py:166 msgid "accepted" msgstr "accepted" -#: proposals/models.py:178 +#: proposals/models.py:180 msgid "labels" msgstr "" -#: proposals/models.py:263 proposals/models.py:317 +#: proposals/models.py:264 proposals/models.py:318 #: templates/default/_includes/proposal_example_modal.html:50 #: templates/default/_includes/proposal_example_modal.html:67 #: templates/default/reviews/review_form.html:40 msgid "Duration" msgstr "Duration" -#: proposals/models.py:268 +#: proposals/models.py:269 msgid "Yes, it is my first time speaking at PyCon Taiwan." msgstr "Yes, it is my first time speaking at PyCon Taiwan." -#: proposals/models.py:269 +#: proposals/models.py:270 msgid "No, I have given talks at PyCon Taiwan in the past." msgstr "No, I have given talks at PyCon Taiwan in the past." -#: proposals/models.py:273 +#: proposals/models.py:274 msgid "first time speaker" msgstr "first time speaker" -#: proposals/models.py:278 +#: proposals/models.py:279 msgid "talk proposal" msgstr "talk proposal" -#: proposals/models.py:279 +#: proposals/models.py:280 msgid "talk proposals" msgstr "talk proposals" -#: proposals/models.py:313 +#: proposals/models.py:314 msgid "1.5hr" msgstr "1.5hr" -#: proposals/models.py:324 +#: proposals/models.py:325 msgid "tutorial proposal" msgstr "tutorial proposal" -#: proposals/models.py:325 +#: proposals/models.py:326 msgid "tutorial proposals" msgstr "tutorial proposals" -#: proposals/utils.py:4 +#: proposals/utils.py:3 msgctxt "speaker name default separator" msgid ", " msgstr ", " -#: proposals/utils.py:5 +#: proposals/utils.py:4 msgctxt "speaker name last separator" msgid " and " msgstr " and " -#: proposals/views/cancel.py:36 +#: proposals/views/cancel.py:35 #, python-brace-format msgid "Talk proposal {title} withdrawn." msgstr "Talk proposal {title} withdrawn." -#: proposals/views/cancel.py:40 +#: proposals/views/cancel.py:39 #, python-brace-format msgid "Talk proposal {title} reactivated." msgstr "Talk proposal {title} reactivated." -#: proposals/views/cancel.py:58 +#: proposals/views/cancel.py:57 #, python-brace-format msgid "Tutorial proposal {title} withdrawn." msgstr "Tutorial proposal {title} withdrawn." -#: proposals/views/cancel.py:62 +#: proposals/views/cancel.py:61 #, python-brace-format msgid "Tutorial proposal {title} reactivated." msgstr "Tutorial proposal {title} reactivated." -#: proposals/views/create.py:42 +#: proposals/views/create.py:41 #, python-brace-format msgid "Talk proposal {title} created." msgstr "Talk proposal {title} created." -#: proposals/views/create.py:52 +#: proposals/views/create.py:51 #, python-brace-format msgid "Tutorial proposal {title} created." msgstr "Tutorial proposal {title} created." @@ -1235,62 +1146,62 @@ msgstr "" " - Final resulting work\n" "5. Q&A [5min]\n" -#: proposals/views/update.py:61 +#: proposals/views/update.py:64 #, python-brace-format msgid "Talk proposal {title} updated." msgstr "Talk proposal {title} updated." -#: proposals/views/update.py:70 +#: proposals/views/update.py:73 #, python-brace-format msgid "Tutorial proposal {title} updated." msgstr "Tutorial proposal {title} updated." -#: pycontw2016/settings/base.py:301 +#: pycontw2016/settings/base.py:305 msgid "PyCon Taiwan 2016" msgstr "PyCon Taiwan 2016" -#: pycontw2016/settings/base.py:302 templates/pycontw-2017/index.html:6 +#: pycontw2016/settings/base.py:306 templates/pycontw-2017/index.html:6 msgid "PyCon Taiwan 2017" msgstr "PyCon Taiwan 2017" -#: pycontw2016/settings/base.py:303 templates/pycontw-2018/index.html:14 +#: pycontw2016/settings/base.py:307 templates/pycontw-2018/index.html:14 msgid "PyCon Taiwan 2018" msgstr "PyCon Taiwan 2018" -#: pycontw2016/settings/base.py:304 templates/pycontw-2019/index.html:14 +#: pycontw2016/settings/base.py:308 templates/pycontw-2019/index.html:14 msgid "PyCon Taiwan 2019" msgstr "PyCon Taiwan 2019" -#: pycontw2016/settings/base.py:305 templates/pycontw-2020/index.html:14 +#: pycontw2016/settings/base.py:309 templates/pycontw-2020/index.html:14 msgid "PyCon Taiwan 2020" msgstr "PyCon Taiwan 2020" -#: pycontw2016/settings/base.py:306 templates/pycontw-2021/index.html:14 +#: pycontw2016/settings/base.py:310 templates/pycontw-2021/index.html:14 #: templates/pycontw-2022/index.html:14 templates/pycontw-2023/index.html:14 #: templates/pycontw-2024/index.html:14 msgid "PyCon Taiwan 2021" msgstr "PyCon Taiwan 2021" -#: pycontw2016/settings/base.py:307 +#: pycontw2016/settings/base.py:311 msgid "PyCon Taiwan 2022" msgstr "PyCon Taiwan 2022" -#: pycontw2016/settings/base.py:308 +#: pycontw2016/settings/base.py:312 msgid "PyCon Taiwan 2023" msgstr "PyCon Taiwan 2023" -#: pycontw2016/settings/base.py:309 +#: pycontw2016/settings/base.py:313 #, fuzzy #| msgid "PyCon Taiwan 2020" msgid "PyCon Taiwan 2024" msgstr "PyCon Taiwan 2020" -#: pycontw2016/settings/base.py:322 +#: pycontw2016/settings/base.py:326 #: pycontw2016/settings/production/pycontw2016.py:16 -#: pycontw2016/settings/production/pycontw2021.py:15 -#: pycontw2016/settings/production/pycontw2022.py:14 -#: pycontw2016/settings/production/pycontw2023.py:14 -#: pycontw2016/settings/production/pycontw2024.py:14 +#: pycontw2016/settings/production/pycontw2021.py:16 +#: pycontw2016/settings/production/pycontw2022.py:16 +#: pycontw2016/settings/production/pycontw2023.py:16 +#: pycontw2016/settings/production/pycontw2024.py:16 #: pycontw2016/settings/testing/pycontw2021.py:11 #: pycontw2016/settings/testing/pycontw2022.py:11 #: pycontw2016/settings/testing/pycontw2023.py:11 @@ -1298,11 +1209,11 @@ msgstr "PyCon Taiwan 2020" msgid "No preference" msgstr "No preference" -#: pycontw2016/settings/base.py:323 -#: pycontw2016/settings/production/pycontw2021.py:16 -#: pycontw2016/settings/production/pycontw2022.py:15 -#: pycontw2016/settings/production/pycontw2023.py:15 -#: pycontw2016/settings/production/pycontw2024.py:15 +#: pycontw2016/settings/base.py:327 +#: pycontw2016/settings/production/pycontw2021.py:17 +#: pycontw2016/settings/production/pycontw2022.py:17 +#: pycontw2016/settings/production/pycontw2023.py:17 +#: pycontw2016/settings/production/pycontw2024.py:17 #: pycontw2016/settings/testing/pycontw2021.py:12 #: pycontw2016/settings/testing/pycontw2022.py:12 #: pycontw2016/settings/testing/pycontw2023.py:12 @@ -1310,11 +1221,11 @@ msgstr "No preference" msgid "Prefer 15min" msgstr "Prefer 15min" -#: pycontw2016/settings/base.py:324 -#: pycontw2016/settings/production/pycontw2021.py:17 -#: pycontw2016/settings/production/pycontw2022.py:16 -#: pycontw2016/settings/production/pycontw2023.py:16 -#: pycontw2016/settings/production/pycontw2024.py:16 +#: pycontw2016/settings/base.py:328 +#: pycontw2016/settings/production/pycontw2021.py:18 +#: pycontw2016/settings/production/pycontw2022.py:18 +#: pycontw2016/settings/production/pycontw2023.py:18 +#: pycontw2016/settings/production/pycontw2024.py:18 #: pycontw2016/settings/testing/pycontw2021.py:13 #: pycontw2016/settings/testing/pycontw2022.py:13 #: pycontw2016/settings/testing/pycontw2023.py:13 @@ -1322,13 +1233,13 @@ msgstr "Prefer 15min" msgid "Prefer 30min" msgstr "Prefer 30min" -#: pycontw2016/settings/base.py:328 +#: pycontw2016/settings/base.py:332 #: pycontw2016/settings/production/pycontw2016.py:22 #: templates/pycontw-2016/events/schedule.html:42 msgid "Day 1" msgstr "Day 1" -#: pycontw2016/settings/base.py:329 +#: pycontw2016/settings/base.py:333 #: pycontw2016/settings/production/pycontw2016.py:23 #: templates/pycontw-2016/events/schedule.html:45 msgid "Day 2" @@ -1339,10 +1250,10 @@ msgid "Prefer 25min" msgstr "Prefer 25min" #: pycontw2016/settings/production/pycontw2016.py:18 -#: pycontw2016/settings/production/pycontw2021.py:18 -#: pycontw2016/settings/production/pycontw2022.py:17 -#: pycontw2016/settings/production/pycontw2023.py:17 -#: pycontw2016/settings/production/pycontw2024.py:17 +#: pycontw2016/settings/production/pycontw2021.py:19 +#: pycontw2016/settings/production/pycontw2022.py:19 +#: pycontw2016/settings/production/pycontw2023.py:19 +#: pycontw2016/settings/production/pycontw2024.py:19 #: pycontw2016/settings/testing/pycontw2021.py:14 #: pycontw2016/settings/testing/pycontw2022.py:14 #: pycontw2016/settings/testing/pycontw2023.py:14 @@ -1378,35 +1289,35 @@ msgstr "{model_name_cap} creation requires a proposal object." msgid "Could not review proposal {proposal}." msgstr "Could not review proposal {proposal}." -#: reviews/models.py:66 +#: reviews/models.py:65 msgid "reviewer" msgstr "reviewer" -#: reviews/models.py:71 reviews/models.py:202 +#: reviews/models.py:70 reviews/models.py:201 msgid "stage" msgstr "stage" -#: reviews/models.py:90 +#: reviews/models.py:89 msgid "+1 (strong accept)" msgstr "+1 (strong accept)" -#: reviews/models.py:91 +#: reviews/models.py:90 msgid "+0 (weak accept)" msgstr "+0 (weak accept)" -#: reviews/models.py:92 +#: reviews/models.py:91 msgid "-0 (weak reject)" msgstr "–0 (weak reject)" -#: reviews/models.py:93 +#: reviews/models.py:92 msgid "-1 (strong reject)" msgstr "–1 (strong reject)" -#: reviews/models.py:102 +#: reviews/models.py:101 msgid "vote" msgstr "vote" -#: reviews/models.py:104 +#: reviews/models.py:103 msgid "" "Your vote to accept or reject this talk. More information about the scoring " "and acceptance criteria can be found at the GitBook Review Guideline." -#: reviews/models.py:113 +#: reviews/models.py:112 msgid "comment" msgstr "comment" -#: reviews/models.py:115 +#: reviews/models.py:114 msgid "" "Comments to this proposal. This may be available for other reviewers in " "later review stages, and you can choose whether or not to disclose it to the " @@ -1432,11 +1343,11 @@ msgstr "" "later review stages, and you can choose whether or not to disclose it to the " "proposal's submitter." -#: reviews/models.py:128 +#: reviews/models.py:127 msgid "discloses comment to proposal submitter" msgstr "discloses comment to proposal submitter" -#: reviews/models.py:130 +#: reviews/models.py:129 msgid "" "Whether the proposal submitter can read you comments. We will include your " "comments in the proposal acceptance/rejection notice sent to the submitter " @@ -1446,11 +1357,11 @@ msgstr "" "comments in the proposal acceptance/rejection notice sent to the submitter " "if you allow us to." -#: reviews/models.py:143 +#: reviews/models.py:142 msgid "is appropriate" msgstr "is appropriate" -#: reviews/models.py:145 +#: reviews/models.py:144 msgid "" "Administrators can use this field to hide a review from submitters, even if " "the reviewer enables disclosure. The review may be shown to the submitter " @@ -1460,11 +1371,11 @@ msgstr "" "the reviewer enables disclosure. The review may be shown to the submitter " "only if this is set to True." -#: reviews/models.py:153 +#: reviews/models.py:152 msgid "note" msgstr "note" -#: reviews/models.py:155 +#: reviews/models.py:154 msgid "" "Personal notes about this proposal. You can use this field to record " "anything you like during the review process. We promise to never disclose " @@ -1474,65 +1385,69 @@ msgstr "" "anything you like during the review process. We promise to never disclose " "them to anyone." -#: reviews/models.py:163 +#: reviews/models.py:162 msgid "updated" msgstr "updated" -#: reviews/models.py:168 +#: reviews/models.py:167 msgid "review" msgstr "review" -#: reviews/models.py:169 +#: reviews/models.py:168 msgid "reviews" msgstr "reviews" -#: reviews/models.py:174 +#: reviews/models.py:173 #, python-brace-format msgid "Review {proposal} by {reviewer}: {vote}" msgstr "Review {proposal} by {reviewer}: {vote}" -#: reviews/models.py:206 +#: reviews/models.py:205 msgid "dumped JSON" msgstr "dumped JSON" -#: reviews/models.py:210 +#: reviews/models.py:209 msgid "dumped at" msgstr "dumped at" -#: reviews/models.py:215 +#: reviews/models.py:214 msgid "talk proposal snapshot" msgstr "talk proposal snapshot" -#: reviews/models.py:216 +#: reviews/models.py:215 msgid "talk proposal snapshots" msgstr "talk proposal snapshots" -#: reviews/models.py:220 +#: reviews/models.py:219 #, python-brace-format msgid "Stage {stage} dump for {proposal}" msgstr "Stage {stage} dump for {proposal}" -#: sponsors/models.py:27 +#: sponsors/models.py:23 msgid "name" msgstr "name" -#: sponsors/models.py:31 +#: sponsors/models.py:28 +msgid "is shown" +msgstr "" + +#: sponsors/models.py:33 msgid "website URL" msgstr "website URL" -#: sponsors/models.py:35 +#: sponsors/models.py:37 msgid "introduction" msgstr "introduction" -#: sponsors/models.py:38 +#: sponsors/models.py:40 msgid "subtitle" msgstr "subtitle" -#: sponsors/models.py:43 +#: sponsors/models.py:45 msgid "logo (SVG)" msgstr "logo (SVG)" -#: sponsors/models.py:46 +#: sponsors/models.py:48 msgid "" "Vector format of the logo, in SVG. This takes precedence to the raster " "format, if available." @@ -1540,11 +1455,11 @@ msgstr "" "Vector format of the logo, in SVG. This takes precedence to the raster " "format, if available." -#: sponsors/models.py:51 +#: sponsors/models.py:53 msgid "logo (image)" msgstr "logo (image)" -#: sponsors/models.py:55 +#: sponsors/models.py:57 msgid "" "Raster format of the logo, e.g. PNG, JPEG. This is used as fallback when the " "SVG file is not available." @@ -1552,73 +1467,87 @@ msgstr "" "Raster format of the logo, e.g. PNG, JPEG. This is used as fallback when the " "SVG file is not available." -#: sponsors/models.py:60 +#: sponsors/models.py:62 msgid "order" msgstr "order" -#: sponsors/models.py:80 +#: sponsors/models.py:84 +msgid "diamond" +msgstr "" + +#: sponsors/models.py:85 msgid "platinum" msgstr "platinum" -#: sponsors/models.py:81 +#: sponsors/models.py:86 msgid "gold" msgstr "gold" -#: sponsors/models.py:82 +#: sponsors/models.py:87 msgid "silver" msgstr "silver" -#: sponsors/models.py:83 +#: sponsors/models.py:88 msgid "bronze" msgstr "bronze" -#: sponsors/models.py:84 +#: sponsors/models.py:89 msgid "special" msgstr "special" -#: sponsors/models.py:85 +#: sponsors/models.py:90 msgid "special-thanks" msgstr "special-thanks" -#: sponsors/models.py:86 +#: sponsors/models.py:91 msgid "organizer" msgstr "organizer" -#: sponsors/models.py:87 +#: sponsors/models.py:92 msgid "co-organizer" msgstr "co-organizer" -#: sponsors/models.py:96 +#: sponsors/models.py:93 +#, fuzzy +#| msgid "co-organizer" +msgid "sprint-co-organizer" +msgstr "co-organizer" + +#: sponsors/models.py:102 msgid "level" msgstr "level" -#: sponsors/models.py:102 +#: sponsors/models.py:108 msgid "sponsors" msgstr "sponsors" -#: sponsors/models.py:122 +#: sponsors/models.py:128 msgid "open role name" msgstr "open role name" -#: sponsors/models.py:127 -msgid "open role descsription" +#: sponsors/models.py:133 +#, fuzzy +#| msgid "open role descsription" +msgid "open role description" msgstr "open role description" -#: sponsors/models.py:131 +#: sponsors/models.py:137 msgid "open role requirements" msgstr "open role requirements" -#: sponsors/models.py:136 +#: sponsors/models.py:142 msgid "open role URL" msgstr "open role URL" -#: sponsors/models.py:141 +#: sponsors/models.py:147 msgid "open role" msgstr "open role" -#: sponsors/models.py:142 -msgid "open Roles" -msgstr "open Roles" +#: sponsors/models.py:148 +#, fuzzy +#| msgid "open role" +msgid "open roles" +msgstr "open role" #: templates/default/_includes/character_counter_template.html:4 msgid "Text unit count: " @@ -1723,6 +1652,7 @@ msgstr "" #: templates/default/reviews/_includes/proposal_table.html:20 #: templates/default/reviews/_includes/review_table_thead.html:7 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:6 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:6 #: templates/default/users/_includes/dashboard_proposal_table.html:6 msgid "Title" msgstr "Title" @@ -1743,6 +1673,7 @@ msgstr "Category" #: templates/default/_includes/proposal_example_modal.html:69 #: templates/default/reviews/review_form.html:45 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:7 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:7 #: templates/default/users/_includes/dashboard_proposal_table.html:8 #: templates/pycontw-2016/events/sponsored_event_detail.html:17 #: templates/pycontw-2016/events/talk_detail.html:17 @@ -1831,6 +1762,7 @@ msgstr "Speaker" #: templates/default/proposals/manage_speakers.html:20 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:9 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:9 msgid "Status" msgstr "Status" @@ -1875,7 +1807,7 @@ msgstr "Edit Tutorial Proposal %(proposal_title)s" #: templates/default/registration/login.html:5 #: templates/default/registration/login.html:7 #: templates/pycontw-2016/registration/login.html:7 -#: templates/pycontw-2016/registration/login.html:21 users/forms.py:261 +#: templates/pycontw-2016/registration/login.html:21 users/forms.py:265 msgid "Log In" msgstr "Log In" @@ -1978,7 +1910,7 @@ msgid "Stage" msgstr "Stage" #: templates/default/reviews/_includes/previous_review_table.html:7 -#: users/models.py:223 +#: users/models.py:221 msgid "Reviewer ID" msgstr "Reviewer ID" @@ -2085,6 +2017,7 @@ msgstr "%(proposal_title)s | Reviews" #: templates/default/reviews/review_form.html:31 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:8 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:8 msgid "Submitter" msgstr "Submitter" @@ -2247,7 +2180,8 @@ msgstr "" msgid "You haven't submitted any tutorial proposals." msgstr "You haven’t submitted any tutorial proposals." -#: templates/default/users/user_dashboard.html:67 +#: templates/default/users/user_dashboard.html:68 +#: templates/default/users/user_dashboard.html:74 msgid "Co-Speaking Proposals" msgstr "Co-Speaking Proposals" @@ -5035,40 +4969,40 @@ msgstr "Permissions" msgid "Important dates" msgstr "Important dates" -#: users/forms.py:28 +#: users/forms.py:32 msgid "A user with that email already exists." msgstr "A user with that email already exists." -#: users/forms.py:29 +#: users/forms.py:33 msgid "The two password fields didn't match." msgstr "The two password fields didn’t match." -#: users/forms.py:32 users/forms.py:201 +#: users/forms.py:36 users/forms.py:205 msgid "Password" msgstr "Password" -#: users/forms.py:36 +#: users/forms.py:40 msgid "Password confirmation" msgstr "Password confirmation" -#: users/forms.py:117 +#: users/forms.py:121 msgid "Create Account" msgstr "Create Account" -#: users/forms.py:148 +#: users/forms.py:152 #, python-brace-format msgid "Your image is too small ({width}\\u00d7{height} pixels)." msgstr "Your image is too small ({width}\\u00d7{height} pixels)." -#: users/forms.py:150 +#: users/forms.py:154 msgid "The image you provided is not quadrate." msgstr "The image you provided is not quadrate." -#: users/forms.py:151 +#: users/forms.py:155 msgid "Your image size is too big (>10M)" msgstr "Your image size is too big (>10M)" -#: users/forms.py:202 +#: users/forms.py:206 msgid "" "Raw passwords are not stored, so there is no way to see this user's " "password, but you can change the password using this " @@ -5078,61 +5012,61 @@ msgstr "" "password, but you can change the password using this " "form." -#: users/forms.py:251 +#: users/forms.py:255 #, python-brace-format msgid "" "Forgot Password" msgstr "" "Forgot Password" -#: users/forms.py:255 +#: users/forms.py:259 #, python-brace-format msgid "Sign up now" msgstr "Sign up now" -#: users/forms.py:272 +#: users/forms.py:276 msgid "Email Address" msgstr "Email Address" -#: users/forms.py:291 +#: users/forms.py:295 msgid "Request Password Reset" msgstr "Request Password Reset" -#: users/forms.py:327 +#: users/forms.py:331 msgid "Set Password" msgstr "Set Password" -#: users/forms.py:339 +#: users/forms.py:343 msgid "I agree to the code of conduct." msgstr "I agree to the code of conduct." -#: users/forms.py:344 +#: users/forms.py:348 msgid "You must agree to continue." msgstr "You must agree to continue." -#: users/models.py:114 +#: users/models.py:112 msgid "email address" msgstr "email address" -#: users/models.py:122 +#: users/models.py:120 msgid "biography" msgstr "biography" -#: users/models.py:125 +#: users/models.py:123 msgid "" "Describe yourself with 1000 characters or less. There will be no formatting." msgstr "" "Describe yourself with 1000 characters or less. There will be no formatting." -#: users/models.py:130 +#: users/models.py:128 msgid "photo" msgstr "photo" -#: users/models.py:134 +#: users/models.py:132 msgid "Facebook" msgstr "Facebook" -#: users/models.py:137 +#: users/models.py:135 msgid "" "Link to your Facebook profile page. This will be shown when we display your " "public information. If you do not know what your profile page link is, click " @@ -5144,11 +5078,11 @@ msgstr "" "on this link, and " "copy-paste the URL of the page opened. Remember to log in to Facebook first!" -#: users/models.py:146 +#: users/models.py:144 msgid "Twitter" msgstr "Twitter" -#: users/models.py:151 +#: users/models.py:149 msgid "" "Your Twitter handle, without the \"@\" sign. This will be shown when we " "display your public information." @@ -5156,11 +5090,11 @@ msgstr "" "Your Twitter handle, without the “@” sign. This will be shown when we " "display your public information." -#: users/models.py:156 +#: users/models.py:154 msgid "GitHub" msgstr "GitHub" -#: users/models.py:161 +#: users/models.py:159 msgid "" "Your GitHub account, without the \"@\" sign. This will be shown when we " "display your public information." @@ -5168,23 +5102,23 @@ msgstr "" "Your GitHub account, without the “@” sign. This will be shown when we " "display your public information." -#: users/models.py:169 +#: users/models.py:167 msgid "Designates whether the user has verified email ownership." msgstr "Designates whether the user has verified email ownership." -#: users/models.py:173 +#: users/models.py:171 msgid "staff status" msgstr "staff status" -#: users/models.py:176 +#: users/models.py:174 msgid "Designates whether the user can log into this admin site." msgstr "Designates whether the user can log into this admin site." -#: users/models.py:180 +#: users/models.py:178 msgid "active" msgstr "active" -#: users/models.py:183 +#: users/models.py:181 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -5192,49 +5126,49 @@ msgstr "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." -#: users/models.py:188 +#: users/models.py:186 msgid "date joined" msgstr "date joined" -#: users/models.py:199 +#: users/models.py:197 msgid "users" msgstr "users" -#: users/models.py:299 +#: users/models.py:297 #, python-brace-format msgid "Verify your email address on {host}" msgstr "Verify your email address on {host}" -#: users/models.py:317 +#: users/models.py:315 msgid "latest agreed CoC version" msgstr "latest agreed CoC version" -#: users/models.py:321 +#: users/models.py:319 msgid "agreed at" msgstr "agreed at" -#: users/views.py:42 +#: users/views.py:44 msgid "Sign up successful. You are now logged in." msgstr "Sign up successful. You are now logged in." -#: users/views.py:59 +#: users/views.py:61 msgid "Email verification successful." msgstr "Email verification successful." -#: users/views.py:71 +#: users/views.py:73 #, python-brace-format msgid "A verification email has been sent to {email}" msgstr "A verification email has been sent to {email}" -#: users/views.py:101 +#: users/views.py:103 msgid "Your profile has been updated successfully." msgstr "Your profile has been updated successfully." -#: users/views.py:114 +#: users/views.py:116 msgid "Your new password has been applied successfully." msgstr "Your new password has been applied successfully." -#: users/views.py:121 +#: users/views.py:123 msgid "" "An email is sent to your email account. Please check your inbox for furthur " "instructions to reset your password." @@ -5242,6 +5176,64 @@ msgstr "" "An email is sent to your email account. Please check your inbox for furthur " "instructions to reset your password." -#: users/views.py:129 +#: users/views.py:131 msgid "Password reset successful. You can now login." msgstr "Password reset successful. You can now login." + +#~ msgid "" +#~ "The editable time is over. If you have any questions, please contact us " +#~ "at program@python.tw" +#~ msgstr "" +#~ "The editable time is over. If you have any questions, please contact us " +#~ "at program@python.tw" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Schedules" +#~ msgstr "Schedules" + +#~ msgid "Schedule created at {}" +#~ msgstr "Schedule created at {}" + +#~ msgid "Keynote" +#~ msgstr "Keynote" + +#~ msgid "EN Slides" +#~ msgstr "EN Slides" + +# #: events/models.py:125 +# msgid "R4" +# msgstr "R4" +#~ msgid "Multifunction room" +#~ msgstr "Multifunction room" + +#~ msgid "Goodideas Studio" +#~ msgstr "Goodideas Studio" + +#~ msgid "R1, R2, R3" +#~ msgstr "R1, R2, R3" + +#~ msgid "New talk schedule generated successfully." +#~ msgstr "New talk schedule generated successfully." + +#~ msgid "open Roles" +#~ msgstr "open Roles" + +#~ msgid "Day 1, September 21st, 2024 Morning" +#~ msgstr "" +#~ "Day 1, September 21st, 2024 Morning with Taiwan Standard Time(UTC+8)" + +#~ msgid "Day 1, September 21st, 2024 Afternoon" +#~ msgstr "" +#~ "Day 1, September 21st, 2024 Afternoon with Taiwan Standard Time(UTC+8)" + +#~ msgid "Day 2, September 22nd, 2024 Morning" +#~ msgstr "" +#~ "Day 2, September 22nd, 2024 Morning with Taiwan Standard Time(UTC+8)" + +#~ msgid "Day 2, September 22nd, 2024 Afternoon" +#~ msgstr "" +#~ "Day 2, September 22nd, 2024 Afternoon with Taiwan Standard Time(UTC+8)" diff --git a/src/locale/zh_Hant/LC_MESSAGES/django.po b/src/locale/zh_Hant/LC_MESSAGES/django.po index 52a8c64b8..6ea1e8c16 100644 --- a/src/locale/zh_Hant/LC_MESSAGES/django.po +++ b/src/locale/zh_Hant/LC_MESSAGES/django.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: PyCon TW\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-24 10:21+0800\n" +"POT-Creation-Date: 2024-07-29 20:25+0800\n" "PO-Revision-Date: 2022-07-11 02:25+0800\n" "Last-Translator: Tom Chen \n" "Language-Team: Chinese Traditional (http://www.transifex.com/pycon-taiwan/" @@ -36,11 +36,11 @@ msgstr "" msgid "token" msgstr "驗證碼" -#: attendee/models.py:7 users/models.py:166 +#: attendee/models.py:7 users/models.py:164 msgid "verified" msgstr "已認證" -#: attendee/models.py:9 core/models.py:162 events/models.py:469 +#: attendee/models.py:9 core/models.py:162 msgid "created at" msgstr "建立時間" @@ -86,16 +86,15 @@ msgctxt "CCIP event type" msgid "talk" msgstr "演講" -#: core/admin.py:15 +#: core/admin.py:14 msgid "Current" msgstr "" -#: core/admin.py:16 core/choices.py:24 events/models.py:157 -#: events/templatetags/events.py:21 +#: core/admin.py:15 core/choices.py:24 events/models.py:138 msgid "Other" msgstr "其他" -#: core/admin.py:17 +#: core/admin.py:16 msgid "All" msgstr "" @@ -221,29 +220,13 @@ msgstr "中階" msgid "Experienced" msgstr "進階" -#: core/choices.py:41 -msgid "Day 1, September 21st, 2024 Morning" -msgstr "第一天(2024/09/21)早上" - -#: core/choices.py:42 -msgid "Day 1, September 21st, 2024 Afternoon" -msgstr "第一天(2024/09/21)下午" - -#: core/choices.py:43 -msgid "Day 2, September 22nd, 2024 Morning" -msgstr "第二天(2024/09/22)早上" - -#: core/choices.py:44 -msgid "Day 2, September 22nd, 2024 Afternoon" -msgstr "第二天(2024/09/22)下午" - -#: core/choices.py:48 core/choices.py:53 core/choices.py:58 core/choices.py:63 -#: core/choices.py:68 reviews/models.py:122 reviews/models.py:137 +#: core/choices.py:41 core/choices.py:46 core/choices.py:51 core/choices.py:56 +#: core/choices.py:61 reviews/models.py:121 reviews/models.py:136 msgid "Yes" msgstr "是" -#: core/choices.py:49 core/choices.py:54 core/choices.py:59 core/choices.py:64 -#: core/choices.py:69 reviews/models.py:123 reviews/models.py:138 +#: core/choices.py:42 core/choices.py:47 core/choices.py:52 core/choices.py:57 +#: core/choices.py:62 reviews/models.py:122 reviews/models.py:137 msgid "No" msgstr "否" @@ -256,7 +239,7 @@ msgstr "建立 {model_name_cap} 需要一個 request 物件。" msgid "conference" msgstr "會議" -#: core/models.py:93 events/models.py:193 +#: core/models.py:93 events/models.py:174 msgid "title" msgstr "題目" @@ -300,7 +283,7 @@ msgstr "投影片連結" msgid "slido embed link" msgstr "Slido 嵌入連結" -#: core/models.py:156 events/models.py:258 +#: core/models.py:156 events/models.py:239 msgid "HackMD embed link" msgstr "HackMD 嵌入連結" @@ -320,8 +303,8 @@ msgstr "是否願意以實體方式與會" msgid "Key" msgstr "鍵" -#: core/models.py:215 proposals/models.py:62 users/models.py:198 -#: users/models.py:313 +#: core/models.py:215 proposals/models.py:67 users/models.py:196 +#: users/models.py:311 msgid "user" msgstr "使用者" @@ -337,99 +320,99 @@ msgstr "驗證碼" msgid "Tokens" msgstr "驗證碼" -#: events/admin.py:26 +#: events/admin.py:34 msgid "time value" msgstr "時間值" -#: events/admin.py:100 events/models.py:173 +#: events/admin.py:108 events/models.py:154 msgid "begin time" msgstr "開始時間" -#: events/admin.py:106 events/models.py:182 +#: events/admin.py:114 events/models.py:163 msgid "end time" msgstr "結束時間" -#: events/admin.py:128 +#: events/admin.py:136 #: templates/default/users/_includes/dashboard_proposal_table.html:32 msgid "Edit" msgstr "編輯" -#: events/models.py:73 +#: events/models.py:70 msgid "value" msgstr "值" -#: events/models.py:80 +#: events/models.py:77 msgid "time" msgstr "時間" -#: events/models.py:81 +#: events/models.py:78 msgid "times" msgstr "時間" -#: events/models.py:144 +#: events/models.py:125 msgid "All rooms" msgstr "全體會議" -#: events/models.py:145 +#: events/models.py:126 msgid "R0, R1, R2" msgstr "R1、R2、R3" -#: events/models.py:146 +#: events/models.py:127 msgid "R0" msgstr "" -#: events/models.py:147 +#: events/models.py:128 msgid "R0_1" msgstr "" -#: events/models.py:148 +#: events/models.py:129 msgid "R0_2" msgstr "" # #: events/models.py:122 # msgid "R0" # msgstr "R0" -#: events/models.py:149 events/templatetags/events.py:15 +#: events/models.py:130 msgid "R1" msgstr "R1" -#: events/models.py:150 +#: events/models.py:131 msgid "R1_1" msgstr "" -#: events/models.py:151 +#: events/models.py:132 msgid "R1_2" msgstr "" -#: events/models.py:152 events/templatetags/events.py:16 +#: events/models.py:133 msgid "R2" msgstr "R2" -#: events/models.py:153 +#: events/models.py:134 msgid "R2_1" msgstr "" -#: events/models.py:154 +#: events/models.py:135 msgid "R2_2" msgstr "" -#: events/models.py:155 events/templatetags/events.py:17 +#: events/models.py:136 msgid "R3" msgstr "R3" -#: events/models.py:156 +#: events/models.py:137 msgid "Open Space" msgstr "開放空間" -#: events/models.py:165 +#: events/models.py:146 msgid "location" msgstr "地點" -#: events/models.py:197 +#: events/models.py:178 msgid "is break event" msgstr "休息" -#: events/models.py:200 +#: events/models.py:181 msgid "" "Whether this event is displays as a break. A break can be visually " "distinguished from \"real\" conference sessions, such as keynotes, talks, " @@ -438,71 +421,71 @@ msgstr "" "此活動是否應該被顯示為休息時間。休息時間的顯示會與「真的」會議時段,例如基調" "演講、一般演講不同。" -#: events/models.py:206 +#: events/models.py:187 msgid "event description" msgstr "活動說明" -#: events/models.py:209 +#: events/models.py:190 msgid "link path" msgstr "連結路徑" -#: events/models.py:214 +#: events/models.py:195 msgid "custom event" msgstr "自訂活動" -#: events/models.py:215 +#: events/models.py:196 msgid "custom events" msgstr "自訂活動" -#: events/models.py:224 users/models.py:118 +#: events/models.py:205 users/models.py:116 msgid "speaker name" msgstr "演講者" -#: events/models.py:229 +#: events/models.py:210 msgid "speaker bio" msgstr "演講者介紹" -#: events/models.py:233 +#: events/models.py:214 msgid "speaker photo" msgstr "演講者照片" -#: events/models.py:237 +#: events/models.py:218 msgid "Raster format of the speaker's photo, e.g. PNG, JPEG." msgstr "演講者照片使用點陣格式,例如PNG, JPEG" -#: events/models.py:241 +#: events/models.py:222 msgid "keynote session title" msgstr "演講標題" -#: events/models.py:246 +#: events/models.py:227 msgid "keynote session description" msgstr "演講介紹" -#: events/models.py:250 +#: events/models.py:231 msgid "session slides" msgstr "演講投影片" -#: events/models.py:254 +#: events/models.py:235 msgid "slido" msgstr "Slido" -#: events/models.py:263 +#: events/models.py:244 msgid "social linkedin" msgstr "Linkedin" -#: events/models.py:267 +#: events/models.py:248 msgid "social twitter" msgstr "Twitter" -#: events/models.py:271 +#: events/models.py:252 msgid "social github" msgstr "Github" -#: events/models.py:275 events/models.py:360 +#: events/models.py:256 events/models.py:341 msgid "slug" msgstr "網址文字" -#: events/models.py:277 +#: events/models.py:258 #, python-brace-format msgid "" "This is used to link to the speaker's introduction on the Keynote page, e.g. " @@ -511,33 +494,33 @@ msgstr "" "用來連結至基調演講頁面上的講者簡介,如「liang2」可連結至「{link}#keynote-" "speaker-liang2」。" -#: events/models.py:284 events/models.py:403 events/models.py:439 +#: events/models.py:265 events/models.py:384 events/models.py:420 msgid "is remote" msgstr "遠端演講" -#: events/models.py:288 events/models.py:363 events/models.py:407 -#: events/models.py:443 +#: events/models.py:269 events/models.py:344 events/models.py:388 +#: events/models.py:424 msgid "youtube id" msgstr "youtube id" -#: events/models.py:294 +#: events/models.py:275 msgid "keynote event" msgstr "基調演講" -#: events/models.py:295 +#: events/models.py:276 msgid "keynote events" msgstr "基調演講" -#: events/models.py:298 +#: events/models.py:279 #, python-brace-format msgid "Keynote: {speaker}" msgstr "基調演講:{speaker}" -#: events/models.py:337 sponsors/models.py:101 sponsors/models.py:117 +#: events/models.py:318 sponsors/models.py:107 sponsors/models.py:123 msgid "sponsor" msgstr "贊助" -#: events/models.py:342 events/models.py:343 +#: events/models.py:323 events/models.py:324 #: templates/pycontw-2020/_includes/menu.html:104 #: templates/pycontw-2020/contents/_default/events/job-listings.html:33 #: templates/pycontw-2021/contents/_default/events/job-listings.html:33 @@ -547,120 +530,48 @@ msgstr "贊助" msgid "Job Listings" msgstr "徵才資訊" -#: events/models.py:346 +#: events/models.py:327 #, python-brace-format msgid "Open Role of Sponsor: {sponsor}" msgstr "徵才中贊助商: {sponsor}" -#: events/models.py:355 +#: events/models.py:336 msgid "host" msgstr "主持人" -#: events/models.py:369 +#: events/models.py:350 msgid "sponsored event" msgstr "贊助演講" -#: events/models.py:370 +#: events/models.py:351 msgid "sponsored events" msgstr "贊助演講" -#: events/models.py:398 events/models.py:429 reviews/models.py:76 -#: reviews/models.py:197 +#: events/models.py:379 events/models.py:410 reviews/models.py:75 +#: reviews/models.py:196 msgid "proposal" msgstr "提案" -#: events/models.py:415 +#: events/models.py:396 msgid "talk event" msgstr "演講" -#: events/models.py:416 +#: events/models.py:397 msgid "talk events" msgstr "演講" -#: events/models.py:434 +#: events/models.py:415 msgid "registration link" msgstr "報名連結" -#: events/models.py:451 +#: events/models.py:432 msgid "tutorial event" msgstr "專業課程" -#: events/models.py:452 +#: events/models.py:433 msgid "tutorial events" msgstr "專業課程" -#: events/models.py:466 -msgid "HTML" -msgstr "HTML" - -#: events/models.py:474 templates/pycontw-2016/_includes/nav/front_nav.html:40 -#: templates/pycontw-2016/events/schedule.html:6 -#: templates/pycontw-2016/events/schedule.html:8 -#: templates/pycontw-2017/contents/_default/portal.html:16 -#: templates/pycontw-2017/events/schedule.html:6 -#: templates/pycontw-2017/events/schedule.html:17 -#: templates/pycontw-2018/_includes/menu.html:54 -#: templates/pycontw-2018/contents/_default/portal.html:17 -#: templates/pycontw-2018/events/schedule.html:6 -#: templates/pycontw-2018/events/schedule.html:20 -#: templates/pycontw-2019/_includes/menu.html:59 -#: templates/pycontw-2019/_includes/portal.html:4 -#: templates/pycontw-2019/events/schedule.html:6 -#: templates/pycontw-2019/events/schedule.html:20 -#: templates/pycontw-2020/_includes/menu.html:80 -#: templates/pycontw-2020/_includes/portal.html:4 -#: templates/pycontw-2020/events/schedule.html:6 -#: templates/pycontw-2020/events/schedule.html:21 -#: templates/pycontw-2021/_includes/portal.html:4 -#: templates/pycontw-2021/events/schedule.html:6 -#: templates/pycontw-2021/events/schedule.html:21 -#: templates/pycontw-2022/_includes/portal.html:4 -#: templates/pycontw-2022/events/schedule.html:6 -#: templates/pycontw-2022/events/schedule.html:21 -#: templates/pycontw-2023/_includes/portal.html:4 -#: templates/pycontw-2023/events/schedule.html:6 -#: templates/pycontw-2023/events/schedule.html:21 -#: templates/pycontw-2024/_includes/portal.html:4 -#: templates/pycontw-2024/events/schedule.html:6 -#: templates/pycontw-2024/events/schedule.html:21 -msgid "Schedule" -msgstr "時間表" - -#: events/models.py:475 -msgid "Schedules" -msgstr "時間表" - -#: events/models.py:480 -msgid "Schedule created at {}" -msgstr "時間表建立於 {}" - -#: events/renderers.py:34 -msgid "Keynote" -msgstr "基調演講" - -#: events/renderers.py:43 -msgid "EN Slides" -msgstr "英文投影片" - -# #: events/models.py:126 -# msgid "R4" -# msgstr "R4" -#: events/templatetags/events.py:18 -msgid "Multifunction room" -msgstr "多功能廳" - -#: events/templatetags/events.py:19 -msgid "Goodideas Studio" -msgstr "好想工作室" - -#: events/templatetags/events.py:20 -msgid "R1, R2, R3" -msgstr "R1、R2、R3" - -#: events/views.py:121 -msgid "New talk schedule generated successfully." -msgstr "演講時間表產生成功。" - #: proposals/forms/mixins.py:16 #, python-brace-format msgid "" @@ -840,178 +751,178 @@ msgstr "" msgid "duration" msgstr "時間長度" -#: proposals/forms/speakers.py:19 +#: proposals/forms/speakers.py:18 msgid "speaker email" msgstr "講者 email" -#: proposals/forms/speakers.py:21 +#: proposals/forms/speakers.py:20 msgid "" "The speaker should have a registered account, and have completed both email " "validation and the speaker profile." msgstr "講者應該已於 tw.pycon.org 註冊帳號,並且完成 email 認證與講者資訊。" -#: proposals/forms/speakers.py:29 +#: proposals/forms/speakers.py:28 #, python-brace-format msgid "" "Only authenticated user with complete speaker profile may create an " "{model_name}." msgstr "只有完成認證並填寫講者資訊的人才能建立 {model_name}。" -#: proposals/forms/speakers.py:33 +#: proposals/forms/speakers.py:32 msgid "Additional speaker creation requires a proposal instance." msgstr "增加額外講者需要一個已建立的提案。" -#: proposals/forms/speakers.py:36 +#: proposals/forms/speakers.py:35 msgid "User can only add additional speakers to owned proposals." msgstr "使用者只能對自己的提案增加額外講者。" -#: proposals/forms/speakers.py:39 +#: proposals/forms/speakers.py:38 msgid "This user is already a speaker for the proposal." msgstr "本使用者已經是此提案的講者。" -#: proposals/forms/speakers.py:41 +#: proposals/forms/speakers.py:40 msgid "No valid speaker found with your selection." msgstr "您的選擇找不到對應講者。" -#: proposals/models.py:55 +#: proposals/models.py:60 msgid "Proposal author" msgstr "提案人" -#: proposals/models.py:68 +#: proposals/models.py:73 msgid "proposal model type" msgstr "提案 model 類型" -#: proposals/models.py:72 +#: proposals/models.py:77 msgid "proposal ID" msgstr "提案 ID" -#: proposals/models.py:80 +#: proposals/models.py:85 msgid "Pending" msgstr "待回覆" -#: proposals/models.py:81 proposals/models.py:160 +#: proposals/models.py:86 proposals/models.py:162 msgid "Accepted" msgstr "已接受" -#: proposals/models.py:82 +#: proposals/models.py:87 msgid "Declined" msgstr "被拒絕" -#: proposals/models.py:91 proposals/models.py:153 +#: proposals/models.py:96 proposals/models.py:155 msgid "cancelled" msgstr "已取消" -#: proposals/models.py:99 +#: proposals/models.py:104 msgid "additional speaker" msgstr "額外講者" -#: proposals/models.py:100 +#: proposals/models.py:105 msgid "additional speakers" msgstr "額外講者" -#: proposals/models.py:132 +#: proposals/models.py:134 msgid "submitter" msgstr "提案人" -#: proposals/models.py:137 +#: proposals/models.py:139 msgid "outline" msgstr "大綱" -#: proposals/models.py:142 +#: proposals/models.py:144 msgid "objective" msgstr "演講目標" -#: proposals/models.py:147 +#: proposals/models.py:149 msgid "supplementary" msgstr "補充資訊" -#: proposals/models.py:161 +#: proposals/models.py:163 msgid "Rejected" msgstr "已拒絕" -#: proposals/models.py:164 +#: proposals/models.py:166 msgid "accepted" msgstr "已接受" -#: proposals/models.py:178 +#: proposals/models.py:180 msgid "labels" msgstr "" -#: proposals/models.py:263 proposals/models.py:317 +#: proposals/models.py:264 proposals/models.py:318 #: templates/default/_includes/proposal_example_modal.html:50 #: templates/default/_includes/proposal_example_modal.html:67 #: templates/default/reviews/review_form.html:40 msgid "Duration" msgstr "時間長度" -#: proposals/models.py:268 +#: proposals/models.py:269 msgid "Yes, it is my first time speaking at PyCon Taiwan." msgstr "是,我第一次擔任 PyCon Taiwan 講者" -#: proposals/models.py:269 +#: proposals/models.py:270 msgid "No, I have given talks at PyCon Taiwan in the past." msgstr "否,我過去曾擔任過 PyCon Taiwan 講者" -#: proposals/models.py:273 +#: proposals/models.py:274 msgid "first time speaker" msgstr "第一次擔任講者" -#: proposals/models.py:278 +#: proposals/models.py:279 msgid "talk proposal" msgstr "演講提案" -#: proposals/models.py:279 +#: proposals/models.py:280 msgid "talk proposals" msgstr "演講提案" -#: proposals/models.py:313 +#: proposals/models.py:314 msgid "1.5hr" msgstr "1.5 小時" -#: proposals/models.py:324 +#: proposals/models.py:325 msgid "tutorial proposal" msgstr "專業課程提案" -#: proposals/models.py:325 +#: proposals/models.py:326 msgid "tutorial proposals" msgstr "專業課程提案" -#: proposals/utils.py:4 +#: proposals/utils.py:3 msgctxt "speaker name default separator" msgid ", " msgstr "、" -#: proposals/utils.py:5 +#: proposals/utils.py:4 msgctxt "speaker name last separator" msgid " and " msgstr "、" -#: proposals/views/cancel.py:36 +#: proposals/views/cancel.py:35 #, python-brace-format msgid "Talk proposal {title} withdrawn." msgstr "《{title}》演講提案已撤回。" -#: proposals/views/cancel.py:40 +#: proposals/views/cancel.py:39 #, python-brace-format msgid "Talk proposal {title} reactivated." msgstr "《{title}》演講提案已重新提交。" -#: proposals/views/cancel.py:58 +#: proposals/views/cancel.py:57 #, python-brace-format msgid "Tutorial proposal {title} withdrawn." msgstr "《{title}》專業課程提案已撤回。" -#: proposals/views/cancel.py:62 +#: proposals/views/cancel.py:61 #, python-brace-format msgid "Tutorial proposal {title} reactivated." msgstr "《{title}》專業課程提案已重新提交。" -#: proposals/views/create.py:42 +#: proposals/views/create.py:41 #, python-brace-format msgid "Talk proposal {title} created." msgstr "已建立題目為《{title}》的演講提案。" -#: proposals/views/create.py:52 +#: proposals/views/create.py:51 #, python-brace-format msgid "Tutorial proposal {title} created." msgstr "已建立題目為《{title}》的專業課程提案。" @@ -1197,62 +1108,62 @@ msgstr "" "5. Q&A [5min]\n" "\n" -#: proposals/views/update.py:61 +#: proposals/views/update.py:64 #, python-brace-format msgid "Talk proposal {title} updated." msgstr "已完成更新《{title}》演講提案。" -#: proposals/views/update.py:70 +#: proposals/views/update.py:73 #, python-brace-format msgid "Tutorial proposal {title} updated." msgstr "已完成更新《{title}》專業課程提案。" -#: pycontw2016/settings/base.py:301 +#: pycontw2016/settings/base.py:305 msgid "PyCon Taiwan 2016" msgstr "PyCon Taiwan 2016" -#: pycontw2016/settings/base.py:302 templates/pycontw-2017/index.html:6 +#: pycontw2016/settings/base.py:306 templates/pycontw-2017/index.html:6 msgid "PyCon Taiwan 2017" msgstr "PyCon Taiwan 2017" -#: pycontw2016/settings/base.py:303 templates/pycontw-2018/index.html:14 +#: pycontw2016/settings/base.py:307 templates/pycontw-2018/index.html:14 msgid "PyCon Taiwan 2018" msgstr "PyCon Taiwan 2018" -#: pycontw2016/settings/base.py:304 templates/pycontw-2019/index.html:14 +#: pycontw2016/settings/base.py:308 templates/pycontw-2019/index.html:14 msgid "PyCon Taiwan 2019" msgstr "PyCon Taiwan 2019" -#: pycontw2016/settings/base.py:305 templates/pycontw-2020/index.html:14 +#: pycontw2016/settings/base.py:309 templates/pycontw-2020/index.html:14 msgid "PyCon Taiwan 2020" msgstr "PyCon Taiwan 2020" -#: pycontw2016/settings/base.py:306 templates/pycontw-2021/index.html:14 +#: pycontw2016/settings/base.py:310 templates/pycontw-2021/index.html:14 #: templates/pycontw-2022/index.html:14 templates/pycontw-2023/index.html:14 #: templates/pycontw-2024/index.html:14 msgid "PyCon Taiwan 2021" msgstr "PyCon Taiwan 2021" -#: pycontw2016/settings/base.py:307 +#: pycontw2016/settings/base.py:311 msgid "PyCon Taiwan 2022" msgstr "PyCon Taiwan 2022" -#: pycontw2016/settings/base.py:308 +#: pycontw2016/settings/base.py:312 msgid "PyCon Taiwan 2023" msgstr "PyCon Taiwan 2023" -#: pycontw2016/settings/base.py:309 +#: pycontw2016/settings/base.py:313 #, fuzzy #| msgid "PyCon Taiwan 2020" msgid "PyCon Taiwan 2024" msgstr "PyCon Taiwan 2020" -#: pycontw2016/settings/base.py:322 +#: pycontw2016/settings/base.py:326 #: pycontw2016/settings/production/pycontw2016.py:16 -#: pycontw2016/settings/production/pycontw2021.py:15 -#: pycontw2016/settings/production/pycontw2022.py:14 -#: pycontw2016/settings/production/pycontw2023.py:14 -#: pycontw2016/settings/production/pycontw2024.py:14 +#: pycontw2016/settings/production/pycontw2021.py:16 +#: pycontw2016/settings/production/pycontw2022.py:16 +#: pycontw2016/settings/production/pycontw2023.py:16 +#: pycontw2016/settings/production/pycontw2024.py:16 #: pycontw2016/settings/testing/pycontw2021.py:11 #: pycontw2016/settings/testing/pycontw2022.py:11 #: pycontw2016/settings/testing/pycontw2023.py:11 @@ -1260,11 +1171,11 @@ msgstr "PyCon Taiwan 2020" msgid "No preference" msgstr "無偏好" -#: pycontw2016/settings/base.py:323 -#: pycontw2016/settings/production/pycontw2021.py:16 -#: pycontw2016/settings/production/pycontw2022.py:15 -#: pycontw2016/settings/production/pycontw2023.py:15 -#: pycontw2016/settings/production/pycontw2024.py:15 +#: pycontw2016/settings/base.py:327 +#: pycontw2016/settings/production/pycontw2021.py:17 +#: pycontw2016/settings/production/pycontw2022.py:17 +#: pycontw2016/settings/production/pycontw2023.py:17 +#: pycontw2016/settings/production/pycontw2024.py:17 #: pycontw2016/settings/testing/pycontw2021.py:12 #: pycontw2016/settings/testing/pycontw2022.py:12 #: pycontw2016/settings/testing/pycontw2023.py:12 @@ -1272,11 +1183,11 @@ msgstr "無偏好" msgid "Prefer 15min" msgstr "偏好 15 分鐘" -#: pycontw2016/settings/base.py:324 -#: pycontw2016/settings/production/pycontw2021.py:17 -#: pycontw2016/settings/production/pycontw2022.py:16 -#: pycontw2016/settings/production/pycontw2023.py:16 -#: pycontw2016/settings/production/pycontw2024.py:16 +#: pycontw2016/settings/base.py:328 +#: pycontw2016/settings/production/pycontw2021.py:18 +#: pycontw2016/settings/production/pycontw2022.py:18 +#: pycontw2016/settings/production/pycontw2023.py:18 +#: pycontw2016/settings/production/pycontw2024.py:18 #: pycontw2016/settings/testing/pycontw2021.py:13 #: pycontw2016/settings/testing/pycontw2022.py:13 #: pycontw2016/settings/testing/pycontw2023.py:13 @@ -1284,13 +1195,13 @@ msgstr "偏好 15 分鐘" msgid "Prefer 30min" msgstr "偏好 30 分鐘" -#: pycontw2016/settings/base.py:328 +#: pycontw2016/settings/base.py:332 #: pycontw2016/settings/production/pycontw2016.py:22 #: templates/pycontw-2016/events/schedule.html:42 msgid "Day 1" msgstr "第 1 天" -#: pycontw2016/settings/base.py:329 +#: pycontw2016/settings/base.py:333 #: pycontw2016/settings/production/pycontw2016.py:23 #: templates/pycontw-2016/events/schedule.html:45 msgid "Day 2" @@ -1301,10 +1212,10 @@ msgid "Prefer 25min" msgstr "偏好 25 分鐘" #: pycontw2016/settings/production/pycontw2016.py:18 -#: pycontw2016/settings/production/pycontw2021.py:18 -#: pycontw2016/settings/production/pycontw2022.py:17 -#: pycontw2016/settings/production/pycontw2023.py:17 -#: pycontw2016/settings/production/pycontw2024.py:17 +#: pycontw2016/settings/production/pycontw2021.py:19 +#: pycontw2016/settings/production/pycontw2022.py:19 +#: pycontw2016/settings/production/pycontw2023.py:19 +#: pycontw2016/settings/production/pycontw2024.py:19 #: pycontw2016/settings/testing/pycontw2021.py:14 #: pycontw2016/settings/testing/pycontw2022.py:14 #: pycontw2016/settings/testing/pycontw2023.py:14 @@ -1340,35 +1251,35 @@ msgstr "{model_name_cap} 的建立需要一個 proposal 物件。" msgid "Could not review proposal {proposal}." msgstr "無法審查提案 {proposal}。" -#: reviews/models.py:66 +#: reviews/models.py:65 msgid "reviewer" msgstr "審查者" -#: reviews/models.py:71 reviews/models.py:202 +#: reviews/models.py:70 reviews/models.py:201 msgid "stage" msgstr "階段" -#: reviews/models.py:90 +#: reviews/models.py:89 msgid "+1 (strong accept)" msgstr "+1(高度肯定地接受)" -#: reviews/models.py:91 +#: reviews/models.py:90 msgid "+0 (weak accept)" msgstr "+0(輕微贊成)" -#: reviews/models.py:92 +#: reviews/models.py:91 msgid "-0 (weak reject)" msgstr "−0(輕微反對)" -#: reviews/models.py:93 +#: reviews/models.py:92 msgid "-1 (strong reject)" msgstr "–1(高度肯定地拒絕)" -#: reviews/models.py:102 +#: reviews/models.py:101 msgid "vote" msgstr "投票" -#: reviews/models.py:104 +#: reviews/models.py:103 msgid "" "Your vote to accept or reject this talk. More information about the scoring " "and acceptance criteria can be found at the GitBook 審稿指南 " "GitBook。" -#: reviews/models.py:113 +#: reviews/models.py:112 msgid "comment" msgstr "評論" -#: reviews/models.py:115 +#: reviews/models.py:114 msgid "" "Comments to this proposal. This may be available for other reviewers in " "later review stages, and you can choose whether or not to disclose it to the " @@ -1392,11 +1303,11 @@ msgstr "" "對於本提案的評論。本欄位內容將在之後的審查階段讓其他審查者看見,您可以選擇要" "或不要讓本提案的投稿者知道您的評論。 " -#: reviews/models.py:128 +#: reviews/models.py:127 msgid "discloses comment to proposal submitter" msgstr "讓本提案的投稿者知道您的評論" -#: reviews/models.py:130 +#: reviews/models.py:129 msgid "" "Whether the proposal submitter can read you comments. We will include your " "comments in the proposal acceptance/rejection notice sent to the submitter " @@ -1405,11 +1316,11 @@ msgstr "" "本提案的投稿者是否能知道您的評論。我們會在通知提案接受或拒絕結果時,如果您同" "意讓投稿者知道,將這些評論加在通知結果中。" -#: reviews/models.py:143 +#: reviews/models.py:142 msgid "is appropriate" msgstr "認可" -#: reviews/models.py:145 +#: reviews/models.py:144 msgid "" "Administrators can use this field to hide a review from submitters, even if " "the reviewer enables disclosure. The review may be shown to the submitter " @@ -1418,11 +1329,11 @@ msgstr "" "管理員可以用這個欄位隱藏某個審稿意見,不讓投稿人看見(即使審稿人要求揭露)。" "只有當這個欄位設為 True 時,審稿意見才會被顯示給投稿人。" -#: reviews/models.py:153 +#: reviews/models.py:152 msgid "note" msgstr "附註" -#: reviews/models.py:155 +#: reviews/models.py:154 msgid "" "Personal notes about this proposal. You can use this field to record " "anything you like during the review process. We promise to never disclose " @@ -1431,147 +1342,165 @@ msgstr "" "個人對本投稿的附註。您可以使用這個欄位記錄有關審查的任何資訊。我們不會把這欄" "位的資訊公布給任何人,只有您知道。" -#: reviews/models.py:163 +#: reviews/models.py:162 msgid "updated" msgstr "更新時間" -#: reviews/models.py:168 +#: reviews/models.py:167 msgid "review" msgstr "審查" -#: reviews/models.py:169 +#: reviews/models.py:168 msgid "reviews" msgstr "審查" -#: reviews/models.py:174 +#: reviews/models.py:173 #, python-brace-format msgid "Review {proposal} by {reviewer}: {vote}" msgstr "提案《{proposal}》審查:{vote}({reviewer})" -#: reviews/models.py:206 +#: reviews/models.py:205 msgid "dumped JSON" msgstr "匯出 JSON" -#: reviews/models.py:210 +#: reviews/models.py:209 msgid "dumped at" msgstr "匯出於" -#: reviews/models.py:215 +#: reviews/models.py:214 msgid "talk proposal snapshot" msgstr "演講投稿封存" -#: reviews/models.py:216 +#: reviews/models.py:215 msgid "talk proposal snapshots" msgstr "演講投稿封存" -#: reviews/models.py:220 +#: reviews/models.py:219 #, python-brace-format msgid "Stage {stage} dump for {proposal}" msgstr "第 {stage} 階段封存《{proposal}》" -#: sponsors/models.py:27 +#: sponsors/models.py:23 msgid "name" msgstr "名稱" -#: sponsors/models.py:31 +#: sponsors/models.py:28 +msgid "is shown" +msgstr "" + +#: sponsors/models.py:33 msgid "website URL" msgstr "網站 URL" -#: sponsors/models.py:35 +#: sponsors/models.py:37 msgid "introduction" msgstr "簡介" -#: sponsors/models.py:38 +#: sponsors/models.py:40 msgid "subtitle" msgstr "副標題" -#: sponsors/models.py:43 +#: sponsors/models.py:45 msgid "logo (SVG)" msgstr "logo (SVG)" -#: sponsors/models.py:46 +#: sponsors/models.py:48 msgid "" "Vector format of the logo, in SVG. This takes precedence to the raster " "format, if available." msgstr "即使有點陣式圖形格式的圖標,還是會優先採用向量式SVG格式的圖標。" -#: sponsors/models.py:51 +#: sponsors/models.py:53 msgid "logo (image)" msgstr "logo (圖片)" -#: sponsors/models.py:55 +#: sponsors/models.py:57 msgid "" "Raster format of the logo, e.g. PNG, JPEG. This is used as fallback when the " "SVG file is not available." msgstr "" "當SVG格式的檔案不存在時,會回過頭來使用點陣式格式的圖標,例如PNG、JPEG。" -#: sponsors/models.py:60 +#: sponsors/models.py:62 msgid "order" msgstr "排序" -#: sponsors/models.py:80 +#: sponsors/models.py:84 +msgid "diamond" +msgstr "" + +#: sponsors/models.py:85 msgid "platinum" msgstr "白金級" -#: sponsors/models.py:81 +#: sponsors/models.py:86 msgid "gold" msgstr "金級" -#: sponsors/models.py:82 +#: sponsors/models.py:87 msgid "silver" msgstr "銀級" -#: sponsors/models.py:83 +#: sponsors/models.py:88 msgid "bronze" msgstr "銅級" -#: sponsors/models.py:84 +#: sponsors/models.py:89 msgid "special" msgstr "特別贊助" -#: sponsors/models.py:85 +#: sponsors/models.py:90 msgid "special-thanks" msgstr "特別感謝" -#: sponsors/models.py:86 +#: sponsors/models.py:91 msgid "organizer" msgstr "主辦單位" -#: sponsors/models.py:87 +#: sponsors/models.py:92 msgid "co-organizer" msgstr "協辦單位" -#: sponsors/models.py:96 +#: sponsors/models.py:93 +#, fuzzy +#| msgid "co-organizer" +msgid "sprint-co-organizer" +msgstr "協辦單位" + +#: sponsors/models.py:102 msgid "level" msgstr "等級" -#: sponsors/models.py:102 +#: sponsors/models.py:108 msgid "sponsors" msgstr "贊助" -#: sponsors/models.py:122 +#: sponsors/models.py:128 msgid "open role name" msgstr "職缺名稱" -#: sponsors/models.py:127 -msgid "open role descsription" +#: sponsors/models.py:133 +#, fuzzy +#| msgid "open role descsription" +msgid "open role description" msgstr "職缺說明" -#: sponsors/models.py:131 +#: sponsors/models.py:137 msgid "open role requirements" msgstr "職缺需求" -#: sponsors/models.py:136 +#: sponsors/models.py:142 msgid "open role URL" msgstr "職缺 URL" -#: sponsors/models.py:141 +#: sponsors/models.py:147 msgid "open role" msgstr "職缺" -#: sponsors/models.py:142 -msgid "open Roles" +#: sponsors/models.py:148 +#, fuzzy +#| msgid "open role" +msgid "open roles" msgstr "職缺" #: templates/default/_includes/character_counter_template.html:4 @@ -1675,6 +1604,7 @@ msgstr "" #: templates/default/reviews/_includes/proposal_table.html:20 #: templates/default/reviews/_includes/review_table_thead.html:7 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:6 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:6 #: templates/default/users/_includes/dashboard_proposal_table.html:6 msgid "Title" msgstr "題目" @@ -1695,6 +1625,7 @@ msgstr "分類" #: templates/default/_includes/proposal_example_modal.html:69 #: templates/default/reviews/review_form.html:45 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:7 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:7 #: templates/default/users/_includes/dashboard_proposal_table.html:8 #: templates/pycontw-2016/events/sponsored_event_detail.html:17 #: templates/pycontw-2016/events/talk_detail.html:17 @@ -1779,6 +1710,7 @@ msgstr "講者" #: templates/default/proposals/manage_speakers.html:20 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:9 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:9 msgid "Status" msgstr "狀態" @@ -1823,7 +1755,7 @@ msgstr "修改專業課程提案《%(proposal_title)s》" #: templates/default/registration/login.html:5 #: templates/default/registration/login.html:7 #: templates/pycontw-2016/registration/login.html:7 -#: templates/pycontw-2016/registration/login.html:21 users/forms.py:261 +#: templates/pycontw-2016/registration/login.html:21 users/forms.py:265 msgid "Log In" msgstr "登入" @@ -1923,7 +1855,7 @@ msgid "Stage" msgstr "階段" #: templates/default/reviews/_includes/previous_review_table.html:7 -#: users/models.py:223 +#: users/models.py:221 msgid "Reviewer ID" msgstr "審稿人代號" @@ -2027,6 +1959,7 @@ msgstr "%(proposal_title)s | 審查" #: templates/default/reviews/review_form.html:31 #: templates/default/users/_includes/dashboard_cospeaking_proposal_table.html:8 +#: templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html:8 msgid "Submitter" msgstr "提案人" @@ -2186,7 +2119,8 @@ msgstr "" msgid "You haven't submitted any tutorial proposals." msgstr "您尚未有任何專業課程投稿。" -#: templates/default/users/user_dashboard.html:67 +#: templates/default/users/user_dashboard.html:68 +#: templates/default/users/user_dashboard.html:74 msgid "Co-Speaking Proposals" msgstr " 共同演講的提案" @@ -4920,40 +4854,40 @@ msgstr "權限" msgid "Important dates" msgstr "重要日期" -#: users/forms.py:28 +#: users/forms.py:32 msgid "A user with that email already exists." msgstr "此電子郵件信箱已被使用。" -#: users/forms.py:29 +#: users/forms.py:33 msgid "The two password fields didn't match." msgstr "密碼欄位內容不一致。" -#: users/forms.py:32 users/forms.py:201 +#: users/forms.py:36 users/forms.py:205 msgid "Password" msgstr "密碼" -#: users/forms.py:36 +#: users/forms.py:40 msgid "Password confirmation" msgstr "密碼確認" -#: users/forms.py:117 +#: users/forms.py:121 msgid "Create Account" msgstr "新建帳號" -#: users/forms.py:148 +#: users/forms.py:152 #, python-brace-format msgid "Your image is too small ({width}\\u00d7{height} pixels)." msgstr "提供的圖片過小({width}\\u00d7{height} 像素)。" -#: users/forms.py:150 +#: users/forms.py:154 msgid "The image you provided is not quadrate." msgstr "提供的圖片並非方型。" -#: users/forms.py:151 +#: users/forms.py:155 msgid "Your image size is too big (>10M)" msgstr "提供的圖片檔案過大 (>10M)" -#: users/forms.py:202 +#: users/forms.py:206 msgid "" "Raw passwords are not stored, so there is no way to see this user's " "password, but you can change the password using this " @@ -4962,59 +4896,59 @@ msgstr "" "原始的密碼並沒有儲存在資料庫中,因此沒有任何方法能看到本使用者的密碼,但你可" "以透過本表單更改密碼。" -#: users/forms.py:251 +#: users/forms.py:255 #, python-brace-format msgid "" "Forgot Password" msgstr "忘記密碼" -#: users/forms.py:255 +#: users/forms.py:259 #, python-brace-format msgid "Sign up now" msgstr "註冊帳號" -#: users/forms.py:272 +#: users/forms.py:276 msgid "Email Address" msgstr "電子郵件信箱" -#: users/forms.py:291 +#: users/forms.py:295 msgid "Request Password Reset" msgstr "申請密碼重設" -#: users/forms.py:327 +#: users/forms.py:331 msgid "Set Password" msgstr "設定密碼" -#: users/forms.py:339 +#: users/forms.py:343 msgid "I agree to the code of conduct." msgstr "我同意行為準則。" -#: users/forms.py:344 +#: users/forms.py:348 msgid "You must agree to continue." msgstr "你必須同意才能繼續下一步。" -#: users/models.py:114 +#: users/models.py:112 msgid "email address" msgstr "電子郵件信箱" -#: users/models.py:122 +#: users/models.py:120 msgid "biography" msgstr "自我介紹" -#: users/models.py:125 +#: users/models.py:123 msgid "" "Describe yourself with 1000 characters or less. There will be no formatting." msgstr "使用少於 1000 個字元介紹您自己。本欄位不含任何格式。" -#: users/models.py:130 +#: users/models.py:128 msgid "photo" msgstr "個人照" -#: users/models.py:134 +#: users/models.py:132 msgid "Facebook" msgstr "Facebook" -#: users/models.py:137 +#: users/models.py:135 msgid "" "Link to your Facebook profile page. This will be shown when we display your " "public information. If you do not know what your profile page link is, click " @@ -5025,97 +4959,168 @@ msgstr "" "人頁連結為何,可以使用" "這個連結,並將開啟頁面的網址列內容貼至本欄位。記得先登入 Facebook!" -#: users/models.py:146 +#: users/models.py:144 msgid "Twitter" msgstr "Twitter" -#: users/models.py:151 +#: users/models.py:149 msgid "" "Your Twitter handle, without the \"@\" sign. This will be shown when we " "display your public information." msgstr "您的 Twitter 帳號,不包含 @ 符號。這個名稱會出現在您的公開資料中。" -#: users/models.py:156 +#: users/models.py:154 msgid "GitHub" msgstr "GitHub" -#: users/models.py:161 +#: users/models.py:159 msgid "" "Your GitHub account, without the \"@\" sign. This will be shown when we " "display your public information." msgstr "您的 GitHub 帳號,不包含 @ 符號。這個名稱會出現在您的公開資料中。" -#: users/models.py:169 +#: users/models.py:167 msgid "Designates whether the user has verified email ownership." msgstr "指定本使用者是否已完成 email 認證。" -#: users/models.py:173 +#: users/models.py:171 msgid "staff status" msgstr "管理員權限" -#: users/models.py:176 +#: users/models.py:174 msgid "Designates whether the user can log into this admin site." msgstr "指定本使用者是否可以登入本管理站台。" -#: users/models.py:180 +#: users/models.py:178 msgid "active" msgstr "已啟用" -#: users/models.py:183 +#: users/models.py:181 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "指定本使用者是否被視為 active。取消勾選此選項而非刪除帳號。" -#: users/models.py:188 +#: users/models.py:186 msgid "date joined" msgstr "註冊日期" -#: users/models.py:199 +#: users/models.py:197 msgid "users" msgstr "使用者" -#: users/models.py:299 +#: users/models.py:297 #, python-brace-format msgid "Verify your email address on {host}" msgstr "於 {host} 認證您的信箱地址" -#: users/models.py:317 +#: users/models.py:315 msgid "latest agreed CoC version" msgstr "最後同意的 CoC 版本" -#: users/models.py:321 +#: users/models.py:319 msgid "agreed at" msgstr "同意於" -#: users/views.py:42 +#: users/views.py:44 msgid "Sign up successful. You are now logged in." msgstr "註冊成功。您現在已被登入。" -#: users/views.py:59 +#: users/views.py:61 msgid "Email verification successful." msgstr "Email 認證成功。" -#: users/views.py:71 +#: users/views.py:73 #, python-brace-format msgid "A verification email has been sent to {email}" msgstr "一封認證用的 email 已經寄送至 {email}" -#: users/views.py:101 +#: users/views.py:103 msgid "Your profile has been updated successfully." msgstr "您的講者資訊已成功地更新。" -#: users/views.py:114 +#: users/views.py:116 msgid "Your new password has been applied successfully." msgstr "已成功地使用您的新密碼。" -#: users/views.py:121 +#: users/views.py:123 msgid "" "An email is sent to your email account. Please check your inbox for furthur " "instructions to reset your password." msgstr "" "一封電子郵件已經發送至您的信箱。請檢查您的收件匣並參照信中指示重設密碼。" -#: users/views.py:129 +#: users/views.py:131 msgid "Password reset successful. You can now login." msgstr "密碼重設成功。您現在即可登入。" + +#, fuzzy +#~| msgid "" +#~| "The editable time is over. If you have any questions, please contact us " +#~| "at program@python.tw " +#~ msgid "" +#~ "The editable time is over. If you have any questions, please contact us " +#~ "at program@python.tw" +#~ msgstr "" +#~ "可編輯時間已過。如果您有任何疑問,請發送電子郵件至 program@python.tw" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Schedules" +#~ msgstr "時間表" + +#~ msgid "Schedule created at {}" +#~ msgstr "時間表建立於 {}" + +#~ msgid "Keynote" +#~ msgstr "基調演講" + +#~ msgid "EN Slides" +#~ msgstr "英文投影片" + +# #: events/models.py:126 +# msgid "R4" +# msgstr "R4" +#~ msgid "Multifunction room" +#~ msgstr "多功能廳" + +#~ msgid "Goodideas Studio" +#~ msgstr "好想工作室" + +#~ msgid "R1, R2, R3" +#~ msgstr "R1、R2、R3" + +#~ msgid "New talk schedule generated successfully." +#~ msgstr "演講時間表產生成功。" + +#~ msgid "open Roles" +#~ msgstr "職缺" + +#, fuzzy, python-format +#~| msgid "" +#~| "You haven't submitted any tutorial proposals. Why not submit one " +#~| "now?" +#~ msgid "" +#~ "You haven't submitted any tutorial. Why not submit one " +#~ "now?" +#~ msgstr "" +#~ "您尚未投稿專業課程,何不馬上建立一個?" + +#~ msgid "Day 1, September 21st, 2024 Morning" +#~ msgstr "第一天(2024/09/21)早上" + +#~ msgid "Day 1, September 21st, 2024 Afternoon" +#~ msgstr "第一天(2024/09/21)下午" + +#~ msgid "Day 2, September 22nd, 2024 Morning" +#~ msgstr "第二天(2024/09/22)早上" + +#~ msgid "Day 2, September 22nd, 2024 Afternoon" +#~ msgstr "第二天(2024/09/22)下午" diff --git a/src/proposals/tests/forms/test_additional_speaker.py b/src/proposals/tests/forms/test_additional_speaker.py index 40a42f036..c75c7602b 100644 --- a/src/proposals/tests/forms/test_additional_speaker.py +++ b/src/proposals/tests/forms/test_additional_speaker.py @@ -154,7 +154,30 @@ def test_additional_speaker_update_form_no_instance(form_class): 'Additional speaker update form must be initialized with an instance.' ) +def test_additional_speaker_update_form_editable(rf, additional_speaker): + request = rf.get('/fake-path') + request.user = additional_speaker + + context = { + 'user': additional_speaker, + 'proposals_editable': True, + } + + rendered = render_to_string('user_dashboard.html', context, request=request) + assert 'dashboard_cospeaking_proposal_table.html' in rendered + +def test_additional_speaker_update_form_uneditable(rf, additional_speaker): + request = rf.get('/fake-path') + request.user = additional_speaker + + context = { + 'user': additional_speaker, + 'proposals_editable': False, + } + rendered = render_to_string('user_dashboard.html', context, request=request) + assert 'dashboard_cospeaking_proposal_table_uneditable.html' in rendered + def test_additional_speaker_cancel_form(additional_speaker): form = AdditionalSpeakerCancelForm(instance=additional_speaker) assert list(form.fields) == ['cancelled'] diff --git a/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table.html b/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table.html index 03d96b984..ebbafab4d 100644 --- a/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table.html +++ b/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table.html @@ -1,6 +1,6 @@ {% load i18n %} - +
diff --git a/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html b/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html new file mode 100644 index 000000000..92b7b864e --- /dev/null +++ b/src/templates/default/users/_includes/dashboard_cospeaking_proposal_table_uneditable.html @@ -0,0 +1,38 @@ +{% load i18n %} + +
{% trans 'Title' %}
+ + + + + + + + + + + {% comment %} + FIXME: This loop has an n+1 problem on "speaker_info.proposal". We can't + do "selected_related" because it's generic, neither "prefetch_related" + because it is (likely) not homogenous. + + This likely will not cause problems in practice, however. It's rare for + a user to become a co-speaker in two or more proposals, so n+1 is likely + around 3. Joining will likely require more queries. + + We can always come back if this ever become a real problem. + {% endcomment %} + {% for speaker_info in speaker_infos %} + + + + + + + {% endfor %} + +
{% trans 'Title' %}{% trans 'Language' %}{% trans 'Submitter' %}{% trans 'Status' %}
{{ speaker_info.proposal.title }}{{ speaker_info.proposal.get_language_display }} + + {{ speaker_info.proposal.submitter.speaker_name }} + + {{ speaker_info.get_status_display }}
diff --git a/src/templates/default/users/user_dashboard.html b/src/templates/default/users/user_dashboard.html index 7b039c5c3..213c1e0e1 100644 --- a/src/templates/default/users/user_dashboard.html +++ b/src/templates/default/users/user_dashboard.html @@ -63,11 +63,19 @@

{% if user.cospeaking_info_set.exists %} -
-

{% trans 'Co-Speaking Proposals' %}

- {# include with ... only will block csrf_token #} - {% include 'users/_includes/dashboard_cospeaking_proposal_table.html' with speaker_infos=user.cospeaking_info_set.all %} -
+ {% if proposals_editable %} +
+

{% trans 'Co-Speaking Proposals' %}

+ {# include with ... only will block csrf_token #} + {% include 'users/_includes/dashboard_cospeaking_proposal_table.html' with speaker_infos=user.cospeaking_info_set.all %} +
+ {% else %} +
+

{% trans 'Co-Speaking Proposals' %}

+ {# include with ... only will block csrf_token #} + {% include 'users/_includes/dashboard_cospeaking_proposal_table_uneditable.html' with speaker_infos=user.cospeaking_info_set.all %} +
+ {% endif %} {% endif %} {% endif %}