:::
diff --git a/docs/docs/guide/describe.md b/docs/docs/guide/describe.md
index 08e257320..ae807ca08 100644
--- a/docs/docs/guide/describe.md
+++ b/docs/docs/guide/describe.md
@@ -4,7 +4,6 @@
目前文档仍在陆续完善中
:::
-
## 控制台(管理后台)
面向管理员用户,我们提供了 “控制台” 功能,通过控制台,你能对数据内容进行统一管理。
@@ -12,6 +11,7 @@
### 如何呼出控制台
控制台被集成到评论页中,您仅需:
+
1. 在评论框输入管理员的名字与邮箱
2. 密码验证框自动弹出,输入正确密码
3. 控制台按钮将会在评论框右下角显示
diff --git a/docs/docs/guide/extras.md b/docs/docs/guide/extras.md
index 71e5fbf12..c8e6d2e4a 100644
--- a/docs/docs/guide/extras.md
+++ b/docs/docs/guide/extras.md
@@ -34,7 +34,6 @@ Artalk v1 版本基于 [PHP 后端](https://github.com/ArtalkJS/ArtalkPHP),部
- [Hexo 添加 Artalk 评论教程 - 我相信我可以](https://butterfly.imlete.cn/article/Hexo-Artalk.html)
- [基于 Butterfly 主题添加 Artalk 评论系统 - 卓越科技的 Blog](https://blog.imzykj.cn/posts/93afb348/)
-
## 衍生品
- [Artalk:一款 ~~简洁~~ 有趣的自托管评论系统 (By monsterxcn)](https://github.com/monsterxcn/Artalk)
diff --git a/docs/docs/guide/frontend/config.md b/docs/docs/guide/frontend/config.md
index 7f20cc4ed..8708e74a4 100644
--- a/docs/docs/guide/frontend/config.md
+++ b/docs/docs/guide/frontend/config.md
@@ -218,7 +218,7 @@ artalk.setDarkMode(true)
### pvEl
-**页面浏览量 (PV) 绑定元素**
+**页面浏览量 (PV) 绑定元素**
- 类型:`String`
- 默认值:`"#ArtalkPV"`
@@ -231,7 +231,7 @@ artalk.setDarkMode(true)
### countEl
-**评论数绑定元素**
+**评论数绑定元素**
- 类型:`String`
- 默认值:`"#ArtalkCount"`
@@ -304,13 +304,13 @@ Artalk.init({
const form = new FormData()
form.set('file', file)
- const imgUrl = await fetch("https://api.example.org/upload", {
+ const imgUrl = await fetch('https://api.example.org/upload', {
method: 'POST',
- body: form
+ body: form,
})
return imgUrl
- }
+ },
})
```
@@ -383,7 +383,7 @@ v2.5.5 已废弃 `gravatar.default` 配置项,请使用 `gravatar.params` 替
Artalk.init({
avatarURLBuilder: (comment) => {
return `/api/avatar?email=${comment.email_encrypted}`
- }
+ },
})
```
diff --git a/docs/docs/guide/frontend/emoticons.md b/docs/docs/guide/frontend/emoticons.md
index bae142914..1032a5d19 100644
--- a/docs/docs/guide/frontend/emoticons.md
+++ b/docs/docs/guide/frontend/emoticons.md
@@ -4,7 +4,7 @@
```yaml
frontend:
- emoticons: "https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json"
+ emoticons: https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json
```
## 表情包预设
@@ -21,7 +21,7 @@ Artalk 的表情包功能借鉴了其优秀的设计,并且 Artalk 原生适
```yaml
frontend:
- emoticons: "https://raw.githubusercontent.com/DIYgod/OwO/master/demo/OwO.json"
+ emoticons: https://raw.githubusercontent.com/DIYgod/OwO/master/demo/OwO.json
# 直接食用 OwO 格式的表情包 ↑↑
```
@@ -32,25 +32,28 @@ frontend:
Artalk 除了支持 OwO 格式外,还内置支持一种标准的表情包列表文件格式:
```js
-[{
- "name": "颜表情",
- "type": "emoticon", // 字符类型
- "items": [
- { "key": "Hi", "val": "|´・ω・)ノ" },
- { "key": "开心", "val": "ヾ(≧∇≦*)ゝ" },
- //...
- ]
-}, {
- "name": "滑稽",
- "type": "image", // 图片类型
- "items": [
- {
- "key": "原味稽",
- "val": "<图片 URL>"
- },
- //...
- ]
-}]
+;[
+ {
+ name: '颜表情',
+ type: 'emoticon', // 字符类型
+ items: [
+ { key: 'Hi', val: '|´・ω・)ノ' },
+ { key: '开心', val: 'ヾ(≧∇≦*)ゝ' },
+ //...
+ ],
+ },
+ {
+ name: '滑稽',
+ type: 'image', // 图片类型
+ items: [
+ {
+ key: '原味稽',
+ val: '<图片 URL>',
+ },
+ //...
+ ],
+ },
+]
```
## 前端配置
@@ -65,8 +68,9 @@ Artalk 除了支持 OwO 格式外,还内置支持一种标准的表情包列
```js
Artalk.init({
- // 默认表情包列表,动态引入 ↓↓
- emoticons: "https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json",
+ // 默认表情包列表,动态引入 ↓↓
+ emoticons:
+ 'https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json',
})
```
@@ -76,11 +80,10 @@ Artalk.init({
```js
Artalk.init({
- emoticons: false
+ emoticons: false,
})
```
-
## 加载方式
### 动态加载
@@ -89,7 +92,7 @@ Artalk.init({
```js
Artalk.init({
- emoticons: "<表情包数据文件 URL>",
+ emoticons: '<表情包数据文件 URL>',
})
```
@@ -101,25 +104,28 @@ Artalk.init({
```js
Artalk.init({
- emoticons: [{
- "name": "颜表情",
- "type": "emoticon", // 字符类型
- "items": [
- { "key": "Hi", "val": "|´・ω・)ノ" },
- { "key": "开心", "val": "ヾ(≧∇≦*)ゝ" },
- //...
- ]
- }, {
- "name": "滑稽",
- "type": "image", // 图片类型
- "items": [
- {
- "key": "原味稽",
- "val": "<图片 URL>"
- },
- //...
- ]
- }],
+ emoticons: [
+ {
+ name: '颜表情',
+ type: 'emoticon', // 字符类型
+ items: [
+ { key: 'Hi', val: '|´・ω・)ノ' },
+ { key: '开心', val: 'ヾ(≧∇≦*)ゝ' },
+ //...
+ ],
+ },
+ {
+ name: '滑稽',
+ type: 'image', // 图片类型
+ items: [
+ {
+ key: '原味稽',
+ val: '<图片 URL>',
+ },
+ //...
+ ],
+ },
+ ],
})
```
@@ -129,20 +135,20 @@ Artalk 支持 **动态**、**静态** 混合加载,例如:
```js
Artalk.init({
- emoticons: [
- // 动态加载
- "https://raw.githubusercontent.com/DIYgod/OwO/master/demo/OwO.json", // OwO 格式表情包
- "https://raw.githubusercontent.com/qwqcode/huaji/master/huaji.json",
- // 静态加载
- {
- "name": "表情包名字",
- "type": "emoticon", // 字符类型
- "items": [
- { "key": "去吧大师球", "val": "(╯°A°)╯︵○○○" },
- //...
- ]
- }
- ]
+ emoticons: [
+ // 动态加载
+ 'https://raw.githubusercontent.com/DIYgod/OwO/master/demo/OwO.json', // OwO 格式表情包
+ 'https://raw.githubusercontent.com/qwqcode/huaji/master/huaji.json',
+ // 静态加载
+ {
+ name: '表情包名字',
+ type: 'emoticon', // 字符类型
+ items: [
+ { key: '去吧大师球', val: '(╯°A°)╯︵○○○' },
+ //...
+ ],
+ },
+ ],
})
```
@@ -152,9 +158,7 @@ Artalk 支持远程表情包资源中**嵌套引入**另外的表情包资源,
```js
Artalk.init({
- emoticons: [
- "https://example.org/表情包.json"
- ]
+ emoticons: ['https://example.org/表情包.json'],
})
```
@@ -162,10 +166,11 @@ Artalk.init({
```json
[
- "https://example.org/其他表情包.json",
+ "https://example.org/其他表情包.json",
+ //...
+ {
+ // Artalk 格式、OwO 格式
//...
- { // Artalk 格式、OwO 格式
- //...
- }
+ }
]
```
diff --git a/docs/docs/guide/frontend/i18n.md b/docs/docs/guide/frontend/i18n.md
index 8f2138bea..9f4b05617 100644
--- a/docs/docs/guide/frontend/i18n.md
+++ b/docs/docs/guide/frontend/i18n.md
@@ -3,7 +3,7 @@
在配置文件 `artalk.yml` 中设置:
```yaml
-locale: "zh-CN"
+locale: zh-CN
```
locale 配置项格式遵循 Unicode BCP 47 规范,默认为 "zh-CN" (简体中文)。
@@ -19,12 +19,12 @@ locale 配置项格式遵循 Unicode BCP 47 规范,默认为 "zh-CN" (简体
欢迎提交 PR 帮助翻译 Artalk 的多语言,为社区贡献一份力量!
-|翻译内容|语言文件目录|模板文件|
-|-|-|-|
-|后端程序|[/i18n/[LANG].yml](https://github.com/ArtalkJS/Artalk/tree/master/i18n)|[zh-CN.yml](https://github.com/ArtalkJS/Artalk/blob/master/i18n/zh-CN.yml)|
-|前端界面|[/ui/artalk/src/i18n/[LANG].ts](https://github.com/ArtalkJS/Artalk/tree/master/ui/artalk/src/i18n)|[zh-CN.ts](https://github.com/ArtalkJS/Artalk/blob/master/ui/artalk/src/i18n/zh-CN.ts)|
-|配置文件|[/conf/artalk.example.[LANG].yml](https://github.com/ArtalkJS/Artalk/tree/master/conf)|[artalk.example.zh-CN.yml](https://github.com/ArtalkJS/Artalk/blob/master/conf/artalk.example.zh-CN.yml)
-|说明文档|[/docs/[LANG]/**\/*.md](https://github.com/ArtalkJS/Artalk/tree/master/docs)|[/docs/**\/*.md](https://github.com/ArtalkJS/Artalk/tree/master/docs)
+| 翻译内容 | 语言文件目录 | 模板文件 |
+| -------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
+| 后端程序 | [/i18n/[LANG].yml](https://github.com/ArtalkJS/Artalk/tree/master/i18n) | [zh-CN.yml](https://github.com/ArtalkJS/Artalk/blob/master/i18n/zh-CN.yml) |
+| 前端界面 | [/ui/artalk/src/i18n/[LANG].ts](https://github.com/ArtalkJS/Artalk/tree/master/ui/artalk/src/i18n) | [zh-CN.ts](https://github.com/ArtalkJS/Artalk/blob/master/ui/artalk/src/i18n/zh-CN.ts) |
+| 配置文件 | [/conf/artalk.example.[LANG].yml](https://github.com/ArtalkJS/Artalk/tree/master/conf) | [artalk.example.zh-CN.yml](https://github.com/ArtalkJS/Artalk/blob/master/conf/artalk.example.zh-CN.yml) |
+| 说明文档 | [/docs/[LANG]/\*_\/_.md](https://github.com/ArtalkJS/Artalk/tree/master/docs) | [/docs/\*_\/_.md](https://github.com/ArtalkJS/Artalk/tree/master/docs) |
更多参考:[开发文档](../../develop/index.md) / [CONTRIBUTING.md](https://github.com/ArtalkJS/Artalk/blob/master/CONTRIBUTING.md#translation)
@@ -36,7 +36,7 @@ locale 配置项格式遵循 Unicode BCP 47 规范,默认为 "zh-CN" (简体
```js
Artalk.init({
- locale: 'en-US'
+ locale: 'en-US',
})
```
@@ -46,7 +46,7 @@ Artalk.init({
```js
Artalk.init({
- locale: "auto"
+ locale: 'auto',
})
```
@@ -59,6 +59,6 @@ Artalk.init({
locale: {
email: 'Eメール',
//...
- }
+ },
})
```
diff --git a/docs/docs/guide/frontend/import-blog.md b/docs/docs/guide/frontend/import-blog.md
index 60bcdd51e..758f73f05 100644
--- a/docs/docs/guide/frontend/import-blog.md
+++ b/docs/docs/guide/frontend/import-blog.md
@@ -13,8 +13,10 @@
创建模板文件 `/主题目录/layouts/partials/comment/artalk.html`:
+
+
```html
-
+
@@ -22,22 +24,22 @@
```
+
+
文章页模板 `/主题目录/layouts/_default/single.html` 合适的位置添加:
```html
-
- {{- partial "comment/artalk" . -}}
-
+{{- partial "comment/artalk" . -}}
```
修改 Hugo 配置文件:
@@ -50,7 +52,6 @@ server = 'https://artalk.example.org'
site = '你的站点名'
```
-
```yaml [config.yaml]
params:
artalk:
@@ -65,7 +66,7 @@ params:
创建 `/主题目录/layout/comment/artalk.ejs`:
```html
-
+
@@ -84,9 +85,7 @@ params:
修改文章模板文件,例如 `/主题目录/layout/post.ejs`:
```html
-
- <%- partial('comment/artalk') %>
-
+<%- partial('comment/artalk') %>
```
编辑主题配置 `/主题目录/_config.example.yml`:
diff --git a/docs/docs/guide/frontend/import-framework.md b/docs/docs/guide/frontend/import-framework.md
index 2b8c6aabd..dbe70a9e8 100644
--- a/docs/docs/guide/frontend/import-framework.md
+++ b/docs/docs/guide/frontend/import-framework.md
@@ -13,15 +13,12 @@ pnpm add artalk
Vue 3 + TypeScript 例:
```vue
-
-
-
-
+
+
+
+
```
## React
```tsx
-import React, { useEffect, useRef } from 'react';
-import { useLocation } from 'react-router-dom';
-import 'artalk/dist/Artalk.css';
-import Artalk from 'artalk';
+import React, { useEffect, useRef } from 'react'
+import { useLocation } from 'react-router-dom'
+import 'artalk/dist/Artalk.css'
+import Artalk from 'artalk'
const ArtalkComment = () => {
- const el = useRef(null);
- const location = useLocation();
- let artalk = null;
+ const el = useRef(null)
+ const location = useLocation()
+ let artalk = null
useEffect(() => {
artalk = new Artalk({
@@ -66,19 +67,19 @@ const ArtalkComment = () => {
server: 'http://localhost:8080',
site: 'Artalk 的博客',
// ...
- });
+ })
return () => {
if (artalk) {
- artalk.destroy();
+ artalk.destroy()
}
- };
- }, [location.pathname]);
+ }
+ }, [location.pathname])
- return ;
-};
+ return
+}
-export default ArtalkComment;
+export default ArtalkComment
```
```jsx
@@ -93,10 +94,10 @@ export default class Artalk extends React.Component {
componentDidMount() {
this.artalk = Artalk.init({
el: this.el.current,
- pageKey: `${location.pathname}`,
+ pageKey: `${location.pathname}`,
pageTitle: `${document.title}`,
- server: 'http://localhost:8080',
- site: 'Artalk 的博客',
+ server: 'http://localhost:8080',
+ site: 'Artalk 的博客',
// ...
})
}
@@ -106,9 +107,7 @@ export default class Artalk extends React.Component {
}
render() {
- return (
-
- )
+ return
}
}
```
@@ -117,12 +116,13 @@ export default class Artalk extends React.Component {
```html
-
+
```
diff --git a/docs/docs/guide/frontend/ip-region.md b/docs/docs/guide/frontend/ip-region.md
index 3fcad607a..e58b01402 100644
--- a/docs/docs/guide/frontend/ip-region.md
+++ b/docs/docs/guide/frontend/ip-region.md
@@ -8,7 +8,7 @@ Artalk 内置用户 IP 属地展示功能,并且你可以设置显示的精度
在开启 IP 属地展示功能之前,你需要下载一个数据库文件:
- - [GitHub 下载](https://github.com/lionsoul2014/ip2region/raw/master/data/ip2region.xdb) / [镜像站下载](https://gh-proxy.com/?q=https%3A%2F%2Fgithub.com%2Flionsoul2014%2Fip2region%2Fblob%2Fmaster%2Fdata%2Fip2region.xdb) (境内推荐)
+- [GitHub 下载](https://github.com/lionsoul2014/ip2region/raw/master/data/ip2region.xdb) / [镜像站下载](https://gh-proxy.com/?q=https%3A%2F%2Fgithub.com%2Flionsoul2014%2Fip2region%2Fblob%2Fmaster%2Fdata%2Fip2region.xdb) (境内推荐)
下载后请手动放置到 `./data/` 目录下,文件命名为:`ip2region.xdb`
@@ -16,11 +16,11 @@ Artalk 内置用户 IP 属地展示功能,并且你可以设置显示的精度
你可在设置中找到该配置项。
-|显示精度|描述|示例|
-|-|-|-|
-|`province`|精确到省(默认)|`四川`|
-|`city`|精确到城市|`浙江杭州`|
-|`country`|精确到国家、地区|`美国`|
+| 显示精度 | 描述 | 示例 |
+| ---------- | ---------------- | ---------- |
+| `province` | 精确到省(默认) | `四川` |
+| `city` | 精确到城市 | `浙江杭州` |
+| `country` | 精确到国家、地区 | `美国` |
配置文件:
@@ -30,9 +30,9 @@ ip_region:
# 启用 IP 属地展示
enabled: false
# 数据文件路径 (.xdb 格式)
- db_path: "./data/ip2region.xdb"
+ db_path: ./data/ip2region.xdb
# 显示精度 ["province", "city", "country"]
- precision: "province"
+ precision: province
```
## 隐私权
diff --git a/docs/docs/guide/frontend/latex.md b/docs/docs/guide/frontend/latex.md
index fff84dc42..597950b0a 100644
--- a/docs/docs/guide/frontend/latex.md
+++ b/docs/docs/guide/frontend/latex.md
@@ -4,11 +4,14 @@
```html
-
+
-
+
@@ -17,11 +20,10 @@
之后,你可以回复:
-```
-$$ P(A) = \sum P(\{ (e_1,...,e_N) \}) = {{N}\choose{k}} \cdot p^kq^{N-k} $$
+```md
+$$ P(A) = \sum P(\{ (e_1,...,e_N) \}) = {{N}\choose{k}} \cdot p^kq^{N-k} $$
```
查看效果:

-
diff --git a/docs/docs/guide/frontend/lightbox.md b/docs/docs/guide/frontend/lightbox.md
index f5aa8ae83..86ea9b0f2 100644
--- a/docs/docs/guide/frontend/lightbox.md
+++ b/docs/docs/guide/frontend/lightbox.md
@@ -7,7 +7,7 @@ Artalk LightBox 插件能帮助你将网站**现有的图片灯箱**功能自动
-
+
@@ -26,17 +26,23 @@ Artalk LightBox 插件能帮助你将网站**现有的图片灯箱**功能自动
#### LightGallery
- ```html
-
-
- ```
+```html
+
+
+```
#### FancyBox
- ```html
-
-
- ```
+```html
+
+
+```
:::
@@ -46,10 +52,10 @@ Artalk LightBox 插件能帮助你将网站**现有的图片灯箱**功能自动
```html
```
diff --git a/docs/docs/guide/frontend/pv.md b/docs/docs/guide/frontend/pv.md
index eb35c4ad8..575a9cb5d 100644
--- a/docs/docs/guide/frontend/pv.md
+++ b/docs/docs/guide/frontend/pv.md
@@ -28,16 +28,20 @@ Artalk.init({
在非评论页,无需调用 `Artalk.init` 加载评论框 (会使页面浏览量 PV 数增加),仅调用 `loadCountWidget` 静态方法即可:
+
+
```js
Artalk.loadCountWidget({
- server: '服务器地址',
- site: '站点名',
- pvEl: '#ArtalkPV',
+ server: '服务器地址',
+ site: '站点名',
+ pvEl: '#ArtalkPV',
countEl: '#ArtalkCount',
-});
+})
```
+
+
然后你可以放置多个 `#ArtalkPV` 元素,通过属性 `data-page-key` 来指定需要查询的页面:
```html
diff --git a/docs/docs/guide/intro.md b/docs/docs/guide/intro.md
index f2d3a1444..e61c81792 100644
--- a/docs/docs/guide/intro.md
+++ b/docs/docs/guide/intro.md
@@ -8,33 +8,33 @@
## 功能亮点
- - **轻量设计**
+- **轻量设计**
- 前端采用 TypeScript (Vanilla JS),轻量级,无冗余依赖,仅 ~30KB (gzipped)。
+ 前端采用 TypeScript (Vanilla JS),轻量级,无冗余依赖,仅 ~30KB (gzipped)。
- 后端采用 Golang 重制 (Artalk v2),跨平台,体积小巧,五脏俱全,快速部署。
+ 后端采用 Golang 重制 (Artalk v2),跨平台,体积小巧,五脏俱全,快速部署。
- - **“麻雀虽小,五脏俱全”**
-
- - Markdown 语法 + 代码高亮
- - [通知中心](./frontend/sidebar.md) - 站内:侧边栏 + 红点标记
- - [多形式推送](./backend/admin_notify.md) - 站外:邮件、TG、钉钉、飞书 + 异步执行
- - [评论审核](./backend/moderator.md):折叠 / 反垃圾 / 频率限制 / 滑动验证
- - [多站点](./backend/multi-site.md):共用同一个后端程序,多站点集中化管理
- - [表情包](./frontend/emoticons.md):支持 OwO 格式 + 动态加载
- - [Artrans](./transfer.md):评论数据快速迁移 (导入 / 导出) 工具
- - 评论投票 / 身份徽章 / 密码验证 / 说说模式
- - 评论盖楼 / 评论分页 / 滚动加载 / 实时预览
- - 评论排序 / 评论置顶 / 评论防丢 / 自动填充
- - 图片上传 / 页面管理 / 站点隔离 / 夜间模式
+- **“麻雀虽小,五脏俱全”**
- 穷举不是我们的特长,更多有趣的功能期待你来探索!
+ - Markdown 语法 + 代码高亮
+ - [通知中心](./frontend/sidebar.md) - 站内:侧边栏 + 红点标记
+ - [多形式推送](./backend/admin_notify.md) - 站外:邮件、TG、钉钉、飞书 + 异步执行
+ - [评论审核](./backend/moderator.md):折叠 / 反垃圾 / 频率限制 / 滑动验证
+ - [多站点](./backend/multi-site.md):共用同一个后端程序,多站点集中化管理
+ - [表情包](./frontend/emoticons.md):支持 OwO 格式 + 动态加载
+ - [Artrans](./transfer.md):评论数据快速迁移 (导入 / 导出) 工具
+ - 评论投票 / 身份徽章 / 密码验证 / 说说模式
+ - 评论盖楼 / 评论分页 / 滚动加载 / 实时预览
+ - 评论排序 / 评论置顶 / 评论防丢 / 自动填充
+ - 图片上传 / 页面管理 / 站点隔离 / 夜间模式
+
+ 穷举不是我们的特长,更多有趣的功能期待你来探索!
- **“Unlimited Blade Works”**
- Artalk 正在持续成长,创意由你发挥,价值由你赋予!
+ Artalk 正在持续成长,创意由你发挥,价值由你赋予!
- 不论是 Vue、React、Svelte 的前端项目,还是 WordPress、Typecho、Hexo 等博客系统,都可以快速引入 Artalk,结合诸位的聪明才智,我们相信 Artalk 能够自如应对各种业务场景。
+ 不论是 Vue、React、Svelte 的前端项目,还是 WordPress、Typecho、Hexo 等博客系统,都可以快速引入 Artalk,结合诸位的聪明才智,我们相信 Artalk 能够自如应对各种业务场景。
> 更多支持 / 计划的功能,详见:[README.md](https://github.com/ArtalkJS/Artalk#todos)。
@@ -67,14 +67,14 @@ Artalk 社区是包容开放的社区,我们欢迎不同水平的人员帮助
我们作为开源精神的推崇者以及实践者,希望我们所创造的自由软件,都应该被自由的使用,自由的研究,自由的更改和自由的分享。本项目主程序使用 [MIT](https://github.com/ArtalkJS/Artalk/blob/master/LICENSE) 协议开源,文档使用 [CC](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh) 许可协议。
::: tip 立即为社区贡献力量?
- - 浏览开发者资料([开发文档](../develop/index.md) / [CONTRIBUTING.md](https://github.com/ArtalkJS/Artalk/blob/master/CONTRIBUTING.md))
- - 维护 Artalk 后端(代码仓库 [@ArtalkJS/Artalk:/](https://github.com/ArtalkJS/Artalk))
- - 维护 Artalk 前端(代码仓库 [@ArtalkJS/Artalk:/ui](https://github.com/ArtalkJS/Artalk/tree/master/ui))
- - 完善 Artalk 文档(代码仓库 [@ArtalkJS/Artalk:/docs](https://github.com/ArtalkJS/Artalk/tree/master/docs))
- - 翻译 多语言 i18n(前往查看 [多语言说明](./frontend/i18n.html))
- - 改进数据迁移工具(代码仓库 [@ArtalkJS/Artransfer](https://github.com/ArtalkJS/Artransfer))
- - 分享你的想法创意(下方留言 / [Discussions](https://github.com/ArtalkJS/Artalk/discussions))
- - 编写相关社区项目(扩展插件 / 部署教程等)
+- 浏览开发者资料([开发文档](../develop/index.md) / [CONTRIBUTING.md](https://github.com/ArtalkJS/Artalk/blob/master/CONTRIBUTING.md))
+- 维护 Artalk 后端(代码仓库 [@ArtalkJS/Artalk:/](https://github.com/ArtalkJS/Artalk))
+- 维护 Artalk 前端(代码仓库 [@ArtalkJS/Artalk:/ui](https://github.com/ArtalkJS/Artalk/tree/master/ui))
+- 完善 Artalk 文档(代码仓库 [@ArtalkJS/Artalk:/docs](https://github.com/ArtalkJS/Artalk/tree/master/docs))
+- 翻译 多语言 i18n(前往查看 [多语言说明](./frontend/i18n.html))
+- 改进数据迁移工具(代码仓库 [@ArtalkJS/Artransfer](https://github.com/ArtalkJS/Artransfer))
+- 分享你的想法创意(下方留言 / [Discussions](https://github.com/ArtalkJS/Artalk/discussions))
+- 编写相关社区项目(扩展插件 / 部署教程等)
:::
diff --git a/docs/docs/guide/transfer.md b/docs/docs/guide/transfer.md
index 6a076c28f..9bbde5a4a 100644
--- a/docs/docs/guide/transfer.md
+++ b/docs/docs/guide/transfer.md
@@ -10,28 +10,28 @@
```json
{
- "id": "123",
- "rid": "233",
- "content": "Hello Artalk",
- "ua": "Artalk/6.6",
- "ip": "233.233.233.233",
- "created_at": "2021-10-28 20:50:15 +0800 +0800",
- "updated_at": "2021-10-28 20:50:15 +0800 +0800",
- "is_collapsed": "false",
- "is_pending": "false",
- "vote_up": "666",
- "vote_down": "0",
- "nick": "qwqcode",
- "email": "qwqcode@github.com",
- "link": "https://qwqaq.com",
- "password": "",
- "badge_name": "管理员",
- "badge_color": "#FF716D",
- "page_key": "https://artalk.js.org/guide/transfer.html",
- "page_title": "数据迁移",
- "page_admin_only": "false",
- "site_name": "Artalk",
- "site_urls": "http://localhost:3000/demo/,https://artalk.js.org"
+ "id": "123",
+ "rid": "233",
+ "content": "Hello Artalk",
+ "ua": "Artalk/6.6",
+ "ip": "233.233.233.233",
+ "created_at": "2021-10-28 20:50:15 +0800 +0800",
+ "updated_at": "2021-10-28 20:50:15 +0800 +0800",
+ "is_collapsed": "false",
+ "is_pending": "false",
+ "vote_up": "666",
+ "vote_down": "0",
+ "nick": "qwqcode",
+ "email": "qwqcode@github.com",
+ "link": "https://qwqaq.com",
+ "password": "",
+ "badge_name": "管理员",
+ "badge_color": "#FF716D",
+ "page_key": "https://artalk.js.org/guide/transfer.html",
+ "page_title": "数据迁移",
+ "page_admin_only": "false",
+ "site_name": "Artalk",
+ "site_urls": "http://localhost:3000/demo/,https://artalk.js.org"
}
```
@@ -180,14 +180,14 @@ typecho-20220424-202246.artrans
Artalk 导入功能的通用启动参数:
-| 参数 | 类型 | 说明 |
-| :------: | ------ | ------------ |
-| `target_site_name` | String | 导入站点名称 |
-| `target_site_url` | String | 导入站点 URL |
-| `url_resolver` | Boolean | 默认关闭,URL 解析器。将 `page_key` 基于 `target_site_url` 参数重新生成为完整 URL 作为评论的新 `page_key` |
-| `json_file` | String | JSON 数据文件路径 |
-| `json_data` | String | JSON 数据字符串内容 |
-| `assumeyes` | Boolean | 不提确认 `y/n`,直接执行 |
+| 参数 | 类型 | 说明 |
+| :----------------: | ------- | --------------------------------------------------------------------------------------------------------- |
+| `target_site_name` | String | 导入站点名称 |
+| `target_site_url` | String | 导入站点 URL |
+| `url_resolver` | Boolean | 默认关闭,URL 解析器。将 `page_key` 基于 `target_site_url` 参数重新生成为完整 URL 作为评论的新 `page_key` |
+| `json_file` | String | JSON 数据文件路径 |
+| `json_data` | String | JSON 数据字符串内容 |
+| `assumeyes` | Boolean | 不提确认 `y/n`,直接执行 |
## 数据备份
diff --git a/docs/docs/tsconfig.json b/docs/docs/tsconfig.json
index 415cf7dbf..1bd064416 100644
--- a/docs/docs/tsconfig.json
+++ b/docs/docs/tsconfig.json
@@ -4,5 +4,5 @@
"types": ["vite/client"],
"resolveJsonModule": true
},
- "include": ["**/.vitepress/**/*"],
+ "include": ["**/.vitepress/**/*"]
}
diff --git a/i18n/fr.yml b/i18n/fr.yml
index 4af01977e..78f6d1197 100644
--- a/i18n/fr.yml
+++ b/i18n/fr.yml
@@ -25,7 +25,7 @@
"Import complete": Importation complète
"Invalid request": Requête invalide
"Invalid request. Please check your `trusted_domains` config.": Requête invalide. Veuillez vérifier votre configuration `trusted_domains`.
-"Invalid {{name}}": {{name}} invalide
+"Invalid {{name}}": "{{name}} invalide"
"Link": Lien
"Login failed": La connexion a échoué
"Name": Nom
@@ -42,7 +42,7 @@
"Password": Mot de passe
"Pending": En attente
"Please review": Veuillez réviser
-"Retype {{name}}": Saisir à nouveau {{name}}
+"Retype {{name}}": "Saisir à nouveau {{name}}"
"Save failed": L'enregistrement a échoué
"Saving": Sauver
"Services restart complete": Redémarrage des services terminé
@@ -54,23 +54,23 @@
"Task in progress, please wait a moment": Tâche en cours, veuillez patienter un instant
"Type": Type
"URL Resolver": Résolveur d'URL
-"Unable to get `{{name}}`": Impossible d'obtenir `{{name}}`
+"Unable to get `{{name}}`": "Impossible d'obtenir `{{name}}`"
"Unspecified": Non spécifié
"Unsupported formats": Formats non supporté
"Update complete": Mise à jour terminée
"Update failed": Échec de la mise à jour
-"Upload image via {{method}} failed": Échec de l'envoie d'une image via {{méthod}}
+"Upload image via {{method}} failed": "Échec de l'envoie d'une image via {{méthod}}"
"User": Utilisateur
"Username": Nom d'utilisateur
"Verification failed": Échec de la vérification
"Working directory retrieval failed": Échec de la récupération du répertoire de travail
"Wrong captcha": Mauvais captcha
-"{{count}} items imported": {{count}} articles importés"
-"{{done}} of {{total}} done": {{done}} de {{total}} fait
-"{{name}} already exists": {{name}} existe déjà
-"{{name}} cannot be empty": {{name}} ne peut pas être vide
-"{{name}} creation failed": La création de {{name}} a échoué
-"{{name}} deletion failed": Échec de la suppression de {{name}}
-"{{name}} is required": {{name}} est obligatoire
-"{{name}} not found": {{name}} introuvable
-"{{name}} save failed": Échec de la sauvegarde de {{name}}
+"{{count}} items imported": "{{count}} articles importés"
+"{{done}} of {{total}} done": "{{done}} de {{total}} fait"
+"{{name}} already exists": "{{name}} existe déjà"
+"{{name}} cannot be empty": "{{name}} ne peut pas être vide"
+"{{name}} creation failed": "La création de {{name}} a échoué"
+"{{name}} deletion failed": "Échec de la suppression de {{name}}"
+"{{name}} is required": "{{name}} est obligatoire"
+"{{name}} not found": "{{name}} introuvable"
+"{{name}} save failed": "Échec de la sauvegarde de {{name}}"
diff --git a/i18n/zh-CN.yml b/i18n/zh-CN.yml
index 1c5f2bf2b..704c7f156 100644
--- a/i18n/zh-CN.yml
+++ b/i18n/zh-CN.yml
@@ -67,10 +67,10 @@
"Wrong captcha": 验证码错误
"{{count}} items imported": 已导入 {{count}} 个项目
"{{done}} of {{total}} done": 已完成 {{done}} 共 {{total}} 个
-"{{name}} already exists": '{{name}}已存在'
-"{{name}} cannot be empty": '{{name}}不能为空'
-"{{name}} creation failed": '{{name}}创建失败'
-"{{name}} deletion failed": '{{name}}删除失败'
-"{{name}} is required": '{{name}}必须填写'
-"{{name}} not found": '{{name}}未找到'
-"{{name}} save failed": '{{name}}保存失败'
+"{{name}} already exists": "{{name}}已存在"
+"{{name}} cannot be empty": "{{name}}不能为空"
+"{{name}} creation failed": "{{name}}创建失败"
+"{{name}} deletion failed": "{{name}}删除失败"
+"{{name}} is required": "{{name}}必须填写"
+"{{name}} not found": "{{name}}未找到"
+"{{name}} save failed": "{{name}}保存失败"
diff --git a/i18n/zh-TW.yml b/i18n/zh-TW.yml
index 68e9215ad..98335f4ea 100644
--- a/i18n/zh-TW.yml
+++ b/i18n/zh-TW.yml
@@ -67,10 +67,10 @@
"Wrong captcha": 驗證碼錯誤
"{{count}} items imported": 已導入 {{count}} 個項目
"{{done}} of {{total}} done": 已完成 {{done}} 共 {{total}} 個
-"{{name}} already exists": '{{name}}已存在'
-"{{name}} cannot be empty": '{{name}}不能為空'
-"{{name}} creation failed": '{{name}}創建失敗'
-"{{name}} deletion failed": '{{name}}刪除失敗'
-"{{name}} is required": '{{name}}必須填寫'
-"{{name}} not found": '{{name}}未找到'
-"{{name}} save failed": '{{name}}保存失敗'
+"{{name}} already exists": "{{name}}已存在"
+"{{name}} cannot be empty": "{{name}}不能為空"
+"{{name}} creation failed": "{{name}}創建失敗"
+"{{name}} deletion failed": "{{name}}刪除失敗"
+"{{name}} is required": "{{name}}必須填寫"
+"{{name}} not found": "{{name}}未找到"
+"{{name}} save failed": "{{name}}保存失敗"
diff --git a/internal/captcha/pages/geetest.html b/internal/captcha/pages/geetest.html
index a8fb4575b..bceec1dd0 100644
--- a/internal/captcha/pages/geetest.html
+++ b/internal/captcha/pages/geetest.html
@@ -1,58 +1,64 @@
-
+
-
-
-
-
- Geetest
-
-
-
-
-
+
+
+
+
+ Geetest
+
+
+
+
+
-
-
+ gt.showCaptcha()
+ })
+
+
diff --git a/internal/captcha/pages/hcaptcha.html b/internal/captcha/pages/hcaptcha.html
index dd652c70c..a714da99a 100644
--- a/internal/captcha/pages/hcaptcha.html
+++ b/internal/captcha/pages/hcaptcha.html
@@ -1,47 +1,54 @@
-
+
-
-
-
-
- hCaptcha
-
-
-
-
-
+
-
+
+