You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
18 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

(function () {
const params = new URLSearchParams(window.location.search);
const english = params.get('lang') === 'en';
const switcher = document.querySelector('[data-language-switch]');
if (switcher) {
const next = new URL(window.location.href);
if (english) next.searchParams.delete('lang');
else next.searchParams.set('lang', 'en');
switcher.href = next.pathname + next.search + next.hash;
switcher.textContent = english ? '中文' : 'EN';
switcher.setAttribute('aria-label', english ? '切换至中文' : 'Switch to English');
}
if (!english) return;
document.documentElement.lang = 'en';
const translations = {
'“光联万物 创芯未来”首届沪苏协同新兴产业科创大赛报名系统': '“Connecting Everything Through Light · Innovating the Future with Chips” — 1st Shanghai–Suzhou Collaborative Emerging Industries Innovation Competition Registration System',
'“光联万物 创芯未来”首届沪苏协同新兴产业科创大赛报名系统': '“Connecting Everything Through Light · Innovating the Future with Chips” — 1st Shanghai–Suzhou Collaborative Emerging Industries Innovation Competition Registration System',
'首届沪苏协同新兴产业科创大赛报名系统': '1st Shanghai–Suzhou Collaborative Emerging Industries Innovation Competition Registration System',
'首届沪苏协同新兴产业科创大赛': '1st Shanghai–Suzhou Collaborative Emerging Industries Innovation Competition',
'沪苏协同新兴产业科创大赛': 'Shanghai–Suzhou Collaborative Emerging Industries Innovation Competition',
'报名进行中': 'Registration Open', '截至': 'Closes', '王清萍': 'Qingping Wang', '退出登录': 'Log Out',
'赛事报名': 'Competition Registration', '观众报名': 'Audience Registration', '我的报名': 'My Registrations',
'个人信息': 'Profile', '姓名': 'Name', '手机号': 'Mobile Number', '单位': 'Organization', '邮箱': 'Email',
'查看已提交的活动报名信息': 'View submitted registration details', '主内容区': 'Main content',
'打开用户菜单': 'Open user menu', '报名截止时间': 'Registration deadline',
'首届沪苏协同新兴产业科创大赛观众报名': 'Audience Registration | Shanghai–Suzhou Innovation Competition',
'赛事报名': 'Competition Registration', '项目详情': 'Project Details', '观众报名': 'Audience Registration',
'项目名称': 'Project Name', '申请人姓名': 'Applicant Name', '注册邮箱': 'Email Address', '申请人电话': 'Phone Number',
'毕业院校': 'University / College', '最高学历': 'Highest Degree', '细分赛道': 'Competition Track', '企业名称': 'Company Name',
'项目所在地': 'Project Location', '省份': 'Province', '城市': 'City', '所在国': 'Country', '参赛地点': 'Competition Venue',
'团队成员': 'Team Members', '推荐方': 'Referrer', '项目简介': 'Project Overview', '上传商业计划书': 'Upload Business Plan',
'其他佐证材料': 'Supporting Documents', '参赛承诺书': 'Competition Declaration', '个人姓名': 'Full Name',
'联系电话': 'Phone Number', '所属单位': 'Organization', '个人职务': 'Job Title', '观赛目的': 'Purpose of Attendance',
'请选择': 'Please select', '中国': 'China', '海外': 'Outside China', '上海': 'Shanghai', '苏州': 'Suzhou', '深圳': 'Shenzhen',
'大专': 'Associate Degree', '本科': "Bachelor’s Degree", '硕士': "Master’s Degree", '博士': 'Doctorate', '其他': 'Other',
'芯片与组件': 'Chips & Components', '制造与封装': 'Manufacturing & Packaging', '材料与设备': 'Materials & Equipment', '场景与应用': 'Use Cases & Applications',
'项目交流': 'Project Networking', '产业合作': 'Industry Collaboration', '投资对接': 'Investor Meetings', '学习参访': 'Study Visit', '媒体报道': 'Media Coverage',
'请填写项目名称': 'Please enter the project name', '请填写申请人姓名': 'Please enter the applicant name',
'请输入正确的邮箱格式': 'Please enter a valid email address', '请填写申请人电话': 'Please enter the applicant’s phone number',
'请填写毕业院校': 'Please enter the university or college', '请选择最高学历': 'Please select the highest degree',
'请选择细分赛道': 'Please select a competition track', '请填写企业名称': 'Please enter the company name',
'请选择项目所在国家': 'Please select the project country', '请选择项目所在省份': 'Please select a province',
'请选择项目所在城市': 'Please select a city', '请选择“海外”后填写所在国家': 'Select “Outside China,” then enter the country',
'请选择参赛地点': 'Please select a competition venue', '请填写团队成员': 'Please enter the team members',
'请填写项目简介': 'Please enter a project overview', '请上传商业计划书': 'Please upload a business plan',
'文件格式或大小不符合要求': 'The file type or size is not supported', '请输入个人姓名': 'Please enter your full name',
'请输入正确的11位手机号': 'Please enter a valid 11-digit mobile number', '请选择观赛目的': 'Please select a purpose',
'暂存': 'Save Draft', '保存': 'Save', '提交报名': 'Submit Application', '重新提交': 'Resubmit', '返回列表': 'Back to List',
'提交观众报名': 'Submit Registration', '请先选择赛事': 'Select a Session First',
'多人请用顿号分隔': 'Separate multiple names with commas', '单位或推荐人名称': 'Organization or referrer name',
'约200字左右': 'About 200 words', '查看并签署参赛承诺书': 'View and Sign the Declaration',
'重新查看承诺书': 'Review the Declaration', '已完成签署': 'Signed',
'请点击按钮打开承诺书全文,阅读后在文末手写签名并点击「确认签署」。': 'Open and read the full declaration, sign by hand at the end, and select “Confirm Signature.”',
'光通信创新创业大赛赛事承诺书': 'Optical Communications Innovation Competition Declaration',
'请完整阅读以下 4 项承诺,确认无误后在下方签名。': 'Please read all four sections carefully and sign below to confirm.',
'参赛人签名:': 'Participant Signature:', '请在框内手写签名': 'Sign by hand inside this box', '清除签名': 'Clear',
'日期:': 'Date:', '关闭': 'Close', '确认签署': 'Confirm Signature', '提示': 'Notice', '取消': 'Cancel', '确定': 'OK',
'文档预览': 'Document Preview', '安全预览 · 仅供赛事审核使用': 'Secure preview · For competition review only',
'上一页': 'Previous', '下一页': 'Next', '下载': 'Download', '文件内容已加载完成': 'Document loaded',
'赛事场次': 'Competition Sessions', '人': 'spots', '剩余可报名': 'remaining', '已选择': 'Selected',
'已报名': 'Registered', '已满额': 'Full', '已截止': 'Closed', '报名中': 'Open', '开放': 'opens',
'上海预赛路演': 'Shanghai Preliminary', '苏州预赛路演': 'Suzhou Preliminary', '深圳预赛路演': 'Shenzhen Preliminary', '苏州总决赛': 'Suzhou Final',
'上海市浦东新区张江科学会堂': 'Zhangjiang Science Hall, Pudong, Shanghai',
'苏州市工业园区苏州国际博览中心': 'Suzhou International Expo Centre, Suzhou Industrial Park',
'深圳市南山区深圳湾科技生态园': 'Shenzhen Bay Technology and Ecology Park, Nanshan, Shenzhen',
'苏州市工业园区金鸡湖国际会议中心': 'Jinji Lake International Convention Center, Suzhou Industrial Park',
'请输入姓名': 'Enter your full name', '请输入11位手机号': 'Enter an 11-digit mobile number',
'请输入单位名称': 'Enter your organization', '请输入职务': 'Enter your job title'
, '预览': 'Preview', '删除': 'Remove', '查看文档': 'View Document', '海外无需填写城市': 'City not required outside China'
};
const phrases = [
['光芯片、光电元器件、光模块等核心芯片与组件研发创新', 'R&D and innovation in optical chips, optoelectronic devices, optical modules, and other core components'],
['光电子精密制造、器件封装耦合、量产工艺优化等制造封装技术攻关', 'Precision optoelectronic manufacturing, device packaging and coupling, and mass-production process optimization'],
['光电功能新材料、光纤基材及光刻、镀膜、精密测试等专用设备研发', 'R&D in optoelectronic functional materials, fiber substrates, lithography, coating, and precision testing equipment'],
['面向算力网络、移动通信、车载互联、工业传感、航空航天、医疗等领域的系统方案与应用创新', 'System solutions and applications for computing networks, mobile communications, connected vehicles, industrial sensing, aerospace, healthcare, and more'],
['包括企业概况与定位、核心产品/服务、市场规模和竞争情况、创新壁垒与差异化优势、核心团队介绍与优势、未来发展战略规划等,PDF格式,建议不超过20页。', 'Include the company profile and positioning, core products/services, market and competition, innovation barriers and differentiation, core team, and development strategy. PDF format; no more than 20 pages recommended.'],
['可上传多个文件:企业营业执照扫描件;知识产权相关证明材料(专利证书、商标注册证、软件著作权等),其他佐证材料(产品或服务介绍、获奖证书、投融资证明等)、创始人或主要负责人学历学位等资质证明。', 'You may upload multiple files, including a business license, intellectual-property certificates, product or service materials, awards, financing evidence, and qualification certificates for founders or key executives.'],
['单文件 20M 以内,支持:PDF、PPT、PPTX、DOC、DOCX、WPS、RAR、ZIP', 'Maximum 20 MB per file. Supported: PDF, PPT, PPTX, DOC, DOCX, WPS, RAR, ZIP']
,['本团队(或个人)自愿报名参加大赛,为明确权利义务,维护赛事公平性与合法性,承诺严格履行以下条款:', 'Our team (or the individual participant) voluntarily enters the competition and agrees to the following terms in order to clarify rights and obligations and uphold fairness and legality:']
,['一、参赛保证', '1. Participation Warranties']
,['1.1 提交的全部参赛材料真实、准确、完整,技术参数、研发进度、市场营收、产业链合作等数据来源合法可追溯,不存在造假、夸大宣传或刻意误导。', '1.1 All submitted materials are true, accurate, and complete. Data concerning technical parameters, R&D progress, revenue, and industry-chain cooperation comes from lawful and traceable sources and contains no fabrication, exaggeration, or intentional misrepresentation.']
,['1.2 同意组委会要求补充证明材料,并配合真实性核验、知识产权权属溯源、技术资料复核及样机实测;拒绝配合或核查结果存疑时,组委会有权取消参赛资格及已获奖项。', '1.2 We agree to provide supplementary evidence requested by the organizing committee and cooperate with authenticity checks, intellectual-property ownership tracing, technical reviews, and prototype testing. The committee may revoke eligibility and awards if cooperation is refused or findings remain doubtful.']
,['1.3 参赛项目相关技术、产品、设计、代码、图纸、商标文案及商业模式等知识产权合法所有;使用第三方技术、开源代码或素材时已取得有效授权并遵守协议。', '1.3 We lawfully own the intellectual property in the project’s technology, products, designs, code, drawings, trademarks, copy, and business model. Any third-party technology, open-source code, or materials are properly licensed and used in compliance with applicable agreements.']
,['1.4 因知识产权侵权或权属纠纷产生的法律责任与经济损失由参赛方承担,主办方、承办方及组委会不承担连带责任。', '1.4 The participant bears all legal liability and financial loss arising from intellectual-property infringement or ownership disputes. The hosts, organizers, and organizing committee bear no joint liability.']
,['二、授权许可', '2. Authorization and License']
,['2.1 为赛事存档、行业宣传、成果推介及产业科普,参赛方无偿授权组委会及合作机构在赛事及配套活动中拍照、录像、录音,并使用参赛人员肖像及项目图文视频资料进行发布传播。', '2.1 For competition archives, industry communications, project promotion, and public education, the participant grants the organizing committee and partners a royalty-free license to photograph and record competition activities and to publish participant likenesses and project-related text, images, and video.']
,['2.2 经准许入场的媒体、产业机构等第三方使用相关资料的权责由第三方与参赛方自行约定,组委会不对其独立传播行为承担责任。', '2.2 Rights and responsibilities concerning use by admitted media, industry organizations, or other third parties shall be agreed directly between those parties and the participant. The organizing committee is not liable for independent publication by such third parties.']
,['三、声明', '3. Statements']
,['3.1 参赛方可在合规前提下分享参赛历程与技术成果,并对自行拍摄、剪辑和发布内容的真实性、知识产权、保密及秩序责任负责。', '3.1 Participants may share their competition experience and technical results in compliance with applicable rules and remain responsible for authenticity, intellectual property, confidentiality, and proper conduct in content they create, edit, or publish.']
,['3.2 因参赛方发布内容造成索赔、处罚或名誉损失的,参赛方应处理纠纷并承担赔偿金、罚金、律师费、诉讼费及公关维权费等损失。', '3.2 Participants shall resolve disputes and bear damages, fines, legal fees, litigation costs, public-relations expenses, and other losses caused by content they publish.']
,['四、承诺', '4. Undertakings']
,['4.1 参赛方遵守管理条例、评审细则和赛程安排,尊重评审专家及最终结果,理性沟通赛事争议,共同维护赛事秩序。', '4.1 Participants shall follow competition rules, judging criteria, and schedules; respect judges and final results; communicate reasonably about disputes; and help maintain orderly proceedings.']
,['本承诺书签字后即刻生效,约束全体参赛成员(个人参赛仅约束本人),受赛事举办地法律法规管辖。', 'This declaration takes effect immediately upon signature, binds every team member (or the individual entrant), and is governed by the laws and regulations of the competition venue.']
];
function translateString(value) {
const trimmed = value.trim();
if (translations[trimmed]) return value.replace(trimmed, translations[trimmed]);
let output = value;
phrases.forEach(function (pair) { output = output.replace(pair[0], pair[1]); });
output = output
.replace(/(\d{2})\.(\d{2}) 开放/g, 'Opens $1.$2')
.replace(/(\d+) 字/g, '$1 characters')
.replace(/✓\s*已选择/g, '✓ Selected')
.replace(/您已报名“(.+?)”。/g, 'You are already registered for “$1.”')
.replace(/报名成功!“(.+?)”的场次信息将通过手机号发送。/g, 'Registration successful! Details for “$1” will be sent to your mobile number.')
.replace(/(\d{4})年(\d{1,2})月(\d{1,2})日(星期(.))/g, '$1-$2-$3')
.replace(/(\d{4})年(\d{1,2})月(\d{1,2})日/g, '$1-$2-$3');
return output;
}
function translateElement(root) {
if (root.nodeType === Node.TEXT_NODE) {
const translated = translateString(root.nodeValue);
if (translated !== root.nodeValue) root.nodeValue = translated;
return;
}
if (root.nodeType !== Node.ELEMENT_NODE) return;
if (root.matches('script, style')) return;
['placeholder', 'aria-label', 'title'].forEach(function (attr) {
if (!root.hasAttribute(attr)) return;
const current = root.getAttribute(attr);
const translated = translateString(current);
if (translated !== current) root.setAttribute(attr, translated);
});
Array.from(root.childNodes).forEach(translateElement);
}
document.title = translateString(document.title);
translateElement(document.body);
function enhanceEnglishFileInput(input) {
if (!input || input.dataset.englishFileControl) return;
input.dataset.englishFileControl = '1';
const control = document.createElement('div');
control.className = 'english-file-control';
const button = document.createElement('button');
button.type = 'button';
button.className = 'english-file-control__button';
button.textContent = 'Choose File';
const name = document.createElement('span');
name.className = 'english-file-control__name';
name.textContent = 'No file chosen';
input.classList.add('english-file-control__native');
input.parentNode.insertBefore(control, input);
control.appendChild(button);
control.appendChild(name);
control.appendChild(input);
button.addEventListener('click', function () { input.click(); });
input.addEventListener('change', function () {
if (!input.files || !input.files.length) name.textContent = 'No file chosen';
else if (input.files.length === 1) name.textContent = input.files[0].name;
else name.textContent = input.files.length + ' files selected';
});
}
document.querySelectorAll('input[type="file"]').forEach(enhanceEnglishFileInput);
new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
mutation.addedNodes.forEach(function (node) {
translateElement(node);
if (node.nodeType === Node.ELEMENT_NODE) {
if (node.matches('input[type="file"]')) enhanceEnglishFileInput(node);
node.querySelectorAll('input[type="file"]').forEach(enhanceEnglishFileInput);
}
});
if (mutation.type === 'characterData') translateElement(mutation.target);
if (mutation.type === 'attributes') translateElement(mutation.target);
});
}).observe(document.body, {
childList: true,
subtree: true,
characterData: true,
attributes: true,
attributeFilter: ['placeholder', 'aria-label', 'title']
});
})();