Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Readme.md for Chinese. #542

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
3 changes: 3 additions & 0 deletions docs/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
<p align='right'><sub>
Znasz 🇵🇱? Przejdź <a href='pl/Readme.md' title='Polski plik README'>tutaj</a>.
</sub></p>
<p align='right'><sub>
简体中文,请点击<a href='zh/Readme.md' title='zh-ch README'>这里</a>.
</sub></p>
Comment on lines 12 to +17
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would update this whole section, making it somewhat a combo of flag / language name (or just flag), just so it would be more fitting for multiple languages without taking a lot of the space.

<div align='center'>
<a href='https://github.com/SpacingBat3/WebCord' title="WebCord's GitHub Repository">
<picture>
Expand Down
83 changes: 83 additions & 0 deletions docs/zh/Build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# 处理源代码

当处理WebCord时,你可能需要使用许多工具来能够将其从TypeScript编译成JavaScript,打包成可分发格式,运行linter等。本节将描述你可能需要知道的命令,以便继续其开发或自行从源代码打包。

<table class="alert-info">
<tr>
<td> ℹ️ </td>
<td>
为了简化文档,下面只显示了<code>npm</code>命令语法。如果你更喜欢使用另一个包管理器,你完全可以这样做,因为在我的理念中,你不应该受到维护者使用的工具集的限制,并且有权选择你自己的工具。
</td>
</tr>
</table>
<table class="alert-warn">
<tr>
<td> ⚠️ </td>
<td>
WebCord带有<code>package-lock.json</code>作为锁文件格式,你偏好的包管理器可能无法与之配合使用。你仍然可以安装最新的依赖项,但是在依赖项破坏发生时,创建的锁文件将不会被用来重现测试环境。
</td>
</tr>
</table>

## 安装应用程序依赖项。

这是你需要执行的第一个命令——没有它,你将无法继续进行应用程序测试和运行`package.json`中列出的大多数命令。
```sh
npm ci
```

这个命令使用`package-lock.json`,它包含了更快的包安装的解析包树。虽然`package-lock.json`包含了过去确认工作的依赖树,或者在发布的情况下也可以用于重现构建,你可能想要选择最新的*非破坏性*(根据`semver`规范)依赖项,这些依赖项可能包含错误修复和安全补丁。这通常不会引起任何破坏,如果出现任何问题,你仍然可以使用`git`回到以前的状态。

要更新依赖项到最新版本:

```
npm update
```

请注意,`npm ci`也会安装开发依赖项。**这** **可能是你想要的**,因为这些依赖项包括了编译、linting和打包WebCord所需的所有推荐包。然而,如果你只想安装生产依赖项(例如,你想使用你自己的工具集或已经使用`npm i -g`全局安装了它们),你可以使用以下命令:

```
npm i --only=prod
```

## 编译代码并直接运行应用程序(无需打包)。

在你安装了所有必需的`dependencies`和`devDependencies`之后,你可以使用以下命令逐步将WebCord的源代码从TypeScript编译成JavaScript:
```
npm run build
```

在打包之前编译代码并启动应用程序:
```
npm start
```

## 运行linter并验证代码。

在开发过程中,你可能想要检查你的代码质量是否足够被接受为WebCord项目的一部分。为此,你可能想要编译它(以确保没有编译错误)并运行linter(以检查其他问题)。为此,你可以使用下面的命令:
```
npm test
```

如果你不想编译代码,也可以只运行linter:
```
npm run lint
```

## 打包 / 创建可分发物。

如果你想与某人分享你打包的应用程序的二进制文件,或者只是想在没有源代码和开发包的情况下安装和/或使用它,你可以使用以下命令为你的平台生成所有有效的可分发文件:
```
npm run make
```

你也可以创建一个包含打包应用程序的目录。这个目录没有适应特定的分发格式,但它包含了带有编译应用程序的Electron二进制文件,如果你想要在你的操作系统中安装它,需要手动设置。要打包应用程序而不将其打包为可分发物,执行以下命令:
```
npm run package
```

这将为你当前的平台打包应用程序。

## 构建环境变量。

