diff --git a/src/events/api/views.py b/src/events/api/views.py
index eabb50b84..4371e6458 100644
--- a/src/events/api/views.py
+++ b/src/events/api/views.py
@@ -250,6 +250,20 @@ def python_level(self) -> str:
else:
return ''
+ @property
+ def custom_event(self) -> bool:
+ if isinstance(self.obj, CustomEvent):
+ return not self.obj.break_event
+ else:
+ return False
+
+ @property
+ def custom_event_path(self) -> str:
+ if self.custom_event:
+ return self.obj.link_path
+ else:
+ return ''
+
def display(self):
return {
'event_id': self.event_id,
@@ -263,6 +277,8 @@ def display(self):
'language': self.language,
'python_level': self.python_level,
'break_event': self.break_event,
+ 'custom_event': self.custom_event,
+ 'custom_event_path': self.custom_event_path,
}
diff --git a/src/events/migrations/0055_auto_20250707_2327.py b/src/events/migrations/0055_auto_20250707_2327.py
new file mode 100644
index 000000000..3ac548585
--- /dev/null
+++ b/src/events/migrations/0055_auto_20250707_2327.py
@@ -0,0 +1,43 @@
+# Generated by Django 3.2.25 on 2025-07-07 15:27
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('events', '0054_auto_20250517_1525'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='customevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ migrations.AlterField(
+ model_name='joblistingsevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ migrations.AlterField(
+ model_name='keynoteevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ migrations.AlterField(
+ model_name='proposedtalkevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ migrations.AlterField(
+ model_name='proposedtutorialevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ migrations.AlterField(
+ model_name='sponsoredevent',
+ name='location',
+ field=models.CharField(blank=True, choices=[('4-r0', 'R0'), ('5-r1', 'R1'), ('6-r2', 'R2'), ('1-r3', 'R3'), ('7-r4', 'R4'), ('81-spt-os', 'Sprint / Open Space'), ('82-tutorial', 'Tutorial'), ('83-yi-ps', 'Young Inspire / Poster Session')], db_index=True, max_length=12, null=True, verbose_name='location'),
+ ),
+ ]
diff --git a/src/events/models.py b/src/events/models.py
index 01caaf93a..b81a39010 100644
--- a/src/events/models.py
+++ b/src/events/models.py
@@ -116,29 +116,34 @@ class Location:
R2_2 = '6-r2-2'
R4 = '7-r4'
OTHER = '8-oth'
+ SPT_OS = '81-spt-os' # sprint / open space
+ TUTORIAL = '82-tutorial' # tutorial
+ YI_PS = '83-yi-ps' # young inspire / poster session
class BaseEvent(ConferenceRelated):
"""Base interface for all events in the schedule.
"""
LOCATION_CHOICES = [
- (Location.ALL, _('All rooms')),
- (Location.R012, _('R0, R1, R2')),
+ # (Location.ALL, _('All rooms')),
+ # (Location.R012, _('R0, R1, R2')),
(Location.R0, _('R0')),
- (Location.R0_1, _('R0_1')),
- (Location.R0_2, _('R0_2')),
+ # (Location.R0_1, _('R0_1')),
+ # (Location.R0_2, _('R0_2')),
(Location.R1, _('R1')),
- (Location.R1_1, _('R1_1')),
- (Location.R1_2, _('R1_2')),
+ # (Location.R1_1, _('R1_1')),
+ # (Location.R1_2, _('R1_2')),
(Location.R2, _('R2')),
- (Location.R2_1, _('R2_1')),
- (Location.R2_2, _('R2_2')),
+ # (Location.R2_1, _('R2_1')),
+ # (Location.R2_2, _('R2_2')),
(Location.R3, _('R3')),
- (Location.R4, _('Open Space')),
- (Location.OTHER, _('Other')),
+ (Location.R4, _('R4')),
+ (Location.SPT_OS , _('Sprint / Open Space')),
+ (Location.TUTORIAL, _('Tutorial')),
+ (Location.YI_PS, _('Young Inspire / Poster Session')),
]
location = models.CharField(
- max_length=6,
+ max_length=12,
choices=LOCATION_CHOICES,
blank=True,
null=True,
diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po
index 229e9b394..505fe3b64 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: 2025-05-15 21:24+0800\n"
+"POT-Creation-Date: 2025-07-07 23:53+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,7 +29,7 @@ msgstr ""
msgid "token"
msgstr "token"
-#: attendee/models.py:7 users/models.py:164
+#: attendee/models.py:7 users/models.py:165
msgid "verified"
msgstr "verified"
@@ -83,7 +83,7 @@ msgstr "talk"
msgid "Current"
msgstr ""
-#: core/admin.py:15 core/choices.py:24 events/models.py:138
+#: core/admin.py:15 core/choices.py:24
msgid "Other"
msgstr "Other"
@@ -233,7 +233,7 @@ msgstr "{model_name_cap} creation requires a request object."
msgid "conference"
msgstr "conference"
-#: core/models.py:93 events/models.py:174
+#: core/models.py:93 events/models.py:179
msgid "title"
msgstr "title"
@@ -277,7 +277,7 @@ msgstr "slide link"
msgid "slido embed link"
msgstr "Slido embed link"
-#: core/models.py:156 events/models.py:239
+#: core/models.py:156 events/models.py:244
msgid "HackMD embed link"
msgstr "HackMD embed link"
@@ -297,8 +297,8 @@ msgstr "attending PyCon TW in person"
msgid "Key"
msgstr "Key"
-#: core/models.py:215 proposals/models.py:69 users/models.py:196
-#: users/models.py:311
+#: core/models.py:215 proposals/models.py:69 users/models.py:197
+#: users/models.py:314
msgid "user"
msgstr "user"
@@ -318,11 +318,11 @@ msgstr ""
msgid "time value"
msgstr "time value"
-#: events/admin.py:108 events/models.py:154
+#: events/admin.py:108 events/models.py:159
msgid "begin time"
msgstr "begin time"
-#: events/admin.py:114 events/models.py:163
+#: events/admin.py:114 events/models.py:168
msgid "end time"
msgstr "end time"
@@ -343,67 +343,47 @@ msgstr "time"
msgid "times"
msgstr "times"
-#: events/models.py:125
-msgid "All rooms"
-msgstr "All rooms"
-
-#: events/models.py:126
-msgid "R0, R1, R2"
-msgstr "R1, R2, R3"
-
-#: events/models.py:127
+#: events/models.py:130
msgid "R0"
msgstr "R0"
-#: events/models.py:128
-msgid "R0_1"
-msgstr "R0_1"
-
-#: events/models.py:129
-msgid "R0_2"
-msgstr "R0_2"
-
-#: events/models.py:130
+#: events/models.py:133
msgid "R1"
msgstr "R1"
-#: events/models.py:131
-msgid "R1_1"
-msgstr "R1_1"
-
-#: events/models.py:132
-msgid "R1_2"
-msgstr "R1_2"
-
-#: events/models.py:133
+#: events/models.py:136
msgid "R2"
msgstr "R2"
-#: events/models.py:134
-msgid "R2_1"
-msgstr "R2_1"
-
-#: events/models.py:135
-msgid "R2_2"
-msgstr "R2_2"
-
-#: events/models.py:136
+#: events/models.py:139
msgid "R3"
msgstr "R3"
-#: events/models.py:137
-msgid "Open Space"
-msgstr "Open Spaces"
+#: events/models.py:140
+msgid "R4"
+msgstr ""
+
+#: events/models.py:141
+msgid "Sprint / Open Space"
+msgstr "Sprint / Open Space"
+
+#: events/models.py:142 templates/pycontw-2016/_includes/nav/front_nav.html:46
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#: events/models.py:143
+msgid "Young Inspire / Poster Session"
+msgstr "Young Inspire / Poster Session"
-#: events/models.py:146
+#: events/models.py:151
msgid "location"
msgstr "location"
-#: events/models.py:178
+#: events/models.py:183
msgid "is break event"
msgstr "is break event"
-#: events/models.py:181
+#: events/models.py:186
msgid ""
"Whether this event is displays as a break. A break can be visually "
"distinguished from \"real\" conference sessions, such as keynotes, talks, "
@@ -412,71 +392,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:187
+#: events/models.py:192
msgid "event description"
msgstr "event description"
-#: events/models.py:190
+#: events/models.py:195
msgid "link path"
msgstr "link path"
-#: events/models.py:195
+#: events/models.py:200
msgid "custom event"
msgstr "custom event"
-#: events/models.py:196
+#: events/models.py:201
msgid "custom events"
msgstr "custom events"
-#: events/models.py:205 users/models.py:116
+#: events/models.py:210 users/models.py:117
msgid "speaker name"
msgstr "speaker name"
-#: events/models.py:210
+#: events/models.py:215
msgid "speaker bio"
msgstr "speaker bio"
-#: events/models.py:214
+#: events/models.py:219
msgid "speaker photo"
msgstr "speaker photo"
-#: events/models.py:218
+#: events/models.py:223
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:222
+#: events/models.py:227
msgid "keynote session title"
msgstr "keynote session title"
-#: events/models.py:227
+#: events/models.py:232
msgid "keynote session description"
msgstr "keynote session description"
-#: events/models.py:231
+#: events/models.py:236
msgid "session slides"
msgstr "session slides"
-#: events/models.py:235
+#: events/models.py:240
msgid "slido"
msgstr "Slido"
-#: events/models.py:244
+#: events/models.py:249
msgid "social linkedin"
msgstr "Linkedin"
-#: events/models.py:248
+#: events/models.py:253
msgid "social twitter"
msgstr "Twitter"
-#: events/models.py:252
+#: events/models.py:257
msgid "social github"
msgstr "Github"
-#: events/models.py:256 events/models.py:341
+#: events/models.py:261 events/models.py:346
msgid "slug"
msgstr "slug"
-#: events/models.py:258
+#: events/models.py:263
#, python-brace-format
msgid ""
"This is used to link to the speaker's introduction on the Keynote page, e.g. "
@@ -485,77 +465,77 @@ 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:265 events/models.py:384 events/models.py:420
+#: events/models.py:270 events/models.py:389 events/models.py:425
msgid "is remote"
msgstr "is remote"
-#: events/models.py:269 events/models.py:344 events/models.py:388
-#: events/models.py:424
+#: events/models.py:274 events/models.py:349 events/models.py:393
+#: events/models.py:429
msgid "youtube id"
msgstr "youtube id"
-#: events/models.py:275
+#: events/models.py:280
msgid "keynote event"
msgstr "keynote event"
-#: events/models.py:276
+#: events/models.py:281
msgid "keynote events"
msgstr "keynote events"
-#: events/models.py:279
+#: events/models.py:284
#, python-brace-format
msgid "Keynote: {speaker}"
msgstr "Keynote: {speaker}"
-#: events/models.py:318 sponsors/models.py:107 sponsors/models.py:123
+#: events/models.py:323 sponsors/models.py:107 sponsors/models.py:123
msgid "sponsor"
msgstr "sponsor"
-#: events/models.py:323 events/models.py:324
+#: events/models.py:328 events/models.py:329
#: templates/pycontw-2020/_includes/menu.html:104
#: templates/pycontw-2020/contents/_default/events/job-listings.html:33
msgid "Job Listings"
msgstr "Job Listings"
-#: events/models.py:327
+#: events/models.py:332
#, python-brace-format
msgid "Open Role of Sponsor: {sponsor}"
msgstr "Open Role of Sponsor: {sponsor}"
-#: events/models.py:336
+#: events/models.py:341
msgid "host"
msgstr "host"
-#: events/models.py:350
+#: events/models.py:355
msgid "sponsored event"
msgstr "sponsored event"
-#: events/models.py:351
+#: events/models.py:356
msgid "sponsored events"
msgstr "sponsored events"
-#: events/models.py:379 events/models.py:410 proposals/models.py:364
+#: events/models.py:384 events/models.py:415 proposals/models.py:364
#: reviews/models.py:75 reviews/models.py:196
msgid "proposal"
msgstr "proposal"
-#: events/models.py:396
+#: events/models.py:401
msgid "talk event"
msgstr "talk event"
-#: events/models.py:397
+#: events/models.py:402
msgid "talk events"
msgstr "talk events"
-#: events/models.py:415
+#: events/models.py:420
msgid "registration link"
msgstr "registration link"
-#: events/models.py:432
+#: events/models.py:437
msgid "tutorial event"
msgstr "tutorial event"
-#: events/models.py:433
+#: events/models.py:438
msgid "tutorial events"
msgstr "tutorial events"
@@ -1758,8 +1738,8 @@ msgid ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Talk page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/talk\" "
+"target=\"_blank\">How to Propose a Talk page."
msgstr ""
"Note that each field plays a crucial role in determining whether your "
"proposal is accepted. It is recommended that you provide as much detail as "
@@ -1767,8 +1747,8 @@ msgstr ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Talk page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/talk\" "
+"target=\"_blank\">How to Propose a Talk page."
#: templates/default/_includes/tutorial_proposal_alert.html:6
#, python-format
@@ -1779,8 +1759,8 @@ msgid ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Tutorial page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/tutorial\" "
+"target=\"_blank\">How to Propose a Tutorial page."
msgstr ""
"Note that each field plays a crucial role in determining whether your "
"proposal is accepted. It is recommended that you provide as much detail as "
@@ -1788,8 +1768,8 @@ msgstr ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Tutorial page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/tutorial\" "
+"target=\"_blank\">How to Propose a Tutorial page."
#: templates/default/dashboard_base.html:7
#: templates/pycontw-2016/_includes/nav/front_nav.html:82
@@ -1823,29 +1803,29 @@ msgid ""
msgstr ""
"You need to complete your speaker profile first before submitting a proposal."
-#: templates/default/dashboard_base.html:53
+#: templates/default/dashboard_base.html:54
msgid "View AI Summary and Comments "
msgstr "View AI Summary and Comments"
-#: templates/default/dashboard_base.html:57
+#: templates/default/dashboard_base.html:58
msgid "View AI Summary and Comments"
msgstr "View AI Summary and Comments"
-#: templates/default/dashboard_base.html:64
-#: templates/default/dashboard_base.html:71
+#: templates/default/dashboard_base.html:65
+#: templates/default/dashboard_base.html:72
msgid "AI Recommendation Category"
msgstr "AI Recommendation Category"
-#: templates/default/dashboard_base.html:82
+#: templates/default/dashboard_base.html:83
msgid "Summary"
msgstr "Summary"
-#: templates/default/dashboard_base.html:85
+#: templates/default/dashboard_base.html:86
#: templates/default/reviews/_includes/previous_review_table.html:9
msgid "Comments"
msgstr "Comments"
-#: templates/default/dashboard_base.html:89
+#: templates/default/dashboard_base.html:90
msgid "Difference"
msgstr "Difference"
@@ -1992,11 +1972,11 @@ msgstr "Sign Up"
#: templates/default/registration/signup.html:13
#, python-format
msgid ""
-"Already have an account? Login."
+"Already have an account? Login."
msgstr ""
-"Already have an account? Login."
+"Already have an account? Login."
#: templates/default/registration/verification_email.txt:6
#, python-format
@@ -2025,7 +2005,7 @@ msgid "Stage"
msgstr "Stage"
#: templates/default/reviews/_includes/previous_review_table.html:7
-#: users/models.py:221
+#: users/models.py:222
msgid "Reviewer ID"
msgstr "Reviewer ID"
@@ -2256,11 +2236,13 @@ msgstr "New Talk Porposal"
#: templates/default/users/user_dashboard.html:33
#, python-format
msgid ""
-"You haven't submitted any talk proposals. Why not submit one now?"
+"You haven't submitted any talk proposals. Why not submit one "
+"now?"
msgstr ""
-"You haven't submitted any talk proposals. Why not submit one now?"
+"You haven't submitted any talk proposals. Why not submit one "
+"now?"
#: templates/default/users/user_dashboard.html:35
msgid "You haven't submitted any talk proposals."
@@ -2277,13 +2259,13 @@ msgstr "New Tutorial Porposal"
#: templates/default/users/user_dashboard.html:58
#, python-format
msgid ""
-"You haven't submitted any tutorial proposals. Why not submit one "
-"now?"
+"You haven't submitted any tutorial proposals. Why not submit "
+"one now?"
msgstr ""
-"You haven't submitted any tutorial proposals. Why not submit one "
-"now?"
+"You haven't submitted any tutorial proposals. Why not submit "
+"one now?"
#: templates/default/users/user_dashboard.html:60
msgid "You haven't submitted any tutorial proposals."
@@ -2611,10 +2593,6 @@ msgstr "BoF"
msgid "PyDay"
msgstr "PyDay"
-#: templates/pycontw-2016/_includes/nav/front_nav.html:46
-msgid "Tutorial"
-msgstr "Tutorial"
-
#: templates/pycontw-2016/_includes/nav/front_nav.html:50
#: templates/pycontw-2016/_includes/nav/front_nav.html:52
#: templates/pycontw-2018/_includes/menu.html:86
@@ -2676,15 +2654,15 @@ msgstr "Blog"
msgid ""
"This is the full schedule of talks for PyCon Taiwan 2016. See also: "
msgstr ""
"This is the full schedule of talks for PyCon Taiwan 2016. See also: "
#: templates/pycontw-2016/events/schedule.html:32
#: templates/pycontw-2016/events/talk_list.html:20
@@ -2745,11 +2723,11 @@ msgstr "Description"
#: templates/pycontw-2016/events/talk_list.html:14
#, python-format
msgid ""
-"You can check out the program schedule here."
+"You can check out the program schedule here."
msgstr ""
-"You can check out the program schedule here."
+"You can check out the program schedule here."
#: templates/pycontw-2016/events/talk_list.html:28
#: templates/pycontw-2017/events/talk_list.html:33
@@ -2760,11 +2738,13 @@ msgstr "Proposed Talks"
#: templates/pycontw-2017/events/talk_list.html:41
#, python-format
msgid ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
msgstr ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
#: templates/pycontw-2016/events/talk_list.html:38
msgid "Sponsored Events"
@@ -2774,11 +2754,11 @@ msgstr "Sponsored Events"
#: templates/pycontw-2017/events/talk_list.html:53
#, python-format
msgid ""
-""
-"%(event_title)s by %(host_name)s"
+"%(event_title)s by %(host_name)s"
msgstr ""
-""
-"%(event_title)s by %(host_name)s"
+"%(event_title)s by %(host_name)s"
#: templates/pycontw-2016/index.html:7
msgid ""
@@ -2873,21 +2853,21 @@ msgstr ""
#: templates/pycontw-2016/index.html:86
msgid ""
-"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for the "
-"discussion and promotion of the Python programming language. It is held by "
-"enthusiasts and focuses on Python technology and its versatile applications. "
-"We welcome people who are interested in Python to join PyCon Taiwan to share "
-"knowledge, exchange ideas, make connections and to help us grow our network. "
-"
"
+"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for "
+"the discussion and promotion of the Python programming language. It is held "
+"by enthusiasts and focuses on Python technology and its versatile "
+"applications. We welcome people who are interested in Python to join PyCon "
+"Taiwan to share knowledge, exchange ideas, make connections and to help us "
+"grow our network.
"
msgstr ""
-"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for the "
-"discussion and promotion of the Python programming language. It is held by "
-"enthusiasts and focuses on Python technology and its versatile applications. "
-"We welcome people who are interested in Python to join PyCon Taiwan to share "
-"knowledge, exchange ideas, make connections and to help us grow our network. "
-"
"
+"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for "
+"the discussion and promotion of the Python programming language. It is held "
+"by enthusiasts and focuses on Python technology and its versatile "
+"applications. We welcome people who are interested in Python to join PyCon "
+"Taiwan to share knowledge, exchange ideas, make connections and to help us "
+"grow our network.
"
#: templates/pycontw-2016/index.html:102
#, python-format
@@ -2896,15 +2876,15 @@ msgid ""
"height=\"22\" src=\"%(img_call_icon)s\" class=\"call__icon\"> Help us organize and make the conference "
"successful!
Please fill out
our volunteer form
"
+"forms/d/1zwc4khAW18myt6dJ_s_YtJOfQEobgz8KhcySKL0HXl4/viewform\" "
+"target=\"_blank\" rel=\"noopener\">our volunteer form
"
msgstr ""
" Volunteers Needed!
Help us organize and make the conference "
"successful!
Please fill out
our volunteer form
"
+"forms/d/1zwc4khAW18myt6dJ_s_YtJOfQEobgz8KhcySKL0HXl4/viewform\" "
+"target=\"_blank\" rel=\"noopener\">our volunteer form "
#: templates/pycontw-2016/index.html:132
msgid "Python Community in Taiwan"
@@ -2950,11 +2930,11 @@ msgstr ""
#: templates/pycontw-2016/registration/signup.html:25
#, python-format
msgid ""
-"Already have an account?Login."
+"Already have an account?Login."
msgstr ""
-"Already have an account?Login."
+"Already have an account?Login."
#: templates/pycontw-2017/_includes/header.html:48
msgid "about"
@@ -3241,11 +3221,11 @@ msgstr "Volunteers Needed"
#: templates/pycontw-2017/index.html:40
#, python-format
msgid ""
-"Help us organize and make the conference successful! Please fill out our volunteer form."
+"Help us organize and make the conference successful! Please fill out our volunteer form."
msgstr ""
-"Help us organize and make the conference successful! Please fill out our volunteer form."
+"Help us organize and make the conference successful! Please fill out our volunteer form."
#: templates/pycontw-2017/index.html:45
msgid ""
@@ -3643,11 +3623,13 @@ msgstr ""
#: templates/pycontw-2019/events/talk_list.html:34
#, python-format
msgid ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
msgstr ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
#: templates/pycontw-2018/index.html:32 templates/pycontw-2019/index.html:39
#: templates/pycontw-2020/index.html:60 templates/pycontw-2021/index.html:63
@@ -4502,14 +4484,14 @@ msgstr ""
#: templates/pycontw-2025/_includes/ext/discord.html:123
msgid ""
"3.Join the Python Taiwan Discord server.
Python Taiwan Discord server "
-"invite link: https://discord."
-"gg/94hgCQv
In your Discord client App, click the button with plus "
-"sign, and then select 'Join a server'."
+"invite link: https://discord.gg/"
+"94hgCQv
In your Discord client App, click the button with plus sign, "
+"and then select 'Join a server'."
msgstr ""
"3.Join the Python Taiwan Discord server.
Python Taiwan Discord server "
-"invite link: https://discord."
-"gg/94hgCQv
In your Discord client App, click the button with plus "
-"sign, and then select 'Join a server'."
+"invite link: https://discord.gg/"
+"94hgCQv
In your Discord client App, click the button with plus sign, "
+"and then select 'Join a server'."
#: templates/pycontw-2020/_includes/ext/discord.html:126
#: templates/pycontw-2021/_includes/ext/discord.html:126
@@ -5315,49 +5297,49 @@ msgstr ""
msgid "Sign up now"
msgstr "Sign up now"
-#: users/forms.py:276
+#: users/forms.py:277
msgid "Email Address"
msgstr "Email Address"
-#: users/forms.py:295
+#: users/forms.py:296
msgid "Request Password Reset"
msgstr "Request Password Reset"
-#: users/forms.py:331
+#: users/forms.py:332
msgid "Set Password"
msgstr "Set Password"
-#: users/forms.py:343
+#: users/forms.py:344
msgid "I agree to the code of conduct."
msgstr "I agree to the code of conduct."
-#: users/forms.py:348
+#: users/forms.py:349
msgid "You must agree to continue."
msgstr "You must agree to continue."
-#: users/models.py:112
+#: users/models.py:113
msgid "email address"
msgstr "email address"
-#: users/models.py:120
+#: users/models.py:121
msgid "biography"
msgstr "biography"
-#: users/models.py:123
+#: users/models.py:124
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:128
+#: users/models.py:129
msgid "photo"
msgstr "photo"
-#: users/models.py:132
+#: users/models.py:133
msgid "Facebook"
msgstr "Facebook"
-#: users/models.py:135
+#: users/models.py:136
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 "
@@ -5369,11 +5351,11 @@ msgstr ""
"on this link, and "
"copy-paste the URL of the page opened. Remember to log in to Facebook first!"
-#: users/models.py:144
+#: users/models.py:145
msgid "Twitter"
msgstr "Twitter"
-#: users/models.py:149
+#: users/models.py:150
msgid ""
"Your Twitter handle, without the \"@\" sign. This will be shown when we "
"display your public information."
@@ -5381,11 +5363,11 @@ msgstr ""
"Your Twitter handle, without the “@” sign. This will be shown when we "
"display your public information."
-#: users/models.py:154
+#: users/models.py:155
msgid "GitHub"
msgstr "GitHub"
-#: users/models.py:159
+#: users/models.py:160
msgid ""
"Your GitHub account, without the \"@\" sign. This will be shown when we "
"display your public information."
@@ -5393,23 +5375,23 @@ msgstr ""
"Your GitHub account, without the “@” sign. This will be shown when we "
"display your public information."
-#: users/models.py:167
+#: users/models.py:168
msgid "Designates whether the user has verified email ownership."
msgstr "Designates whether the user has verified email ownership."
-#: users/models.py:171
+#: users/models.py:172
msgid "staff status"
msgstr "staff status"
-#: users/models.py:174
+#: users/models.py:175
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:178
+#: users/models.py:179
msgid "active"
msgstr "active"
-#: users/models.py:181
+#: users/models.py:182
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
@@ -5417,24 +5399,24 @@ msgstr ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
-#: users/models.py:186
+#: users/models.py:187
msgid "date joined"
msgstr "date joined"
-#: users/models.py:197
+#: users/models.py:198
msgid "users"
msgstr "users"
-#: users/models.py:297
+#: users/models.py:300
#, python-brace-format
msgid "Verify your email address on {host}"
msgstr "Verify your email address on {host}"
-#: users/models.py:315
+#: users/models.py:318
msgid "latest agreed CoC version"
msgstr "latest agreed CoC version"
-#: users/models.py:319
+#: users/models.py:322
msgid "agreed at"
msgstr "agreed at"
diff --git a/src/locale/zh_Hant/LC_MESSAGES/django.po b/src/locale/zh_Hant/LC_MESSAGES/django.po
index ffd186886..dfe64c4de 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: 2025-05-15 21:24+0800\n"
+"POT-Creation-Date: 2025-07-07 23:53+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,7 +36,7 @@ msgstr ""
msgid "token"
msgstr "驗證碼"
-#: attendee/models.py:7 users/models.py:164
+#: attendee/models.py:7 users/models.py:165
msgid "verified"
msgstr "已認證"
@@ -90,7 +90,7 @@ msgstr "演講"
msgid "Current"
msgstr ""
-#: core/admin.py:15 core/choices.py:24 events/models.py:138
+#: core/admin.py:15 core/choices.py:24
msgid "Other"
msgstr "其他"
@@ -240,7 +240,7 @@ msgstr "建立 {model_name_cap} 需要一個 request 物件。"
msgid "conference"
msgstr "會議"
-#: core/models.py:93 events/models.py:174
+#: core/models.py:93 events/models.py:179
msgid "title"
msgstr "題目"
@@ -284,7 +284,7 @@ msgstr "投影片連結"
msgid "slido embed link"
msgstr "Slido 嵌入連結"
-#: core/models.py:156 events/models.py:239
+#: core/models.py:156 events/models.py:244
msgid "HackMD embed link"
msgstr "HackMD 嵌入連結"
@@ -304,8 +304,8 @@ msgstr "是否願意以實體方式與會"
msgid "Key"
msgstr "鍵"
-#: core/models.py:215 proposals/models.py:69 users/models.py:196
-#: users/models.py:311
+#: core/models.py:215 proposals/models.py:69 users/models.py:197
+#: users/models.py:314
msgid "user"
msgstr "使用者"
@@ -325,11 +325,11 @@ msgstr "驗證碼"
msgid "time value"
msgstr "時間值"
-#: events/admin.py:108 events/models.py:154
+#: events/admin.py:108 events/models.py:159
msgid "begin time"
msgstr "開始時間"
-#: events/admin.py:114 events/models.py:163
+#: events/admin.py:114 events/models.py:168
msgid "end time"
msgstr "結束時間"
@@ -350,67 +350,47 @@ msgstr "時間"
msgid "times"
msgstr "時間"
-#: events/models.py:125
-msgid "All rooms"
-msgstr "全體會議"
-
-#: events/models.py:126
-msgid "R0, R1, R2"
-msgstr "R1、R2、R3"
-
-#: events/models.py:127
+#: events/models.py:130
msgid "R0"
msgstr ""
-#: events/models.py:128
-msgid "R0_1"
-msgstr ""
-
-#: events/models.py:129
-msgid "R0_2"
-msgstr ""
-
-#: events/models.py:130
+#: events/models.py:133
msgid "R1"
msgstr "R1"
-#: events/models.py:131
-msgid "R1_1"
-msgstr ""
-
-#: events/models.py:132
-msgid "R1_2"
-msgstr ""
-
-#: events/models.py:133
+#: events/models.py:136
msgid "R2"
msgstr "R2"
-#: events/models.py:134
-msgid "R2_1"
-msgstr ""
+#: events/models.py:139
+msgid "R3"
+msgstr "R3"
-#: events/models.py:135
-msgid "R2_2"
+#: events/models.py:140
+msgid "R4"
msgstr ""
-#: events/models.py:136
-msgid "R3"
-msgstr "R3"
+#: events/models.py:141
+msgid "Sprint / Open Space"
+msgstr "衝刺開發 / 開放空間"
-#: events/models.py:137
-msgid "Open Space"
-msgstr "開放空間"
+#: events/models.py:142 templates/pycontw-2016/_includes/nav/front_nav.html:46
+msgid "Tutorial"
+msgstr "專業課程"
-#: events/models.py:146
+#: events/models.py:143
+msgid "Young Inspire / Poster Session"
+msgstr "Young Inspire / 海報展"
+
+#: events/models.py:151
msgid "location"
msgstr "地點"
-#: events/models.py:178
+#: events/models.py:183
msgid "is break event"
msgstr "休息"
-#: events/models.py:181
+#: events/models.py:186
msgid ""
"Whether this event is displays as a break. A break can be visually "
"distinguished from \"real\" conference sessions, such as keynotes, talks, "
@@ -419,71 +399,71 @@ msgstr ""
"此活動是否應該被顯示為休息時間。休息時間的顯示會與「真的」會議時段,例如基調"
"演講、一般演講不同。"
-#: events/models.py:187
+#: events/models.py:192
msgid "event description"
msgstr "活動說明"
-#: events/models.py:190
+#: events/models.py:195
msgid "link path"
msgstr "連結路徑"
-#: events/models.py:195
+#: events/models.py:200
msgid "custom event"
msgstr "自訂活動"
-#: events/models.py:196
+#: events/models.py:201
msgid "custom events"
msgstr "自訂活動"
-#: events/models.py:205 users/models.py:116
+#: events/models.py:210 users/models.py:117
msgid "speaker name"
msgstr "演講者"
-#: events/models.py:210
+#: events/models.py:215
msgid "speaker bio"
msgstr "演講者介紹"
-#: events/models.py:214
+#: events/models.py:219
msgid "speaker photo"
msgstr "演講者照片"
-#: events/models.py:218
+#: events/models.py:223
msgid "Raster format of the speaker's photo, e.g. PNG, JPEG."
msgstr "演講者照片使用點陣格式,例如PNG, JPEG"
-#: events/models.py:222
+#: events/models.py:227
msgid "keynote session title"
msgstr "演講標題"
-#: events/models.py:227
+#: events/models.py:232
msgid "keynote session description"
msgstr "演講介紹"
-#: events/models.py:231
+#: events/models.py:236
msgid "session slides"
msgstr "演講投影片"
-#: events/models.py:235
+#: events/models.py:240
msgid "slido"
msgstr "Slido"
-#: events/models.py:244
+#: events/models.py:249
msgid "social linkedin"
msgstr "Linkedin"
-#: events/models.py:248
+#: events/models.py:253
msgid "social twitter"
msgstr "Twitter"
-#: events/models.py:252
+#: events/models.py:257
msgid "social github"
msgstr "Github"
-#: events/models.py:256 events/models.py:341
+#: events/models.py:261 events/models.py:346
msgid "slug"
msgstr "網址文字"
-#: events/models.py:258
+#: events/models.py:263
#, python-brace-format
msgid ""
"This is used to link to the speaker's introduction on the Keynote page, e.g. "
@@ -492,77 +472,77 @@ msgstr ""
"用來連結至基調演講頁面上的講者簡介,如「liang2」可連結至「{link}#keynote-"
"speaker-liang2」。"
-#: events/models.py:265 events/models.py:384 events/models.py:420
+#: events/models.py:270 events/models.py:389 events/models.py:425
msgid "is remote"
msgstr "遠端演講"
-#: events/models.py:269 events/models.py:344 events/models.py:388
-#: events/models.py:424
+#: events/models.py:274 events/models.py:349 events/models.py:393
+#: events/models.py:429
msgid "youtube id"
msgstr "youtube id"
-#: events/models.py:275
+#: events/models.py:280
msgid "keynote event"
msgstr "基調演講"
-#: events/models.py:276
+#: events/models.py:281
msgid "keynote events"
msgstr "基調演講"
-#: events/models.py:279
+#: events/models.py:284
#, python-brace-format
msgid "Keynote: {speaker}"
msgstr "基調演講:{speaker}"
-#: events/models.py:318 sponsors/models.py:107 sponsors/models.py:123
+#: events/models.py:323 sponsors/models.py:107 sponsors/models.py:123
msgid "sponsor"
msgstr "贊助"
-#: events/models.py:323 events/models.py:324
+#: events/models.py:328 events/models.py:329
#: templates/pycontw-2020/_includes/menu.html:104
#: templates/pycontw-2020/contents/_default/events/job-listings.html:33
msgid "Job Listings"
msgstr "徵才資訊"
-#: events/models.py:327
+#: events/models.py:332
#, python-brace-format
msgid "Open Role of Sponsor: {sponsor}"
msgstr "徵才中贊助商: {sponsor}"
-#: events/models.py:336
+#: events/models.py:341
msgid "host"
msgstr "主持人"
-#: events/models.py:350
+#: events/models.py:355
msgid "sponsored event"
msgstr "贊助演講"
-#: events/models.py:351
+#: events/models.py:356
msgid "sponsored events"
msgstr "贊助演講"
-#: events/models.py:379 events/models.py:410 proposals/models.py:364
+#: events/models.py:384 events/models.py:415 proposals/models.py:364
#: reviews/models.py:75 reviews/models.py:196
msgid "proposal"
msgstr "提案"
-#: events/models.py:396
+#: events/models.py:401
msgid "talk event"
msgstr "演講"
-#: events/models.py:397
+#: events/models.py:402
msgid "talk events"
msgstr "演講"
-#: events/models.py:415
+#: events/models.py:420
msgid "registration link"
msgstr "報名連結"
-#: events/models.py:432
+#: events/models.py:437
msgid "tutorial event"
msgstr "專業課程"
-#: events/models.py:433
+#: events/models.py:438
msgid "tutorial events"
msgstr "專業課程"
@@ -1709,14 +1689,14 @@ msgid ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Talk page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/talk\" "
+"target=\"_blank\">How to Propose a Talk page."
msgstr ""
"請注意,每個欄位都會對稿件是否入選產生影響,建議盡可能將每個欄位詳細填寫,這"
"將會大幅提升入選可能。
相反的,若欄位中資訊過度不足或缺漏,這會導致入選機"
-"率大福下降,更可能無法進入審稿階段。
更多資訊請參見如何"
-"投稿演講頁面。"
+"率大福下降,更可能無法進入審稿階段。
更多資訊請參見"
+"如何投稿演講頁面。"
#: templates/default/_includes/tutorial_proposal_alert.html:6
#, python-format
@@ -1727,14 +1707,14 @@ msgid ""
"acceptance.
Conversely, if the information in the field is insufficient "
"or empty, it will greatly reduce the chances of acceptance and may even "
"prevent your proposal from being reviewed.
Please review the How to Propose a Tutorial page."
+"href=\"%(FRONTEND_HOST)s/%(LANGUAGE_CODE)s/speaking/tutorial\" "
+"target=\"_blank\">How to Propose a Tutorial page."
msgstr ""
"請注意,每個欄位都會對稿件是否入選產生影響,建議盡可能將每個欄位詳細填寫,這"
"將會大幅提升入選可能。
相反的,若欄位中資訊過度不足或缺漏,這會導致入選機"
-"率大福下降,更可能無法進入審稿階段。
更多資訊請參見"
-"如何投稿專業課程頁面。"
+"率大福下降,更可能無法進入審稿階段。
更多資訊請參見如何投稿專業課程頁面。"
#: templates/default/dashboard_base.html:7
#: templates/pycontw-2016/_includes/nav/front_nav.html:82
@@ -1765,29 +1745,29 @@ msgid ""
"You need to complete your speaker profile first before submitting a proposal."
msgstr "在投稿前,您必須先完成填寫講者資訊。"
-#: templates/default/dashboard_base.html:53
+#: templates/default/dashboard_base.html:54
msgid "View AI Summary and Comments "
msgstr "檢視 AI 摘要評論"
-#: templates/default/dashboard_base.html:57
+#: templates/default/dashboard_base.html:58
msgid "View AI Summary and Comments"
msgstr "查看 AI 摘要評論"
-#: templates/default/dashboard_base.html:64
-#: templates/default/dashboard_base.html:71
+#: templates/default/dashboard_base.html:65
+#: templates/default/dashboard_base.html:72
msgid "AI Recommendation Category"
msgstr "AI 建議分類"
-#: templates/default/dashboard_base.html:82
+#: templates/default/dashboard_base.html:83
msgid "Summary"
msgstr "摘要"
-#: templates/default/dashboard_base.html:85
+#: templates/default/dashboard_base.html:86
#: templates/default/reviews/_includes/previous_review_table.html:9
msgid "Comments"
msgstr "評論"
-#: templates/default/dashboard_base.html:89
+#: templates/default/dashboard_base.html:90
msgid "Difference"
msgstr "差異"
@@ -1892,8 +1872,8 @@ msgid ""
"Don't have an account? Sign up now!"
msgstr ""
-"沒有帳號? 馬上註冊一個!"
+"沒有帳號? 馬上註冊一個!"
#: templates/default/registration/password_reset_confirm.html:13
msgid ""
@@ -1932,11 +1912,11 @@ msgstr "註冊"
#: templates/default/registration/signup.html:13
#, python-format
msgid ""
-"Already have an account? Login."
+"Already have an account? Login."
msgstr ""
-"已有帳號? 按此登入。"
+"已有帳號? 按此登入。"
#: templates/default/registration/verification_email.txt:6
#, python-format
@@ -1964,7 +1944,7 @@ msgid "Stage"
msgstr "階段"
#: templates/default/reviews/_includes/previous_review_table.html:7
-#: users/models.py:221
+#: users/models.py:222
msgid "Reviewer ID"
msgstr "審稿人代號"
@@ -2095,9 +2075,9 @@ msgid ""
"process, please refer to the GitBook Review Guideline."
msgstr ""
-"注意:投稿人與其他審稿人都不會知道你的身份。審稿程序的詳細資訊參見審稿指南。"
+"注意:投稿人與其他審稿人都不會知道你的身份。審稿程序的詳細資訊參見審稿指南。"
#: templates/default/reviews/talk_proposal_list.html:23
msgid "Personal Review Stats"
@@ -2190,11 +2170,12 @@ msgstr "投稿新演講"
#: templates/default/users/user_dashboard.html:33
#, python-format
msgid ""
-"You haven't submitted any talk proposals. Why not submit one now?"
+"You haven't submitted any talk proposals. Why not submit one "
+"now?"
msgstr ""
-"您尚未投稿演講,何不馬上建立一個?"
+"您尚未投稿演講,何不馬上建立一個?"
#: templates/default/users/user_dashboard.html:35
msgid "You haven't submitted any talk proposals."
@@ -2211,9 +2192,9 @@ msgstr "投稿新專業課程"
#: templates/default/users/user_dashboard.html:58
#, python-format
msgid ""
-"You haven't submitted any tutorial proposals. Why not submit one "
-"now?"
+"You haven't submitted any tutorial proposals. Why not submit "
+"one now?"
msgstr ""
"您尚未投稿專業課程,何不馬上建立一個?"
@@ -2543,10 +2524,6 @@ msgstr "夜市(BoF)"
msgid "PyDay"
msgstr "PyDay"
-#: templates/pycontw-2016/_includes/nav/front_nav.html:46
-msgid "Tutorial"
-msgstr "專業課程"
-
#: templates/pycontw-2016/_includes/nav/front_nav.html:50
#: templates/pycontw-2016/_includes/nav/front_nav.html:52
#: templates/pycontw-2018/_includes/menu.html:86
@@ -2608,14 +2585,14 @@ msgstr "部落格"
msgid ""
"This is the full schedule of talks for PyCon Taiwan 2016. See also: "
msgstr ""
-"這是 PyCon Taiwan 2016 的完整演講時間表。另可參考:"
+"這是 PyCon Taiwan 2016 的完整演講時間表。另可參考:"
#: templates/pycontw-2016/events/schedule.html:32
#: templates/pycontw-2016/events/talk_list.html:20
@@ -2676,8 +2653,8 @@ msgstr "說明"
#: templates/pycontw-2016/events/talk_list.html:14
#, python-format
msgid ""
-"You can check out the program schedule here."
+"You can check out the program schedule here."
msgstr ""
"您可由此處檢視議程"
"時間表。"
@@ -2691,11 +2668,13 @@ msgstr "一般演講"
#: templates/pycontw-2017/events/talk_list.html:41
#, python-format
msgid ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
msgstr ""
-""
-"%(proposal_title)s %(speaker_names)s"
+"%(proposal_title)s "
+"%(speaker_names)s"
#: templates/pycontw-2016/events/talk_list.html:38
msgid "Sponsored Events"
@@ -2705,11 +2684,12 @@ msgstr "贊助演講"
#: templates/pycontw-2017/events/talk_list.html:53
#, python-format
msgid ""
-""
-"%(event_title)s by %(host_name)s"
+"%(event_title)s by %(host_name)s"
msgstr ""
-""
-"%(event_title)s %(host_name)s"
+"%(event_title)s "
+"%(host_name)s"
#: templates/pycontw-2016/index.html:7
msgid ""
@@ -2802,16 +2782,16 @@ msgstr ""
#: templates/pycontw-2016/index.html:86
msgid ""
-"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for the "
-"discussion and promotion of the Python programming language. It is held by "
-"enthusiasts and focuses on Python technology and its versatile applications. "
-"We welcome people who are interested in Python to join PyCon Taiwan to share "
-"knowledge, exchange ideas, make connections and to help us grow our network. "
-"
"
+"And what is PyCon Taiwan
PyCon Taiwan is an annual convention in Taiwan for "
+"the discussion and promotion of the Python programming language. It is held "
+"by enthusiasts and focuses on Python technology and its versatile "
+"applications. We welcome people who are interested in Python to join PyCon "
+"Taiwan to share knowledge, exchange ideas, make connections and to help us "
+"grow our network.
"
msgstr ""
-"何謂 PyCon Taiwan
\n"
+"
何謂 PyCon Taiwan
\n"
"PyCon Taiwan 為一年一度由愛好者舉辦、討論並提倡使用 Python 程式語言的會議,聚"
"焦在 Python 技術與其多樣的可能應用的交流。我們歡迎所有對 Python 有興趣的朋友"
"一同加入 PyCon Taiwan 來分享所學、交換想法、並且認識更多同好。
"
@@ -2823,14 +2803,14 @@ msgid ""
"height=\"22\" src=\"%(img_call_icon)s\" class=\"call__icon\">
Help us organize and make the conference "
"successful!
Please fill out
our volunteer form
"
+"forms/d/1zwc4khAW18myt6dJ_s_YtJOfQEobgz8KhcySKL0HXl4/viewform\" "
+"target=\"_blank\" rel=\"noopener\">our volunteer form
"
msgstr ""
-" 志工招募中!
與我們共同籌備並讓這個會議更成功!
請填寫我們"
-"的 志工招募中!
與我們共同籌備並讓這個會議更成功!
請填"
+"寫我們的志工參加表
"
#: templates/pycontw-2016/index.html:132
@@ -2877,8 +2857,8 @@ msgstr ""
#: templates/pycontw-2016/registration/signup.html:25
#, python-format
msgid ""
-"Already have an account?Login."
+"Already have an account?Login."
msgstr ""
"已經有帳號了?請登入。"
@@ -3163,8 +3143,8 @@ msgstr "徵求志工"
#: templates/pycontw-2017/index.html:40
#, python-format
msgid ""
-"Help us organize and make the conference successful! Please fill out our volunteer form."
+"Help us organize and make the conference successful! Please fill out our volunteer form."
msgstr ""
"幫我們一起讓會議變得更好!請填寫志工表單"
"a>。"
@@ -3558,11 +3538,12 @@ msgstr "議程可能隨時更改。請頻繁確認本頁資訊,以獲
#: templates/pycontw-2019/events/talk_list.html:34
#, python-format
msgid ""
-""
-"%(proposal_title)s by %(speaker_names)s"
+"%(proposal_title)s by "
+"%(speaker_names)s"
msgstr ""
-""
-"%(proposal_title)s — %(speaker_names)s"
+"%(proposal_title)s — %(speaker_names)s"
#: templates/pycontw-2018/index.html:32 templates/pycontw-2019/index.html:39
#: templates/pycontw-2020/index.html:60 templates/pycontw-2021/index.html:63
@@ -4385,9 +4366,9 @@ msgstr ""
#: templates/pycontw-2025/_includes/ext/discord.html:123
msgid ""
"3.Join the Python Taiwan Discord server.
Python Taiwan Discord server "
-"invite link: https://discord."
-"gg/94hgCQv
In your Discord client App, click the button with plus "
-"sign, and then select 'Join a server'."
+"invite link: https://discord.gg/"
+"94hgCQv
In your Discord client App, click the button with plus sign, "
+"and then select 'Join a server'."
msgstr ""
"3. 加入 Python Taiwan 的 Discord 伺服器.
Python Taiwan 伺服器 邀請連結: "
"https://discord.gg/94hgCQv
在您"
@@ -5192,48 +5173,48 @@ msgstr "忘記密碼
msgid "Sign up now"
msgstr "註冊帳號"
-#: users/forms.py:276
+#: users/forms.py:277
msgid "Email Address"
msgstr "電子郵件信箱"
-#: users/forms.py:295
+#: users/forms.py:296
msgid "Request Password Reset"
msgstr "申請密碼重設"
-#: users/forms.py:331
+#: users/forms.py:332
msgid "Set Password"
msgstr "設定密碼"
-#: users/forms.py:343
+#: users/forms.py:344
msgid "I agree to the code of conduct."
msgstr "我同意行為準則。"
-#: users/forms.py:348
+#: users/forms.py:349
msgid "You must agree to continue."
msgstr "你必須同意才能繼續下一步。"
-#: users/models.py:112
+#: users/models.py:113
msgid "email address"
msgstr "電子郵件信箱"
-#: users/models.py:120
+#: users/models.py:121
msgid "biography"
msgstr "自我介紹"
-#: users/models.py:123
+#: users/models.py:124
msgid ""
"Describe yourself with 1000 characters or less. There will be no formatting."
msgstr "使用少於 1000 個字元介紹您自己。本欄位不含任何格式。"
-#: users/models.py:128
+#: users/models.py:129
msgid "photo"
msgstr "個人照"
-#: users/models.py:132
+#: users/models.py:133
msgid "Facebook"
msgstr "Facebook"
-#: users/models.py:135
+#: users/models.py:136
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 "
@@ -5244,66 +5225,66 @@ msgstr ""
"人頁連結為何,可以使用"
"這個連結,並將開啟頁面的網址列內容貼至本欄位。記得先登入 Facebook!"
-#: users/models.py:144
+#: users/models.py:145
msgid "Twitter"
msgstr "Twitter"
-#: users/models.py:149
+#: users/models.py:150
msgid ""
"Your Twitter handle, without the \"@\" sign. This will be shown when we "
"display your public information."
msgstr "您的 Twitter 帳號,不包含 @ 符號。這個名稱會出現在您的公開資料中。"
-#: users/models.py:154
+#: users/models.py:155
msgid "GitHub"
msgstr "GitHub"
-#: users/models.py:159
+#: users/models.py:160
msgid ""
"Your GitHub account, without the \"@\" sign. This will be shown when we "
"display your public information."
msgstr "您的 GitHub 帳號,不包含 @ 符號。這個名稱會出現在您的公開資料中。"
-#: users/models.py:167
+#: users/models.py:168
msgid "Designates whether the user has verified email ownership."
msgstr "指定本使用者是否已完成 email 認證。"
-#: users/models.py:171
+#: users/models.py:172
msgid "staff status"
msgstr "管理員權限"
-#: users/models.py:174
+#: users/models.py:175
msgid "Designates whether the user can log into this admin site."
msgstr "指定本使用者是否可以登入本管理站台。"
-#: users/models.py:178
+#: users/models.py:179
msgid "active"
msgstr "已啟用"
-#: users/models.py:181
+#: users/models.py:182
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
msgstr "指定本使用者是否被視為 active。取消勾選此選項而非刪除帳號。"
-#: users/models.py:186
+#: users/models.py:187
msgid "date joined"
msgstr "註冊日期"
-#: users/models.py:197
+#: users/models.py:198
msgid "users"
msgstr "使用者"
-#: users/models.py:297
+#: users/models.py:300
#, python-brace-format
msgid "Verify your email address on {host}"
msgstr "於 {host} 認證您的信箱地址"
-#: users/models.py:315
+#: users/models.py:318
msgid "latest agreed CoC version"
msgstr "最後同意的 CoC 版本"
-#: users/models.py:319
+#: users/models.py:322
msgid "agreed at"
msgstr "同意於"