- {
- stats &&
- stats.map(({ amount, title, icon }) => (
-
- {icon && (
-
-
-
- )}
- {amount && (
-
- {amount}
-
- )}
- {title && (
-
- {title}
-
- )}
-
- ))
- }
+
+
+ {
+ stats &&
+ stats.map(({ amount, icon }) => (
+
+ {icon && (
+
+
+
+ )}
+ {amount && (
+
+ {amount}
+
+ )}
+
+ ))
+ }
+
+
+ {
+ stats &&
+ stats.map(({ title }) => (
+
+ ))
+ }
+
diff --git a/src/data/post/skillhub-release-announcement.md b/src/data/post/skillhub-release-announcement.md
index 3cbf450..e7987ba 100644
--- a/src/data/post/skillhub-release-announcement.md
+++ b/src/data/post/skillhub-release-announcement.md
@@ -12,10 +12,11 @@ author: 'iFLYTEK Open Source Team'
今天,我们很高兴地宣布 SkillHub 正式开源发布!
+
+
## 什么是 SkillHub?
SkillHub 是一个自托管的 Agent 技能注册中心,为企业提供一个私有、受治理的平台来共享和管理 Agent 技能。
-
## 为什么需要 SkillHub?
diff --git a/src/data/projects/astron-agent.yaml b/src/data/projects/astron-agent.yaml
index b1aa8f0..c24cc0c 100644
--- a/src/data/projects/astron-agent.yaml
+++ b/src/data/projects/astron-agent.yaml
@@ -1,11 +1,11 @@
name: Astron Agent
nameEn: Astron Agent
-description: 企业级、商业友好的 Agentic Workflow 开发平台,集成 AI 工作流编排、模型管理、AI 与 MCP 工具集成、RPA 自动化和团队协作功能。
-descriptionEn: Enterprise-grade, commercial-friendly agentic workflow platform for building next-generation SuperAgents.
+description: 企业级、商用友好的智能体工作流平台,用于构建下一代超级智能体(SuperAgents)。提供核心编排和 MCP 能力。
+descriptionEn: Enterprise-grade, commercial-friendly agentic workflow platform for building next-generation SuperAgents. Provides core orchestration and MCP capabilities.
repo: iflytek/astron-agent
homepage: https://astron.ai
-category: ai-platform
-tags: [agent, agentic-ai, workflow, llm, mcp, multi-agent, rpa, orchestration]
+category: agentic-workflow
+tags: [agent, agentic-ai, workflow, llm, mcp, multi-agent, orchestration]
languages: [Java, TypeScript, Python]
featured: true
stars: 8549
diff --git a/src/data/projects/astron-rpa.yaml b/src/data/projects/astron-rpa.yaml
index 341cdc3..5016fe6 100644
--- a/src/data/projects/astron-rpa.yaml
+++ b/src/data/projects/astron-rpa.yaml
@@ -1,10 +1,10 @@
name: Astron RPA
nameEn: Astron RPA
-description: Agent-ready RPA 自动化套件,提供开箱即用的自动化工具,面向个人与企业,支持低代码/无代码开发。
-descriptionEn: Agent-ready RPA suite with out-of-the-box automation tools. Built for individuals and enterprises, supporting low-code/no-code development.
+description: 面向智能体的 RPA 套件,内置开箱即用的自动化工具。专为个人和企业打造。
+descriptionEn: Agent-ready RPA suite with out-of-the-box automation tools. Built for individuals and enterprises.
repo: iflytek/astron-rpa
homepage: http://www.iflyrpa.com
-category: rpa-automation
+category: agentic-automation
tags: [rpa, automation, agent, ai, low-code, no-code, mcp, llm, enterprise]
languages: [Java, Python]
featured: true
diff --git a/src/data/projects/astronclaw-tutorial.yaml b/src/data/projects/astronclaw-tutorial.yaml
index 221ba6f..f79c2ac 100644
--- a/src/data/projects/astronclaw-tutorial.yaml
+++ b/src/data/projects/astronclaw-tutorial.yaml
@@ -1,10 +1,10 @@
name: AstronClaw Tutorial
nameEn: AstronClaw Tutorial
-description: 从零到工作流,掌握 AstronClaw(云端)与 Loomy(桌面)的 AI 助手实战教程。
-descriptionEn: A complete tutorial to master AstronClaw (cloud AI) & Loomy (desktop AI), from zero to workflow.
+description: 掌握 AstronClaw(云端 AI)与 Loomy(桌面 AI)的完整教程。
+descriptionEn: A complete tutorial to master AstronClaw (cloud AI) & Loomy (desktop AI).
repo: iflytek/astronclaw-tutorial
homepage: https://astronclaw-tutorial.space/
-category: tutorials
+category: tutorial
tags: [tutorial, ai-agent, astronclaw, workflow]
languages: [JavaScript]
featured: false
diff --git a/src/data/projects/harnessclaw-engine.yaml b/src/data/projects/harnessclaw-engine.yaml
new file mode 100644
index 0000000..af82134
--- /dev/null
+++ b/src/data/projects/harnessclaw-engine.yaml
@@ -0,0 +1,13 @@
+name: HarnessClaw Engine
+nameEn: HarnessClaw Engine
+description: 基于 Go 语言构建的大模型编程助手引擎,支持 WebSocket、多轮对话、工具调用及权限管理。
+descriptionEn: LLM programming assistant engine built with Go, supporting WebSocket, multi-turn dialogues, tool calling, and permissions.
+repo: harnessclaw/harnessclaw-engine
+category: agent-engine
+tags: [llm, agent, golang, websocket, programming-assistant, skill-engine, iflytek-astron]
+languages: [Go]
+featured: false
+stars: 266
+forks: 91
+license: Apache-2.0
+icon: harnessclaw-engine
diff --git a/src/data/projects/harnessclaw.yaml b/src/data/projects/harnessclaw.yaml
new file mode 100644
index 0000000..68880c4
--- /dev/null
+++ b/src/data/projects/harnessclaw.yaml
@@ -0,0 +1,13 @@
+name: HarnessClaw
+nameEn: HarnessClaw
+description: 基于 Electron 的桌面应用程序,旨在无缝管理、对话及操作 AI 智能体与技能。
+descriptionEn: Electron-based desktop application designed to manage, chat with, and operate AI agents and skills seamlessly.
+repo: harnessclaw/harnessclaw
+category: agent-management
+tags: [electron-app, desktop-app, agent, ai-agents, chatbot, iflytek-astron]
+languages: [TypeScript]
+featured: false
+stars: 316
+forks: 82
+license: Apache-2.0
+icon: harnessclaw
diff --git a/src/data/projects/ifly-skills.yaml b/src/data/projects/ifly-skills.yaml
index b023ea9..7e2b719 100644
--- a/src/data/projects/ifly-skills.yaml
+++ b/src/data/projects/ifly-skills.yaml
@@ -1,9 +1,9 @@
name: iFly Skills
nameEn: iFly Skills
-description: iFLYTEK 官方技能集合,涵盖语音、OCR、翻译、校对和多模态 AI 能力,为 Agent 提供丰富的技能包。
-descriptionEn: Official collection of iFLYTEK skills for speech, OCR, translation, proofreading, and multimodal AI capabilities.
+description: 讯飞官方技能库,包含语音、OCR、翻译及多模态 AI 能力。
+descriptionEn: Official collection of iFLYTEK skills for speech, OCR, translation, and multimodal AI capabilities.
repo: iflytek/iFly-Skills
-category: ai-skills
+category: agent-skills
tags: [skill, agent, speech, ocr, translation, multimodal-ai]
languages: [Python]
featured: false
diff --git a/src/data/projects/skillhub.yaml b/src/data/projects/skillhub.yaml
index 2b32e78..ffe27c5 100644
--- a/src/data/projects/skillhub.yaml
+++ b/src/data/projects/skillhub.yaml
@@ -1,10 +1,10 @@
name: SkillHub
nameEn: SkillHub
-description: 企业级开源 Agent 技能注册中心,支持发布、版本管理、RBAC 权限治理和审计日志,可私有化部署于 Docker 或 Kubernetes。
-descriptionEn: Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.
+description: 私有化智能体技能管理平台。支持基于角色访问控制(RBAC)的技能包发布与版本管理。
+descriptionEn: Self-hosted agent skill registry. Publish & version skill packages with RBAC.
repo: iflytek/skillhub
homepage: https://skill.xfyun.cn
-category: developer-tools
+category: agent-skills
tags: [skill-registry, agent-framework, rbac, enterprise-ai, skill-management]
languages: [Java, TypeScript]
featured: true
diff --git a/src/layouts/LandingLayout.astro b/src/layouts/LandingLayout.astro
index 4bafcf7..9582726 100644
--- a/src/layouts/LandingLayout.astro
+++ b/src/layouts/LandingLayout.astro
@@ -27,6 +27,7 @@ const { metadata } = Astro.props;
},
]}
showToggleTheme
+ showToggleLanguage
position="right"
/>
diff --git a/src/layouts/MarkdownLayout.astro b/src/layouts/MarkdownLayout.astro
index ae6e9b0..49ba81c 100644
--- a/src/layouts/MarkdownLayout.astro
+++ b/src/layouts/MarkdownLayout.astro
@@ -6,6 +6,7 @@ import type { MetaData } from '~/types';
export interface Props {
frontmatter: {
title?: string;
+ titleEn?: string;
};
}
@@ -18,7 +19,13 @@ const metadata: MetaData = {
- {frontmatter.title}
+
+ {frontmatter.title}
+
diff --git a/src/layouts/PageLayout.astro b/src/layouts/PageLayout.astro
index e47f3e2..8b5c8c7 100644
--- a/src/layouts/PageLayout.astro
+++ b/src/layouts/PageLayout.astro
@@ -20,7 +20,7 @@ const { metadata } = Astro.props;
-
+
diff --git a/src/pages/[...blog]/[...page].astro b/src/pages/[...blog]/[...page].astro
index 6e21f51..e449371 100644
--- a/src/pages/[...blog]/[...page].astro
+++ b/src/pages/[...blog]/[...page].astro
@@ -45,14 +45,13 @@ const metadata = {
- 技术博客 / Blog 技术博客
-
- 深入的技术文章、教程和架构分享,帮助你更好地理解和使用 iFLYTEK 开源项目
+
+ 深入的技术文章、教程和架构分享,帮助你更好地理解和使用科大讯飞开源项目
diff --git a/src/pages/[...blog]/[category]/[...page].astro b/src/pages/[...blog]/[category]/[...page].astro
index 6580a1b..4d3bc52 100644
--- a/src/pages/[...blog]/[category]/[...page].astro
+++ b/src/pages/[...blog]/[category]/[...page].astro
@@ -25,18 +25,29 @@ const metadata = {
follow: blogCategoryRobots?.follow,
},
};
-const categoryMeta: Record = {
+const categoryMeta: Record = {
tech: {
titleZh: '技术博客',
+ titleEn: 'Tech Blog',
description: '深度技术文章、架构设计与工程实践,探索 AI、NLP、开发者工具等前沿技术',
+ descriptionEn:
+ 'In-depth technical articles, architecture design and engineering practices exploring AI, NLP, developer tools and more',
},
news: {
titleZh: '最新新闻',
- description: '项目发布、版本更新、社区活动等 iFLYTEK 开源生态最新资讯',
+ titleEn: 'Latest News',
+ description: '项目发布、版本更新、社区活动等科大讯飞开源生态最新资讯',
+ descriptionEn:
+ 'Latest news on project releases, version updates, community events and the iFLYTEK open source ecosystem',
},
};
-const cat = categoryMeta[category.slug] || { titleZh: category.title, description: `${category.title} 相关文章` };
+const cat = categoryMeta[category.slug] || {
+ titleZh: category.title,
+ titleEn: category.title,
+ description: `${category.title} 相关文章`,
+ descriptionEn: `${category.title} related posts`,
+};
---
@@ -51,13 +62,17 @@ const cat = categoryMeta[category.slug] || { titleZh: category.title, descriptio
- {cat.titleZh} / {category.title} {cat.titleZh}
-
+
{cat.description}
diff --git a/src/pages/cla.astro b/src/pages/cla.astro
index 7a2d04d..390f346 100644
--- a/src/pages/cla.astro
+++ b/src/pages/cla.astro
@@ -2,55 +2,97 @@
import MarkdownLayout from '~/layouts/MarkdownLayout.astro';
---
-
-
- In order to clarify the intellectual property license granted with Contributions from any person or entity, the
- iFLYTEK Open Source Community must have a Contributor License Agreement (CLA) on file that has been signed by each
- Contributor, indicating agreement to the license terms below.
-
-
-
- This license is for your protection as a Contributor as well as the protection of the project and its users; it does
- not change your rights to use your own Contributions for any other purpose.
-
-
- Grant of Copyright License
-
-
- You grant to the project and its users a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and
- distribute your Contributions and such derivative works.
-
-
- Grant of Patent License
-
-
- You grant to the project and its users a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and
- otherwise transfer your Contributions, where such license applies only to those patent claims licensable by you that
- are necessarily infringed by your Contribution alone or by combination of your Contribution with the project to
- which you submitted the Contribution.
-
-
- Representations
-
-
- You represent that you are legally entitled to grant the above license. If your employer(s) has rights to
- intellectual property that you create that includes your Contributions, you represent that you have received
- permission to make Contributions on behalf of that employer, that your employer has waived such rights for your
- Contributions to the project, or that your employer has executed a separate Corporate CLA.
-
-
- Disclaimer
-
-
- Unless required by applicable law or agreed to in writing, your Contributions are provided on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. You are not expected to provide support for
- your Contributions, except to the extent you desire to provide support.
-
-
-
- For the latest version of this agreement, please visit
- iFLYTEK Community CLA .
-
+
+
+
+
+ 为了明确由任何个人或实体授予的贡献知识产权许可,科大讯飞开源社区必须留存一份由每位贡献者签署的贡献者许可协议(CLA),表明同意以下许可条款。
+
+
+
此许可既保护你作为贡献者的权益,也保护项目和其用户的权益;它不会改变你将自身贡献用于其他目的的权利。
+
+
版权许可授予
+
+
+ 你授予项目及其用户一项永久的、全球性的、非独占的、免费的、免版税的、不可撤销的版权许可,用于复制、准备衍生作品、公开展示、公开表演、再许可和分发你的贡献及此类衍生作品。
+
+
+
专利许可授予
+
+
+ 你授予项目及其用户一项永久的、全球性的、非独占的、免费的、免版税的、不可撤销的(本条款所述情况除外)专利许可,用于制造、委托制造、使用、要约出售、出售、进口或以其他方式转让你的贡献,其中该许可仅适用于你可许可的、因你的贡献单独或与项目结合而必然被侵犯的专利权利要求。
+
+
+
声明与保证
+
+
+ 你声明你有权合法授予上述许可。如果你的雇主对你创作的包含贡献的成果拥有知识产权,你声明你已获得代表该雇主进行贡献的许可,该雇主已放弃对你贡献的此类权利,或该雇主已签署单独的企业
+ CLA。
+
+
+
免责声明
+
+
+ 除非适用法律要求或书面同意,你的贡献按"原样"提供,不附带任何明示或暗示的保证或条件。除你希望提供支持的程度外,不期望你对贡献提供支持。
+
+
+
+ 最新版本的协议请访问
+ iFLYTEK 社区 CLA 。
+
+
+
+
+
+
+ In order to clarify the intellectual property license granted with Contributions from any person or entity, the
+ iFLYTEK Open Source Community must have a Contributor License Agreement (CLA) on file that has been signed by each
+ Contributor, indicating agreement to the license terms below.
+
+
+
+ This license is for your protection as a Contributor as well as the protection of the project and its users; it
+ does not change your rights to use your own Contributions for any other purpose.
+
+
+
Grant of Copyright License
+
+
+ You grant to the project and its users a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and
+ distribute your Contributions and such derivative works.
+
+
+
Grant of Patent License
+
+
+ You grant to the project and its users a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and
+ otherwise transfer your Contributions, where such license applies only to those patent claims licensable by you
+ that are necessarily infringed by your Contribution alone or by combination of your Contribution with the project
+ to which you submitted the Contribution.
+
+
+
Representations
+
+
+ You represent that you are legally entitled to grant the above license. If your employer(s) has rights to
+ intellectual property that you create that includes your Contributions, you represent that you have received
+ permission to make Contributions on behalf of that employer, that your employer has waived such rights for your
+ Contributions to the project, or that your employer has executed a separate Corporate CLA.
+
+
+
Disclaimer
+
+
+ Unless required by applicable law or agreed to in writing, your Contributions are provided on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. You are not expected to provide support
+ for your Contributions, except to the extent you desire to provide support.
+
+
+
+ For the latest version of this agreement, please visit
+ iFLYTEK Community CLA .
+
+
diff --git a/src/pages/contribute.astro b/src/pages/contribute.astro
index 31f9bbe..1fd5ea9 100644
--- a/src/pages/contribute.astro
+++ b/src/pages/contribute.astro
@@ -26,6 +26,9 @@ interface Contributor {
let contributorsCache: { data: Contributor[]; fetchedAt: number } | null = null;
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
+// All GitHub organizations whose contributors should be aggregated
+const CONTRIBUTE_ORGS = ['iflytek', 'harnessclaw'];
+
async function fetchContributorsLive(): Promise {
if (contributorsCache && Date.now() - contributorsCache.fetchedAt < CACHE_TTL) {
return contributorsCache.data;
@@ -35,43 +38,48 @@ async function fetchContributorsLive(): Promise {
const headers: Record = { Accept: 'application/vnd.github+json' };
if (token) headers['Authorization'] = `Bearer ${token}`;
- // 1. Get all public repos (exclude forks and archived)
- const reposRes = await fetch('https://api.github.com/orgs/iflytek/repos?type=public&per_page=100', { headers });
- if (!reposRes.ok) throw new Error(`Failed to fetch repos: HTTP ${reposRes.status}`);
- const reposData = (await reposRes.json()) as Array<{ name: string; fork: boolean; archived: boolean }>;
- const activeRepos = reposData.filter((r) => !r.fork && !r.archived);
-
- // 2. Fetch contributors for each repo in parallel
const contributorMap = new Map();
+
await Promise.all(
- activeRepos.map(async (repo) => {
- try {
- const res = await fetch(`https://api.github.com/repos/iflytek/${repo.name}/contributors?per_page=100`, {
- headers,
- });
- if (!res.ok) return;
- const list = (await res.json()) as Array<{
- login: string;
- type: string;
- avatar_url: string;
- contributions: number;
- html_url: string;
- }>;
- for (const c of list) {
- if (c.login && c.type === 'User') {
- const existing = contributorMap.get(c.login);
- const contributions = (existing?.contributions || 0) + (c.contributions || 0);
- contributorMap.set(c.login, {
- username: c.login,
- avatar_url: c.avatar_url || `https://github.com/${c.login}.png`,
- contributions,
- profile_url: c.html_url || `https://github.com/${c.login}`,
+ CONTRIBUTE_ORGS.map(async (org) => {
+ // 1. Get all public repos for this org (exclude forks and archived)
+ const reposRes = await fetch(`https://api.github.com/orgs/${org}/repos?type=public&per_page=100`, { headers });
+ if (!reposRes.ok) return;
+ const reposData = (await reposRes.json()) as Array<{ name: string; fork: boolean; archived: boolean }>;
+ const activeRepos = reposData.filter((r) => !r.fork && !r.archived);
+
+ // 2. Fetch contributors for each repo in parallel
+ await Promise.all(
+ activeRepos.map(async (repo) => {
+ try {
+ const res = await fetch(`https://api.github.com/repos/${org}/${repo.name}/contributors?per_page=100`, {
+ headers,
});
+ if (!res.ok) return;
+ const list = (await res.json()) as Array<{
+ login: string;
+ type: string;
+ avatar_url: string;
+ contributions: number;
+ html_url: string;
+ }>;
+ for (const c of list) {
+ if (c.login && c.type === 'User') {
+ const existing = contributorMap.get(c.login);
+ const contributions = (existing?.contributions || 0) + (c.contributions || 0);
+ contributorMap.set(c.login, {
+ username: c.login,
+ avatar_url: c.avatar_url || `https://github.com/${c.login}.png`,
+ contributions,
+ profile_url: c.html_url || `https://github.com/${c.login}`,
+ });
+ }
+ }
+ } catch {
+ /* skip individual repo errors */
}
- }
- } catch {
- /* skip individual repo errors */
- }
+ })
+ );
})
);
@@ -119,14 +127,13 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
- 参与贡献 / Contribute 参与贡献
-
- 加入 iFLYTEK 开源社区,一起构建更好的 AI 生态。感谢每一位贡献者!
+
+ 加入科大讯飞开源社区,一起构建更好的 AI 生态。感谢每一位贡献者!
@@ -134,19 +141,19 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
{contributors.length}
-
贡献者
+
贡献者
{totalContributions.toLocaleString()}
-
总贡献
+
总贡献
{projects.length}
-
开源项目
+
开源项目
@@ -156,10 +163,12 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
- 贡献者墙 / Contributors Wall
+ 贡献者墙
- 点击头像访问贡献者 GitHub 主页 | Click avatar to visit GitHub profile
+ 点击头像访问贡献者 GitHub 主页
{
@@ -180,7 +189,7 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
- 贡献者排行 / Top Contributors
+ 贡献者排行
{topContributors.map((c, i) => (
@@ -226,7 +235,7 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
- 如何贡献 / How to Contribute
+ 如何贡献
报告 Bug
-
+
在 GitHub Issues 中提交 Bug 报告,帮助我们发现问题、改进质量
@@ -263,10 +273,13 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
提出建议
- 分享你的想法和功能建议,参与项目方向讨论和 RFC
+
+ 分享你的想法和功能建议,参与项目方向讨论和 RFC
+
sum + c.contributions
提交代码
-
+
Fork 项目,提交 Pull Request,修复 Bug 或开发新功能
@@ -303,10 +317,11 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
完善文档
-
+
改进文档、编写教程、翻译内容,让更多人能顺利使用项目
@@ -324,10 +339,13 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
传播分享
- Star 项目、写博客、在社区活动中分享你的使用经验
+
+ Star 项目、写博客、在社区活动中分享你的使用经验
+
sum + c.contributions
社区建设
-
+
参与讨论、帮助新用户、组织 Meetup,共同建设开源社区
@@ -357,21 +376,37 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
-
贡献流程 / PR Workflow
+
+ 贡献流程
+
{
[
- { step: '1', title: 'Fork', desc: 'Fork 目标项目到你的 GitHub 账号' },
- { step: '2', title: 'Branch', desc: '从 main 创建功能分支' },
- { step: '3', title: 'Code', desc: '编写代码、添加测试' },
- { step: '4', title: 'PR', desc: '提交 Pull Request 等待审核' },
+ {
+ step: '1',
+ title: 'Fork',
+ descZh: 'Fork 目标项目到你的 GitHub 账号',
+ descEn: 'Fork the target project to your GitHub account',
+ },
+ { step: '2', title: 'Branch', descZh: '从 main 创建功能分支', descEn: 'Create a feature branch from main' },
+ { step: '3', title: 'Code', descZh: '编写代码、添加测试', descEn: 'Write code and add tests' },
+ {
+ step: '4',
+ title: 'PR',
+ descZh: '提交 Pull Request 等待审核',
+ descEn: 'Submit a Pull Request and wait for review',
+ },
].map((item) => (
{item.step}
{item.title}
-
{item.desc}
+
+
+ {item.descZh}
+
+
))
}
@@ -385,16 +420,18 @@ const totalContributions = contributors.reduce((sum, c) => sum + c.contributions
-
新手任务
-
从这些适合新手的 Issue 开始你的贡献之旅
-
+
新手任务
+
+ 从这些适合新手的 Issue 开始你的贡献之旅
+
+
- 查看 Good First Issues
+ 查看 Good First Issues
sum + c.contributions
-
社区链接
-
加入我们的社区,参与讨论和交流
+
+ 社区链接
+
+
+ 加入我们的社区,参与讨论和交流
+
@@ -174,7 +173,7 @@ const newsPosts = posts
class="event-filter-btn rounded-full bg-primary-600 px-5 py-2 text-sm font-medium text-white"
data-type="all"
>
- 全部 / All ({events.length})
+
全部 ({events.length})
{
eventTypes.map((type) => (
@@ -227,7 +226,13 @@ const newsPosts = posts
: 'bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400',
]}
>
- {event.status === 'upcoming' ? '即将举办' : event.status === 'ongoing' ? '进行中' : '已结束'}
+ {event.status === 'upcoming' ? (
+
即将举办
+ ) : event.status === 'ongoing' ? (
+
进行中
+ ) : (
+
已结束
+ )}
{event.date}
@@ -241,13 +246,23 @@ const newsPosts = posts
rel="noopener"
class="hover:text-primary-600 dark:hover:text-primary-400"
>
- {event.titleZh}
+
+ {event.titleZh}
+
) : (
- event.titleZh
+
+ {event.titleZh}
+
)}
-
{event.title}
+
+ {event.title}
+
{event.description}
@@ -275,7 +290,7 @@ const newsPosts = posts
rel="noopener"
class="inline-flex items-center gap-1 text-sm font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300"
>
- 详情
+
详情
- 最新动态 / Latest News
+ 最新动态
{newsPosts.slice(0, 4).map((post) => (
diff --git a/src/pages/index.astro b/src/pages/index.astro
index c876b30..8340bd8 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -10,7 +10,7 @@ import CallToAction from '~/components/widgets/CallToAction.astro';
import { getProjectsWithStats } from '~/utils/project-stats';
const metadata = {
- title: 'iFLYTEK Open Source — AI Agent, Developer Tools & More',
+ title: '科大讯飞开源 — AI Agent, Developer Tools & More',
ignoreTitleTemplate: true,
};
@@ -26,33 +26,35 @@ const starDisplay = totalStars >= 1000 ? (totalStars / 1000).toFixed(1) + 'K' :
actions={[
{
variant: 'primary',
- text: '探索项目',
+ text: '
探索项目 ',
href: '/projects',
icon: 'tabler:code',
},
{
- text: '参与贡献',
+ text: '
参与贡献 ',
href: '/contribute',
},
]}
>
- iFLYTEK
- Open Source
+ iFLYTEK
+ Open Source
- 探索科大讯飞的开源世界 — 涵盖 AI 大模型、自然语言处理、语音识别等前沿技术,共建智能未来。
+ 探索科大讯飞的开源世界 — 涵盖 AI 大模型、自然语言处理、语音识别等前沿技术,共建智能未来。
开源项目',
amount: projects.length.toString(),
icon: 'tabler:code',
},
@@ -67,7 +69,7 @@ const starDisplay = totalStars >= 1000 ? (totalStars / 1000).toFixed(1) + 'K' :
icon: 'tabler:git-fork',
},
{
- title: '开源协议',
+ title: '开源协议 ',
amount: 'Apache 2.0',
icon: 'tabler:license',
},
@@ -77,60 +79,66 @@ const starDisplay = totalStars >= 1000 ? (totalStars / 1000).toFixed(1) + 'K' :
开源项目',
+ description:
+ '涵盖 AI、NLP、语音识别、开发者工具等多个领域的开源项目,提供完整的文档和示例。 ',
icon: 'tabler:box',
},
{
- title: '全景图',
- description: 'CNCF 风格的开源生态全景图,一目了然地查看所有 iFLYTEK 开源项目及分类。',
+ title: '全景图 ',
+ description:
+ 'CNCF 风格的开源生态全景图,一目了然地查看所有科大讯飞开源项目及分类。 ',
icon: 'tabler:map',
},
{
- title: '技术博客',
- description: '深入的技术文章、教程和架构分享,帮助你更好地理解和使用开源项目。',
+ title: '技术博客 ',
+ description:
+ '深入的技术文章、教程和架构分享,帮助你更好地理解和使用开源项目。 ',
icon: 'tabler:article',
},
{
- title: '社区活动',
- description: 'Meetup、Hackathon、Conference 等丰富多彩的社区活动,与开发者面对面交流。',
+ title: '社区活动 ',
+ description:
+ 'Meetup、Hackathon、Conference 等丰富多彩的社区活动,与开发者面对面交流。 ',
icon: 'tabler:calendar-event',
},
{
- title: '参与贡献',
- description: '无论你是新手还是资深开发者,都可以找到适合自己的贡献方式。',
+ title: '参与贡献 ',
+ description:
+ '无论你是新手还是资深开发者,都可以找到适合自己的贡献方式。 ',
icon: 'tabler:git-pull-request',
},
{
- title: '开源许可',
- description: '所有项目均采用宽松的开源协议,鼓励商业使用和技术创新。',
+ title: '开源许可 ',
+ description:
+ '所有项目均采用宽松的开源协议,鼓励商业使用和技术创新。 ',
icon: 'tabler:license',
},
]}
/>
-
+
在 GitHub 上关注我们',
href: 'https://github.com/iflytek',
target: '_blank',
icon: 'tabler:brand-github',
},
{
- text: '加入 Discord',
+ text: '加入 Discord ',
href: 'https://discord.com/invite/vXzgts4fK',
icon: 'tabler:brand-discord',
},
diff --git a/src/pages/landscape.astro b/src/pages/landscape.astro
index c4059d4..b204315 100644
--- a/src/pages/landscape.astro
+++ b/src/pages/landscape.astro
@@ -8,223 +8,621 @@ const metadata = {
const projects = await getProjectsWithStats();
-// Group by category
-const grouped = projects.reduce(
- (acc, p) => {
- const cat = p.data.category;
- if (!acc[cat]) acc[cat] = [];
- acc[cat].push(p);
- return acc;
- },
- {} as Record
-);
-
-const categoryInfo: Record<
- string,
- { label: string; labelEn: string; description: string; color: string; icon: string }
-> = {
- 'ai-platform': {
- label: 'AI 平台',
- labelEn: 'AI Platform',
- description: 'AI 大模型、Agent 工作流编排与智能自动化平台',
- color: 'from-blue-500 to-blue-600',
- icon: '🤖',
- },
- 'developer-tools': {
- label: '开发者工具',
- labelEn: 'Developer Tools',
- description: 'SDK、技能注册中心、IDE 插件等开发者效率工具',
- color: 'from-green-500 to-green-600',
- icon: '🛠️',
- },
- 'rpa-automation': {
- label: 'RPA & 自动化',
- labelEn: 'RPA & Automation',
- description: 'RPA 自动化套件与低代码/无代码开发工具',
- color: 'from-rose-500 to-rose-600',
- icon: '🔄',
- },
- 'ai-skills': {
- label: 'AI 技能',
- labelEn: 'AI Skills',
- description: '语音、OCR、翻译、多模态等 Agent 技能包',
- color: 'from-cyan-500 to-cyan-600',
- icon: '🧩',
- },
- tutorials: {
- label: '教程',
- labelEn: 'Tutorials',
- description: '从零到工作流的实战教程与学习资源',
- color: 'from-amber-500 to-amber-600',
- icon: '📚',
- },
- 'nlp-speech': {
- label: 'NLP & 语音',
- labelEn: 'NLP & Speech',
- description: '自然语言处理、语音识别与合成引擎',
- color: 'from-purple-500 to-purple-600',
- icon: '🗣️',
- },
- infrastructure: {
- label: '基础设施',
- labelEn: 'Infrastructure',
- description: '模型服务框架、数据处理与部署工具',
- color: 'from-orange-500 to-orange-600',
- icon: '⚙️',
- },
-};
+// Find projects by repo
+const find = (repo: string) => projects.find((p) => p.data.repo === repo);
+
+const workflow = find('iflytek/astron-agent');
+const automation = find('iflytek/astron-rpa');
+const skillsOfficial = find('iflytek/iFly-Skills');
+const skillsRegistry = find('iflytek/skillhub');
+const tutorial = find('iflytek/astronclaw-tutorial');
+const management = find('harnessclaw/harnessclaw');
+const engine = find('harnessclaw/harnessclaw-engine');
const totalStars = projects.reduce((sum, p) => sum + (p.data.stars || 0), 0);
---
-
+
-
-
-
+
-
-
+
+
开源全景图
-
- iFLYTEK 开源项目生态全景 — {projects.length} 个项目,{totalStars.toLocaleString()} Stars
+
+ 科大讯飞开源项目生态全景 — {projects.length} 个项目,{totalStars.toLocaleString()} Stars
+ iFLYTEK Open Source Ecosystem — {projects.length} projects, {totalStars.toLocaleString()} Stars
-
-
-
-
-
- {
- Object.entries(categoryInfo).map(([catKey, info]) => {
- const catProjects = grouped[catKey] || [];
- if (catProjects.length === 0) return null;
- return (
-
- {/* Category Header */}
-
-
-
{info.icon}
-
-
- {info.label} / {info.labelEn}
-
-
{info.description}
-
-
- {catProjects.length} projects
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 驱动编排
+ Powers Orchestration
+ 提供 API
+ Provides APIs
+ 触发 RPA
+ Triggers RPA
+ 提供能力
+ Provides Capabilities
+
+
+
+
+
+
+
+
+
+
+
+ {
+ workflow ? (
+
+
+
+
+
+ iflytek / astron-agent
+
+
+
+
+ {workflow.data.description}
+
+
+
+ {(workflow.data.languages || []).map((lang) => (
+
+ {lang === 'Java' && (
+
+ )}
+ {lang === 'Python' && (
+
+ )}
+ {lang === 'TypeScript' && (
+
+ )}
+ {lang}
+
+ ))}
+
+
+ ) : (
+
+ 🚧
+
+ )
+ }
+
+
+
+
+
+
+ {
+ automation ? (
+
+
+
+
+
+ iflytek / astron-rpa
+
+
+
+
+ {automation.data.description}
+
+
+
+ {(automation.data.languages || []).map((lang) => (
+
+ {lang === 'Java' && (
+
+ )}
+ {lang === 'Python' && (
+
+ )}
+ {lang}
+
+ ))}
+
+
+ ) : (
+
+ 🚧
+
+ )
+ }
+
+
- {/* Project Grid */}
-
+
+
+
+
+
+
+
+ 保存高清图片
+ Save HD Image
+
+
+
+
diff --git a/src/pages/projects.astro b/src/pages/projects.astro
index 7df22f1..74f8d5c 100644
--- a/src/pages/projects.astro
+++ b/src/pages/projects.astro
@@ -20,14 +20,13 @@ const categories = [...new Set(sortedProjects.map((p) => p.data.category))];
// Extract unique languages
const languages = [...new Set(sortedProjects.flatMap((p) => p.data.languages || []))].sort();
-const categoryLabels: Record
= {
- 'ai-platform': 'AI 平台',
- 'developer-tools': '开发者工具',
- 'rpa-automation': 'RPA & 自动化',
- 'ai-skills': 'AI 技能',
- tutorials: '教程',
- 'nlp-speech': 'NLP & 语音',
- infrastructure: '基础设施',
+const categoryLabels: Record = {
+ 'agentic-workflow': { zh: '智能体工作流 (agentic-workflow)', en: 'agentic-workflow' },
+ 'agentic-automation': { zh: '智能体自动化 (agentic-automation)', en: 'agentic-automation' },
+ 'agent-skills': { zh: '智能体技能 (agent-skills)', en: 'agent-skills' },
+ tutorial: { zh: '教程指南 (tutorial)', en: 'tutorial' },
+ 'agent-management': { zh: '智能体管理 (agent-management)', en: 'agent-management' },
+ 'agent-engine': { zh: '智能体引擎 (agent-engine)', en: 'agent-engine' },
};
// Total stats
@@ -47,14 +46,15 @@ const totalForks = sortedProjects.reduce((sum, p) => sum + (p.data.forks || 0),
- 开源项目 / Projects
+ 开源项目
+
-
- 探索 iFLYTEK 的开源项目生态,涵盖 AI Agent、开发工具等前沿领域
+
+ 探索科大讯飞的开源项目生态,涵盖 AI Agent、开发工具等前沿领域
@@ -62,17 +62,17 @@ const totalForks = sortedProjects.reduce((sum, p) => sum + (p.data.forks || 0),
{sortedProjects.length}
-
开源项目
+
开源项目
{(totalStars / 1000).toFixed(1)}k
-
GitHub Stars
+
GitHub Stars
{(totalForks / 1000).toFixed(1)}k
-
Forks
+
Forks
@@ -87,7 +87,9 @@ const totalForks = sortedProjects.reduce((sum, p) => sum + (p.data.forks || 0),
class="category-btn rounded-full bg-primary-600 px-5 py-2 text-sm font-medium text-white"
data-category="all"
>
- 全部 / All ({sortedProjects.length})
+ 全部 ({sortedProjects.length})
{
categories.map((cat) => (
@@ -95,7 +97,12 @@ const totalForks = sortedProjects.reduce((sum, p) => sum + (p.data.forks || 0),
class="category-btn rounded-full bg-gray-100 px-5 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"
data-category={cat}
>
- {categoryLabels[cat] || cat} ({sortedProjects.filter((p) => p.data.category === cat).length})
+ p.data.category === cat).length})`}
+ data-lang-en={`${categoryLabels[cat]?.en || cat} (${sortedProjects.filter((p) => p.data.category === cat).length})`}
+ >
+ {categoryLabels[cat]?.zh || cat} ({sortedProjects.filter((p) => p.data.category === cat).length})
+
))
}
@@ -109,7 +116,9 @@ const totalForks = sortedProjects.reduce((sum, p) => sum + (p.data.forks || 0),
class="lang-btn rounded-full bg-primary-600 px-4 py-1.5 text-xs font-medium text-white"
data-language="all"
>
- 全部语言 / All Languages
+
+ 全部语言
+
{languages.map((lang) => (
sum + (p.data.forks || 0),
sum + (p.data.forks || 0),
href="/landscape"
class="inline-flex items-center gap-2 rounded-xl border-2 border-primary-200 bg-primary-50 px-8 py-4 font-medium text-primary-700 transition-all hover:border-primary-300 hover:bg-primary-100 dark:border-primary-800 dark:bg-primary-950 dark:text-primary-300 dark:hover:bg-primary-900"
>
-
+
- 查看全景图 / View Landscape
+ >
+
+ 查看全景图
→
diff --git a/src/pages/projects/[slug].astro b/src/pages/projects/[slug].astro
index cbdc954..c3feadd 100644
--- a/src/pages/projects/[slug].astro
+++ b/src/pages/projects/[slug].astro
@@ -28,14 +28,13 @@ const langColors: Record
= {
Shell: '#89e051',
};
-const categoryLabels: Record = {
- 'ai-platform': 'AI 平台 / AI Platform',
- 'developer-tools': '开发者工具 / Developer Tools',
- 'rpa-automation': 'RPA & 自动化 / RPA & Automation',
- 'ai-skills': 'AI 技能 / AI Skills',
- tutorials: '教程 / Tutorials',
- 'nlp-speech': 'NLP & 语音 / NLP & Speech',
- infrastructure: '基础设施 / Infrastructure',
+const categoryLabels: Record = {
+ 'agentic-workflow': { zh: '智能体工作流 (agentic-workflow)', en: 'agentic-workflow' },
+ 'agentic-automation': { zh: '智能体自动化 (agentic-automation)', en: 'agentic-automation' },
+ 'agent-skills': { zh: '智能体技能 (agent-skills)', en: 'agent-skills' },
+ tutorial: { zh: '教程指南 (tutorial)', en: 'tutorial' },
+ 'agent-management': { zh: '智能体管理 (agent-management)', en: 'agent-management' },
+ 'agent-engine': { zh: '智能体引擎 (agent-engine)', en: 'agent-engine' },
};
---
@@ -44,7 +43,9 @@ const categoryLabels: Record = {
- 项目
+ 项目
/
{data.name}
@@ -65,14 +66,32 @@ const categoryLabels: Record
= {
- {categoryLabels[data.category] || data.category}
+ {
+ categoryLabels[data.category] ? (
+
+ {categoryLabels[data.category].zh}
+
+ ) : (
+ data.category
+ )
+ }
- {data.description}
+ {
+ data.descriptionEn ? (
+
+ {data.description}
+
+ ) : (
+ data.description
+ )
+ }
- {data.descriptionEn && {data.descriptionEn}
}
@@ -134,7 +153,7 @@ const categoryLabels: Record
= {
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"
>
- 查看源码 / View Source
+ 查看源码
{
data.homepage && (
@@ -152,7 +171,7 @@ const categoryLabels: Record = {
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
/>
- 访问官网 / Visit Website
+ 访问官网
)
}
@@ -165,7 +184,7 @@ const categoryLabels: Record = {
href="/projects"
class="inline-flex items-center gap-2 text-gray-600 transition-colors hover:text-primary-600 dark:text-gray-400 dark:hover:text-primary-400"
>
- ← 返回项目列表 / Back to Projects
+ ← 返回项目列表
diff --git a/src/pages/security.astro b/src/pages/security.astro
index fab20be..6a4d643 100644
--- a/src/pages/security.astro
+++ b/src/pages/security.astro
@@ -2,66 +2,120 @@
import MarkdownLayout from '~/layouts/MarkdownLayout.astro';
---
-
- If you discover a security issue in this project, please follow the guidelines below.
-
- Reporting a Vulnerability
-
-
- Do not report security vulnerabilities through public GitHub issues.
-
-
-
- Instead, please report security vulnerabilities by emailing the project's security team. The team will investigate
- and respond as soon as possible.
-
-
- What to Include
-
- Please include the following information in your report:
-
-
- A description of the vulnerability
- Steps to reproduce the issue
- Potential impact of the vulnerability
- Any suggested fixes or mitigations (if available)
-
-
- What to Expect
-
-
-
- Acknowledgment : We will acknowledge receipt of your report within 48 hours
-
-
- Assessment : We will assess the vulnerability and determine the severity
-
-
- Resolution : We will work on a fix and coordinate the disclosure
-
-
- Credit : We will credit you for the discovery (unless you prefer to remain anonymous)
-
-
-
- Supported Versions
-
-
- Only the latest release receives security patches. Users are encouraged to upgrade to the latest version to receive
- security fixes.
-
-
- Security Best Practices
-
-
- Keep all dependencies up to date
- Enable two-factor authentication on your GitHub account
- Follow the principle of least privilege when granting access
- Review code changes carefully before merging
-
-
-
- For the latest version of this policy, please visit
- iFLYTEK Community Security Policy .
-
+
+
+
+
如果你在本项目中发现安全问题,请遵循以下指南。
+
+
报告漏洞
+
+
+ 请勿 通过公开的 GitHub Issue 报告安全漏洞。
+
+
+
请通过电子邮件向项目安全团队报告安全漏洞。团队将尽快调查并回复。
+
+
报告内容
+
+
请在报告中包含以下信息:
+
+
+ 漏洞描述
+ 复现步骤
+ 漏洞的潜在影响
+ 建议的修复或缓解措施(如有)
+
+
+
处理流程
+
+
+ 确认收到 :我们将在 48 小时内确认收到你的报告
+ 评估 :我们将评估漏洞并确定严重程度
+ 修复 :我们将制定修复方案并协调披露
+ 致谢 :我们将感谢你的发现(除非你希望保持匿名)
+
+
+
支持的版本
+
+
仅最新版本接收安全补丁。建议用户升级到最新版本以获取安全修复。
+
+
安全最佳实践
+
+
+ 保持所有依赖项为最新状态
+ 在 GitHub 账户上启用双因素认证
+ 遵循最小权限原则
+ 合并前仔细审查代码变更
+
+
+
+ 最新版本的策略请访问
+ iFLYTEK 社区安全策略 。
+
+
+
+
+
+
If you discover a security issue in this project, please follow the guidelines below.
+
+
Reporting a Vulnerability
+
+
+ Do not report security vulnerabilities through public GitHub issues.
+
+
+
+ Instead, please report security vulnerabilities by emailing the project's security team. The team will investigate
+ and respond as soon as possible.
+
+
+
What to Include
+
+
Please include the following information in your report:
+
+
+ A description of the vulnerability
+ Steps to reproduce the issue
+ Potential impact of the vulnerability
+ Any suggested fixes or mitigations (if available)
+
+
+
What to Expect
+
+
+
+ Acknowledgment : We will acknowledge receipt of your report within 48 hours
+
+
+ Assessment : We will assess the vulnerability and determine the severity
+
+
+ Resolution : We will work on a fix and coordinate the disclosure
+
+
+ Credit : We will credit you for the discovery (unless you prefer to remain anonymous)
+
+
+
+
Supported Versions
+
+
+ Only the latest release receives security patches. Users are encouraged to upgrade to the latest version to
+ receive security fixes.
+
+
+
Security Best Practices
+
+
+ Keep all dependencies up to date
+ Enable two-factor authentication on your GitHub account
+ Follow the principle of least privilege when granting access
+ Review code changes carefully before merging
+
+
+
+ For the latest version of this policy, please visit
+ iFLYTEK Community Security Policy .
+
+
diff --git a/src/pages/values.astro b/src/pages/values.astro
index ca6abd2..7151f27 100644
--- a/src/pages/values.astro
+++ b/src/pages/values.astro
@@ -2,55 +2,92 @@
import MarkdownLayout from '~/layouts/MarkdownLayout.astro';
---
-
-
- The iFLYTEK Open Source Community is built on a foundation of shared values that guide our interactions, decisions,
- and growth.
-
+
+
+
+
科大讯飞开源社区建立在我们共同遵循的价值观之上,这些价值观指引着我们的互动、决策与成长。
-
Openness
+
开放
-
- We believe in the power of open collaboration. Our code, documentation, and decision-making processes are
- transparent and accessible to everyone.
-
+
我们相信开放协作的力量。我们的代码、文档和决策过程对所有人透明、可访问。
-
Inclusivity
+
包容
-
- We welcome contributors of all backgrounds, skill levels, and perspectives. A diverse community produces better
- software and fosters innovation.
-
+
我们欢迎所有背景、技能水平和观点的贡献者。多元化的社区能产出更好的软件并促进创新。
-
Respect
+
尊重
-
- We treat every community member with respect and kindness. Disagreements are natural, but we resolve them
- constructively and professionally.
-
+
我们以尊重和善意对待每一位社区成员。分歧是自然存在的,但我们以建设性和专业的方式解决。
-
Quality
+
质量
-
- We strive for excellence in everything we build. We value well-tested, well-documented, and maintainable code over
- quick fixes.
-
+
我们在所有构建中追求卓越。我们重视经过充分测试、文档完善和可维护的代码,而非快速修复。
-
Responsibility
+
责任
-
- We take responsibility for our contributions and their impact on users and the broader community. We consider
- security, accessibility, and sustainability in our work.
-
+
我们对我们的贡献及其对用户和更广泛社区的影响负责。我们在工作中考虑安全性、可访问性和可持续性。
-
Continuous Learning
+
持续学习
-
- We embrace a growth mindset. We learn from mistakes, share knowledge freely, and support each other's development.
-
+
我们拥抱成长型思维。我们从错误中学习,自由分享知识,并支持彼此的发展。
-
- For the latest version of our community values, please visit
- iFLYTEK Community Values .
-
+
+ 最新版本的社区价值观请访问
+ iFLYTEK 社区价值观 。
+
+
+
+
+
+
+ The iFLYTEK Open Source Community is built on a foundation of shared values that guide our interactions,
+ decisions, and growth.
+
+
+
Openness
+
+
+ We believe in the power of open collaboration. Our code, documentation, and decision-making processes are
+ transparent and accessible to everyone.
+
+
+
Inclusivity
+
+
+ We welcome contributors of all backgrounds, skill levels, and perspectives. A diverse community produces better
+ software and fosters innovation.
+
+
+
Respect
+
+
+ We treat every community member with respect and kindness. Disagreements are natural, but we resolve them
+ constructively and professionally.
+
+
+
Quality
+
+
+ We strive for excellence in everything we build. We value well-tested, well-documented, and maintainable code over
+ quick fixes.
+
+
+
Responsibility
+
+
+ We take responsibility for our contributions and their impact on users and the broader community. We consider
+ security, accessibility, and sustainability in our work.
+
+
+
Continuous Learning
+
+
+ We embrace a growth mindset. We learn from mistakes, share knowledge freely, and support each other's development.
+
+
+
+ For the latest version of our community values, please visit
+ iFLYTEK Community Values .
+
+
diff --git a/src/utils/translations.ts b/src/utils/translations.ts
new file mode 100644
index 0000000..0fdeac0
--- /dev/null
+++ b/src/utils/translations.ts
@@ -0,0 +1,230 @@
+/**
+ * Client-side i18n translation dictionary.
+ *
+ * Keys are referenced via `data-i18n="key"` on HTML elements.
+ * The `applyLanguage()` function in BasicScripts looks up these keys
+ * and swaps textContent when the language toggle is clicked.
+ *
+ * This file is imported at build time by BasicScripts.astro to embed
+ * the dictionary into the inline script.
+ */
+export const translations: Record = {
+ // Navigation
+ 'nav.home': { zh: '首页', en: 'Home' },
+ 'nav.projects': { zh: '项目', en: 'Projects' },
+ 'nav.projectList': { zh: '项目列表', en: 'Project List' },
+ 'nav.landscape': { zh: '全景图', en: 'Landscape' },
+ 'nav.events': { zh: '活动', en: 'Events' },
+ 'nav.blog': { zh: '博客', en: 'Blog' },
+ 'nav.allPosts': { zh: '全部文章', en: 'All Posts' },
+ 'nav.techBlog': { zh: '技术博客', en: 'Tech Blog' },
+ 'nav.latestNews': { zh: '最新新闻', en: 'Latest News' },
+ 'nav.contribute': { zh: '贡献', en: 'Contribute' },
+
+ // Footer
+ 'footer.quickLinks': { zh: '快速浏览', en: 'Quick Links' },
+ 'footer.contactUs': { zh: '联系我们', en: 'Contact Us' },
+ 'footer.relatedSites': { zh: '相关网站', en: 'Related Sites' },
+ 'footer.followUs': { zh: '关注我们', en: 'Follow Us' },
+ 'footer.securityPolicy': { zh: '安全策略', en: 'Security Policy' },
+ 'footer.communityValues': { zh: '社区价值观', en: 'Community Values' },
+ 'footer.cla': { zh: '开源许可', en: 'CLA' },
+
+ // Homepage
+ 'home.subtitle': {
+ zh: '探索科大讯飞的开源世界 — 涵盖 AI 大模型、自然语言处理、语音识别等前沿技术,共建智能未来。',
+ en: "Explore iFLYTEK's open source world — covering AI large models, NLP, speech recognition and more, building the intelligent future together.",
+ },
+ 'home.exploreBtn': { zh: '探索项目', en: 'Explore Projects' },
+ 'home.contributeBtn': { zh: '参与贡献', en: 'Contribute' },
+ 'home.statsTagline': { zh: '开源数据', en: 'Open Source Stats' },
+ 'home.statsTitle': { zh: '科大讯飞开源生态', en: 'iFLYTEK Open Source Ecosystem' },
+ 'home.statProjects': { zh: '开源项目', en: 'Projects' },
+ 'home.statLicense': { zh: '开源协议', en: 'License' },
+ 'home.featuresTagline': { zh: '探索', en: 'Explore' },
+ 'home.featuresTitle': { zh: '发现开源的力量', en: 'Discover the Power of Open Source' },
+ 'home.featuresSubtitle': {
+ zh: '从 AI 大模型到开发者工具,科大讯飞开源生态覆盖多个技术领域',
+ en: 'From AI large models to developer tools, iFLYTEK open source ecosystem covers multiple tech domains',
+ },
+ 'home.featProjectsTitle': { zh: '开源项目', en: 'Open Source Projects' },
+ 'home.featProjectsDesc': {
+ zh: '涵盖 AI、NLP、语音识别、开发者工具等多个领域的开源项目,提供完整的文档和示例。',
+ en: 'Open source projects covering AI, NLP, speech recognition, developer tools and more, with full documentation and examples.',
+ },
+ 'home.featLandscapeTitle': { zh: '全景图', en: 'Landscape' },
+ 'home.featLandscapeDesc': {
+ zh: 'CNCF 风格的开源生态全景图,一目了然地查看所有科大讯飞开源项目及分类。',
+ en: 'CNCF-style ecosystem landscape showing all iFLYTEK open source projects and categories at a glance.',
+ },
+ 'home.featBlogTitle': { zh: '技术博客', en: 'Tech Blog' },
+ 'home.featBlogDesc': {
+ zh: '深入的技术文章、教程和架构分享,帮助你更好地理解和使用开源项目。',
+ en: 'In-depth technical articles, tutorials and architecture sharing to help you better understand and use open source projects.',
+ },
+ 'home.featEventsTitle': { zh: '社区活动', en: 'Community Events' },
+ 'home.featEventsDesc': {
+ zh: 'Meetup、Hackathon、Conference 等丰富多彩的社区活动,与开发者面对面交流。',
+ en: 'Meetups, Hackathons, Conferences and more — connect face-to-face with developers.',
+ },
+ 'home.featContributeTitle': { zh: '参与贡献', en: 'Contribute' },
+ 'home.featContributeDesc': {
+ zh: '无论你是新手还是资深开发者,都可以找到适合自己的贡献方式。',
+ en: "Whether you're a beginner or a seasoned developer, there's a way for you to contribute.",
+ },
+ 'home.featLicenseTitle': { zh: '开源许可', en: 'Open Source License' },
+ 'home.featLicenseDesc': {
+ zh: '所有项目均采用宽松的开源协议,鼓励商业使用和技术创新。',
+ en: 'All projects use permissive open source licenses, encouraging commercial use and innovation.',
+ },
+ 'home.blogTitle': { zh: '技术博客与新闻', en: 'Tech Blog & News' },
+ 'home.ctaTitle': { zh: '加入科大讯飞开源社区', en: 'Join the iFLYTEK Open Source Community' },
+ 'home.ctaSubtitle': { zh: '与我们一起构建更好的 AI 开源生态', en: 'Build a better AI open source ecosystem with us' },
+ 'home.ctaGithub': { zh: '在 GitHub 上关注我们', en: 'Follow us on GitHub' },
+ 'home.ctaDiscord': { zh: '加入 Discord', en: 'Join Discord' },
+
+ // Projects
+ 'projects.titleZh': { zh: '开源项目', en: 'Projects' },
+ 'projects.subtitle': {
+ zh: '探索科大讯飞的开源项目生态,涵盖 AI Agent、开发工具等前沿领域',
+ en: "Explore iFLYTEK's open source project ecosystem, covering AI Agent, developer tools and more",
+ },
+ 'projects.statProjects': { zh: '开源项目', en: 'Projects' },
+ 'projects.statStars': { zh: 'GitHub Stars', en: 'GitHub Stars' },
+ 'projects.statForks': { zh: 'Forks', en: 'Forks' },
+ 'projects.allBtn': { zh: '全部', en: 'All' },
+ 'projects.allLangBtn': { zh: '全部语言', en: 'All Languages' },
+ 'projects.viewLandscape': { zh: '查看全景图', en: 'View Landscape' },
+
+ // Category
+ 'category.techTitle': { zh: '技术博客', en: 'Tech Blog' },
+ 'category.techDesc': {
+ zh: '深度技术文章、架构设计与工程实践,探索 AI、NLP、开发者工具等前沿技术',
+ en: 'In-depth technical articles, architecture design and engineering practices exploring AI, NLP, developer tools and more',
+ },
+ 'category.newsTitle': { zh: '最新新闻', en: 'Latest News' },
+ 'category.newsDesc': {
+ zh: '项目发布、版本更新、社区活动等科大讯飞开源生态最新资讯',
+ en: 'Latest news on project releases, version updates, community events and the iFLYTEK open source ecosystem',
+ },
+
+ // Contribute
+ 'contribute.titleZh': { zh: '参与贡献', en: 'Contribute' },
+ 'contribute.subtitle': {
+ zh: '无论你是新手还是资深开发者,科大讯飞开源社区都欢迎你',
+ en: "Whether you're a beginner or a seasoned developer, the iFLYTEK open source community welcomes you",
+ },
+ 'contribute.statContributors': { zh: '贡献者', en: 'Contributors' },
+ 'contribute.statTotalContributions': { zh: '总贡献', en: 'Total Contributions' },
+ 'contribute.contributorsWall': { zh: '贡献者墙', en: 'Contributors Wall' },
+ 'contribute.topContributors': { zh: '贡献者排行', en: 'Top Contributors' },
+ 'contribute.howTitle': { zh: '如何贡献', en: 'How to Contribute' },
+ 'contribute.issuesTitle': { zh: '新手任务', en: 'Good First Issues' },
+ 'contribute.issuesDesc': {
+ zh: '从这些适合新手的 Issue 开始你的贡献之旅',
+ en: 'Start your contribution journey with these beginner-friendly Issues',
+ },
+ 'contribute.communityTitle': { zh: '社区链接', en: 'Community Links' },
+ 'contribute.communityDesc': {
+ zh: '加入我们的社区,参与讨论和交流',
+ en: 'Join our community for discussions and networking',
+ },
+ 'contribute.prWorkflow': { zh: '贡献流程', en: 'PR Workflow' },
+ 'contribute.viewGuide': { zh: '查看贡献指南', en: 'View Contributing Guide' },
+ 'contribute.bugTitle': { zh: '报告 Bug', en: 'Report Bugs' },
+ 'contribute.bugDesc': {
+ zh: '在 GitHub Issues 中提交 Bug 报告,帮助我们发现问题、改进质量',
+ en: 'Submit bug reports on GitHub Issues to help us find and fix problems',
+ },
+ 'contribute.ideaTitle': { zh: '提出建议', en: 'Suggest Ideas' },
+ 'contribute.ideaDesc': {
+ zh: '分享你的想法和功能建议,参与项目方向讨论和 RFC',
+ en: 'Share your ideas and feature suggestions, participate in project direction discussions',
+ },
+ 'contribute.codeTitle': { zh: '提交代码', en: 'Submit Code' },
+ 'contribute.codeDesc': {
+ zh: 'Fork 项目,提交 Pull Request,修复 Bug 或开发新功能',
+ en: 'Fork the project, submit Pull Requests, fix bugs or develop new features',
+ },
+ 'contribute.docsTitle': { zh: '完善文档', en: 'Improve Docs' },
+ 'contribute.docsDesc': {
+ zh: '改进文档、编写教程、翻译内容,让更多人能顺利使用项目',
+ en: 'Improve documentation, write tutorials, translate content to help more users',
+ },
+ 'contribute.shareTitle': { zh: '传播分享', en: 'Share & Promote' },
+ 'contribute.shareDesc': {
+ zh: 'Star 项目、写博客、在社区活动中分享你的使用经验',
+ en: 'Star projects, write blog posts, share your experience at community events',
+ },
+ 'contribute.buildTitle': { zh: '社区建设', en: 'Community Building' },
+ 'contribute.buildDesc': {
+ zh: '参与讨论、帮助新用户、组织 Meetup,共同建设开源社区',
+ en: 'Join discussions, help newcomers, organize Meetups, build the open source community together',
+ },
+
+ // Events
+ 'events.titleZh': { zh: '社区活动', en: 'Community Events' },
+ 'events.subtitle': {
+ zh: '参与科大讯飞开源社区活动 — Meetup、Hackathon、Workshop,与开发者面对面交流',
+ en: 'Join iFLYTEK open source community events — Meetups, Hackathons, Workshops, connect face-to-face with developers',
+ },
+ 'events.allBtn': { zh: '全部', en: 'All' },
+ 'events.upcoming': { zh: '即将举办', en: 'Upcoming' },
+ 'events.ongoing': { zh: '进行中', en: 'Ongoing' },
+ 'events.past': { zh: '已结束', en: 'Past' },
+ 'events.viewDetails': { zh: '详情', en: 'Details' },
+ 'events.latestNews': { zh: '最新动态', en: 'Latest News' },
+
+ // Blog
+ 'blog.titleZh': { zh: '技术博客', en: 'Blog' },
+ 'blog.subtitle': {
+ zh: '深入的技术文章、教程和架构分享,帮助你更好地理解和使用科大讯飞开源项目',
+ en: 'In-depth technical articles, tutorials and architecture sharing to help you better understand iFLYTEK open source projects',
+ },
+ 'blog.prevPost': { zh: '上一篇', en: 'Previous Post' },
+ 'blog.nextPost': { zh: '下一篇', en: 'Next Post' },
+ 'blog.relatedPosts': { zh: '相关文章', en: 'Related Posts' },
+ 'blog.minRead': { zh: '分钟阅读', en: 'min read' },
+ 'blog.viewAllPosts': { zh: '查看所有文章', en: 'View All Posts' },
+ 'blog.newerPosts': { zh: '更新的文章', en: 'Newer posts' },
+ 'blog.olderPosts': { zh: '更早的文章', en: 'Older posts' },
+
+ // Landscape
+ 'landscape.titleZh': { zh: '开源全景图', en: 'Open Source Landscape' },
+ 'landscape.subtitle': {
+ zh: '科大讯飞开源项目生态全景',
+ en: 'iFLYTEK open source project ecosystem overview',
+ },
+ 'landscape.projects': { zh: '个项目', en: 'projects' },
+ 'landscape.comingSoon': { zh: '即将开放', en: 'Coming Soon' },
+ 'landscape.about': { zh: '关于全景图', en: 'About Landscape' },
+ 'landscape.aboutText': {
+ zh: '全景图以分类视图展示科大讯飞所有开源项目,数据基于 GitHub 仓库实时更新。灵感来源于',
+ en: 'The landscape shows all iFLYTEK open source projects by category, with data updated in real-time from GitHub. Inspired by',
+ },
+ 'landscape.aboutText2': {
+ zh: '。 项目数据每周自动通过 GitHub Actions 更新。',
+ en: '. Project data is automatically updated weekly via GitHub Actions.',
+ },
+ 'landscape.zoomIn': { zh: '放大', en: 'Zoom In' },
+ 'landscape.zoomOut': { zh: '缩小', en: 'Zoom Out' },
+ 'landscape.reset': { zh: '重置', en: 'Reset' },
+
+ // Project Detail
+ 'projectDetail.back': { zh: '返回项目列表', en: 'Back to Projects' },
+ 'projectDetail.projects': { zh: '项目', en: 'Projects' },
+ 'projectDetail.viewSource': { zh: '查看源码', en: 'View Source' },
+ 'projectDetail.visitHomepage': { zh: '访问官网', en: 'Visit Website' },
+
+ // Static pages
+ 'security.titleZh': { zh: '安全策略', en: 'Security Policy' },
+ 'values.titleZh': { zh: '社区价值观', en: 'Community Values' },
+ 'cla.titleZh': { zh: '开源许可', en: 'Contributor License Agreement' },
+
+ // Footer
+ 'footer.wechatTitle': { zh: '微信扫码加入社区', en: 'Scan QR to join WeChat group' },
+ 'footer.wechatDesc': {
+ zh: 'Scan the QR code to join our WeChat group',
+ en: 'Scan the QR code to join our WeChat group',
+ },
+};