在使用`npm run make`制作应用程序可分发物时,你可以使用一些环境变量,这些变量将在应用程序打包之前生效。有关更多信息,请参见[`Flags.md`](./Flags.md#1-in-electron-forge)。
38 changes: 38 additions & 0 deletions docs/zh/Contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# 如何参与项目贡献?

本文件描述了参与项目贡献的方法。

## 如何报告错误或请求新功能?

你可以通过应用程序的菜单栏或托盘菜单来完成。应用程序将生成一个链接到新的GitHub问题的链接,其中包含关于你的操作系统的预填详细信息(你仍需描述问题,它不会自动为你发送错误报告)。你也可以通过项目的GitHub仓库来报告问题。

在创建GitHub问题时,请查看:

- 是否有任何类似的问题(包括已关闭的);如果是,请尝试在该问题下描述你的问题或要求重新打开它以引起我的注意;

- 如果你的问题可以在Web版本中重现——修复Discord的bug目前不是这个项目的优先事项,并且可能会在网站更新时造成可能的破坏;

## 如何在应用开发中工作并创建拉取请求?

在处理WebCord的源代码时,我建议阅读有关[每个文件][Files.md]的文档以及它们在WebCord中的作用,以了解您应该将代码放置在现有文件的哪个位置。我也鼓励阅读以下部分的文档:

- [`Build.md`],以了解更多关于当前WebCord的开发脚本语法,包括如何编译、测试和打包源文件。

- [`Flags.md`],以了解更多关于当前构建标志的实现。

## 如何翻译WebCord?

目前,WebCord已将其翻译移至其[Weblate实例][weblate]。
它包括翻译项目的现状、说明和限制。你可以自由地以*旧方式*(通过做PR)翻译它,然而Weblate的更改可能会更早地被拉取,以避免在Weblate方面产生冲突。

## 其他贡献方式:

你还可以通过以下方式帮助维护本项目:
- 参与/回答GitHub讨论,
- 帮助我解决问题,
- 更新/处理文档,
- 查看WebCord的源代码或拉取请求并建议更改。

[`Build.md`]: Build.md
[`Flags.md`]: Flags.md
[weblate]: https://hosted.weblate.org/projects/spacingbat3-webcord
71 changes: 71 additions & 0 deletions docs/zh/FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# 常见问题解答
由于许多Linux新手或Windows/MacOS用户甚至在安装我的应用程序时都遇到很多问题,我决定编写一个简短的FAQ,回答我在Discord上看到的问题或问题。

## 1. 我应该下载哪个文件?

如果您在确定应该在您的平台上安装哪个文件时遇到困难,这里是按平台分组的完整平台列表和推荐的分发名称列表:

<div align=center>

### Windows

| <div align=center> 架构 </div> | <div align=center> 存档名称 </div> |
| :------------------------------------- | :------------------------------------- |
| 64位 (Intel/AMD) | `webcord-win32-x64-{version}.zip` |
| 32位 (Intel/AMD) | `webcord-win32-ia32-{version}.zip` |
| 64位 ARM | `webcord-win32-arm64-{version}.zip` |

### macOS

| <div align=center> 架构 </div> | <div align=center> 存档名称 </div> |
| :------------------------------------- | :------------------------------------- |
| 64位 X86 (常规Mac电脑) | `webcord-darwin-x64-{version}.zip` |
| 64位 ARM (Apple M1电脑) | `webcord-darwin-arm64-{version}.zip` |

### Linux

| <div align=center> 发行版 </div> | <div align=center> 推荐包 </div> |
| :------------------------------------------ | :-------------------------------------------------- |
| Debian / Ubuntu 64位 (AMD或Intel) | `webcord_{version}_amd64.deb` |
| Debian / Ubuntu 32位 (AMD或Intel)* | `webcord_{version}_i386.deb` |
| Debian / Ubuntu ARM 64位 | `webcord_{version}_arm64.deb` |
| Debian / Ubuntu ARM 32位 | `webcord_{version}_armhf.deb` |
| Arch Linux / Manjaro (任何架构) | [Arch用户仓库(官方)](https://aur.archlinux.org/packages/webcord-git/) |
| Fedora / Red Hat Linux 64位 (Intel / AMD) | `webcord-{version}.x86_64.rpm` |
| Fedora / Red Hat Linux 32位 (Intel / AMD)*| `webcord-{version}.i386.rpm` |
| Fedora / Red Hat Linux ARM 64位 | `webcord-{version}.arm64.rpm` |
| Fedora / Red Hat Linux ARM 32位 | `webcord-{version}.armv7hl.rpm` |
| Linux 64位 (Intel / AMD) 发行版 | `webcord-{version}-x64.AppImage` |
| Linux 32位 (Intel / AMD) 发行版* | `webcord-{version}-ia32.AppImage` |
| Linux ARM 64位 发行版 | `webcord-{version}-arm64.AppImage` |
| Linux ARM 32位 发行版 | `webcord-{version}-armv7l.AppImage` |

<div align='right'><sup>* 被Electron弃用的平台。 </sup></div></div>

在[`Repos.md`]中还有社区维护的WebCord包的列表。

## 2. 图片/视频/内容加载不正确,我能做些什么吗?
是的,这可能是由于内容安全策略头没有包含所有允许加载的URL的问题。你可以在WebCord设置中禁用它作为一个解决方案。

## 3. 如何为WebCord获取麦克风权限?
如果您通过应用程序设置授予了权限,这个警告可能表明您的系统音频设置中配置错误——由于某些原因,当没有默认/回退设备设置时,Electron似乎无法访问麦克风。要解决这个问题,请在您的系统音频设置中将您的麦克风设置为默认/回退,并重新启动应用程序——确保它已正确关闭,并且托盘中没有图标,也没有Electron/WebCord进程在后台运行!

目前,这个bug可能在Linux上遇到,其他平台的状态未知。

## 4. 为什么选择Electron?

我看到了很多关于Electron的批评性讨论,尽管我认为它不是完美的软件,但我认为它目前对我来说是最好的,因为对于基于Web的软件开发——它旨在在连接到互联网站点时保持安全,与其他一些解决方案不同。它也是我发现的唯一支持ARM设备解决方案。对于无法为每个平台开发每个应用程序并维护它的初学者来说,Electron是一个简单的解决方案,它只是维护多平台应用程序更加耗时,因为不同的GUI界面使用了不同的库。例如,如果我想使用`node-gtk`为GTK3/4 WebView重写WebCord,我将不得不在Windows上使用不同的API,因为`node-gtk`目前在Windows平台上不起作用。对于认为QT可以作为本地实现解决方案的人来说,我不认为QT总是与每个主题很好地集成(即*它非常丑陋!*)或者可以轻松主题化。

截至接近Electron的替代品,唯一似乎有希望的软件是NW.js,但它更多地设计用于渲染本地站点,并且不会像Electron那样采取相同的安全方法,这让我更担心开发代码,以免泄露太多对系统文件的访问权限给站点。

请注意,我设计WebCord的哲学是不使用Discord API,使其免于被轻易检测为非官方Discord客户端和/或冒险用户,这些用户在使用API的某些部分时可能被视为自机器人。即使在今天,我仍然不鼓励进行请求,也许最安全的方法将是让客户端首先分析站点所做的请求,以制作安全API端点列表,或者实际上捕获Discord网站所做的请求,并将它们暴露给客户端的某些功能。

此外,你实际上可以在不同的应用程序中重用Electron二进制文件——实际上,一些Linux发行版,如Arch Linux,对于大多数不依赖任何特定Electron版本/二进制的基于Electron的应用程序都是这样做的。这种做法将节省磁盘空间和其他资源,因为没有必要同时运行多个具有不同Chromium引擎版本的Electron二进制文件。

## 5. 这个项目是否违反了Discord的服务条款?

在当前状态下,它通过CSS注入和JavaScript调整修改了页面的风格,所以我相信**是的**。然而,我专注于WebCord在隐藏所有修改方面进行欺骗,Discord无法确定做了什么以及如何进行修改(例如,样式表是在没有HTML的情况下注入的,因此它们无法通过`MutationObserver`以编程方式捕获),所以即使WebCord进行了任何修改,包括注入自定义样式表,**你应该都是安全的**。

在我看来,WebCord是您应该期望因违反Discord的服务条款而被禁止使用的最后一个客户端。我认为使用直接通过API向Discord发送请求的客户端存在更大的风险,因为可以很容易地检测到这些客户端发送的异常请求,特别是当官方客户端的API版本升级,或者官方客户端修改通常不隐藏它们修改的事实,甚至有时在不通知用户的情况下直接使用API。

[`Repos.md`]: ./Repos.md "提供WebCord的社区维护软件仓库列表。"
Loading
Loading