style: 文案修改
This commit is contained in:
4
src/assets/images/award/youtube.svg
Normal file
4
src/assets/images/award/youtube.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="20" height="20" rx="3" fill="white"/>
|
||||
<path d="M17.6865 6.63967C17.514 5.99433 17.0057 5.486 16.3603 5.3135C15.1907 5 10.5 5 10.5 5C10.5 5 5.80933 5 4.63967 5.3135C3.99433 5.486 3.486 5.99433 3.3135 6.63967C3 7.80933 3 10.25 3 10.25C3 10.25 3 12.6907 3.3135 13.8603C3.486 14.5057 3.99433 15.014 4.63967 15.1865C5.80933 15.5 10.5 15.5 10.5 15.5C10.5 15.5 15.1907 15.5 16.3603 15.1865C17.0057 15.014 17.514 14.5057 17.6865 13.8603C18 12.6907 18 10.25 18 10.25C18 10.25 18 7.80933 17.6865 6.63967ZM9 12.5V8L12.897 10.25L9 12.5Z" fill="#232323"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 659 B |
@@ -38,6 +38,7 @@ export default {
|
||||
fileNameDesc: 'AiDAGlobalDesignAward\n2026_[Your Full Name]',
|
||||
designPortfolio: 'Design Portfolio(PDF)',
|
||||
submitPdf: 'Submit one single PDF file that includes:',
|
||||
designCollection:'A design collection of 4 outfits',
|
||||
requiredStructure: 'Required structure:',
|
||||
pdfDesignTitle: 'Design title',
|
||||
pdfMoodboard: 'Moodboard',
|
||||
@@ -204,7 +205,7 @@ export default {
|
||||
submissionFiles: 'Submission Files',
|
||||
uploadYourDesignMaterials: 'Upload your design materials',
|
||||
submissionRequirements: 'Submission Requirements',
|
||||
pdfRequirement: `Single PDF file\n Title, mood board, elaboration\n+ 4 outfit design with materials (max 15 pages)`,
|
||||
pdfRequirement: `Single PDF file\n Title, mood board, elaboration\n+ a design collection of 4 outfits (max 15 pages)`,
|
||||
rightContent: {
|
||||
format: 'Format: Single PDF file, 15 pages, maximum 20MB',
|
||||
video: `Video: Design process, 1080×1920 pixels (9:16 ratio), maximum 60 seconds`
|
||||
|
||||
@@ -6,6 +6,26 @@ import { createI18n } from 'vue-i18n'
|
||||
import enLocale from './en'
|
||||
import zhLocale from './zh-cn'
|
||||
|
||||
export type AppLocale = 'ENGLISH' | 'CHINESE_SIMPLIFIED'
|
||||
|
||||
const DEFAULT_LOCALE: AppLocale = 'ENGLISH'
|
||||
const LANG_PREFIX_RE = /^\/(cn|en)(?=\/|$)/
|
||||
const CN_PREFIX_RE = /^\/cn(?=\/|$)/
|
||||
|
||||
export const getLocaleByPath = (path = ''): AppLocale => {
|
||||
return CN_PREFIX_RE.test(path) ? 'CHINESE_SIMPLIFIED' : DEFAULT_LOCALE
|
||||
}
|
||||
|
||||
export const getPathByLocale = (path: string, locale: AppLocale) => {
|
||||
const normalizedPath = path.replace(LANG_PREFIX_RE, '') || '/'
|
||||
|
||||
if (locale === 'CHINESE_SIMPLIFIED') {
|
||||
return normalizedPath === '/' ? '/cn' : `/cn${normalizedPath}`
|
||||
}
|
||||
|
||||
return normalizedPath
|
||||
}
|
||||
|
||||
// 语言配置整合
|
||||
const messages = {
|
||||
ENGLISH: {
|
||||
@@ -20,7 +40,7 @@ const messages = {
|
||||
const i18n = createI18n({
|
||||
legacy: false,
|
||||
globalInjection: true, // 全局模式,可以直接使用 $t
|
||||
locale: 'ENGLISH',
|
||||
locale: getLocaleByPath(typeof window === 'undefined' ? '/' : window.location.pathname),
|
||||
messages: messages
|
||||
})
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ export default {
|
||||
fileNameDesc: 'AiDAGlobalDesignAward\n2026_[你的名字]',
|
||||
designPortfolio: '设计作品集(PDF)',
|
||||
submitPdf: '提交一份包含以下内容的单一PDF文件:',
|
||||
designCollection: '一个包含4套服装的系列',
|
||||
requiredStructure: '',
|
||||
pdfDesignTitle: '设计标题',
|
||||
pdfMoodboard: '灵感板,情绪板',
|
||||
@@ -42,12 +43,12 @@ export default {
|
||||
pdfMaxPages: '最多15页',
|
||||
pdfMaxSize: '最大文件大小:不超过20MB',
|
||||
pdfLanguage: '语言:英文,或本国语言附带英文翻译',
|
||||
step4Title: '4. 决赛入围选手提交要求',
|
||||
step4Title: '4. 入围决赛选手提交要求',
|
||||
step4Subtitle: '(前20名设计师)',
|
||||
step4Desc: '入围的20名决赛选手需提交实体服装以供最终评审。',
|
||||
step4Desc: '20名入围决赛选手需提交实体服装以供最终评审。',
|
||||
finalistPieces: '件数:1件套装',
|
||||
finalistBasedOn: '服装要求:必须根据提交的AiDA生成设计制作',
|
||||
finalistShipping: '运输说明:\n将由Code-Create提供',
|
||||
finalistShipping: '运输说明由Code-Create提供',
|
||||
bloomYourCreativity: '绽放你的创造力',
|
||||
themeOf2026: '赛事主题',
|
||||
bloomText: {
|
||||
@@ -98,12 +99,12 @@ export default {
|
||||
grandAwards: '最高奖项',
|
||||
goldAwards: '金奖',
|
||||
silverAwards: '银奖',
|
||||
finalists: '决赛选手',
|
||||
finalists: '入围决赛选手',
|
||||
cashAward: '现金奖励',
|
||||
awardCertificate: '获奖证书',
|
||||
globalMediaExposure: '全球媒体曝光',
|
||||
awardCertification: '获奖认证',
|
||||
TravelAllowance: '差旅补贴',
|
||||
TravelAllowance: '差旅津贴',
|
||||
selectionCriteria: '作品评选',
|
||||
evaluation: '考量标准',
|
||||
originality: '原创性',
|
||||
@@ -122,25 +123,26 @@ export default {
|
||||
networkingOpportunities: '链接全球行业人脉',
|
||||
networkingOpportunitiesLabel: '对接设计师与行业领军人物',
|
||||
awardCeremonyHongKong: '香港颁奖盛会',
|
||||
awardCeremonyLabel: '入围者享有差旅津贴',
|
||||
awardCeremonyLabel: '入围决赛选手享有差旅津贴',
|
||||
competitionTimeline: '赛事时间表',
|
||||
shapingTheFuture: '重要节点',
|
||||
timelineApplicationLabel: '申请期限',
|
||||
timelineDeadlineLabel: '',
|
||||
timeJul15: '7月15日',
|
||||
applicationDeadlineDesc: '申请截止日期及\n作品审核流程开始',
|
||||
twentyFinalistsAnnounced: '20名入围者揭晓',
|
||||
announcedLabel: '',
|
||||
twentyFinalistsAnnounced: '20名入围决赛',
|
||||
announcedLabel: '选手揭晓',
|
||||
timeAug30: '8月30日',
|
||||
twentyFinalistsDesc: '公布进入终评阶段\n的20名入围者',
|
||||
twentyFinalistsDesc: '公布进入终评阶段\n的20名入围决赛选手',
|
||||
finalistSubmission: '入围作品',
|
||||
submissionLabel: '提交最后期限',
|
||||
timeSept30: '9月30日',
|
||||
finalistSubmissionDesc: '入围选手需在现场提交\n成品作品,并将成衣实物寄送\n至Code-Create',
|
||||
finalistSubmissionDesc:
|
||||
'入围决赛选手需提交设计作品,\n并将成衣实物寄送至Code-\nCreate(地址另行通知)',
|
||||
receivingOutfits: '收到成衣期限',
|
||||
fromFinalistsLabel: '',
|
||||
timeOctober: '10月23日',
|
||||
receivingOutfitsDesc: 'Code-Create需确认收\n到入围成衣实物',
|
||||
receivingOutfitsDesc: 'Code-Create需确认收到\n入围决赛选手的成衣实物',
|
||||
awardCeremony: '奖项颁发仪式',
|
||||
ceremonyLabel: '',
|
||||
timeNov12: '11月12日',
|
||||
@@ -195,7 +197,7 @@ export default {
|
||||
submissionFiles: '作品上传',
|
||||
uploadYourDesignMaterials: '上传你的设计材料',
|
||||
submissionRequirements: '提交要求',
|
||||
pdfRequirement: `单独PDF文件\n 作品标题、灵感板及情绪板,设计说明\n+ 4套服装设计及材料说明(页数:最多15页)`,
|
||||
pdfRequirement: `单独PDF文件\n 作品标题、灵感板及情绪板,设计说明\n+ 一个包含4套服装的系列(页数:最多15页)`,
|
||||
rightContent: {
|
||||
format: '格式:单个 PDF 文件,最多15页,最大 20MB',
|
||||
video: `视频:创作过程,分辨率1080×1920 像素\n(9:16 纵向比例),最长 60 秒`
|
||||
|
||||
@@ -1,19 +1,7 @@
|
||||
import i18n, { getLocaleByPath } from '@/lang'
|
||||
import router from './index'
|
||||
|
||||
router.beforeEach((to, from, next) => {
|
||||
const path = to.path
|
||||
const list = {
|
||||
cn: 'CHINESE_SIMPLIFIED',
|
||||
en: 'ENGLISH'
|
||||
}
|
||||
if (path.startsWith('/cn') || (to.params.lang === 'cn')) {
|
||||
localStorage.setItem('loginLanguage', 'CHINESE_SIMPLIFIED')
|
||||
} else {
|
||||
localStorage.setItem('loginLanguage', 'ENGLISH')
|
||||
}
|
||||
|
||||
router.beforeEach((to, _from, next) => {
|
||||
i18n.global.locale.value = getLocaleByPath(to.path)
|
||||
next()
|
||||
})
|
||||
|
||||
router.afterEach(() => {
|
||||
})
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
<p>
|
||||
{{ $t('AwardsPage.submitPdf') }}
|
||||
</p>
|
||||
<p class="design-collection">{{ $t('AwardsPage.designCollection') }}</p>
|
||||
<p>{{ $t('AwardsPage.requiredStructure') }}</p>
|
||||
</div>
|
||||
<li>{{ $t('AwardsPage.pdfDesignTitle') }}</li>
|
||||
@@ -663,4 +664,7 @@ ul {
|
||||
}
|
||||
}
|
||||
}
|
||||
.design-collection{
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -76,6 +76,9 @@
|
||||
<a href="https://www.instagram.com/aida_codecreate?igsh=MzRlODBiNWFlZA==" target="_blank">
|
||||
<img src="@/assets/images/award/instagram.png" alt="" />
|
||||
</a>
|
||||
<a href="https://www.youtube.com/@Code-Create_AiDA " target="_blank">
|
||||
<img src="@/assets/images/award/youtube.svg" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="copyright flex flex-col">
|
||||
<p>{{ $t('AwardsPage.copyRight') }}</p>
|
||||
@@ -187,10 +190,10 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch, onMounted } from 'vue'
|
||||
import { ref, computed, watch } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { getCookie, setCookie } from '@/utils/cookie'
|
||||
import { getPathByLocale, type AppLocale } from '@/lang'
|
||||
import { useMessage } from '@/components/Message/message'
|
||||
import { useIsMobile, useIsTablet } from '@/utils/isMobile'
|
||||
|
||||
@@ -216,19 +219,6 @@ const mobileStyle = computed(() => {
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// 初始化语言设置
|
||||
const loginLanguage = localStorage.getItem('loginLanguage')
|
||||
if (loginLanguage) {
|
||||
locale.value = loginLanguage
|
||||
} else {
|
||||
const userLanguage = getCookie('language')
|
||||
if (userLanguage) {
|
||||
locale.value = userLanguage
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const showQRcode = ref(false)
|
||||
const handleCloseQRcode = () => {
|
||||
showQRcode.value = false
|
||||
@@ -369,24 +359,23 @@ const handleClickCopyEmail = () => {
|
||||
success(t('AwardsPage.copyMail'))
|
||||
}
|
||||
|
||||
const handleChangeLanguage = (language) => {
|
||||
if (language === 'CHINESE_SIMPLIFIED') {
|
||||
locale.value = 'CHINESE_SIMPLIFIED'
|
||||
} else {
|
||||
locale.value = 'ENGLISH'
|
||||
}
|
||||
localStorage.setItem('loginLanguage', language)
|
||||
setCookie('language', language)
|
||||
const handleChangeLanguage = (language: AppLocale) => {
|
||||
locale.value = language
|
||||
|
||||
const targetPath = getPathByLocale(route.path, language)
|
||||
if (targetPath === route.path) return
|
||||
|
||||
router.push({
|
||||
path: targetPath,
|
||||
query: { ...route.query },
|
||||
hash: route.hash
|
||||
})
|
||||
}
|
||||
|
||||
const handleBtnClick = () => {
|
||||
if (!start.value) return
|
||||
const lang = route.params.lang ? `/${route.params.lang}` : ''
|
||||
if (btnType.value === 'index') {
|
||||
router.push({ path: `${lang}/contestants`, query: { ...route.query } })
|
||||
} else {
|
||||
router.push({ path: `${lang}/`, query: { ...route.query } })
|
||||
}
|
||||
const targetPath = getPathByLocale(btnType.value === 'index' ? '/contestants' : '/', locale.value as AppLocale)
|
||||
router.push({ path: targetPath, query: { ...route.query } })
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -471,10 +460,10 @@ const handleBtnClick = () => {
|
||||
padding-right: 22rem;
|
||||
background-color: #232323;
|
||||
.social-list {
|
||||
column-gap: 2rem;
|
||||
column-gap: 0.8rem;
|
||||
img {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
width: 3.8rem;
|
||||
height: 3.8rem;
|
||||
}
|
||||
}
|
||||
.copyright {
|
||||
|
||||
@@ -52,6 +52,7 @@ import bannerPad from '@/assets/images/pad_version/banner_pad.mp4'
|
||||
import bannerPadZh from '@/assets/images/pad_version/banner_pad_chinese.mp4'
|
||||
import bannerMobile from '@/assets/images/mobile_version_background/banner_mobile.mp4'
|
||||
import bannerZhMobile from '@/assets/images/mobile_version_background/banner_mobile_zh.mp4'
|
||||
import { getPathByLocale, type AppLocale } from '@/lang'
|
||||
import { useIsMobile, useIsTablet } from '@/utils/isMobile'
|
||||
const { isMobile } = useIsMobile()
|
||||
const { isTablet } = useIsTablet()
|
||||
@@ -88,7 +89,7 @@ const bannerUrl = computed(() => {
|
||||
const handleSubmitApplication = () => {
|
||||
if (!start.value) return
|
||||
router.push({
|
||||
path: '/contestants',
|
||||
path: getPathByLocale('/contestants', locale.value as AppLocale),
|
||||
query: {
|
||||
...route.query
|
||||
}
|
||||
@@ -142,10 +143,12 @@ const handleSubmitApplication = () => {
|
||||
}
|
||||
.ddl {
|
||||
position: absolute;
|
||||
bottom: -4rem;
|
||||
left: 0;
|
||||
top: calc(100% + 1.8rem);
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
text-align: center;
|
||||
width: 41rem;
|
||||
white-space: nowrap;
|
||||
font-family: 'ArialBold';
|
||||
font-weight: 700;
|
||||
font-size: 2rem;
|
||||
@@ -185,8 +188,11 @@ const handleSubmitApplication = () => {
|
||||
.ddl {
|
||||
white-space: pre-line;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
padding-left: 4rem;
|
||||
bottom: -6rem;
|
||||
top: calc(100% + 2rem);
|
||||
left: 0;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -199,8 +205,11 @@ const handleSubmitApplication = () => {
|
||||
.ddl {
|
||||
white-space: pre-line;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
padding-left: 4rem;
|
||||
bottom: -6rem;
|
||||
top: calc(100% + 2rem);
|
||||
left: 0;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user