feat: 竞赛主页中文

This commit is contained in:
2026-02-04 10:57:25 +08:00
parent 287825b4bf
commit ca782d0aff
13 changed files with 4016 additions and 3682 deletions

View File

@@ -231,7 +231,8 @@ export default {
colorboard: '调色板', colorboard: '调色板',
sketchboard: '线稿板', sketchboard: '线稿板',
mannequins: '人体模型', mannequins: '人体模型',
masnnequinHint: '您使用的模特与当前的衣服不匹配,这将导致生成的模型不使用所选的衣服', masnnequinHint:
'您使用的模特与当前的衣服不匹配,这将导致生成的模型不使用所选的衣服',
FinalizeCollection: '完成系列', FinalizeCollection: '完成系列',
jsContent1: '您必须选择一种或多种颜色进行下一步。', jsContent1: '您必须选择一种或多种颜色进行下一步。',
jsContent2: '您必须选择一种或多种颜色进行下一步。', jsContent2: '您必须选择一种或多种颜色进行下一步。',
@@ -978,17 +979,13 @@ export default {
subscriptionRenewal: '没有自动续订的订阅计划.' subscriptionRenewal: '没有自动续订的订阅计划.'
}, },
guide: { guide: {
guide1: guide1: '在<strong>工作空间</strong>中,您可以个性化您的设计设置,包括选择适用于男装或女装的设计,以及选择用于创作的人体模型。',
'在<strong>工作空间</strong>中,您可以个性化您的设计设置,包括选择适用于男装或女装的设计,以及选择用于创作的人体模型。',
guide2: '选择您要设计的服装性别。', guide2: '选择您要设计的服装性别。',
guide3: '在此更改人体模型。', guide3: '在此更改人体模型。',
guide4: guide4: '您目前可以从我们的系统库中选择人体模型。稍后,您还可以在注册自己的人体模型后从用户库中进行选择。',
'您目前可以从我们的系统库中选择人体模型。稍后,您还可以在注册自己的人体模型后从用户库中进行选择。',
guide5: '在这里开始您的创意之旅。 ', guide5: '在这里开始您的创意之旅。 ',
guide6: guide6: '对于情绪板、印花或服装,我们提供三种不同的图片添加方法。第一种选择是<strong>上传</strong>,允许您直接从本地设备上传。',
'对于情绪板、印花或服装,我们提供三种不同的图片添加方法。第一种选择是<strong>上传</strong>,允许您直接从本地设备上传。', guide7: '第二种方法是从您的<strong>收藏</strong>中选择。<br> 您可能会注意到您的库页面目前是空的;不必担心。您上传的所有图像都将自动添加到您的库中。将来,您无需每次上传,只需从您的库中选择即可。',
guide7:
'第二种方法是从您的<strong>收藏</strong>中选择。<br> 您可能会注意到您的库页面目前是空的;不必担心。您上传的所有图像都将自动添加到您的库中。将来,您无需每次上传,只需从您的库中选择即可。',
guide8: '第三种方法是使用最新的图像生成技术<strong>生成</strong>图像。', guide8: '第三种方法是使用最新的图像生成技术<strong>生成</strong>图像。',
guide9: '输入捕捉您希望表达的情绪的关键词,然后单击<strong>生成</strong>按钮。', guide9: '输入捕捉您希望表达的情绪的关键词,然后单击<strong>生成</strong>按钮。',
guide10: '为您的心情板选择两个图像。', guide10: '为您的心情板选择两个图像。',
@@ -1150,7 +1147,7 @@ export default {
CanvasTitle: { CanvasTitle: {
ModifySketch: '修改草图', ModifySketch: '修改草图',
ModifyItem: '修改单品', ModifyItem: '修改单品',
RedGreen: '编辑前片后片', RedGreen: '编辑前片后片'
}, },
Canvas: { Canvas: {
Canvas: '画布', Canvas: '画布',
@@ -1508,7 +1505,7 @@ export default {
PointSelection: '点选', PointSelection: '点选',
MarqueeSelection: '框选', MarqueeSelection: '框选',
BrushSelection: '画笔', BrushSelection: '画笔',
Erase: '擦除', Erase: '擦除'
}, },
speedList: { speedList: {
High: '高级', High: '高级',
@@ -1614,8 +1611,7 @@ export default {
ForgotPassword: '忘记密码', ForgotPassword: '忘记密码',
Welcome: '欢迎来到', Welcome: '欢迎来到',
AiDA: 'AiDA', AiDA: 'AiDA',
Slogan: Slogan: 'AiDA是一个业界首创的平台致力于赋能时装设计师融汇灵感人机协同共创原创设计。',
'AiDA是一个业界首创的平台致力于赋能时装设计师融汇灵感人机协同共创原创设计。',
LoginMethod: '使用以下方式登录:', LoginMethod: '使用以下方式登录:',
Individual: '个人账号', Individual: '个人账号',
Academic: '学术账号', Academic: '学术账号',
@@ -1625,7 +1621,7 @@ export default {
AgreePolicies: '请勾选条款、隐私政策和费用', AgreePolicies: '请勾选条款、隐私政策和费用',
PasswordConditions: '您必须满足所有密码条件才能注册', PasswordConditions: '您必须满足所有密码条件才能注册',
LoginWithGoogle: '使用谷歌账号登录', LoginWithGoogle: '使用谷歌账号登录',
LoginWithWechat: '使用微信登录', LoginWithWechat: '使用微信登录'
}, },
LoginPersonal: { LoginPersonal: {
Email: '邮箱', Email: '邮箱',
@@ -1718,5 +1714,150 @@ export default {
IncorrectEmailFormat: '请输入正确的邮箱格式', IncorrectEmailFormat: '请输入正确的邮箱格式',
CompleteVerificationCode: '请输入完整的验证码', CompleteVerificationCode: '请输入完整的验证码',
PleaseEnterYourAccountNumberOrPassword: '请输入您的账号或密码' PleaseEnterYourAccountNumberOrPassword: '请输入您的账号或密码'
},
AwardsPage: {
submitApplication: '提交申请',
applicationDeadline: '申请期限2026年7月15日',
howToApply: '申请方法',
stepByStep: '步骤指南',
step1Title: '1. 成为 AiDA 订阅用户',
step1Desc:
'所有申请者在提交时必须是\n活跃的AiDA 订阅用户。\n您可以选择按月或按年订阅。',
step2Title: '2. 通过 AiDA 设计您的作品',
step2Desc: '申请者必须仅使用AiDA\n平台完成设计作品。',
step2ListTitle: '您的作品应清楚体现以下内容:',
step2List: [
'· AiDA在创作中的应用方式',
'· 您的设计理念和创意方向',
'· AI与人类创意的融合'
],
step3Title: '3. 准备提交材料',
processVideo: '创作过程视频',
processVideoDesc: '请提供一段屏幕录制视频,展示您\n使用AiDA的创作过程。',
videoRequirements: '视频要求:',
videoFormat: '格式MP4',
videoResolution: '分辨率1080×1920px',
videoDuration: '时长最长1分钟',
videoSize: '文件大小不超过20MB',
fileName: '文件命名',
fileNameDesc: 'AiDAGlobalDesignAward\n2026_[你的名字]',
designPortfolio: '设计作品集(PDF)',
submitPdf: '提交一份包含以下内容的单一PDF文件',
requiredStructure: '',
pdfDesignTitle: '设计标题',
pdfMoodboard: '灵感板,情绪板',
pdfConcept: '概念说明',
pdfConceptDesc: '(说明如何使用AiDA进行设计创作)',
pdfRequirements: 'PDF要求',
pdfMaxPages: '最多15页',
pdfMaxSize: '最大文件大小不超过20MB',
pdfLanguage: '语言:英文,或本国语言附带英文翻译',
step4Title: '4. 决赛入围选手提交要求',
step4Subtitle: '(前20名设计师)',
step4Desc: '入围的20名决赛选手需提交实体服装以供最终评审。',
finalistPieces: '件数1件套装',
finalistBasedOn: '服装要求必须根据提交的AiDA生成设计制作',
finalistShipping: '运输说明:\n将由Code-create提供',
bloomYourCreativity: '绽放你的创造力',
themeOf2026: '赛事主题',
bloomText: {
desc1: {
regular1: '',
bold1: 'AiDA全球设计奖2026',
regular2: '是由全球领先的AI时尚解决方案提供商',
bold2: ' Code-create ',
regular3: '主办的',
bold3: '国际设计竞赛,\n',
regular4:
'旨在庆祝人工只能赋能下的未来创意。该赛事汇聚来自世界各地的设计师,\n将AI视为创意伙伴,突破传统时尚边界,探索技术与人类想象力结合的无限可能。',
bold4: '',
regular5: ''
},
desc2: {
regular1: '本届大赛以',
bold1: '"想象遇见创新,创意绽放"',
regular2:
'为主题,邀请参赛者将大胆创意转化为非凡设计,\n在 AI 辅助下实现艺术与科技的完美融合。AiDA 鼓励设计师突破常规,挑战时尚边界,\n并通过平台展示才华与全球同行、行业领袖及 AI 专家建立深度联系,共同探索未来设计的可能。'
}
},
panelOfJudges: '终审评委团',
expertise: '权威阵容',
judgesHat: {
jae: 'CodeCreate 韩国分公司总监\nBesfxxk 创意总监',
diego: 'OnTheList香港\n联合创始人兼首席执行官',
gregory: 'Gabriela Hearst\n意大利高级设计师',
vincenzo: '《南华早报》Style 杂志\n香港主编',
tim: '现代传播集团\n上海时尚总监',
desmond: '《Vogue》\n新加坡主编'
},
awardPrizes: '奖项与奖金',
recognition: '荣誉认可',
grandMoney: '5,000美元',
goldMoney: '3,000美元',
silverMoney: '1,000美元',
grandAwards: '最高奖项',
goldAwards: '金奖',
silverAwards: '银奖',
finalists: '决赛选手',
cashAward: '现金奖励',
awardCertificate: '获奖证书',
globalMediaExposure: '全球媒体曝光',
awardCertification: '获奖认证',
TravelAllowance: '差旅补贴',
selectionCriteria: '作品评选',
evaluation: '考量标准',
originality: '原创性',
originalityDesc:
'作品应体现设计师的独到视角与创新方法,展现突破常规的创意与实验性设计。',
creativity: '创造力',
creativityDesc:
'作品应展现设计师的艺术视野与卓越设计水准,体现高水平的创意表达与专业执行力。',
aidaIntegration: 'AiDA 创意整合程度',
aidaIntegrationDesc:
'作品应充分利用 AiDA 功能, 展现 AI 辅助创作在设计中的 有效应用与创新整合。',
execution: '样衣做工',
executionDesc:
'作品应具备高水平的呈现质量与精湛的技术工艺,体现专业执行力与细节把控能力。',
totalCashPrizes: '最高可达9,000美元',
totalCashPrizesLabel: '现金奖励总额',
globalMediaExpose: '全球媒体曝光',
globalMediaExposeLabel: '由国际顶级媒体平台展示​',
networkingOpportunities: '链接全球行业人脉',
networkingOpportunitiesLabel: '对接设计师与行业领军人物',
awardCeremonyHongKong: '香港颁奖盛会​',
awardCeremonyLabel: '入围者享有差旅支持',
competitionTimeline: '赛事时间表',
shapingTheFuture: '重要节点',
timelineApplicationLabel: '申请期限',
timelineDeadlineLabel: '',
timeJul15: '7月15日',
applicationDeadlineDesc: '申请截止日期及\n作品审核流程开始',
twentyFinalistsAnnounced: '20名入围者揭晓',
announcedLabel: '',
timeAug30: '8月30日',
twentyFinalistsDesc: '公布进入终评阶段的 20 名入围者',
finalistSubmission: '入围设计作品',
submissionLabel: '提交最后期限',
timeSept30: '9月30日',
finalistSubmissionDesc: '入围者上传完成的设计\n作品以进行终评',
receivingOutfits: '入围者',
fromFinalistsLabel: '提交成衣',
timeOctober: '10月',
receivingOutfitsDesc: 'AiDA 接收每位入围\n的1套实物服装',
awardCeremony: '奖项颁发仪式',
ceremonyLabel: '',
timeNov12: '11月12日',
awardCeremonyDesc: '颁奖盛典与设计师社\n群聚会 Soho House',
submissionSuccessful: '提交成功',
submissionSuccessfulDesc:
'请在AiDA平台消息中查看您提交的信息。\n如需要您可以编辑。竞赛更新和结果将通过邮件发送。',
deadlinePassed: '申请截止日期已过',
deadlinePassedDesc:
'AiDA全球时尚大奖2026的提交截止日期已结束。\n我们不再接受新的申请。',
uploadInProgress: '上传中…',
uploadSuccess: '上传成功',
uploadFailed: '上传失败',
pdfFileTip: 'PDF文件最大20MB',
videoFileTip: '视频文件(MP4, MOV)1080p最大100MB'
} }
} }

View File

@@ -133,7 +133,8 @@ export default {
UploadOpenimage: 'Upload/Open image', UploadOpenimage: 'Upload/Open image',
jsContent1: jsContent1:
"Have you saved your canvas content? If not, please click 'Save' before closing.", "Have you saved your canvas content? If not, please click 'Save' before closing.",
jsContent2: 'We only provide super-resolution capabilities for printboard images.', jsContent2:
'We only provide super-resolution capabilities for printboard images.',
jsContent3: 'Your points are less than one SR', jsContent3: 'Your points are less than one SR',
jsContent4: 'Your points balance is insufficient', jsContent4: 'Your points balance is insufficient',
jsContent5: jsContent5:
@@ -555,7 +556,8 @@ export default {
inputContent1: 'Input prompt', inputContent1: 'Input prompt',
GeneratePrint: 'Pattern', GeneratePrint: 'Pattern',
maximumLength: 'The entered content exceeds the maximum length.', maximumLength: 'The entered content exceeds the maximum length.',
PatternTitle: 'Generates repeatable designs that can be fully tiled across garments.', PatternTitle:
'Generates repeatable designs that can be fully tiled across garments.',
LogoTitle: LogoTitle:
'Creates standalone graphic designs that can be placed individually or tiled.', 'Creates standalone graphic designs that can be placed individually or tiled.',
SloganTitle: SloganTitle:
@@ -1004,21 +1006,15 @@ export default {
subscriptionRenewal: 'There are no subscription plans with automatic renewal.' subscriptionRenewal: 'There are no subscription plans with automatic renewal.'
}, },
guide: { guide: {
guide1: guide1: "You can personalize your design settings right here in the <strong>Workspace</strong>, including choosing to design for men's or women's wear, as well as selecting the mannequin to use for your creations.",
"You can personalize your design settings right here in the <strong>Workspace</strong>, including choosing to design for men's or women's wear, as well as selecting the mannequin to use for your creations.",
guide2: "Select the apparel type you'd like to work on.", guide2: "Select the apparel type you'd like to work on.",
guide3: 'Change the mannequin here.', guide3: 'Change the mannequin here.',
guide4: guide4: 'You can currently select a mannequin from our system library. Later, you can also choose from the user library after registering your own mannequin.',
'You can currently select a mannequin from our system library. Later, you can also choose from the user library after registering your own mannequin.',
guide5: 'Begin your creative journey here. ', guide5: 'Begin your creative journey here. ',
guide6: guide6: 'For the Moodboard, Printboard, or Sketchboard, we provide three different sourcing methods to add images. The first option is <strong>Upload</strong>, allowing you to <stront>upload</stront> directly from your local device.',
'For the Moodboard, Printboard, or Sketchboard, we provide three different sourcing methods to add images. The first option is <strong>Upload</strong>, allowing you to <stront>upload</stront> directly from your local device.', guide7: "The second method is to select from your <strong>Library</strong>. <br> You might notice that your library page is currently empty; there's no need to worry. All the images you upload will be automatically added to your library. In the future, you won't have to upload each time—you can simply choose from your library instead.",
guide7: guide8: 'The third method is to <strong>Generate</strong> images using the latest Image Generation technology.',
"The second method is to select from your <strong>Library</strong>. <br> You might notice that your library page is currently empty; there's no need to worry. All the images you upload will be automatically added to your library. In the future, you won't have to upload each time—you can simply choose from your library instead.", guide9: 'Enter keywords that capture the mood you wish to express and then click the <strong>Low Quality</strong> button.',
guide8:
'The third method is to <strong>Generate</strong> images using the latest Image Generation technology.',
guide9:
'Enter keywords that capture the mood you wish to express and then click the <strong>Low Quality</strong> button.',
guide10: 'Select two images for your moodboard.', guide10: 'Select two images for your moodboard.',
guide11: 'Click here to layout your moodboard.', guide11: 'Click here to layout your moodboard.',
guide12: 'Click here for next step.', guide12: 'Click here for next step.',
@@ -1068,7 +1064,8 @@ export default {
guide52: 'Click here to generate the product image.', guide52: 'Click here to generate the product image.',
guide53: 'Click this button to apply more tools to the product image. ', guide53: 'Click this button to apply more tools to the product image. ',
guide54: 'We can adjust the lighting and background of this image. ', guide54: 'We can adjust the lighting and background of this image. ',
guide55: 'Click here to generate a product image with lighting from the right side.', guide55:
'Click here to generate a product image with lighting from the right side.',
guide56: 'If you like this result, click the little heart to save it.', guide56: 'If you like this result, click the little heart to save it.',
guide57: 'Click here to go to the export page. ', guide57: 'Click here to go to the export page. ',
guide58: 'You can share your work to the gallery or export to your local device.', guide58: 'You can share your work to the gallery or export to your local device.',
@@ -1184,7 +1181,7 @@ export default {
CanvasTitle: { CanvasTitle: {
ModifySketch: 'Modify Sketch', ModifySketch: 'Modify Sketch',
ModifyItem: 'Modify Item', ModifyItem: 'Modify Item',
RedGreen: 'Edit Front and Back Section', RedGreen: 'Edit Front and Back Section'
}, },
Canvas: { Canvas: {
Canvas: 'Canvas', Canvas: 'Canvas',
@@ -1232,7 +1229,8 @@ export default {
touchDevicePrompts_2: 'Double-click an element to quickly enter edit mode.', touchDevicePrompts_2: 'Double-click an element to quickly enter edit mode.',
touchDevicePrompts_3: 'Two-finger drag to pan the canvas.', touchDevicePrompts_3: 'Two-finger drag to pan the canvas.',
touchDevicePrompts_4: 'Pinch to zoom.', touchDevicePrompts_4: 'Pinch to zoom.',
touchDevicePrompts_5: "Two-finger tap to display the element's transform handles.", touchDevicePrompts_5:
"Two-finger tap to display the element's transform handles.",
touchDevicePrompts_6: 'Three-finger swipe left or right to undo/redo.', touchDevicePrompts_6: 'Three-finger swipe left or right to undo/redo.',
TheDetectedPlatform: 'Guide Detected Platform', TheDetectedPlatform: 'Guide Detected Platform',
BasicOperations: 'Basic Operations', BasicOperations: 'Basic Operations',
@@ -1363,7 +1361,8 @@ export default {
furCurvature: 'Curvature', furCurvature: 'Curvature',
furCurvatureDescription: 'Control the degree of hair curvature', furCurvatureDescription: 'Control the degree of hair curvature',
randomizeDirection: 'Random Cirection', randomizeDirection: 'Random Cirection',
randomizeDirectionDescription: 'Whether to randomize the direction of hair growth', randomizeDirectionDescription:
'Whether to randomize the direction of hair growth',
//水墨 //水墨
InkSettings: 'Ink painting settings', InkSettings: 'Ink painting settings',
InkAmount: 'The amount of ink', InkAmount: 'The amount of ink',
@@ -1389,7 +1388,8 @@ export default {
//马克笔 //马克笔
MarkerSettings: 'Marker Settings', MarkerSettings: 'Marker Settings',
MarkerWidth: 'Brush stroke width', MarkerWidth: 'Brush stroke width',
MarkerWidthDescription: 'Control the width of the brush strokes with the marker pen', MarkerWidthDescription:
'Control the width of the brush strokes with the marker pen',
MarkerCapStyle: 'Writing style', MarkerCapStyle: 'Writing style',
MarkerCapStyleDescription: 'Set the shape of the marker pen tip', MarkerCapStyleDescription: 'Set the shape of the marker pen tip',
MarkerCapStyleRound: 'Round', MarkerCapStyleRound: 'Round',
@@ -1520,15 +1520,18 @@ export default {
CompositeMultiply: 'Multiply', CompositeMultiply: 'Multiply',
CompositeMultiplyTip: 'Multiply: Darken the image', CompositeMultiplyTip: 'Multiply: Darken the image',
CompositeColorBurn: 'Color Burn', CompositeColorBurn: 'Color Burn',
CompositeColorBurnTip: 'Color Burn: Increase contrast and darken the bottom color', CompositeColorBurnTip:
'Color Burn: Increase contrast and darken the bottom color',
CompositeLighten: 'Lighten', CompositeLighten: 'Lighten',
CompositeLightenTip: 'Lighten: Take the brightest color', CompositeLightenTip: 'Lighten: Take the brightest color',
CompositeScreen: 'Screen', CompositeScreen: 'Screen',
CompositeScreenTip: 'Screen: Lighten the image', CompositeScreenTip: 'Screen: Lighten the image',
CompositeColorDodge: 'Color Dodge', CompositeColorDodge: 'Color Dodge',
CompositeColorDodgeTip: 'Color Dodge: Reduce contrast and lighten the bottom color', CompositeColorDodgeTip:
'Color Dodge: Reduce contrast and lighten the bottom color',
CompositeLighter: 'Color Dodge (Add)', CompositeLighter: 'Color Dodge (Add)',
CompositeLighterTip: 'Color Dodge (Add): Add the brightness of the overlapping parts', CompositeLighterTip:
'Color Dodge (Add): Add the brightness of the overlapping parts',
CompositeOverlay: 'Overlay', CompositeOverlay: 'Overlay',
CompositeOverlayTip: 'Overlay: Highlight effect', CompositeOverlayTip: 'Overlay: Highlight effect',
CompositeSoftLight: 'Soft Light', CompositeSoftLight: 'Soft Light',
@@ -1559,7 +1562,7 @@ export default {
PointSelection: 'Point Selection', PointSelection: 'Point Selection',
MarqueeSelection: 'Marquee Selection', MarqueeSelection: 'Marquee Selection',
BrushSelection: 'Brush Selection', BrushSelection: 'Brush Selection',
Erase: 'Erase', Erase: 'Erase'
}, },
speedList: { speedList: {
High: 'High', High: 'High',
@@ -1657,7 +1660,7 @@ export default {
Cancel: 'Cancel', Cancel: 'Cancel',
SelectPlan: 'Select Plan', SelectPlan: 'Select Plan',
AllPlan: 'All', AllPlan: 'All',
PlanStart:'This plan will be actived from', PlanStart: 'This plan will be actived from'
}, },
Login: { Login: {
Login: 'Login', Login: 'Login',
@@ -1665,8 +1668,7 @@ export default {
ForgotPassword: '忘记密码', ForgotPassword: '忘记密码',
Welcome: 'Welcome to', Welcome: 'Welcome to',
AiDA: 'AiDA', AiDA: 'AiDA',
Slogan: Slogan: 'AiDA, a first-to-market technology that empowers fashion designers, based on their creative inspirations, to work with AI to create original designs.',
'AiDA, a first-to-market technology that empowers fashion designers, based on their creative inspirations, to work with AI to create original designs.',
LoginMethod: 'Continue with one of these:', LoginMethod: 'Continue with one of these:',
Individual: 'Individual', Individual: 'Individual',
Academic: 'Academic', Academic: 'Academic',
@@ -1707,7 +1709,8 @@ export default {
IncorrectEmail: 'The email format is incorrect', IncorrectEmail: 'The email format is incorrect',
IncorrectEmailFormat: 'The email format is incorrect', IncorrectEmailFormat: 'The email format is incorrect',
CompleteVerificationCode: 'Please enter the complete verification code.', CompleteVerificationCode: 'Please enter the complete verification code.',
PleaseEnterYourAccountNumberOrPassword: 'Please enter your account number or password' PleaseEnterYourAccountNumberOrPassword:
'Please enter your account number or password'
}, },
LoginSchool: { LoginSchool: {
School: 'School', School: 'School',
@@ -1738,7 +1741,8 @@ export default {
IncorrectEmail: 'The email format is incorrect', IncorrectEmail: 'The email format is incorrect',
IncorrectEmailFormat: 'The email format is incorrect', IncorrectEmailFormat: 'The email format is incorrect',
CompleteVerificationCode: 'Please enter the complete verification code.', CompleteVerificationCode: 'Please enter the complete verification code.',
PleaseEnterYourAccountNumberOrPassword: 'Please enter your account number or password' PleaseEnterYourAccountNumberOrPassword:
'Please enter your account number or password'
}, },
LoginEnterprise: { LoginEnterprise: {
Enterprise: 'Enterprise', Enterprise: 'Enterprise',
@@ -1768,6 +1772,160 @@ export default {
IncorrectEmail: 'The email format is incorrect', IncorrectEmail: 'The email format is incorrect',
IncorrectEmailFormat: 'The email format is incorrect', IncorrectEmailFormat: 'The email format is incorrect',
CompleteVerificationCode: 'Please enter the complete verification code.', CompleteVerificationCode: 'Please enter the complete verification code.',
PleaseEnterYourAccountNumberOrPassword: 'Please enter your account number or password' PleaseEnterYourAccountNumberOrPassword:
'Please enter your account number or password'
},
AwardsPage: {
submitApplication: 'Submit your Application',
applicationDeadline: 'Application Deadline:15th July 2026',
howToApply: 'How to Apply',
stepByStep: 'Step by step',
step1Title: 'Step 1. Become an\nAiDA Subscriber',
step1Desc:
'All applicants must be active\nAiDA subscribers at the time of\nsubmission. You may subscribe\nunder either a monthly or yearly plan.',
step2Title: 'Step 2. Create Your Design Using AiDA',
step2Desc:
'Applicants must create their\ndesigns exclusively using the\nAiDA platform. ',
step2ListTitle: 'Your work should clearly demonstrate:',
step2List: [
'· How AiDA is used as a creative tool',
'· Your design concept and creative direction',
'· The intergration of AI and human creativity'
],
step3Title: 'Step 3. Prepare Your Submission',
processVideo: 'Process Video',
processVideoDesc:
'Include a screenrecorded video\nyour creative process\nusing AiDA.',
videoRequirements: 'Video requirements:',
videoFormat: 'Format: MP4',
videoResolution: 'Resolution: 1080×1920 px',
videoDuration: 'Duration: Maximum 1 minute',
videoSize: 'File size: Maximum 20MB',
fileName: 'File Name',
fileNameDesc: 'AiDAGlobalDesignAward\n2026_[Your Full Name]',
designPortfolio: 'Design Portfolio(PDF)',
submitPdf: 'Submit one single PDF file that includes:',
requiredStructure: 'Required structure:',
pdfDesignTitle: 'Design title',
pdfMoodboard: 'Moodboard',
pdfConcept: 'Concept explanation',
pdfConceptDesc: '(How to use AiDA to develop design)',
pdfRequirements: 'PDF requirements:',
pdfMaxPages: 'Maximum 15 pages',
pdfMaxSize: 'Maximum file size: 20MB',
pdfLanguage: 'Language: English or native language\nwith English translation',
step4Title: 'Step 4. Finalist Requirement',
step4Subtitle: '(for top 20 Designers)',
step4Desc:
'The 20 finalists will be required to\nsubmit physical garments for final\nevaluation',
finalistPieces: 'Number of pieces: 1 full outfit',
finalistBasedOn:
'Garments must be produced\nbased on the submitted\nAiDA-generated designs',
finalistShipping: 'Shipping instructions will be provided by\nCode-create',
bloomYourCreativity: 'Bloom Your Creativity',
themeOf2026: 'Theme of 2026',
bloomText: {
desc1: {
regular1: 'The',
bold1: 'AiDA Global Design Award 2026',
regular2: 'is an ',
bold2: 'international design competition ',
regular3: 'hosted by ',
bold3: 'Code-create ',
regular4: ', a globally leading\n',
bold4: 'AI fashion solutions provider,',
regular5:
'celebrating the future of creativity powered by artificial intelligence.\nBringing together designers from around the world, AiDA empowers AI as a creative partner—pushing fashion beyond traditional boundaries and unlocking new possibilities where technology amplifies human imagination.'
},
desc2: {
regular1: 'Under the theme',
bold1: '“Where Imagination Meets Innovation, Creativity Blooms,” ',
regular2:
'participants are invited to transform bold ideas into extraordinary designs, seamlessly merging human artistry with artificial intelligence to shape the next era of fashion.'
}
},
bloomDesc1:
'The AiDA Global Design Award 2026 is an\ninternational design competition hosted by\nCodeCreate, a globally leading AI fashion solutions provider,\ncelebrating the future of creativity powered by artificial intelligence.\nBringing together designers from around the world, AiDA empowers AI as a creative partner—pushing fashion beyond traditional boundaries and unlocking new possibilities where technology amplifies human imagination.',
bloomDesc2:
'Under the theme “Where Imagination Meets Innovation, Creativity Blooms,” participants are invited to transform bold ideas into extraordinary designs, seamlessly merging human artistry with artificial intelligence to shape the next era of fashion.',
panelOfJudges: 'Panel of Judges',
expertise: 'Expertise',
judgesHat: {
jae: 'Code-create\nKorea Branch Director\nBesfxxk creative director',
diego: 'Co-founder & Chief Father\nOfficer of OnTheList\n(Hong Kong)',
gregory: 'Senior Designer at\nGabriela Heasrst (Italy)',
vincenzo: 'Cheif Editor of SCMP Style\n(Hong Kong)',
tim: 'Group Fashion Direction of\n Modern Media Group\n(Shanghai)',
desmond: 'Cheif Editor of Vogue\n(Singapore)'
},
awardPrizes: 'Award & Prizes',
recognition: 'Recognition',
grandMoney: 'US$5,000',
goldMoney: 'US$3,000',
silverMoney: 'US$1,000',
grandAwards: 'Grand Awards',
goldAwards: 'Gold Awards',
silverAwards: 'Silver Awards',
finalists: 'Finalists',
cashAward: 'Cash Award',
awardCertificate: 'Award Certificate',
globalMediaExposure: 'Global Media Exposure',
awardCertification: 'Award\nCertification',
TravelAllowance: 'Travel Allowance',
selectionCriteria: 'Selection Criteria',
evaluation: 'Evaluation',
originality: 'Originality',
originalityDesc: 'Unique perspective and\ninnovative approach to\nfashion design',
creativity: 'Creativity',
creativityDesc: 'Artistic vision and exceptional\ndesign excellence',
aidaIntegration: 'AiDA Integration',
aidaIntegrationDesc: 'Effective application of\nAiDA functions',
execution: 'Execution',
executionDesc: 'Quality of presentation and\ntechnical craftsmanship',
totalCashPrizes: 'UP TO\nUS$9000',
totalCashPrizesLabel: 'In total cash prizes',
globalMediaExpose: 'GLOBAL MEDIA\nEXPOSE',
globalMediaExposeLabel: 'Showcased by top\ninternational media platforms',
networkingOpportunities: 'NETWORKING\nOPPORTUNITIES',
networkingOpportunitiesLabel:
'Build connections with\ndesigners and industry leaders',
awardCeremonyHongKong: 'AWARD CEREMONY\nIN HONG KONG',
awardCeremonyLabel: 'Travel allowance\nprovided for finalists',
competitionTimeline: 'Competition Timeline',
shapingTheFuture: 'Shaping the Future',
timelineApplicationLabel: 'Application',
timelineDeadlineLabel: 'Deadline',
timeJul15: 'Jul 15',
applicationDeadlineDesc:
'Application deadline and\nentry review process\nbegins.',
twentyFinalistsAnnounced: '20 Finallists',
announcedLabel: 'Announced',
timeAug30: 'Aug 30',
twentyFinalistsDesc:
'Announcement of 20\nfinalists entering final\nevaluation stage.',
finalistSubmission: 'Finallist\nSubmission',
submissionLabel: 'Deadline',
timeSept30: 'Sept 30',
finalistSubmissionDesc:
'Finalists submit\ncompleted outfits for\nfinal assessment.',
receivingOutfits: 'Receiving Outfits',
fromFinalistsLabel: 'from Finallists',
timeOctober: 'October',
receivingOutfitsDesc: 'AiDA receives physical\noutfits from all 20\nfinalists.',
awardCeremony: 'Award',
ceremonyLabel: 'Ceremony',
timeNov12: 'Nov 12',
awardCeremonyDesc: 'Award Ceremony &\nCommunity Gathering\n Soho House.',
submissionSuccessful: 'Submission Successful',
submissionSuccessfulDesc:
'Please review your submitted information in the AiDA in-platform message.\nYou may edit it if needed. Competition updates and results will be sent via email.',
deadlinePassed: 'Application Deadline Passed',
deadlinePassedDesc:
'The submission deadline for AiDA Global Fashion Award 2026 has ended.\nWe are no longer accepting new applications.',
uploadInProgress: 'Upload in progress…',
uploadSuccess: 'Uploaded Successfully',
uploadFailed: 'Upload failed',
pdfFileTip: 'PDF file, max 20MB',
videoFileTip: 'Video file (MP4, MOV), 1080p, max 100MB'
} }
} }

View File

@@ -8,13 +8,13 @@
class="title animation-element" class="title animation-element"
ref="applyTitleRef" ref="applyTitleRef"
> >
How to Apply {{ $t('AwardsPage.howToApply') }}
</div> </div>
<div <div
class="sub-title animation-element" class="sub-title animation-element"
ref="applySubTitleRef" ref="applySubTitleRef"
> >
Step by step {{ $t('AwardsPage.stepByStep') }}
</div> </div>
<div <div
class="requirments-list flex flex-col" class="requirments-list flex flex-col"
@@ -29,26 +29,26 @@
:style="{ background: item.background || '#fff' }" :style="{ background: item.background || '#fff' }"
> >
<div class="item-header flex flex-center"> <div class="item-header flex flex-center">
<div class="item-title">{{ item.type }}</div> <div class="item-title">{{ $t(item.type) }}</div>
</div> </div>
<div class="context-container flex flex-center"> <div class="context-container flex flex-center">
<div <div
class="context" class="context"
v-for="el in item.desc" v-for="el in item.desc"
> >
{{ el }} {{ $t(el) }}
</div> </div>
<div <div
class="list" class="list"
v-if="item.listTitle" v-if="item.listTitle"
> >
<div class="list-title">{{ item.listTitle }}</div> <div class="list-title">{{ $t(item.listTitle) }}</div>
<ul class="list-items"> <ul class="list-items">
<li <li
class="list-item" class="list-item"
v-for="el in item.list" v-for="el in item.list"
> >
{{ el }} {{ $t(el) }}
</li> </li>
</ul> </ul>
</div> </div>
@@ -57,43 +57,36 @@
</div> </div>
<div class="bottom flex"> <div class="bottom flex">
<div class="step-3 flex flex-col animation-element" ref="step3Ref"> <div class="step-3 flex flex-col animation-element" ref="step3Ref">
<div class="header">Step 3. Prepare Your Submission</div> <div class="header">{{ $t('AwardsPage.step3Title') }}</div>
<div class="content flex"> <div class="content flex">
<div class="content-left flex flex-col space-between"> <div class="content-left flex flex-col space-between">
<div class="content-item"> <div class="content-item">
<div class="item-header flex align-center"> <div class="item-header flex align-center">
<div class="point"></div> <div class="point"></div>
<div>Process Video</div> <div>{{ $t('AwardsPage.processVideo') }}</div>
</div> </div>
<div class="desc-wrapper flex flex-col space-between"> <div class="desc-wrapper flex flex-col space-between">
<div class="item-desc"> <div class="item-desc">
Include a screenrecorded video {{ $t('AwardsPage.processVideoDesc') }}
<br />
your creative process
<br />
using AiDA.
<br />
</div> </div>
<ul class="desc-lists"> <ul class="desc-lists">
<div class="desc-lists-title"> <div class="desc-lists-title">
Video requirements: {{ $t('AwardsPage.videoRequirements') }}
</div> </div>
<li>Format: MP4</li> <li>{{ $t('AwardsPage.videoFormat') }}</li>
<li>Resolution: 1080×1920 px</li> <li>{{ $t('AwardsPage.videoResolution') }}</li>
<li>Duration: Maximum 1 minute</li> <li>{{ $t('AwardsPage.videoDuration') }}</li>
<li>File size: Maximum 20MB</li> <li>{{ $t('AwardsPage.videoSize') }}</li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="content-item"> <div class="content-item">
<div class="item-header flex align-center"> <div class="item-header flex align-center">
<div class="point"></div> <div class="point"></div>
<div>File Name</div> <div>{{ $t('AwardsPage.fileName') }}</div>
</div> </div>
<div class="item-desc indent"> <div class="item-desc indent">
AiDAGlobalDesignAward {{ $t('AwardsPage.fileNameDesc') }}
<br />
2026_[Your Full Name]
</div> </div>
</div> </div>
</div> </div>
@@ -101,7 +94,7 @@
<div class="content-item flex flex-col"> <div class="content-item flex flex-col">
<div class="item-header flex align-center"> <div class="item-header flex align-center">
<div class="point"></div> <div class="point"></div>
<div>Design Portfolio(PDF)</div> <div>{{ $t('AwardsPage.designPortfolio') }}</div>
</div> </div>
<div <div
class="desc-wrapper flex-1 flex flex-col space-between" class="desc-wrapper flex-1 flex flex-col space-between"
@@ -109,25 +102,23 @@
<ul class="desc-lists"> <ul class="desc-lists">
<div class="desc-lists-title"> <div class="desc-lists-title">
<p> <p>
Submit one single PDF file that includes: {{ $t('AwardsPage.submitPdf') }}
</p> </p>
<p>Required structure:</p> <p>{{ $t('AwardsPage.requiredStructure') }}</p>
</div> </div>
<li>Design title</li> <li>{{ $t('AwardsPage.pdfDesignTitle') }}</li>
<li>Moodboard</li> <li>{{ $t('AwardsPage.pdfMoodboard') }}</li>
<li>Concept explanation</li> <li>{{ $t('AwardsPage.pdfConcept') }}</li>
<div>(How to used AiDA to develop design)</div> <div>{{ $t('AwardsPage.pdfConceptDesc') }}</div>
</ul> </ul>
<ul class="desc-lists"> <ul class="desc-lists">
<div class="desc-lists-title"> <div class="desc-lists-title">
<p>PDF requirements:</p> <p>{{ $t('AwardsPage.pdfRequirements') }}</p>
</div> </div>
<li>Maximum 15 pages</li> <li>{{ $t('AwardsPage.pdfMaxPages') }}</li>
<li>Maximum file size: 20MB</li> <li>{{ $t('AwardsPage.pdfMaxSize') }}</li>
<li> <li>
Language: English or native language {{ $t('AwardsPage.pdfLanguage') }}
<br />
with English translation
</li> </li>
</ul> </ul>
</div> </div>
@@ -137,31 +128,22 @@
</div> </div>
<div class="step-4 animation-element" ref="step4Ref"> <div class="step-4 animation-element" ref="step4Ref">
<div class="header flex flex-col flex-center"> <div class="header flex flex-col flex-center">
<p>Step 4. Finalist Requirement</p> <p>{{ $t('AwardsPage.step4Title') }}</p>
<p class="sub-title">(for top 20 Designers)</p> <p class="sub-title">{{ $t('AwardsPage.step4Subtitle') }}</p>
</div> </div>
<div class="content"> <div class="content">
<div class="content-item"> <div class="content-item">
<div class="desc-wrapper flex-1 flex flex-col space-between"> <div class="desc-wrapper flex-1 flex flex-col space-between">
<ul class="desc-lists"> <ul class="desc-lists">
<div class="desc-lists-title"> <div class="desc-lists-title">
The 20 finalists will be required to {{ $t('AwardsPage.step4Desc') }}
<br />
submit physical garments for final
<br />
evaluation
</div> </div>
<li>Number of pieces: 1</li> <li>{{ $t('AwardsPage.finalistPieces') }}</li>
<li> <li>
Garments must be produced {{ $t('AwardsPage.finalistBasedOn') }}
<br />
based on the submitted
<br />
AiDA-generated designs
</li> </li>
<li> <li>
Shipping instructions will be provided by {{ $t('AwardsPage.finalistShipping') }}
Code-create
</li> </li>
</ul> </ul>
</div> </div>
@@ -175,25 +157,24 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
const { t } = useI18n()
const leftRequirment = ref([ const leftRequirment = ref([
{ {
type: 'Step 1. Become an\nAiDA Subscriber', type: 'AwardsPage.step1Title',
desc: [ desc: ['AwardsPage.step1Desc']
'All applicants must be active\nAiDA subscribers at the time of\nsubmission. You may subscribe\nunder either a monthly or yearly plan.'
]
}, },
{ {
type: 'Step 2. Create Your Design Using AiDA', type: 'AwardsPage.step2Title',
desc: [ desc: ['AwardsPage.step2Desc'],
'Applicants must create their\ndesigns exclusively using the\nAiDA platform. ' listTitle: 'AwardsPage.step2ListTitle',
],
listTitle: 'Your work shold clearly demonstrate:',
list: [ list: [
'· How AiDA is used as a creative tool', 'AwardsPage.step2List[0]',
'· Your design concept and creative direction', 'AwardsPage.step2List[1]',
'· The intergration of AI and human creativity' 'AwardsPage.step2List[2]'
], ],
background: '#F9F9F9' background: '#F9F9F9'
} }

View File

@@ -4,46 +4,44 @@
class="title" class="title"
ref="titleRef" ref="titleRef"
> >
Bloom Your Creativity {{ $t('AwardsPage.bloomYourCreativity') }}
</div> </div>
<div <div
class="season" class="season"
ref="subtitleRef" ref="subtitleRef"
> >
Theme of 2026 {{ $t('AwardsPage.themeOf2026') }}
</div> </div>
<div <div
class="desc" class="desc"
ref="textRef" ref="textRef"
> >
<p class="section-1"> <p class="section-1">
The {{ $t('AwardsPage.bloomText.desc1.regular1') }}
<span class="arial-bold">AiDA Global Design Award 2026</span> <span class="arial-bold">
is an {{ $t('AwardsPage.bloomText.desc1.bold1') }}
<span class="arial-bold">international design competition</span> </span>
hosted by {{ $t('AwardsPage.bloomText.desc1.regular2') }}
<span class="arial-bold">CodeCreate</span> <span class="arial-bold">
, a globally leading {{ $t('AwardsPage.bloomText.desc1.bold2') }}
<br /> </span>
<span class="arial-bold">AI fashion solutions provider,</span> {{ $t('AwardsPage.bloomText.desc1.regular3') }}
celebrating the future of creativity powered by artificial intelligence. <span class="arial-bold">
<br /> {{ $t('AwardsPage.bloomText.desc1.bold3') }}
Bringing together designers from around the world, AiDA empowers AI as a </span>
creative partnerpushing fashion beyond {{ $t('AwardsPage.bloomText.desc1.regular4') }}
<br /> <span class="arial-bold">
traditional boundaries and unlocking new possibilities where technology {{ $t('AwardsPage.bloomText.desc1.bold4') }}
amplifies human imagination. </span>
{{ $t('AwardsPage.bloomText.desc1.regular5') }}
</p> </p>
<p class="section-2"> <p class="section-2">
Under the theme {{ $t('AwardsPage.bloomText.desc2.regular1') }}
<span class="arial-bold"> <span class="arial-bold">
Where Imagination Meets Innovation, Creativity Blooms, {{ $t('AwardsPage.bloomText.desc2.bold1') }}
</span> </span>
participants are invited to transform bold ideas {{ $t('AwardsPage.bloomText.desc2.regular2') }}
<br />
into extraordinary designs, seamlessly merging human artistry with
artificial intelligence to shape the next era of fashion.
</p> </p>
</div> </div>
</div> </div>
@@ -51,8 +49,11 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue' import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
const { t } = useI18n()
const titleRef = ref<HTMLElement | null>(null) const titleRef = ref<HTMLElement | null>(null)
const subtitleRef = ref<HTMLElement | null>(null) const subtitleRef = ref<HTMLElement | null>(null)
const textRef = ref<HTMLElement | null>(null) const textRef = ref<HTMLElement | null>(null)
@@ -192,6 +193,7 @@
padding: 0 21.5rem; padding: 0 21.5rem;
line-height: 4.5rem; line-height: 4.5rem;
margin-bottom: 12.3rem; margin-bottom: 12.3rem;
white-space: pre-line;
.section-2 { .section-2 {
margin-top: 4rem; margin-top: 4rem;
} }

View File

@@ -1,8 +1,8 @@
<template> <template>
<div class="judges-container flex flex-col align-center"> <div class="judges-container flex flex-col align-center">
<div class="title" ref="judgesTitleRef">Panel of Judges</div> <div class="title" ref="judgesTitleRef">{{ $t('AwardsPage.panelOfJudges') }}</div>
<!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> --> <!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> -->
<div class="sub-title" ref="judgesSubTitleRef">Expertise</div> <div class="sub-title" ref="judgesSubTitleRef">{{ $t('AwardsPage.expertise') }}</div>
<div class="judgement-list" ref="judgementListRef"> <div class="judgement-list" ref="judgementListRef">
<div <div
class="judgement-item flex flex-col align-center" class="judgement-item flex flex-col align-center"
@@ -10,8 +10,8 @@
:key="item.name" :key="item.name"
> >
<img :src="item.picture" class="picture" /> <img :src="item.picture" class="picture" />
<div class="name">{{ item.name }}</div> <div class="name">{{ $t(item.name) }}</div>
<div class="desc">{{ item.desc }}</div> <div class="desc">{{ $t(item.desc) }}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -19,6 +19,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { onBeforeUnmount, onMounted, nextTick, ref } from 'vue' import { onBeforeUnmount, onMounted, nextTick, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
import jae from '@/assets/images/award/jae.png' import jae from '@/assets/images/award/jae.png'
import diego from '@/assets/images/award/diego.png' import diego from '@/assets/images/award/diego.png'
@@ -27,36 +28,38 @@ import vincenzo from '@/assets/images/award/vincenzo.png'
import tim from '@/assets/images/award/tim.png' import tim from '@/assets/images/award/tim.png'
import desmond from '@/assets/images/award/desmond.png' import desmond from '@/assets/images/award/desmond.png'
const { t } = useI18n()
const judgements = [ const judgements = [
{ {
picture: jae, picture: jae,
name: 'Jae Hyuk Lim', name: 'Jae Hyuk Lim',
desc: 'Code-create\nKorea Branch Director\nBesfxxk creative director' desc: 'AwardsPage.judgesHat.jae'
}, },
{ {
picture: diego, picture: diego,
name: 'Diego Dultzin Lacoste', name: 'Diego Dultzin Lacoste',
desc: 'Co-founder & Chief Father\nOfficer of OnTheList\n(Hong Kong)' desc: 'AwardsPage.judgesHat.diego'
}, },
{ {
picture: gregory, picture: gregory,
name: 'Gregory de la Hogue Moran', name: 'Gregory de la Hogue Moran',
desc: 'Senior Designer at\nGabriela Heasrst (Italy)' desc: 'AwardsPage.judgesHat.gregory'
}, },
{ {
picture: vincenzo, picture: vincenzo,
name: 'Vincenzo La Torre', name: 'Vincenzo La Torre',
desc: 'Cheif Editor of SCMP Style\n(Hong Kong)' desc: 'AwardsPage.judgesHat.vincenzo'
}, },
{ {
picture: tim, picture: tim,
name: 'Tim Lim', name: 'Tim Lim',
desc: 'Group Fashion Direction of\n Modern Media Group\n(Shanghai)' desc: 'AwardsPage.judgesHat.tim'
}, },
{ {
picture: desmond, picture: desmond,
name: 'Desmond Lim', name: 'Desmond Lim',
desc: 'Cheif Editor of Vogue\n(Singapore)' desc: 'AwardsPage.judgesHat.desmond'
} }
] ]

View File

@@ -8,14 +8,14 @@
class="title" class="title"
ref="prizesTitleRef" ref="prizesTitleRef"
> >
Award & Prizes {{ $t('AwardsPage.awardPrizes') }}
</div> </div>
<!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> --> <!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> -->
<div <div
class="desc" class="desc"
ref="prizesSubTitleRef" ref="prizesSubTitleRef"
> >
Recongnition {{ $t('AwardsPage.recognition') }}
</div> </div>
</div> </div>
<div <div
@@ -29,15 +29,15 @@
:key="item.name" :key="item.name"
> >
<div class="prize-money"> <div class="prize-money">
{{ item.money }} {{ $t(item.money) }}
</div> </div>
<div class="prize-name">{{ item.name }}</div> <div class="prize-name">{{ $t(item.name) }}</div>
<div class="prize-desc flex flex-col flex-center"> <div class="prize-desc flex flex-col flex-center">
<div <div
class="desc-item" class="desc-item"
v-for="el in item.desc" v-for="el in item.desc"
> >
{{ el }} {{ $t(el) }}
</div> </div>
</div> </div>
</div> </div>
@@ -47,28 +47,46 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
const { t } = useI18n()
const prizes = [ const prizes = [
{ {
money: 'US$5000', money: 'AwardsPage.grandMoney',
name: 'Grand Awards', name: 'AwardsPage.grandAwards',
desc: ['Cash Award', 'Award Ceritificate', 'Global Media Exposure'] desc: [
'AwardsPage.cashAward',
'AwardsPage.awardCertificate',
'AwardsPage.globalMediaExposure'
]
}, },
{ {
money: 'US$3000', money: 'AwardsPage.goldMoney',
name: 'Gold Awards', name: 'AwardsPage.goldAwards',
desc: ['Cash Award', 'Award Ceritificate', 'Global Media Exposure'] desc: [
'AwardsPage.cashAward',
'AwardsPage.awardCertificate',
'AwardsPage.globalMediaExposure'
]
}, },
{ {
money: 'US$2000', money: 'AwardsPage.silverMoney',
name: 'Silver Awards', name: 'AwardsPage.silverAwards',
desc: ['Cash Award', 'Award Ceritificate', 'Global Media Exposure'] desc: [
'AwardsPage.cashAward',
'AwardsPage.awardCertificate',
'AwardsPage.globalMediaExposure'
]
}, },
{ {
money: 'Award\nCertification', money: 'AwardsPage.awardCertification',
name: 'Finalists', name: 'AwardsPage.finalists',
desc: ['Award Ceritificate', 'Global Media Exposure'], desc: [
'AwardsPage.TravelAllowance',
'AwardsPage.globalMediaExposure'
],
smaller: true smaller: true
} }
] ]

View File

@@ -3,9 +3,9 @@
class="selection-container container flex flex-col align-center" class="selection-container container flex flex-col align-center"
ref="selectionRef" ref="selectionRef"
> >
<div class="title">Selection Criteria</div> <div class="title">{{ $t('AwardsPage.selectionCriteria') }}</div>
<!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> --> <!-- <img src="@/assets/images/award/bloom_logo.png" class="logo" /> -->
<div class="sub-title">Evaluation</div> <div class="sub-title">{{ $t('AwardsPage.evaluation') }}</div>
<div class="criteria-list flex" ref="criteriaListRef"> <div class="criteria-list flex" ref="criteriaListRef">
<div <div
class="item flex flex-col align-center" class="item flex flex-col align-center"
@@ -13,8 +13,8 @@
:key="item.name" :key="item.name"
> >
<img :src="item.icon" class="icon" :style="item.style" /> <img :src="item.icon" class="icon" :style="item.style" />
<div class="name">{{ item.name }}</div> <div class="name">{{ $t(item.name) }}</div>
<div class="desc">{{ item.desc }}</div> <div class="desc">{{ $t(item.desc) }}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -22,35 +22,38 @@
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
import criteria1 from '@/assets/images/award/criteria_1.png' import criteria1 from '@/assets/images/award/criteria_1.png'
import criteria2 from '@/assets/images/award/criteria_2.png' import criteria2 from '@/assets/images/award/criteria_2.png'
import criteria3 from '@/assets/images/award/criteria_3.png' import criteria3 from '@/assets/images/award/criteria_3.png'
import criteria4 from '@/assets/images/award/criteria_4.png' import criteria4 from '@/assets/images/award/criteria_4.png'
const { t } = useI18n()
const criteriaList = ref([ const criteriaList = ref([
{ {
icon: criteria1, icon: criteria1,
name: 'Originality', name: 'AwardsPage.originality',
desc: 'Unique perspective and\ninnovative approach to\nfashion design', desc: 'AwardsPage.originalityDesc',
style: { width: '13rem', height: '17rem' } style: { width: '13rem', height: '17rem' }
}, },
{ {
icon: criteria2, icon: criteria2,
name: 'Creativity', name: 'AwardsPage.creativity',
desc: 'Artistic vision and exceptional\ndesign excellence', desc: 'AwardsPage.creativityDesc',
style: { width: '16rem', height: '18rem' } style: { width: '16rem', height: '18rem' }
}, },
{ {
icon: criteria3, icon: criteria3,
name: 'AiDA Integration', name: 'AwardsPage.aidaIntegration',
desc: 'Effective application of\nAiDA functions', desc: 'AwardsPage.aidaIntegrationDesc',
style: { width: '16rem', height: '18rem' } style: { width: '16rem', height: '18rem' }
}, },
{ {
icon: criteria4, icon: criteria4,
name: 'Execution', name: 'AwardsPage.execution',
desc: 'Quality of presentation and\ntechnical craftsmanship', desc: 'AwardsPage.executionDesc',
style: { width: '18.8rem', height: '18rem' } style: { width: '18.8rem', height: '18rem' }
} }
]) ])

View File

@@ -10,32 +10,35 @@
:key="item.number" :key="item.number"
:style="{ '--delay': `${idx * 0.18}s` }" :style="{ '--delay': `${idx * 0.18}s` }"
> >
<div class="number">{{ item.number }}</div> <div class="number">{{ $t(item.number) }}</div>
<div class="label">{{ item.label }}</div> <div class="label">{{ $t(item.label) }}</div>
<div class="line"></div> <div class="line"></div>
</div> </div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue' import { computed, ref, onMounted, onUnmounted } from 'vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const blocksList = ref([ const blocksList = ref([
{ {
number: 'UP TO\nUS$9000', number: 'AwardsPage.totalCashPrizes',
label: 'In total cash prizes' label: 'AwardsPage.totalCashPrizesLabel'
}, },
{ {
number: 'GLOBAL MEDIA EXPOSE', number: 'AwardsPage.globalMediaExpose',
label: 'Showcased by top\ninternational media platforms' label: 'AwardsPage.globalMediaExposeLabel'
}, },
{ {
number: 'NETWORKING\n OPPORTUNITIES', number: 'AwardsPage.networkingOpportunities',
label: 'Build connections with\ndesigners and industry leaders' label: 'AwardsPage.networkingOpportunitiesLabel'
}, },
{ {
number: 'AWARD CEREMONY\nIN HONG KONG', number: 'AwardsPage.awardCeremonyHongKong',
label: 'Travel allowance\nprovided for finalists' label: 'AwardsPage.awardCeremonyLabel'
} }
]) ])
const root = ref<HTMLElement | null>(null) const root = ref<HTMLElement | null>(null)

View File

@@ -21,8 +21,11 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue' import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import successIcon from '@/assets/images/award/successful.png' import successIcon from '@/assets/images/award/successful.png'
import expiredIcon from '@/assets/images/award/expired.png' import expiredIcon from '@/assets/images/award/expired.png'
const { t } = useI18n()
const props = defineProps({ const props = defineProps({
isExpired: { isExpired: {
type: Boolean, type: Boolean,
@@ -34,14 +37,14 @@
if (props.isExpired) { if (props.isExpired) {
return { return {
icon: expiredIcon, icon: expiredIcon,
title: 'Application Deadline Passed', title: t('AwardsPage.deadlinePassed'),
desc: 'The submission deadline for AiDA Global Fashion Award 2026 has ended.\nWe are no longer accepting new applications. ' desc: t('AwardsPage.deadlinePassedDesc')
} }
} else { } else {
return { return {
icon: successIcon, icon: successIcon,
title: 'Submission Successful', title: t('AwardsPage.submissionSuccessful'),
desc: 'Please review your submitted information in the AiDA in-platform message.\nYou may edit it if needed. Competition updates and results will be sent via email.' desc: t('AwardsPage.submissionSuccessfulDesc')
} }
} }
}) })

View File

@@ -3,8 +3,8 @@
ref="containerRef" ref="containerRef"
class="timeline-container container flex flex-col align-center" class="timeline-container container flex flex-col align-center"
> >
<div class="timeline-title">Competition Timeline</div> <div class="timeline-title">{{ $t('AwardsPage.competitionTimeline') }}</div>
<div class="desc">Shaping the Future</div> <div class="desc">{{ $t('AwardsPage.shapingTheFuture') }}</div>
<div <div
class="timeline-point" class="timeline-point"
ref="timelineRef" ref="timelineRef"
@@ -16,12 +16,12 @@
v-for="item in points" v-for="item in points"
:key="'label-' + item.time" :key="'label-' + item.time"
> >
<div class="main-label">{{ item.label }}</div> <div class="main-label">{{ $t(item.label) }}</div>
<div <div
class="sub-label" class="sub-label"
v-if="item.subLabel" v-if="item.subLabel"
> >
{{ item.subLabel }} {{ $t(item.subLabel) }}
</div> </div>
</div> </div>
</div> </div>
@@ -46,7 +46,7 @@
v-for="item in points" v-for="item in points"
:key="'time-' + item.time" :key="'time-' + item.time"
> >
{{ item.time }} {{ $t(item.time) }}
</div> </div>
</div> </div>
@@ -58,7 +58,7 @@
:key="'desc-' + item.time" :key="'desc-' + item.time"
> >
<div class="txt"> <div class="txt">
{{ item.desc }} {{ $t(item.desc) }}
</div> </div>
</div> </div>
</div> </div>
@@ -67,43 +67,46 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue' import { nextTick, onBeforeUnmount, onMounted, ref, computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { gsap } from 'gsap' import { gsap } from 'gsap'
const { t } = useI18n()
const containerRef = ref<HTMLElement | null>(null) const containerRef = ref<HTMLElement | null>(null)
const timelineRef = ref<HTMLElement | null>(null) const timelineRef = ref<HTMLElement | null>(null)
const hasAnimated = ref(false) const hasAnimated = ref(false)
const points = ref([ const points = ref([
{ {
label: 'Application', label: 'AwardsPage.timelineApplicationLabel',
subLabel: 'Deadline', subLabel: 'AwardsPage.timelineDeadlineLabel',
time: 'Jul 15', time: 'AwardsPage.timeJul15',
desc: 'Application deadline and\nentry review process\nbegins.' desc: 'AwardsPage.applicationDeadlineDesc'
}, },
{ {
label: `20 Finallists`, label: 'AwardsPage.twentyFinalistsAnnounced',
subLabel: 'Announced', subLabel: 'AwardsPage.announcedLabel',
time: 'Aug 30', time: 'AwardsPage.timeAug30',
desc: 'Announcement of 20\nfinalists entering final\nevaluation stage.' desc: 'AwardsPage.twentyFinalistsDesc'
}, },
{ {
label: `Finallist\nSubmission`, label: 'AwardsPage.finalistSubmission',
subLabel: 'Deadline', subLabel: 'AwardsPage.submissionLabel',
time: 'Sept 30', time: 'AwardsPage.timeSept30',
desc: 'Finalists submit\ncompleted outfits for\nfinal assessment.' desc: 'AwardsPage.finalistSubmissionDesc'
}, },
{ {
label: 'Receiving Outfits', label: 'AwardsPage.receivingOutfits',
subLabel: 'from Finallists', subLabel: 'AwardsPage.fromFinalistsLabel',
time: 'October', time: 'AwardsPage.timeOctober',
desc: 'AiDA receives physical\noutfits from all 20\nfinalists.' desc: 'AwardsPage.receivingOutfitsDesc'
}, },
{ {
label: 'Award', label: 'AwardsPage.awardCeremony',
subLabel: 'Ceremony', subLabel: 'AwardsPage.ceremonyLabel',
time: 'Nov 12', time: 'AwardsPage.timeNov12',
desc: 'Award Ceremony &\nCommunity Gathering\n Soho House.' desc: 'AwardsPage.awardCeremonyDesc'
} }
]) ])

View File

@@ -22,6 +22,9 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { computed, watch } from 'vue' import { computed, watch } from 'vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const props = defineProps<{ const props = defineProps<{
status: string status: string
type: 'pdf' | 'video' type: 'pdf' | 'video'
@@ -29,16 +32,16 @@
const textMap: Record<string, string> = { const textMap: Record<string, string> = {
idle: '', idle: '',
uploading: 'Upload in progress…', uploading: computed(() => t('AwardsPage.uploadInProgress')).value,
success: 'Uploaded Successfully', success: computed(() => t('AwardsPage.uploadSuccess')).value,
error: 'Upload failed' error: computed(() => t('AwardsPage.uploadFailed')).value
} }
const tips = computed(() => { const tips = computed(() => {
if (props.type === 'pdf') { if (props.type === 'pdf') {
return 'PDF file, max 20MB' return t('AwardsPage.pdfFileTip')
} else if (props.type === 'video') { } else if (props.type === 'video') {
return 'Video file (MP4, MOV), 1080p, max 100MB' return t('AwardsPage.videoFileTip')
} }
return '' return ''
}) })

View File

@@ -95,11 +95,27 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, watch } from 'vue' import { ref, computed, watch, onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { getCookie } from '@/tool/cookie'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const { locale } = useI18n()
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 showQRcode = ref(false)
const handleCloseQRcode = () => { const handleCloseQRcode = () => {
@@ -110,10 +126,10 @@
const btnType = ref<BtnType>('index') const btnType = ref<BtnType>('index')
const btnText = computed(() => { const btnText = computed(() => {
if (btnType.value === 'index') { if (btnType.value === 'index') {
return 'Submit your Application' return locale.value === 'CHINESE_SIMPLIFIED' ? '提交申请' : 'Submit your Application'
} }
if (btnType.value === 'form') { if (btnType.value === 'form') {
return 'Back to Introduction' return locale.value === 'CHINESE_SIMPLIFIED' ? '赛事介绍' : 'Back to Introduction'
} }
}) })

View File

@@ -15,13 +15,13 @@
class="submit-btn flex flex-center" class="submit-btn flex flex-center"
@click="handleSubmitApplication" @click="handleSubmitApplication"
> >
<div>Submit your Application</div> <div>{{ $t('AwardsPage.submitApplication') }}</div>
<img <img
src="@/assets/images/award/arrow_right.png" src="@/assets/images/award/arrow_right.png"
alt="" alt=""
class="arrow" class="arrow"
/> />
<div class="ddl">Application Deadline:15th March 2026</div> <div class="ddl">{{ $t('AwardsPage.applicationDeadline') }}</div>
</div> </div>
</div> </div>
@@ -102,8 +102,8 @@
left: 0; left: 0;
text-align: center; text-align: center;
width: 41rem; width: 41rem;
font-family: 'Arial'; font-family: 'ArialBold';
font-weight: 400; font-weight: 700;
font-size: 2rem; font-size: 2rem;
line-height: 2.2rem; line-height: 2.2rem;
color: #232323e5; color: #232323e5;