Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
246452d
站点改成多语言:英文默认、越南文跟上,中文仍是原文
cschanhniem Sep 30, 2026
0f75466
站点上线 GitHub Pages:域名、部署方式和多语言检索页
cschanhniem Sep 30, 2026
8ffd184
跳语言页和 sitemap 的 hreflang 跟着已发布的语言走
cschanhniem Sep 30, 2026
4f951df
修掉 logo 链接的双份语言目录 (#1)
streamentry Sep 30, 2026
acd1999
越南文上线:vi/README.md 和四篇长文入库,站点变三种语言
cschanhniem Sep 30, 2026
cf1c545
Astro 静态预渲染上线:爬虫不用跑 JS 就看到全文 (#2)
streamentry Sep 30, 2026
3fb31f4
退役分支发布的生成物:站点改走 workflow 发布 (#3)
streamentry Sep 30, 2026
6c8f972
网站发布改成全自动:push 到 main 就构建发布,不再按路径过滤 (#4)
streamentry Sep 30, 2026
f8fcee3
Update README.md
streamentry Sep 30, 2026
149038d
英文第 14 到 23 节翻完;检索页生成物退出仓库 (#5)
streamentry Sep 30, 2026
96719af
Import and credit HowToLiveLonger source material
streamentry Oct 1, 2026
229fd45
英文搬到根 URL;EN 32/34、VI 15/34 节已翻并合入 (#7)
streamentry Oct 2, 2026
fdb2f17
英文最后两节(33 残疾之后怎么活、26 做一个网站或平台)翻完并合入:EN 34/34 全书
cschanhniem Oct 2, 2026
18e336c
节标题和导读也要翻:join 不再拿中文原文盖在译文前面,检查加上这两条
cschanhniem Oct 2, 2026
e07a7cb
越南文第 31 节(十八岁之后有哪几条路)等翻完并合入:VI 27/34
cschanhniem Oct 2, 2026
4ef30ed
节标题统一用 README 目录里那一份,检查里对一遍
cschanhniem Oct 2, 2026
469fa3f
越南文第 06 节(反面清单)等翻完并合入:VI 30/34;节标题要改源码那一份
cschanhniem Oct 2, 2026
0208ae1
越南文全书翻完:34/34 节,641 条,三种语言条目数一致
cschanhniem Oct 2, 2026
694aefb
条目标题也纳入检查:正文逐栏校了六遍,标题这一行以前没人管
cschanhniem Oct 2, 2026
a3eb550
BRIEF 把刚补上的三条判据写进去,标点和量级换算各给一个正反例
cschanhniem Oct 2, 2026
50f3450
sync-stats 也回写译本的 README:三个 README 的数字该永远一样
cschanhniem Oct 2, 2026
ce54891
book.yml 的注释跟上:译文检查现在还查节标题、导读、条目标题
cschanhniem Oct 2, 2026
6825568
CLAUDE.md 跟上:译文的三处新判据、数字的双向要求、三个 README 的同步
cschanhniem Oct 2, 2026
676c28a
长文(docs/)的来源段也按规则 6 收拾:机构名译+中文括注,作者列表的「等」改 et al.
cschanhniem Oct 2, 2026
1d42655
Merge upstream/main:同步 19 个提交,650 条
cschanhniem Oct 2, 2026
5292deb
译文跟上中文原文 650 条:en/vi 全书对齐,长文补三篇
cschanhniem Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
# 正文一改就重新生成三样,挂到固定的 Release「epub-latest」上,下载链接不变:
# EPUB https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub
# PDF https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.pdf
# 离线单文件 https://github.com/eternity4719/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html
# EPUB https://github.com/streamentry/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.epub
# PDF https://github.com/streamentry/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.pdf
# 离线单文件 https://github.com/streamentry/HowToLiveBetter/releases/download/epub-latest/HowToLiveBetter.html
# PR 只生成并校验,不发布,产物在 Actions 页面的 artifact 里。
name: 电子书

# 触发条件里带上了 en/**、vi/**、zh/** 和 tools/i18n/**:译文和检索页也是正文的一部分了
on:
push:
branches: [main]
paths:
- README.md
- index.html
- en/**
- zh/**
- vi/**
- og.png
- ads/**
- book/**
Expand All @@ -20,7 +23,9 @@ on:
pull_request:
paths:
- README.md
- index.html
- en/**
- zh/**
- vi/**
- og.png
- ads/**
- book/**
Expand All @@ -41,6 +46,27 @@ env:
TYPST_VERSION: '0.15.1'

jobs:
# 译文检查:拿中文原文逐条对 en/ 和 vi/(tools/i18n/check.mjs,判据在 tools/i18n/structure.mjs)。
# 查的是丢东西:节数条数、六个字段、成本标签注释、证据等级、争议和待核实的标记、
# 收益/成本/来源三栏的数字、交叉引用的条号节号、链接数量,以及三处容易漏的文字——
# 节的标题(要与 README 目录一致)、节的导读、条目标题。
# 翻译 PR 在这里红就知道该翻哪一条,不用作者读译文。
# 单独一个 job:译文没对齐不该连累 EPUB、PDF 和离线单文件的发布。
i18n:
name: 译文检查
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: 英文与越南文对齐中文原文
run: node tools/i18n/check.mjs
- name: 长文指路的条号节号跟着原文
run: node tools/i18n/check-docs.mjs
- name: 中文文案和模板一致
run: node tools/site/extract.mjs --check

# 交叉引用检查。单独一个 job,不挂在 build 里:锚点没补好不该连累 EPUB、PDF 和
# 离线单文件的发布,那是两回事。PR 上照样红,main 上该发的还是发出去。
# 本地那条链路(sync-stats.mjs)要记得跑才会跑,
Expand Down
74 changes: 74 additions & 0 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Astro 站点:构建 web/ 并发布到 GitHub Pages。
#
# 和 book.yml 的分工:book.yml 管电子书(EPUB/PDF/离线单文件)和正文检查,
# 这里管网站。两边各管一头,互不挡——正文写错了,网站照发(内容是旧的但能看);
# 网站构建坏了,电子书照发。
#
# 触发:push 到 main 就自动构建发布,不再按路径过滤——改了什么都跟着发,
# 免得正文更新了而网站没动。PR 只构建不发布;改 EPUB/PDF 模板不触发这里
#(book.yml 管那一头)。
name: 网站

on:
push:
branches: [main]
pull_request:
paths:
- web/**
- book/**
- en/**
- vi/**
- README.md
- docs/*.md
- tools/site/**
- tools/i18n/**
- .github/workflows/web.yml
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
verify:
name: 校验与构建
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: web/package-lock.json

- run: npm ci
working-directory: web

# 解析一致(Astro 用的解析器和页面里的是同一份逻辑)→ 构建 →
# 渲染一致(构建产物里有全文,hydration 钩子齐,引用不悬空)。
# 三步一根链,断一处就红,免得发出爬虫看不懂的页面。
- name: 校验、构建、验产物
run: npm run verify
working-directory: web

- uses: actions/upload-pages-artifact@v3
with:
path: web/dist

deploy:
name: 发布到 Pages
if: github.event_name != 'pull_request'
needs: verify
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,22 @@
.junie/
node_modules/
dist/

# 翻译中间产物:切出来的块(.i18n/<语言>/<节名>/partNN.md)。译文合进 <语言>/book/ 之后
# 这份就没用了,join.mjs 每次都从原文重切。重切不覆盖已翻的块,所以它是活的翻译进度。
.i18n/

# Astro 生成物:本地和 CI 的构建缓存,由 web/ 的构建出,不入库。
# 站点直发 GitHub Pages,产物不进仓库(CLAUDE.md「目录结构」一节)
web/.astro/
web/dist/

# 旧的手写页面:2026-09-30 切到 Astro 构建后由构建产出,不再入库。
# tools/site/build.mjs 仍然是库(离线单文件和 Astro 都调它),但它写盘的那些
# 页面不再跟踪——留着会变成「改了模板忘了重建」的过时副本。
/index.html
/en/index.html
/zh/index.html
/vi/index.html
/sitemap.xml
/robots.txt
Loading