简体中文 | English
EndlessPixel 服务器的官方网站,基于 Next.js App Router + TypeScript + Tailwind CSS 构建。
- ⚡ 全栈 React 框架 Next.js 16,支持 SSR/SSG/ISR
- 🎨 Tailwind CSS 4 原子化样式,暗色模式开箱即用
- 🌍 多语言支持,中英文国际化
- 📦 80+ 启动器与整合包高速下载,支持自定义镜像
- 🧪 严格 TypeScript 类型检查,ESLint + Prettier 自动化
- 📱 响应式布局,PWA 离线支持(Workbox 自动生成)
- 🏠 服务器状态实时监控
- 📖 服务器 Wiki 文档
- 👥 团队成员展示
- Node.js ≥ 18
- npm ≥ 9
# 1. 克隆仓库
git clone https://github.com/EndlessPixel/server.git
cd server
# 2. 安装依赖
npm install
# 3. 启动开发服务器
npm run dev
# or npm dev-https浏览器访问 http://localhost:3000或https://localhost:3000 即可实时预览。
- Fork 本仓库
- 创建特性分支:
git checkout -b feat/xxx - 提交 Commit:
git commit -m "feat: 新增 xxx"(遵循 Conventional Commits) - 推送分支并提交 Pull Request
- CI 通过 & Code Review 合并
- 使用 TypeScript 严格模式
- 样式优先使用 Tailwind CSS,避免行内样式
- 提交前执行
npm run lint && npm run type-check
GNU Affero General Public License v3.0
允许商业使用、修改、再发布,但修改后的网络服务必须开源。
- 问题与建议:新建 Issue
- 讨论区:GitHub Discussions
-
在语言文件中添加翻译
- 打开
lib/langs/zh-cn.json(中文)和lib/langs/en.json(英文)文件 - 在适当的位置添加新的翻译键值对
- 确保两个语言文件中的键名保持一致
- 打开
-
在代码中使用翻译
- 导入
t函数:import { t } from '@/lib/i18n' - 使用
t('键名')来获取翻译后的文本
- 导入
-
创建语言文件
- 在
lib/langs/目录下创建新的语言文件,例如ja.json(日语) - 复制
zh-cn.json的结构,将翻译内容替换为目标语言
- 在
-
更新 i18n.ts 文件
- 打开
lib/i18n.ts文件 - 导入新的语言文件
- 在
locales对象中添加新的语言 - 在
languageNames对象中添加新语言的显示名称
- 打开
-
更新类型定义
- 确保
Locale类型能够包含新的语言代码
- 确保
- 命名规范:使用小写字母和连字符,按模块和功能组织翻译键
- 一致性:确保所有语言文件中的键名保持一致
- fallback 机制:如果某个语言缺少翻译,系统会返回键名,确保键名有意义
- 动态内容:使用替换参数,例如
t('components.example.message', { name: '用户' }) - 复数形式:对于需要复数形式的内容,考虑使用单独的键
Star ⭐ 与 Watch 👀 是对我们最大的支持!