Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add a new tab #515

Merged
merged 6 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions components/core/header/nav-bar/NavBar.i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export default genI18nMessages({
accommodation: 'Accommodation',
proposalSystemUrl: 'Proposal System',
codeOfConduct: 'Code of Conduct',
posterSession: 'Poster Session',
},
'zh-hant': {
about: '關於',
Expand Down Expand Up @@ -66,5 +67,6 @@ export default genI18nMessages({
accommodation: '住宿資訊',
proposalSystemUrl: '投稿系統',
codeOfConduct: '行為準則',
posterSession: 'Poster Session',
},
})
1 change: 1 addition & 0 deletions components/core/header/nav-bar/nav-bar-items.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export default Object.freeze({
{ i18nKey: 'talk', value: '/speaking/talk' },
{ i18nKey: 'tutorial', value: '/speaking/tutorial' },
{ i18nKey: 'recording', value: '/speaking/recording' },
{ i18nKey: 'posterSession', value: '/speaking/poster-session' },
],
conference: [
{ i18nKey: 'keynotes', value: '/conference/keynotes' },
Expand Down
124 changes: 124 additions & 0 deletions i18n/speaking/poster-session.i18n.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
import { genI18nMessages } from '~/utils/i18n.utils'

export default genI18nMessages({
'en-us': {
title: 'Call for Poster Session',
intro: [
"Welcome to PyCon TW's first Poster Session!",
'Poster Session is a presentation format that allows speakers to present their topic through posters and interact directly with individual audiences. At PyCon Taiwan 2024, we tried the Poster Session activity for the first time, hoping to allow more people to introduce their results or issues of concern. You can submit a paper on any Python-related topic and it will be displayed as a poster, and then audiences can interact with you directly.',
],

info: {
importantDates: {
title: 'Important Dates',
description: [
'PyCon TW Conference dates:Sep. 21st - 22nd',
'Call for Poster Begins:May. 1st',
'Call for Poster Ends:Jun 15th 23:59:5 ({aoe})',
'Announcement of Acceptance:Jun 30th',
],
},

howToSubmit: {
title: 'How to Submit Your Proposal',
description: [
'Please go to the {posterForm} form to submit, provide the Poster topic, abstract, ' +
'content description, and your personal information.',
'Backboard dimensions 900mm x 1800mm, multiple posters allowed within the above dimensions.',
],
},

topics: {
title: 'Topics',
description: [
'We accept a broad range of Python-related proposals from academic research to commercial projects, case studies, ' +
'or soft topics such as running a community, making good communication, mental health, etc. ' +
'So basically, if you are reading this, just submit your proposal!{br}{br}',
'We encourage speakers to talk about your own Python package or application, ' +
'your experience of learning Python or hosting a Python community, etc. ' +
'Talks on advanced topics are highly welcomed as well. ' +
"For your inspiration, our committee has suggested that they'd love to see talks on the following topics: " +
'A.I., Machine Learning, Data Analysis, FinTech, Medical Care, Semiconductor, Manufacturing, Civic Technology, etc.',
],
},

inappropriate: {
title: 'Inappropriate Words or Images',
description: [
'Please note that PyCon Taiwan is a conference where the audience comes from different cultural backgrounds. Some jokes may be rude to others. If you want to add some humorous images or words to your speech, please double check if there is any possibility of offense, and refer to our {coc}.',
],
},
},

terms: {
aoe: 'AoE',
coc: 'Code of Conduct',
posterForm: 'Poster Session submission',
},

og: {
title: 'Call for Poster Session',
description: "Welcome to PyCon TW's first Poster Session!",
},
},
'zh-hant': {
title: 'Poster Session 稿件募集',
intro: [
'首先,謝謝您考慮投稿 Poster 至 PyCon Taiwan 2024。',
'Poster Session 是一個讓投稿者可以透過海報展示其分享內容,並與個別與會者直接互動的一種展示形式。在 PyCon Taiwan 2024 我們初次嘗試 Poster Session 的活動,希望可以讓更多人介紹自己的成果或是關注的議題。您可以投稿任何跟 Python 有關的主題,屆時將以海報形式展出,然後與會者可與您直接互動。',
],
info: {
importantDates: {
title: '重要日期',
description: [
'大會日期: 9/21 - 9/22',
'Poster 開放徵稿:2024 年 05 月 01 日',
'Poster 徵稿截止:2024 年 06 月 15 日 23:59:59 ({aoe})',
'稿件錄取通知:2024 年 06 月 30 日',
],
steps: [],
},

howToSubmit: {
title: '提交稿件',
description: [
'請您前往 {posterForm} 進行投稿,提供 Poster 的主題、摘要、內容說明,以及填妥您的個人資訊。',
'背板尺寸 900mm x 1800mm,在上述尺寸內允許多張海報',
],
steps: [],
},

topics: {
title: '投稿主題',
description: [
'我們接受 Python 相關的各類投稿,包括學術報告、商用專案以及案例研究等,或是社群經營、溝通、心理健康、失敗經驗等軟議題。{br}{br}',
'若您在人工智慧(AI)、機器學習(Machine Learning)、資料分析(Data Analysis)、金融科技(FinTech)、醫療(Medical Care)、半導體(Semiconductor)、製造業(Manufacturing)、公民科技(Civic Technology)' +
'等相關領域上有卓越成就與發現,我們誠摯歡迎您的投稿。' +
'如果講師有任何關於 Python 的應用、使用 Python 解決問題或如何主持您的社群圈的經驗,也都邀請您投稿到 PyCon Taiwan。' +
'當然我們也非常歡迎適合進階者內容的投稿,例如探討 Python 內部運作等。' +
'另外,如果您的演講是關於特定的 Python 套件,請確保它已被廣泛使用,或者您可以考慮將重點放在相關的最佳實踐上,這類主題會有更多的受眾。',
],
steps: [],
},

inappropriate: {
title: '不適當的言語或圖像',
description: [
'請注意,PyCon Taiwan 的會眾來自不同文化背景,某些團體認為有趣的笑話對於其他團體來說可能是無禮的。如果您想在演講過程加入一些幽默的圖像或用詞,請再三檢視是否會有冒犯的可能,並請參考我們的{coc}。',
],
steps: [],
},
},

terms: {
aoe: 'AoE',
coc: '行為準則',
posterForm: 'Poster Session 投稿表單',
},

og: {
title: 'Poster Session 稿件募集',
description: '首先,謝謝您考慮投稿 Poster 至 PyCon Taiwan 2024。',
},
},
})
159 changes: 159 additions & 0 deletions pages/speaking/poster-session.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
<template>
<i18n-page-wrapper>
<core-h1 :title="$t('title')"></core-h1>
<div class="mb-[50px]">
<i18n
v-for="(content, i) in $t('intro')"
:key="`posterSession_${i}`"
:path="`intro.${i}`"
tag="p"
class="posterSession"
>
</i18n>
</div>

<div v-for="(section, i) in info" :key="`posterSession.${i}`">
<two-col-wrapper>
<div slot="default">
<i18n
:key="`info.${section.tag}.title`"
:path="`info.${section.tag}.title`"
class="title"
tag="p"
>
</i18n>
</div>
<div slot="right-col">
<i18n
v-for="(description, index) in $t(
`info.${section.tag}.description`,
)"
:key="`info.${section.tag}.description.${index}`"
:path="`info.${section.tag}.description.${index}`"
:tag="`${section.isDescriptionList ? 'li' : 'div'}`"
>
<template #br><br /></template>
<template
v-for="link in section.links"
:slot="link.slot"
>
<ext-link
v-if="link.isExternalLink"
:key="`${link.textKey}.external`"
:href="link.url"
highlight
>
{{ $t(link.textKey) }}
</ext-link>
<locale-link
v-else
:key="`${link.textKey}.local`"
:to="link.url"
highlight
>
{{ $t(link.textKey) }}
</locale-link>
</template>
</i18n>
</div>
</two-col-wrapper>
</div>
</i18n-page-wrapper>
</template>

<script>
import I18nPageWrapper from '@/components/core/i18n/PageWrapper'
import CoreH1 from '@/components/core/titles/H1'
import TwoColWrapper from '@/components/core/layout/TwoColWrapper'
import LocaleLink from '@/components/core/links/LocaleLink.vue'
import ExtLink from '@/components/core/links/ExtLink.vue'
import i18n from '@/i18n/speaking/poster-session.i18n'

export default {
i18n,
name: 'PageSpeakingposterSession',
components: {
I18nPageWrapper,
CoreH1,
TwoColWrapper,
ExtLink,
LocaleLink,
},
data() {
return {
info: [
{
tag: 'importantDates',
isDescriptionList: true,
links: [
{
slot: 'aoe',
textKey: 'terms.aoe',
url: 'https://www.timeanddate.com/worldclock/converter.html?iso=20240615T155900&p1=tz_aoe&p2=241&p3=1440',
isExternalLink: true,
},
{
slot: 'position',
textKey: 'terms.position',
url: 'https://www.nstm.gov.tw/English/InformationForVisitorsEng/EnvironmentEng/EnvirInfoEng.htm',
isExternalLink: true,
},
],
},
{
tag: 'howToSubmit',
isDescriptionList: true,
links: [
{
slot: 'posterForm',
textKey: 'terms.posterForm',
url: `https://docs.google.com/forms/d/e/1FAIpQLScfBC52CJ35-0mlp894sMkHxpB1dYDPf-10nUgPIbRUxV7Ayw/viewform`,
isExternalLink: true,
},
],
},
{
tag: 'topics',
isDescriptionList: false,
},
{
tag: 'inappropriate',
isDescriptionList: false,
links: [
{
slot: 'coc',
textKey: 'terms.coc',
url: '/about/code-of-conduct',
isExternalLink: false,
},
],
},
],
}
},
head() {
return {
title: this.$i18n.t('title'),
meta: [
{
hid: 'og:title',
property: 'og:title',
content: this.$i18n.t('og.title'),
},
{
hid: 'og:description',
property: 'og:description',
content: this.$i18n.t('og.description'),
},
{
hid: 'description',
name: 'description',
content: this.$i18n.t('og.description'),
},
],
}
},
}
</script>

<style scoped></style>
Loading