blume 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/dist/cli/index.js +3290 -254
- package/dist/cli/index.js.map +79 -67
- package/dist/types/core/base-path.d.ts +5 -0
- package/dist/types/core/config-input.d.ts +82 -6
- package/dist/types/core/i18n-ui.d.ts +2 -0
- package/dist/types/core/schema.d.ts +19 -2
- package/dist/types/core/sources/types.d.ts +5 -0
- package/dist/types/core/types.d.ts +4 -3
- package/docs/02-deployment.mdx +1 -1
- package/docs/configuration/ai.mdx +16 -2
- package/docs/configuration/index.mdx +26 -0
- package/docs/configuration/search.mdx +1 -3
- package/docs/content/i18n.mdx +13 -1
- package/docs/content/navigation.mdx +11 -0
- package/docs/reference/cli.mdx +4 -0
- package/docs/reference/frontmatter.mdx +33 -0
- package/docs/reference/meta.ts +1 -1
- package/docs/reference/translate.mdx +80 -0
- package/package.json +1 -1
- package/src/ai/agent-readability.ts +7 -4
- package/src/ai/ask-context.ts +3 -6
- package/src/ai/link-headers.ts +4 -3
- package/src/ai/llms.ts +4 -2
- package/src/ai/markdown.ts +34 -1
- package/src/ai/mcp/data.ts +10 -4
- package/src/ai/mcp/server.ts +74 -3
- package/src/ai/mcp/tools.ts +2 -2
- package/src/astro/generate.ts +2 -2
- package/src/astro/integration.ts +6 -2
- package/src/astro/markdown-negotiation.ts +5 -0
- package/src/astro/templates.ts +74 -21
- package/src/audit/url.ts +5 -10
- package/src/cli/commands/build.ts +145 -34
- package/src/cli/commands/translate.ts +300 -0
- package/src/cli/index.ts +2 -0
- package/src/components/Icon.astro +2 -7
- package/src/components/content/Step.astro +3 -8
- package/src/components/content/Tab.astro +20 -1
- package/src/components/layout/LanguageSwitcher.astro +2 -1
- package/src/components/layout/Logo.astro +4 -4
- package/src/components/layout/PageActions.astro +12 -7
- package/src/components/layout/Search.astro +15 -20
- package/src/components/layout/search/orama.ts +3 -1
- package/src/core/base-path.ts +9 -0
- package/src/core/config-input.ts +84 -6
- package/src/core/graph.ts +46 -2
- package/src/core/i18n-ui.ts +2 -0
- package/src/core/i18n.ts +31 -0
- package/src/core/nav-diagnostics.ts +13 -34
- package/src/core/project-graph.ts +13 -2
- package/src/core/schema.ts +174 -74
- package/src/core/sources/normalize.ts +25 -12
- package/src/core/sources/types.ts +5 -0
- package/src/core/types.ts +4 -3
- package/src/core/ui-packs/ar.ts +42 -1
- package/src/core/ui-packs/bg.ts +42 -1
- package/src/core/ui-packs/bn.ts +42 -1
- package/src/core/ui-packs/ca.ts +44 -1
- package/src/core/ui-packs/cs.ts +42 -1
- package/src/core/ui-packs/da.ts +42 -1
- package/src/core/ui-packs/de.ts +42 -1
- package/src/core/ui-packs/el.ts +44 -1
- package/src/core/ui-packs/es.ts +44 -1
- package/src/core/ui-packs/fa.ts +42 -1
- package/src/core/ui-packs/fi.ts +42 -1
- package/src/core/ui-packs/fr.ts +44 -1
- package/src/core/ui-packs/he.ts +42 -1
- package/src/core/ui-packs/hi.ts +42 -1
- package/src/core/ui-packs/hr.ts +42 -1
- package/src/core/ui-packs/hu.ts +42 -1
- package/src/core/ui-packs/id.ts +42 -1
- package/src/core/ui-packs/it.ts +44 -1
- package/src/core/ui-packs/ja.ts +44 -1
- package/src/core/ui-packs/ko.ts +44 -1
- package/src/core/ui-packs/nl.ts +42 -1
- package/src/core/ui-packs/no.ts +42 -1
- package/src/core/ui-packs/pl.ts +42 -1
- package/src/core/ui-packs/pt-br.ts +44 -1
- package/src/core/ui-packs/pt.ts +44 -1
- package/src/core/ui-packs/ro.ts +42 -1
- package/src/core/ui-packs/ru.ts +42 -1
- package/src/core/ui-packs/sk.ts +42 -1
- package/src/core/ui-packs/sr.ts +42 -1
- package/src/core/ui-packs/sv.ts +42 -1
- package/src/core/ui-packs/th.ts +44 -1
- package/src/core/ui-packs/tr.ts +42 -1
- package/src/core/ui-packs/uk.ts +42 -1
- package/src/core/ui-packs/vi.ts +44 -1
- package/src/core/ui-packs/zh-tw.ts +44 -1
- package/src/core/ui-packs/zh.ts +44 -1
- package/src/deploy/adapter-output.ts +44 -5
- package/src/deploy/cloudflare-negotiation.ts +527 -0
- package/src/deploy/redirects.ts +13 -0
- package/src/deploy/vercel-negotiation.ts +30 -13
- package/src/eval/agents.ts +1 -1
- package/src/search/documents.ts +11 -0
- package/src/search/facets.ts +33 -0
- package/src/search/orama-index.ts +48 -6
- package/src/search/popular-icon.ts +33 -0
- package/src/theme/fonts.ts +3 -1
- package/src/theme/icon-kind.ts +20 -0
- package/src/translate/agents.ts +51 -0
- package/src/translate/ledger.ts +148 -0
- package/src/translate/meta.ts +149 -0
- package/src/translate/prompts.ts +95 -0
- package/src/translate/report.ts +360 -0
- package/src/translate/run.ts +376 -0
- package/src/translate/validate.ts +171 -0
- package/src/translate/work-list.ts +0 -0
package/src/core/ui-packs/tr.ts
CHANGED
|
@@ -9,25 +9,40 @@ export const tr: UIStringsOverride = {
|
|
|
9
9
|
connectMcp: "MCP'ye bağlan",
|
|
10
10
|
copied: "Kopyalandı!",
|
|
11
11
|
copyClaudeCode: "Claude Code komutunu kopyala",
|
|
12
|
+
copyCode: "Kodu kopyala",
|
|
13
|
+
copyCodex: "Codex komutunu kopyala",
|
|
12
14
|
copyMarkdown: "Markdown olarak kopyala",
|
|
13
15
|
copyServerUrl: "Sunucu URL'sini kopyala",
|
|
14
16
|
edit: "GitHub'da düzenle",
|
|
17
|
+
export: "Dışa aktar",
|
|
18
|
+
exportEpub: "EPUB olarak dışa aktar",
|
|
19
|
+
exportPdf: "PDF olarak dışa aktar",
|
|
20
|
+
generating: "Oluşturuluyor…",
|
|
21
|
+
openIn: "{name} içinde aç",
|
|
15
22
|
openInChat: "Sohbette aç",
|
|
16
23
|
scrollToTop: "Başa dön",
|
|
17
24
|
},
|
|
18
25
|
ask: {
|
|
26
|
+
ai: "Yapay zekâ",
|
|
27
|
+
clear: "Konuşmayı temizle",
|
|
28
|
+
close: "Kapat",
|
|
29
|
+
copy: "Konuşmayı kopyala",
|
|
19
30
|
empty: "Belgeler hakkında bir soru sorun.",
|
|
20
31
|
error: "Üzgünüz, bir şeyler ters gitti.",
|
|
21
32
|
label: "Bir soru sorun",
|
|
22
33
|
placeholder: "Bir soru sorun…",
|
|
23
34
|
send: "Gönder",
|
|
35
|
+
tip: "İpucu: Sohbeti şu tuşla açıp kapatabilirsiniz:",
|
|
24
36
|
title: "Yapay zekâya sor",
|
|
37
|
+
you: "Siz",
|
|
25
38
|
},
|
|
26
39
|
banner: { dismiss: "Duyuruyu kapat" },
|
|
27
40
|
changelog: {
|
|
28
41
|
description: "Ürün güncellemeleri ve sürüm notları.",
|
|
42
|
+
showReleases: "{version} sürümlerini göster",
|
|
29
43
|
title: "Değişiklik günlüğü",
|
|
30
44
|
},
|
|
45
|
+
content: { diagramError: "Bu diyagram görüntülenemedi." },
|
|
31
46
|
feedback: {
|
|
32
47
|
no: "Hayır",
|
|
33
48
|
question: "Bu sayfa yardımcı oldu mu?",
|
|
@@ -35,7 +50,24 @@ export const tr: UIStringsOverride = {
|
|
|
35
50
|
yes: "Evet",
|
|
36
51
|
},
|
|
37
52
|
languageSwitcher: { label: "Dil", untranslated: "Çevrilmemiş" },
|
|
38
|
-
nav: {
|
|
53
|
+
nav: {
|
|
54
|
+
back: "Geri",
|
|
55
|
+
breadcrumb: "Gezinme yolu",
|
|
56
|
+
closeNavigation: "Gezinmeyi kapat",
|
|
57
|
+
deprecated: "kullanımdan kaldırıldı",
|
|
58
|
+
featured: "Öne çıkan",
|
|
59
|
+
githubRepository: "GitHub deposu",
|
|
60
|
+
navigation: "Gezinme",
|
|
61
|
+
primary: "Birincil",
|
|
62
|
+
sections: "Bölümler",
|
|
63
|
+
toggleNavigation: "Gezinmeyi aç/kapat",
|
|
64
|
+
toggleTheme: "Renk temasını değiştir",
|
|
65
|
+
},
|
|
66
|
+
notFound: {
|
|
67
|
+
description: "Aradığınız sayfayı bulamadık.",
|
|
68
|
+
home: "Ana sayfaya dön",
|
|
69
|
+
title: "Sayfa bulunamadı",
|
|
70
|
+
},
|
|
39
71
|
page: {
|
|
40
72
|
lastUpdated: "Son güncelleme",
|
|
41
73
|
next: "Sonraki",
|
|
@@ -45,11 +77,20 @@ export const tr: UIStringsOverride = {
|
|
|
45
77
|
},
|
|
46
78
|
search: {
|
|
47
79
|
all: "Tümü",
|
|
80
|
+
allLanguages: "Tüm diller",
|
|
81
|
+
askAi: "Yapay zekâya sor",
|
|
82
|
+
askAiHint: "Yapay zekâdan anında yanıt alın",
|
|
48
83
|
button: "Ara",
|
|
49
84
|
devOnly: "Arama, üretim derlemesinde kullanılabilir.",
|
|
85
|
+
error: "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
|
|
50
86
|
label: "Belgelerde ara",
|
|
87
|
+
navigate: "gezin",
|
|
51
88
|
noResults: "Sonuç bulunamadı.",
|
|
89
|
+
open: "aç",
|
|
52
90
|
placeholder: "Belgelerde ara…",
|
|
91
|
+
popular: "Popüler",
|
|
92
|
+
preview: "önizle",
|
|
93
|
+
results: "Sonuçlar",
|
|
53
94
|
},
|
|
54
95
|
toc: { title: "Bu sayfada" },
|
|
55
96
|
};
|
package/src/core/ui-packs/uk.ts
CHANGED
|
@@ -9,25 +9,40 @@ export const uk: UIStringsOverride = {
|
|
|
9
9
|
connectMcp: "Підключитися до MCP",
|
|
10
10
|
copied: "Скопійовано!",
|
|
11
11
|
copyClaudeCode: "Скопіювати команду Claude Code",
|
|
12
|
+
copyCode: "Скопіювати код",
|
|
13
|
+
copyCodex: "Скопіювати команду Codex",
|
|
12
14
|
copyMarkdown: "Скопіювати як Markdown",
|
|
13
15
|
copyServerUrl: "Скопіювати URL сервера",
|
|
14
16
|
edit: "Редагувати на GitHub",
|
|
17
|
+
export: "Експорт",
|
|
18
|
+
exportEpub: "Експорт в EPUB",
|
|
19
|
+
exportPdf: "Експорт у PDF",
|
|
20
|
+
generating: "Генерація…",
|
|
21
|
+
openIn: "Відкрити в {name}",
|
|
15
22
|
openInChat: "Відкрити в чаті",
|
|
16
23
|
scrollToTop: "Нагору",
|
|
17
24
|
},
|
|
18
25
|
ask: {
|
|
26
|
+
ai: "ШІ",
|
|
27
|
+
clear: "Очистити бесіду",
|
|
28
|
+
close: "Закрити",
|
|
29
|
+
copy: "Скопіювати бесіду",
|
|
19
30
|
empty: "Поставте запитання щодо документації.",
|
|
20
31
|
error: "Вибачте, щось пішло не так.",
|
|
21
32
|
label: "Поставити запитання",
|
|
22
33
|
placeholder: "Поставте запитання…",
|
|
23
34
|
send: "Надіслати",
|
|
35
|
+
tip: "Порада: чат можна відкрити й закрити за допомогою",
|
|
24
36
|
title: "Запитати ШІ",
|
|
37
|
+
you: "Ви",
|
|
25
38
|
},
|
|
26
39
|
banner: { dismiss: "Закрити оголошення" },
|
|
27
40
|
changelog: {
|
|
28
41
|
description: "Оновлення продукту та примітки до випусків.",
|
|
42
|
+
showReleases: "Показати випуски {version}",
|
|
29
43
|
title: "Журнал змін",
|
|
30
44
|
},
|
|
45
|
+
content: { diagramError: "Не вдалося відобразити цю діаграму." },
|
|
31
46
|
feedback: {
|
|
32
47
|
no: "Ні",
|
|
33
48
|
question: "Чи була ця сторінка корисною?",
|
|
@@ -35,7 +50,24 @@ export const uk: UIStringsOverride = {
|
|
|
35
50
|
yes: "Так",
|
|
36
51
|
},
|
|
37
52
|
languageSwitcher: { label: "Мова", untranslated: "Не перекладено" },
|
|
38
|
-
nav: {
|
|
53
|
+
nav: {
|
|
54
|
+
back: "Назад",
|
|
55
|
+
breadcrumb: "Навігаційний ланцюжок",
|
|
56
|
+
closeNavigation: "Закрити навігацію",
|
|
57
|
+
deprecated: "застаріле",
|
|
58
|
+
featured: "Рекомендоване",
|
|
59
|
+
githubRepository: "Репозиторій GitHub",
|
|
60
|
+
navigation: "Навігація",
|
|
61
|
+
primary: "Основне",
|
|
62
|
+
sections: "Розділи",
|
|
63
|
+
toggleNavigation: "Перемкнути навігацію",
|
|
64
|
+
toggleTheme: "Перемкнути колірну тему",
|
|
65
|
+
},
|
|
66
|
+
notFound: {
|
|
67
|
+
description: "Не вдалося знайти сторінку, яку ви шукаєте.",
|
|
68
|
+
home: "Повернутися на головну",
|
|
69
|
+
title: "Сторінку не знайдено",
|
|
70
|
+
},
|
|
39
71
|
page: {
|
|
40
72
|
lastUpdated: "Останнє оновлення",
|
|
41
73
|
next: "Далі",
|
|
@@ -45,11 +77,20 @@ export const uk: UIStringsOverride = {
|
|
|
45
77
|
},
|
|
46
78
|
search: {
|
|
47
79
|
all: "Усі",
|
|
80
|
+
allLanguages: "Усі мови",
|
|
81
|
+
askAi: "Запитати ШІ",
|
|
82
|
+
askAiHint: "Отримайте миттєву відповідь від ШІ",
|
|
48
83
|
button: "Пошук",
|
|
49
84
|
devOnly: "Пошук доступний у production-збірці.",
|
|
85
|
+
error: "Щось пішло не так. Спробуйте ще раз.",
|
|
50
86
|
label: "Пошук у документації",
|
|
87
|
+
navigate: "навігація",
|
|
51
88
|
noResults: "Нічого не знайдено.",
|
|
89
|
+
open: "відкрити",
|
|
52
90
|
placeholder: "Пошук у документації…",
|
|
91
|
+
popular: "Популярне",
|
|
92
|
+
preview: "перегляд",
|
|
93
|
+
results: "Результати",
|
|
53
94
|
},
|
|
54
95
|
toc: { title: "На цій сторінці" },
|
|
55
96
|
};
|
package/src/core/ui-packs/vi.ts
CHANGED
|
@@ -9,25 +9,42 @@ export const vi: UIStringsOverride = {
|
|
|
9
9
|
connectMcp: "Kết nối với MCP",
|
|
10
10
|
copied: "Đã sao chép!",
|
|
11
11
|
copyClaudeCode: "Sao chép lệnh Claude Code",
|
|
12
|
+
copyCode: "Sao chép mã",
|
|
13
|
+
copyCodex: "Sao chép lệnh Codex",
|
|
12
14
|
copyMarkdown: "Sao chép dưới dạng Markdown",
|
|
13
15
|
copyServerUrl: "Sao chép URL máy chủ",
|
|
14
16
|
edit: "Chỉnh sửa trên GitHub",
|
|
17
|
+
export: "Xuất",
|
|
18
|
+
exportEpub: "Xuất ra EPUB",
|
|
19
|
+
exportPdf: "Xuất ra PDF",
|
|
20
|
+
generating: "Đang tạo…",
|
|
21
|
+
openIn: "Mở trong {name}",
|
|
15
22
|
openInChat: "Mở trong trò chuyện",
|
|
16
23
|
scrollToTop: "Lên đầu trang",
|
|
17
24
|
},
|
|
18
25
|
ask: {
|
|
26
|
+
ai: "AI",
|
|
27
|
+
clear: "Xóa cuộc trò chuyện",
|
|
28
|
+
close: "Đóng",
|
|
29
|
+
copy: "Sao chép cuộc trò chuyện",
|
|
19
30
|
empty: "Đặt câu hỏi về tài liệu.",
|
|
20
31
|
error: "Xin lỗi, đã xảy ra sự cố.",
|
|
21
32
|
label: "Đặt câu hỏi",
|
|
22
33
|
placeholder: "Đặt câu hỏi…",
|
|
23
34
|
send: "Gửi",
|
|
35
|
+
tip: "Mẹo: Bạn có thể mở và đóng trò chuyện bằng",
|
|
24
36
|
title: "Hỏi AI",
|
|
37
|
+
you: "Bạn",
|
|
25
38
|
},
|
|
26
39
|
banner: { dismiss: "Đóng thông báo" },
|
|
27
40
|
changelog: {
|
|
28
41
|
description: "Cập nhật sản phẩm và ghi chú phát hành.",
|
|
42
|
+
showReleases: "Hiện các bản phát hành {version}",
|
|
29
43
|
title: "Nhật ký thay đổi",
|
|
30
44
|
},
|
|
45
|
+
content: {
|
|
46
|
+
diagramError: "Không thể hiển thị sơ đồ này.",
|
|
47
|
+
},
|
|
31
48
|
feedback: {
|
|
32
49
|
no: "Không",
|
|
33
50
|
question: "Trang này có hữu ích không?",
|
|
@@ -35,7 +52,24 @@ export const vi: UIStringsOverride = {
|
|
|
35
52
|
yes: "Có",
|
|
36
53
|
},
|
|
37
54
|
languageSwitcher: { label: "Ngôn ngữ", untranslated: "Chưa dịch" },
|
|
38
|
-
nav: {
|
|
55
|
+
nav: {
|
|
56
|
+
back: "Quay lại",
|
|
57
|
+
breadcrumb: "Đường dẫn điều hướng",
|
|
58
|
+
closeNavigation: "Đóng điều hướng",
|
|
59
|
+
deprecated: "lỗi thời",
|
|
60
|
+
featured: "Nổi bật",
|
|
61
|
+
githubRepository: "Kho lưu trữ GitHub",
|
|
62
|
+
navigation: "Điều hướng",
|
|
63
|
+
primary: "Chính",
|
|
64
|
+
sections: "Chuyên mục",
|
|
65
|
+
toggleNavigation: "Chuyển đổi điều hướng",
|
|
66
|
+
toggleTheme: "Chuyển đổi chủ đề màu",
|
|
67
|
+
},
|
|
68
|
+
notFound: {
|
|
69
|
+
description: "Chúng tôi không tìm thấy trang bạn đang tìm.",
|
|
70
|
+
home: "Về trang chủ",
|
|
71
|
+
title: "Không tìm thấy trang",
|
|
72
|
+
},
|
|
39
73
|
page: {
|
|
40
74
|
lastUpdated: "Cập nhật lần cuối",
|
|
41
75
|
next: "Tiếp theo",
|
|
@@ -45,11 +79,20 @@ export const vi: UIStringsOverride = {
|
|
|
45
79
|
},
|
|
46
80
|
search: {
|
|
47
81
|
all: "Tất cả",
|
|
82
|
+
allLanguages: "Tất cả ngôn ngữ",
|
|
83
|
+
askAi: "Hỏi AI",
|
|
84
|
+
askAiHint: "Nhận câu trả lời tức thì từ AI",
|
|
48
85
|
button: "Tìm kiếm",
|
|
49
86
|
devOnly: "Tìm kiếm có sẵn trong bản dựng production.",
|
|
87
|
+
error: "Đã xảy ra sự cố. Vui lòng thử lại.",
|
|
50
88
|
label: "Tìm kiếm tài liệu",
|
|
89
|
+
navigate: "di chuyển",
|
|
51
90
|
noResults: "Không tìm thấy kết quả.",
|
|
91
|
+
open: "mở",
|
|
52
92
|
placeholder: "Tìm kiếm tài liệu…",
|
|
93
|
+
popular: "Phổ biến",
|
|
94
|
+
preview: "xem trước",
|
|
95
|
+
results: "Kết quả",
|
|
53
96
|
},
|
|
54
97
|
toc: { title: "Trên trang này" },
|
|
55
98
|
};
|
|
@@ -9,25 +9,42 @@ export const zhTW: UIStringsOverride = {
|
|
|
9
9
|
connectMcp: "連線至 MCP",
|
|
10
10
|
copied: "已複製!",
|
|
11
11
|
copyClaudeCode: "複製 Claude Code 指令",
|
|
12
|
+
copyCode: "複製程式碼",
|
|
13
|
+
copyCodex: "複製 Codex 指令",
|
|
12
14
|
copyMarkdown: "複製為 Markdown",
|
|
13
15
|
copyServerUrl: "複製伺服器 URL",
|
|
14
16
|
edit: "在 GitHub 上編輯",
|
|
17
|
+
export: "匯出",
|
|
18
|
+
exportEpub: "匯出為 EPUB",
|
|
19
|
+
exportPdf: "匯出為 PDF",
|
|
20
|
+
generating: "產生中…",
|
|
21
|
+
openIn: "在 {name} 中開啟",
|
|
15
22
|
openInChat: "在聊天中開啟",
|
|
16
23
|
scrollToTop: "回到頂部",
|
|
17
24
|
},
|
|
18
25
|
ask: {
|
|
26
|
+
ai: "AI",
|
|
27
|
+
clear: "清除對話",
|
|
28
|
+
close: "關閉",
|
|
29
|
+
copy: "複製對話",
|
|
19
30
|
empty: "針對文件提出問題。",
|
|
20
31
|
error: "抱歉,發生了一些問題。",
|
|
21
32
|
label: "提出問題",
|
|
22
33
|
placeholder: "提出問題…",
|
|
23
34
|
send: "傳送",
|
|
35
|
+
tip: "提示:可透過以下快捷鍵開啟和關閉聊天",
|
|
24
36
|
title: "向 AI 提問",
|
|
37
|
+
you: "你",
|
|
25
38
|
},
|
|
26
39
|
banner: { dismiss: "關閉公告" },
|
|
27
40
|
changelog: {
|
|
28
41
|
description: "產品更新與版本說明。",
|
|
42
|
+
showReleases: "顯示 {version} 的發布",
|
|
29
43
|
title: "更新日誌",
|
|
30
44
|
},
|
|
45
|
+
content: {
|
|
46
|
+
diagramError: "無法顯示此圖表。",
|
|
47
|
+
},
|
|
31
48
|
feedback: {
|
|
32
49
|
no: "沒有幫助",
|
|
33
50
|
question: "這個頁面有幫助嗎?",
|
|
@@ -35,7 +52,24 @@ export const zhTW: UIStringsOverride = {
|
|
|
35
52
|
yes: "有幫助",
|
|
36
53
|
},
|
|
37
54
|
languageSwitcher: { label: "語言", untranslated: "未翻譯" },
|
|
38
|
-
nav: {
|
|
55
|
+
nav: {
|
|
56
|
+
back: "返回",
|
|
57
|
+
breadcrumb: "麵包屑導覽",
|
|
58
|
+
closeNavigation: "關閉導覽",
|
|
59
|
+
deprecated: "已棄用",
|
|
60
|
+
featured: "精選",
|
|
61
|
+
githubRepository: "GitHub 儲存庫",
|
|
62
|
+
navigation: "導覽",
|
|
63
|
+
primary: "主要",
|
|
64
|
+
sections: "章節",
|
|
65
|
+
toggleNavigation: "切換導覽",
|
|
66
|
+
toggleTheme: "切換色彩主題",
|
|
67
|
+
},
|
|
68
|
+
notFound: {
|
|
69
|
+
description: "我們找不到你要瀏覽的頁面。",
|
|
70
|
+
home: "返回首頁",
|
|
71
|
+
title: "找不到頁面",
|
|
72
|
+
},
|
|
39
73
|
page: {
|
|
40
74
|
lastUpdated: "最後更新於",
|
|
41
75
|
next: "下一頁",
|
|
@@ -45,11 +79,20 @@ export const zhTW: UIStringsOverride = {
|
|
|
45
79
|
},
|
|
46
80
|
search: {
|
|
47
81
|
all: "全部",
|
|
82
|
+
allLanguages: "所有語言",
|
|
83
|
+
askAi: "向 AI 提問",
|
|
84
|
+
askAiHint: "從 AI 即時取得解答",
|
|
48
85
|
button: "搜尋",
|
|
49
86
|
devOnly: "搜尋在正式版組建中可用。",
|
|
87
|
+
error: "發生了一些問題,請再試一次。",
|
|
50
88
|
label: "搜尋文件",
|
|
89
|
+
navigate: "導覽",
|
|
51
90
|
noResults: "找不到結果。",
|
|
91
|
+
open: "開啟",
|
|
52
92
|
placeholder: "搜尋文件…",
|
|
93
|
+
popular: "熱門",
|
|
94
|
+
preview: "預覽",
|
|
95
|
+
results: "結果",
|
|
53
96
|
},
|
|
54
97
|
toc: { title: "本頁內容" },
|
|
55
98
|
};
|
package/src/core/ui-packs/zh.ts
CHANGED
|
@@ -9,25 +9,42 @@ export const zh: UIStringsOverride = {
|
|
|
9
9
|
connectMcp: "连接到 MCP",
|
|
10
10
|
copied: "已复制!",
|
|
11
11
|
copyClaudeCode: "复制 Claude Code 命令",
|
|
12
|
+
copyCode: "复制代码",
|
|
13
|
+
copyCodex: "复制 Codex 命令",
|
|
12
14
|
copyMarkdown: "复制为 Markdown",
|
|
13
15
|
copyServerUrl: "复制服务器 URL",
|
|
14
16
|
edit: "在 GitHub 上编辑",
|
|
17
|
+
export: "导出",
|
|
18
|
+
exportEpub: "导出为 EPUB",
|
|
19
|
+
exportPdf: "导出为 PDF",
|
|
20
|
+
generating: "生成中…",
|
|
21
|
+
openIn: "在 {name} 中打开",
|
|
15
22
|
openInChat: "在聊天中打开",
|
|
16
23
|
scrollToTop: "回到顶部",
|
|
17
24
|
},
|
|
18
25
|
ask: {
|
|
26
|
+
ai: "AI",
|
|
27
|
+
clear: "清空对话",
|
|
28
|
+
close: "关闭",
|
|
29
|
+
copy: "复制对话",
|
|
19
30
|
empty: "就文档提出问题。",
|
|
20
31
|
error: "抱歉,出了点问题。",
|
|
21
32
|
label: "提出问题",
|
|
22
33
|
placeholder: "提出问题…",
|
|
23
34
|
send: "发送",
|
|
35
|
+
tip: "提示:可通过以下快捷键打开和关闭聊天",
|
|
24
36
|
title: "向 AI 提问",
|
|
37
|
+
you: "你",
|
|
25
38
|
},
|
|
26
39
|
banner: { dismiss: "关闭公告" },
|
|
27
40
|
changelog: {
|
|
28
41
|
description: "产品更新与版本说明。",
|
|
42
|
+
showReleases: "显示 {version} 的发布",
|
|
29
43
|
title: "更新日志",
|
|
30
44
|
},
|
|
45
|
+
content: {
|
|
46
|
+
diagramError: "无法渲染此图表。",
|
|
47
|
+
},
|
|
31
48
|
feedback: {
|
|
32
49
|
no: "没有帮助",
|
|
33
50
|
question: "这个页面有帮助吗?",
|
|
@@ -35,7 +52,24 @@ export const zh: UIStringsOverride = {
|
|
|
35
52
|
yes: "有帮助",
|
|
36
53
|
},
|
|
37
54
|
languageSwitcher: { label: "语言", untranslated: "未翻译" },
|
|
38
|
-
nav: {
|
|
55
|
+
nav: {
|
|
56
|
+
back: "返回",
|
|
57
|
+
breadcrumb: "面包屑导航",
|
|
58
|
+
closeNavigation: "关闭导航",
|
|
59
|
+
deprecated: "已弃用",
|
|
60
|
+
featured: "精选",
|
|
61
|
+
githubRepository: "GitHub 仓库",
|
|
62
|
+
navigation: "导航",
|
|
63
|
+
primary: "主要",
|
|
64
|
+
sections: "章节",
|
|
65
|
+
toggleNavigation: "切换导航",
|
|
66
|
+
toggleTheme: "切换颜色主题",
|
|
67
|
+
},
|
|
68
|
+
notFound: {
|
|
69
|
+
description: "我们找不到你要访问的页面。",
|
|
70
|
+
home: "返回首页",
|
|
71
|
+
title: "页面未找到",
|
|
72
|
+
},
|
|
39
73
|
page: {
|
|
40
74
|
lastUpdated: "最后更新于",
|
|
41
75
|
next: "下一页",
|
|
@@ -45,11 +79,20 @@ export const zh: UIStringsOverride = {
|
|
|
45
79
|
},
|
|
46
80
|
search: {
|
|
47
81
|
all: "全部",
|
|
82
|
+
allLanguages: "所有语言",
|
|
83
|
+
askAi: "向 AI 提问",
|
|
84
|
+
askAiHint: "从 AI 即时获取答案",
|
|
48
85
|
button: "搜索",
|
|
49
86
|
devOnly: "搜索在生产构建中可用。",
|
|
87
|
+
error: "出了点问题,请重试。",
|
|
50
88
|
label: "搜索文档",
|
|
89
|
+
navigate: "导航",
|
|
51
90
|
noResults: "未找到结果。",
|
|
91
|
+
open: "打开",
|
|
52
92
|
placeholder: "搜索文档…",
|
|
93
|
+
popular: "热门",
|
|
94
|
+
preview: "预览",
|
|
95
|
+
results: "结果",
|
|
53
96
|
},
|
|
54
97
|
toc: { title: "本页内容" },
|
|
55
98
|
};
|
|
@@ -44,14 +44,53 @@ export const ADAPTER_OUTPUT_PATHS: Partial<Record<Adapter, string>> = {
|
|
|
44
44
|
netlify: ".netlify/v1",
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Whether this build keeps Astro's `dist/client` + `dist/server` split and
|
|
49
|
+
* serves only the `client/` half. True for Node and Cloudflare server builds:
|
|
50
|
+
* the Node standalone server's static handler reads only `build.client`, and
|
|
51
|
+
* `@astrojs/cloudflare` declares `preserveBuildClientDir: true` and points the
|
|
52
|
+
* ASSETS binding in the `dist/server/wrangler.json` it generates at
|
|
53
|
+
* `../client` — the Worker serves that directory and nothing above it. A
|
|
54
|
+
* Cloudflare *static* build has no server dir to split against, so its
|
|
55
|
+
* `outDir` root is what ships.
|
|
56
|
+
*/
|
|
57
|
+
export const servesClientSubdir = (
|
|
58
|
+
deployment: ResolvedConfig["deployment"]
|
|
59
|
+
): boolean =>
|
|
60
|
+
deployment.output === "server" &&
|
|
61
|
+
(deployment.adapter === "node" || deployment.adapter === "cloudflare");
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Whether the platform applies a `_headers` file to the static assets it
|
|
65
|
+
* serves. True for every static build (Netlify and Cloudflare Pages/Workers
|
|
66
|
+
* both read it) and, additionally, for a **Cloudflare server** build: the
|
|
67
|
+
* Worker serves `dist/client` through its ASSETS binding, and Workers static
|
|
68
|
+
* assets honor `_headers` from that directory exactly as Pages does.
|
|
69
|
+
*
|
|
70
|
+
* Deliberately not true for a Node server build. Node's standalone server has
|
|
71
|
+
* its own static handler with no `_headers` support, so writing the file there
|
|
72
|
+
* would be inert — and reporting a header that is not applied is worse than
|
|
73
|
+
* omitting it.
|
|
74
|
+
*
|
|
75
|
+
* A Vercel **server** build is excluded because its headers arrive through the
|
|
76
|
+
* routing config instead (see `deploy/vercel-negotiation.ts`), which
|
|
77
|
+
* `_headers` would duplicate rather than complement. A *static* build on the
|
|
78
|
+
* Vercel adapter still returns true: Vercel ignores the file, so it is inert
|
|
79
|
+
* there, matching what the old `output === "static"` gate emitted.
|
|
80
|
+
*/
|
|
81
|
+
export const readsHeaderFiles = (
|
|
82
|
+
deployment: ResolvedConfig["deployment"]
|
|
83
|
+
): boolean =>
|
|
84
|
+
deployment.output === "static" ||
|
|
85
|
+
(deployment.output === "server" && deployment.adapter === "cloudflare");
|
|
86
|
+
|
|
47
87
|
/**
|
|
48
88
|
* Directory whose contents the deploy platform serves as static files. Build
|
|
49
89
|
* artifacts (robots.txt, sitemap.xml, llms.txt, …) must be written here to be
|
|
50
90
|
* served. For a Vercel server build that is the adapter's
|
|
51
|
-
* `.vercel/output/static`; for a Node server build it is Astro's
|
|
52
|
-
* `build.client` dir (`dist/client/`
|
|
53
|
-
*
|
|
54
|
-
* Cloudflare serves the `outDir` root, so every other build serves `dist/`.
|
|
91
|
+
* `.vercel/output/static`; for a Node or Cloudflare server build it is Astro's
|
|
92
|
+
* `build.client` dir (`dist/client/` — see {@link servesClientSubdir}). Every
|
|
93
|
+
* other build serves `dist/` itself, Netlify included.
|
|
55
94
|
*/
|
|
56
95
|
export const deployStaticDir = (
|
|
57
96
|
config: ResolvedConfig,
|
|
@@ -62,7 +101,7 @@ export const deployStaticDir = (
|
|
|
62
101
|
return join(context.root, ".vercel", "output", "static");
|
|
63
102
|
}
|
|
64
103
|
const dist = context.distDir ?? join(context.root, "dist");
|
|
65
|
-
if (
|
|
104
|
+
if (servesClientSubdir(config.deployment)) {
|
|
66
105
|
return join(dist, "client");
|
|
67
106
|
}
|
|
68
107
|
return dist;
|