docs: 添加目录自动跳转组件并使locale自动生成 (#14299)

* feat: 文档站添加重定向vue小组件

* revert: "docs: 将文档中指向部分文档目录的链接改为指向对应目录下的第一篇文档 (#14292)"

This reverts commit a24c772880.

* docs: zh-tw 目录自动跳转

* docs: zh-cn 目录自动跳转

* docs: ko-kr 目录自动跳转

* docs: ja-jp 目录自动跳转

* docs: en-us 目录自动跳转

* docs: 修复了多语言faq文章中的外链对应语言错误的问题

* refactor: 将matter模块改为default import

* feat: 将文档站的i18n和导航相关设置改为全自动生成

* fix: 去除了冗余的locale属性

文档站根据文件目录名称进行索引,linkName和dirName不可能不相同,故简化为单属性name

* refactor: 调整导航组件生成模块中的部分数据类型

* style: prettier fix
This commit is contained in:
Lucien Shaw
2025-10-04 23:44:54 +08:00
committed by GitHub
parent fb0bf0a510
commit e72b6d5e24
58 changed files with 219 additions and 266 deletions

View File

@@ -4,6 +4,7 @@ import { getAsciiArt } from './plugins/asciiArt.mts'
import AsciiArt from './components/AsciiArt.vue'
import ImageGrid from './components/ImageGrid.vue'
import Redirect from './components/Redirect.vue'
import './styles/index.scss'
@@ -11,6 +12,7 @@ export default defineClientConfig({
enhance: ({ app }) => {
app.component('AsciiArt', AsciiArt)
app.component('ImageGrid', ImageGrid)
app.component('Redirect', Redirect)
// 输出一个随机的字符画
const art = getAsciiArt(undefined, 'auto', 'console')

View File

@@ -0,0 +1,25 @@
<template />
<script setup lang="ts">
import { onMounted } from 'vue'
import { useRouter, useRoute } from 'vuepress/client'
interface Props {
to?: string
}
const props = defineProps<Props>()
const route = useRoute()
const router = useRouter()
function resolvePath(to: string) {
const target = new URL(to, 'http://example.com' + route.path) // 使用一个虚拟的基础 URL
return target.pathname
}
onMounted(() => {
if (!props.to) return
const targetPath = resolvePath(props.to)
router.replace(targetPath)
})
</script>

View File

@@ -3,6 +3,8 @@ import { defineUserConfig } from 'vuepress'
import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics'
import { plumeTheme } from 'vuepress-theme-plume'
import { genSiteLocales } from './navigation/genLocales'
import DocSearchConfig from './plugins/search'
const isProd = process.env.NODE_ENV === 'production'
@@ -15,33 +17,7 @@ export default defineUserConfig({
host: '0.0.0.0',
port: 3001,
locales: {
'/zh-cn/': {
lang: 'zh-CN',
title: 'MAA 文档站',
description: '文档',
},
'/zh-tw/': {
lang: 'zh-TW',
title: 'MAA 文件站',
description: '文件',
},
'/en-us/': {
lang: 'en-US',
title: 'MAA Documentation Site',
description: 'Documentation',
},
'/ja-jp/': {
lang: 'ja-JP',
title: 'MAA ドキュメントサイト',
description: 'ドキュメント',
},
'/ko-kr/': {
lang: 'ko-KR',
title: 'MAA 문서 사이트',
description: '문서',
},
},
locales: genSiteLocales(),
head: [
['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],

View File

@@ -1,19 +0,0 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export const enusNavbar = defineNavbarConfig([
{
text: 'User Manual',
icon: 'mdi:user',
link: '/en-us/manual/newbie.html',
},
{
text: 'Development Docs',
icon: 'ph:code-bold',
link: '/en-us/develop/development.html',
},
{
text: 'Protocol Docs',
icon: 'basil:document-solid',
link: '/en-us/protocol/integration.html',
},
])

View File

@@ -1,5 +0,0 @@
export * from './zh-cn'
export * from './zh-tw'
export * from './en-us'
export * from './ja-jp'
export * from './ko-kr'

View File

@@ -1,19 +0,0 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export const jajpNavbar = defineNavbarConfig([
{
text: '使用説明',
icon: 'mdi:user',
link: '/ja-jp/manual/newbie.html',
},
{
text: '開発関連',
icon: 'ph:code-bold',
link: '/ja-jp/develop/development.html',
},
{
text: 'プロトコルドキュメント',
icon: 'basil:document-solid',
link: '/ja-jp/protocol/integration.html',
},
])

View File

@@ -1,19 +0,0 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export const kokrNavbar = defineNavbarConfig([
{
text: '사용자 설명서',
icon: 'mdi:user',
link: '/ko-kr/manual/newbie.html',
},
{
text: '개발 문서',
icon: 'ph:code-bold',
link: '/ko-kr/develop/development.html',
},
{
text: '프로토콜 문서',
icon: 'basil:document-solid',
link: '/ko-kr/protocol/integration.html',
},
])

View File

@@ -1,19 +0,0 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export const zhcnNavbar = defineNavbarConfig([
{
text: '用户手册',
icon: 'mdi:user',
link: '/zh-cn/manual/newbie.html',
},
{
text: '开发文档',
icon: 'ph:code-bold',
link: '/zh-cn/develop/development.html',
},
{
text: '协议文档',
icon: 'basil:document-solid',
link: '/zh-cn/protocol/integration.html',
},
])

View File

@@ -1,19 +0,0 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export const zhtwNavbar = defineNavbarConfig([
{
text: '用戶說明書',
icon: 'mdi:user',
link: '/zh-tw/manual/newbie.html',
},
{
text: '開發文件',
icon: 'ph:code-bold',
link: '/zh-tw/develop/development.html',
},
{
text: '協議文件',
icon: 'basil:document-solid',
link: '/zh-tw/protocol/integration.html',
},
])

View File

@@ -0,0 +1,33 @@
import { SiteLocaleConfig, LocaleConfig } from 'vuepress'
import { ThemeLocaleData } from 'vuepress-theme-plume'
import { locales } from './i18n'
import { genNavigationComponents } from './genNavigationComponents'
export function genSiteLocales(): SiteLocaleConfig {
const siteLocales: SiteLocaleConfig = {}
for (const locale of locales) {
siteLocales[`/${locale.name}/`] = {
lang: locale.htmlLang,
title: locale.siteTitle,
description: locale.siteDescription,
}
}
return siteLocales
}
export function genThemeLocales(): LocaleConfig<ThemeLocaleData> {
const themeLocales: LocaleConfig<ThemeLocaleData> = {}
for (const locale of locales) {
const navigationComponents = genNavigationComponents(locale)
themeLocales[`/${locale.name}/`] = {
navbar: navigationComponents.navbar,
notes: {
dir: locale.name,
link: `/${locale.name}/`,
notes: navigationComponents.notes,
},
}
}
return themeLocales
}

View File

@@ -1,9 +1,9 @@
import * as fs from 'fs'
import * as path from 'path'
import * as matterModule from 'gray-matter'
import { defineNoteConfig, ThemeNote, ThemeSidebarItem } from 'vuepress-theme-plume'
import { default as matter } from 'gray-matter'
import { defineNoteConfig, ThemeNavItem, ThemeNote, ThemeSidebarItem } from 'vuepress-theme-plume'
const matter = (matterModule as any).default
import { Locale } from './i18n'
interface MetaData {
baseName: string
@@ -13,6 +13,11 @@ interface MetaData {
index: boolean
}
interface NavigationComponents {
navbar: ThemeNavItem[]
notes: ThemeNote[]
}
function getMetaData(dir: string, entry: fs.Dirent): MetaData | null {
const currentPath = path.join(dir, entry.name)
if (!fs.existsSync(currentPath)) {
@@ -35,6 +40,7 @@ function getMetaData(dir: string, entry: fs.Dirent): MetaData | null {
const fileContent = fs.readFileSync(mdFilePath, 'utf-8')
const meta = matter(fileContent).data ?? {}
// 文件名,不含扩展名
const baseName = path.parse(entry.name).name
// 获取顺序目录的order在meta.dir.order里文件的order在meta.order里默认值为一个大数
const order = Number((entry.isDirectory() ? meta?.dir?.order : meta?.order) ?? Number.MAX_SAFE_INTEGER)
@@ -42,7 +48,7 @@ function getMetaData(dir: string, entry: fs.Dirent): MetaData | null {
const title = String(meta?.title ?? RegExp('# (.+)').exec(fileContent)?.[1] ?? baseName)
// 获取图标
const icon = String(meta?.icon ?? '')
// 是否作为索引文件永远为true目录则看meta.index默认true
// 是否添加到索引文件永远为true目录则看meta.index默认true
const index = entry.isDirectory() ? (Boolean(meta?.index) ?? true) : true
return {
@@ -54,18 +60,36 @@ function getMetaData(dir: string, entry: fs.Dirent): MetaData | null {
}
}
export function genNotes(lang: string, baseDir = path.resolve(__dirname, '../../')): ThemeNote[] {
export function genNavigationComponents(
locale: Locale,
baseDir = path.resolve(__dirname, '../../'),
): NavigationComponents {
// 将内容与对应顺序进行包装
type NavbarItem = ThemeNavItem
type SidebarItem = ThemeNote | ThemeSidebarItem | string
interface IntermediateNavigationComponents {
navbar: NavbarItem[]
notes: SidebarItem[]
}
interface WrappedNavbarItem {
content: NavbarItem
order: number
}
interface WrappedSidebarItem {
content: SidebarItem
order: number
}
// 进入指定语言目录即docs/<i18n>/
const langDir = path.join(baseDir, lang)
const langDir = path.join(baseDir, locale.name)
// 递归获取目录和文件
function getItems(dir: string, isRoot: boolean): any[] {
// 将内容与对应顺序进行包装
interface Wrapped {
content: ThemeNote | ThemeSidebarItem | string
order: number
}
let itemsWithOrder: Wrapped[] = []
function getItems(dir: string, isRoot: boolean): IntermediateNavigationComponents {
const navbarItemsWithOrder: WrappedNavbarItem[] = []
const sidebarItemsWithOrder: WrappedSidebarItem[] = []
// 获取所有非隐藏文件和目录
const entries = fs.readdirSync(dir, { withFileTypes: true }).filter((e) => !e.name.startsWith('.'))
@@ -75,45 +99,60 @@ export function genNotes(lang: string, baseDir = path.resolve(__dirname, '../../
if (!metaData) {
continue
}
let sidebarItem: SidebarItem
let navbarItem: NavbarItem
if (entry.isDirectory()) {
// 递归获取子目录内容
const children = getItems(path.join(dir, entry.name), false)
if (isRoot) {
// 一级目录,作为“专题”
const item = defineNoteConfig({
navbarItem = {
text: metaData.title,
icon: metaData.icon,
link: `/${locale.name}/${metaData.baseName}/`,
}
// 只在当前条件下才会有navbarItem
navbarItemsWithOrder.push({ content: navbarItem, order: metaData.order })
sidebarItem = defineNoteConfig({
dir: metaData.baseName,
link: `/${metaData.baseName}/`,
text: metaData.title,
sidebar: children,
sidebar: children.notes,
})
itemsWithOrder.push({ content: item, order: metaData.order })
} else {
// 非一级目录,作为可折叠的子目录
const item: ThemeSidebarItem = {
sidebarItem = {
text: metaData.title,
// 只有当目录设置了index: true时才生成链接否则点击时不跳转、只切换折叠状态
link: metaData.index ? `${metaData.baseName}/` : undefined,
link: metaData.index ? `${metaData.baseName}/` : null,
icon: metaData.icon,
// 目前没有文档使用了这个特性,故不处理
// badge: undefined,
collapsed: true,
// 前面不能加斜杠,必须用相对路径
prefix: `${metaData.baseName}/`,
items: children,
items: children.notes,
}
itemsWithOrder.push({ content: item, order: metaData.order })
}
} else if (entry.isFile() && entry.name.endsWith('.md') && entry.name.toLowerCase() !== 'readme.md') {
// 普通文件,取完整文件名作为链接
const item = entry.name
itemsWithOrder.push({ content: item, order: metaData.order })
sidebarItem = entry.name
}
sidebarItemsWithOrder.push({ content: sidebarItem, order: metaData.order })
}
// 当前dir的内容读取完毕进行排序并返回返回时丢弃order
itemsWithOrder.sort((a, b) => a.order - b.order)
return itemsWithOrder.map((i) => i.content)
if (isRoot) {
navbarItemsWithOrder.sort((a, b) => a.order - b.order)
}
sidebarItemsWithOrder.sort((a, b) => a.order - b.order)
return {
navbar: navbarItemsWithOrder.map((i) => i.content),
notes: sidebarItemsWithOrder.map((i) => i.content),
}
}
// 递归起点只有这里是一级目录isRoot传true
return getItems(langDir, true)
return getItems(langDir, true) as NavigationComponents
}

View File

@@ -0,0 +1,45 @@
export interface Locale {
name: string
// displayName: string
htmlLang: string
siteTitle: string
siteDescription: string
}
export const locales: Locale[] = [
{
name: 'zh-cn',
// displayName: '简体中文',
htmlLang: 'zh-CN',
siteTitle: 'MAA 文档站',
siteDescription: '文档',
},
{
name: 'zh-tw',
// displayName: '繁體中文',
htmlLang: 'zh-TW',
siteTitle: 'MAA 文件站',
siteDescription: '文件',
},
{
name: 'en-us',
// displayName: 'English',
htmlLang: 'en-US',
siteTitle: 'MAA Documentation Site',
siteDescription: 'Documentation',
},
{
name: 'ja-jp',
// displayName: '日本語',
htmlLang: 'ja-JP',
siteTitle: 'MAA ドキュメントサイト',
siteDescription: 'ドキュメント',
},
{
name: 'ko-kr',
// displayName: '한국어',
htmlLang: 'ko-KR',
siteTitle: 'MAA 문서 사이트',
siteDescription: '문서',
},
]

View File

@@ -1,8 +0,0 @@
import { defineNotesConfig } from 'vuepress-theme-plume'
import { genNotes } from './genSidebar'
export const enusNotes = defineNotesConfig({
dir: 'en-us',
link: '/en-us/',
notes: genNotes('en-us'),
})

View File

@@ -1,5 +0,0 @@
export * from './zh-cn'
export * from './zh-tw'
export * from './en-us'
export * from './ja-jp'
export * from './ko-kr'

View File

@@ -1,8 +0,0 @@
import { defineNotesConfig } from 'vuepress-theme-plume'
import { genNotes } from './genSidebar'
export const jajpNotes = defineNotesConfig({
dir: 'ja-jp',
link: '/ja-jp/',
notes: genNotes('ja-jp'),
})

View File

@@ -1,8 +0,0 @@
import { defineNotesConfig } from 'vuepress-theme-plume'
import { genNotes } from './genSidebar'
export const kokrNotes = defineNotesConfig({
dir: 'ko-kr',
link: '/ko-kr/',
notes: genNotes('ko-kr'),
})

View File

@@ -1,8 +0,0 @@
import { defineNotesConfig } from 'vuepress-theme-plume'
import { genNotes } from './genSidebar'
export const zhcnNotes = defineNotesConfig({
dir: 'zh-cn',
link: '/zh-cn/',
notes: genNotes('zh-cn'),
})

View File

@@ -1,8 +0,0 @@
import { defineNotesConfig } from 'vuepress-theme-plume'
import { genNotes } from './genSidebar'
export const zhtwNotes = defineNotesConfig({
dir: 'zh-tw',
link: '/zh-tw/',
notes: genNotes('zh-tw'),
})

View File

@@ -1,6 +1,5 @@
import { defineThemeConfig } from 'vuepress-theme-plume'
import { zhcnNavbar, zhtwNavbar, enusNavbar, jajpNavbar, kokrNavbar } from './navbar'
import { zhcnNotes, zhtwNotes, enusNotes, jajpNotes, kokrNotes } from './notes'
import { genThemeLocales } from './navigation/genLocales'
export default defineThemeConfig({
logo: '/images/maa-logo_512x512.png',
@@ -25,28 +24,7 @@ export default defineThemeConfig({
footer: false,
locales: {
'/zh-cn/': {
navbar: zhcnNavbar,
notes: zhcnNotes,
},
'/zh-tw/': {
navbar: zhtwNavbar,
notes: zhtwNotes,
},
'/en-us/': {
navbar: enusNavbar,
notes: enusNotes,
},
'/ja-jp/': {
navbar: jajpNavbar,
notes: jajpNotes,
},
'/ko-kr/': {
navbar: kokrNavbar,
notes: kokrNotes,
},
},
locales: genThemeLocales(),
autoFrontmatter: false,

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/en-us/develop/' />
<Redirect to="development" />

View File

@@ -6,4 +6,4 @@ dir:
order: 1
---
<Catalog base='/en-us/manual/' />
<Redirect to="newbie" />

View File

@@ -6,4 +6,4 @@ dir:
order: 5
---
<Catalog base='/en-us/manual/device/' />
<Redirect to="windows" />

View File

@@ -47,7 +47,7 @@ We cannot provide repair solutions other than reinstalling your system. Please a
#### Windows N/KN
For Windows N/KN (European/Korean versions), you also need to install the [Media Feature Pack](https://support.microsoft.com/zh-cn/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a).
For Windows N/KN (European/Korean versions), you also need to install the [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a).
#### Windows 7
@@ -55,7 +55,7 @@ For Windows N/KN (European/Korean versions), you also need to install the [Media
For Windows 7, before installing the two runtime libraries mentioned above, check if these patches are installed:
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-cn/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
1. [Windows 7 Service Pack 1](https://support.microsoft.com/en-us/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 code signing patches:
- KB4474419: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
- KB4490628: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)

View File

@@ -6,4 +6,4 @@ dir:
order: 4
---
<Catalog base='/en-us/manual/introduction/' />
<Redirect to="startup" />

View File

@@ -13,7 +13,7 @@ Quick start guide!
MAA on Windows only supports Windows 10 and 11. For older Windows versions, please refer to the system issues section in [FAQ](./faq.md#system-issues).
Non-Windows users, please refer to [Emulator and Device Support](./device/windows.md).
Non-Windows users, please refer to [Emulator and Device Support](./device/).
2. Download the correct version
@@ -31,7 +31,7 @@ Quick start guide!
5. Confirm emulator support
Check [Emulator and Device Support](./device/windows.md) to verify the compatibility of your emulator.
Check [Emulator and Device Support](./device/) to verify the compatibility of your emulator.
6. Set the correct emulator resolution

View File

@@ -6,4 +6,4 @@ dir:
order: 3
---
<Catalog base='/en-us/protocol/' />
<Redirect to="integration" />

View File

@@ -72,7 +72,7 @@ See it in action!
### Feature Introduction
Please refer to the [User Manual](./manual/newbie.md).
Please refer to the [User Manual](./manual/).
### Support for Overseas Clients

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/ja-jp/develop/' />
<Redirect to="development" />

View File

@@ -6,4 +6,4 @@ dir:
order: 1
---
<Catalog base='/ja-jp/manual/' />
<Redirect to="newbie" />

View File

@@ -6,4 +6,4 @@ dir:
order: 5
---
<Catalog base='/ja-jp/manual/device/' />
<Redirect to="windows" />

View File

@@ -106,7 +106,7 @@ Windows 7 で .NET 8 アプリケーションを実行すると、メモリ使
関連資料およびリファレンス adbポート
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555`
- [Bluestacks 5](https://support.bluestacks.com/hc/ja/articles/360061342631-BlueStacks-5-BlueStacks-4%E3%81%8B%E3%82%89%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95) `5555`
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
- [MuMu](https://mumu.163.com/help/20240807/40912_1073151.html?maa) `16384`
- [Nemu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`

View File

@@ -6,4 +6,4 @@ dir:
order: 4
---
<Catalog base='/ja-jp/manual/introduction/' />
<Redirect to="startup" />

View File

@@ -11,7 +11,7 @@ icon: ri:guide-fill
MAAはWindows 10 / 11 のみサポートしています。それ以前のバージョンのWIndowsについては[よくある質問](./faq.md#システムの問題)を確認してください。
Windows 以外のユーザーは[エミュレーターおよびデバイスのサポート](./device/windows.md)をご覧ください。
Windows 以外のユーザーは[エミュレーターおよびデバイスのサポート](./device/)をご覧ください。
2. 環境にあったバージョンのダウンロード
@@ -27,7 +27,7 @@ icon: ri:guide-fill
5. エミュレータのサポートを確認
[エミュレータのサポート](./device/windows.md)をクリックして、使用しているエミュレータのサポートを確認してください。
[エミュレータのサポート](./device)をクリックして、使用しているエミュレータのサポートを確認してください。
6. エミュレータの解像度を正しく設定する

View File

@@ -6,4 +6,4 @@ dir:
order: 3
---
<Catalog base='/ja-jp/protocol/' />
<Redirect to="integration" />

View File

@@ -64,7 +64,7 @@ UIを見れば使い方もすぐ分かる
### 機能紹介
[ユーザーマニュアル](./manual/newbie.md)をご参照ください。
[ユーザーマニュアル](./manual/)をご参照ください。
### サーバーに応じてサポートされる機能

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/ko-kr/develop/' />
<Redirect to="development" />

View File

@@ -6,4 +6,4 @@ dir:
order: 1
---
<Catalog base='/ko-kr/manual/' />
<Redirect to="newbie" />

View File

@@ -6,4 +6,4 @@ dir:
order: 5
---
<Catalog base='/ko-kr/manual/device/' />
<Redirect to="windows" />

View File

@@ -47,7 +47,7 @@ Windows 8/8.1/10/11 N/KN(유럽/한국) 버전을 사용하는 경우, [미디
Windows 7의 경우, 위에서 언급한 두 개의 런타임 라이브러리를 설치하기 전에 다음 패치가 설치되어 있는지 확인해야 합니다:
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-cn/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
1. [Windows 7 Service Pack 1](https://support.microsoft.com/ko-kr/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 코드 서명 패치:
- KB4474419[다운로드 링크 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[다운로드 링크 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
- KB4490628[다운로드 링크 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[다운로드 링크 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)

View File

@@ -6,4 +6,4 @@ dir:
order: 4
---
<Catalog base='/ko-kr/manual/introduction/' />
<Redirect to="startup" />

View File

@@ -13,7 +13,7 @@ icon: ri:guide-fill
MAA 는 Windows 10/11만 지원합니다. 이전 버전의 Windows를 사용하는 경우 [FAQ](./faq.md#가능성2:런타임문제)를 참조하세요.
Windows 사용자가 아닌 경우 [에뮬레이터 및 장치 지원](./device/windows.md)을 참조하십시오.
Windows 사용자가 아닌 경우 [에뮬레이터 및 장치 지원](./device/)을 참조하십시오.
2. 알맞는 버전 다운로드
@@ -31,7 +31,7 @@ icon: ri:guide-fill
5. 에뮬레이터 지원 확인
[에뮬레이터 및 지원 장치](./device/windows.md)를 참조하여 사용 중인 에뮬레이터가 지원되는지 확인하세요.
[에뮬레이터 및 지원 장치](./device/)를 참조하여 사용 중인 에뮬레이터가 지원되는지 확인하세요.
6. 에뮬레이터 해상도 설정

View File

@@ -6,4 +6,4 @@ dir:
order: 3
---
<Catalog base='/ko-kr/protocol/' />
<Redirect to="integration" />

View File

@@ -74,7 +74,7 @@ MAA는 MAA Assistant Arknights의 약자입니다
### 기능 소개
[사용자 매뉴얼](./manual/newbie.md)을 참조하세요.
[사용자 매뉴얼](./manual/)을 참조하세요.
### 해외 서버 지원

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/zh-cn/develop/' />
<Redirect to="development" />

View File

@@ -6,4 +6,4 @@ dir:
order: 1
---
<Catalog base='/zh-cn/manual/' />
<Redirect to="newbie" />

View File

@@ -6,4 +6,4 @@ dir:
order: 5
---
<Catalog base='/zh-cn/manual/device/' />
<Redirect to="windows" />

View File

@@ -6,4 +6,4 @@ dir:
order: 4
---
<Catalog base='/zh-cn/manual/introduction/' />
<Redirect to="startup" />

View File

@@ -13,7 +13,7 @@ icon: ri:guide-fill
MAA 在 Windows 下仅支持 10 和 11旧版 Windows 请参阅[常见问题](./faq.md#系统问题)中的系统问题部分。
非 Windows 用户请参阅[模拟器及设备支持](./device/windows.md)。
非 Windows 用户请参阅[模拟器及设备支持](./device/)。
2. 下载正确的版本
@@ -31,7 +31,7 @@ icon: ri:guide-fill
5. 确认模拟器支持
查阅[模拟器和设备支持](./device/windows.md),确认正在使用的模拟器支持情况。
查阅[模拟器和设备支持](./device/),确认正在使用的模拟器支持情况。
6. 正确设置模拟器分辨率

View File

@@ -6,4 +6,4 @@ dir:
order: 3
---
<Catalog base='/zh-cn/protocol/' />
<Redirect to="integration" />

View File

@@ -72,7 +72,7 @@ MAA 的意思是 MAA Assistant Arknights
### 功能介绍
请参阅 [用户手册](./manual/newbie.md)。
请参阅 [用户手册](./manual/)。
### 外服支持

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/zh-tw/develop/' />
<Redirect to="development" />

View File

@@ -6,4 +6,4 @@ dir:
order: 1
---
<Catalog base='/zh-tw/manual/' />
<Redirect to="newbie" />

View File

@@ -6,4 +6,4 @@ dir:
order: 5
---
<Catalog base='/zh-tw/manual/device/' />
<Redirect to="windows" />

View File

@@ -55,7 +55,7 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
對於 Windows 7在安裝上文提到的兩個運行庫之前還需檢查以下補丁是否已安裝
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-cn/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-tw/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 代碼簽名修補程式:
- KB4474419[下載連結 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[下載連結 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
- KB4490628[下載連結 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[下載連結 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)

View File

@@ -6,4 +6,4 @@ dir:
order: 4
---
<Catalog base='/zh-tw/manual/introduction/' />
<Redirect to="startup" />

View File

@@ -13,7 +13,7 @@ icon: ri:guide-fill
MAA 僅支援 Windows 10 / 11舊版 Windows 請參考[常見問題](./faq.md#系統問題)。
非 Windows 用戶請參閱[模擬器及設備支援](./device/windows.md)。
非 Windows 用戶請參閱[模擬器及設備支援](./device/)。
2. 下載正確的版本
@@ -31,7 +31,7 @@ icon: ri:guide-fill
5. 確認模擬器支援
查閱[模擬器和設備支援](./device/windows.md),確認正在使用的模擬器支援情況。
查閱[模擬器和設備支援](./device/),確認正在使用的模擬器支援情況。
6. 正確設置模擬器解析度

View File

@@ -6,4 +6,4 @@ dir:
order: 3
---
<Catalog base='/zh-tw/protocol/' />
<Redirect to="integration" />

View File

@@ -73,7 +73,7 @@ MAA 的意思是 MAA Assistant Arknights
### 功能介紹
請參閱 [用戶手冊](./manual/newbie.md)。
請參閱 [用戶手冊](./manual/)。
### 外服支援