diff --git a/docs/zh-Hans/Virtual-File-System.md b/docs/zh-Hans/Virtual-File-System.md
index 9ee0e106d4..dd702d5786 100644
--- a/docs/zh-Hans/Virtual-File-System.md
+++ b/docs/zh-Hans/Virtual-File-System.md
@@ -1,18 +1,18 @@
-## Virtual File System
+## 虚拟文件系统
-The Virtual File System makes it possible to manage files that do not physically exist on the file system (disk). It's mainly used to embed (js, css, image, cshtml...) files into assemblies and use them like physical files at runtime.
+虚拟文件系统可以管理文件系统(磁盘)上实际上不存在的文件. 它主要用于将(js, css, image, cshtml ...)文件嵌入到程序集中, 并在运行时将它们用作物理文件.
-### Volo.Abp.VirtualFileSystem Package
+### Volo.Abp.VirtualFileSystem nuget包
-Volo.Abp.VirtualFileSystem is the core package of the virtual file system. Install it in your project using the package manager console (PMC):
+Volo.Abp.VirtualFileSystem是虚拟文件系统的核心包. 使用程序包管理器控制台(PMC)将其安装到项目中:
```
Install-Package Volo.Abp.VirtualFileSystem
```
-> This package is already installed by default with the startup template. So, most of the time, you will not need to install it manually.
+> 启动模板默认已经安装了此nuget包, 所以在大多数情况下你不需要手动安装它.
-Then you can add **AbpVirtualFileSystemModule** dependency to your module:
+然后你可以在module中添加 **AbpVirtualFileSystemModule** 依赖项:
```c#
using Volo.Abp.Modularity;
@@ -28,13 +28,14 @@ namespace MyCompany.MyProject
}
```
-#### Registering Embedded Files
+#### 注册嵌入式文件
-A file should be first marked as an embedded resource to embed the file into the assembly. The easiest way to do it is to select the file from the **Solution Explorer** and set **Build Action** to **Embedded Resource** from the **Properties** window. Example:
+首先需要把文件标记为嵌入式资源将文件嵌入到程序集中. 最简单的方式是在 **解决方案管理器** 中选择文件, 然后找到 **"属性"** 窗口将 **"生成操作"** 设置为 **"嵌入式资源"**.
+例如:

-If you want to add multiple files, this can be tedious. Alternatively, you can directly edit your **.csproj** file:
+如果需要添加多个文件, 这会很乏味. 这时可以直接编辑 **.csproj** 文件:
````C#
@@ -42,9 +43,9 @@ If you want to add multiple files, this can be tedious. Alternatively, you can d
````
-This configuration recursively adds all files under the **MyResources** folder of the project (including the files you will add in the future).
+此配置以递归方式添加项目的 **MyResources** 文件夹下的所有文件(包括将来新添加的文件).
-Then the module needs to be configured using `VirtualFileSystemOptions` to register the embedded files to the virtual file system. Example:
+然后应该使用 `VirtualFileSystemOptions` 来配置模块, 以便将嵌入式文件注册到虚拟文件系统. 例如:
````C#
using Microsoft.Extensions.DependencyInjection;
@@ -70,15 +71,15 @@ namespace MyCompany.MyProject
}
````
-The `AddEmbedded` extension method takes a class, finds all embedded files from the assembly of the given class and registers them to the virtual file system. More concisely it could be written as follows:
+`AddEmbedded` 扩展方法需要一个类, 从给定类的程序集中查找所有嵌入文件, 并将它们注册到虚拟文件系统. 它还有更简洁的写法:
````C#
options.FileSets.Add(new EmbeddedFileSet(typeof(MyModule).Assembly));
````
-#### Getting Virtual Files: IVirtualFileProvider
+#### 获取虚拟文件: IVirtualFileProvider
-After embedding a file into an assembly and registering it to the virtual file system, the `IVirtualFileProvider` interface can be used to get files or directory contents:
+将文件嵌入到程序集中并注册到虚拟文件系统后, 可以使用`IVirtualFileProvider`来获取文件或目录内容:
````C#
public class MyService
@@ -102,15 +103,15 @@ public class MyService
}
````
-#### Dealing With Embedded Files During Development
+#### 在开发过程中处理嵌入式文件
-Embedding a file into a module assembly and being able to use it from another project just by referencing the assembly (or adding a nuget package) is invaluable for creating a re-usable module. However, it does make it a little bit harder to develop the module itself.
+通过引用程序集(或添加nuget包)将文件嵌入模块程序集并从另一个项目中使用它对于创建可重用模块非常有价值. 但是, 这使得开发模块本身变得有点困难.
-Let's assume that you're developing a module that contains an embedded JavaScript file. Whenever you change this file you must re-compile the project, re-start the application and refresh the browser page to take the change. Obviously, this is very time consuming and tedious.
+假设您正在开发一个包含嵌入式JavaScript文件的模块. 当你更改文件时, 你必须重新编译项目, 重新启动应用程序并刷新浏览器页面以进行更改. 显然, 这是非常耗时和乏味的.
-What is needed is the ability for the application to directly use the physical file at development time and a have a browser refresh reflect any change made in the JavaScript file. The `ReplaceEmbeddedByPyhsical` method makes all this possible.
+我们需要的是应用程序在开发时直接使用物理文件的能力, 让浏览器刷新时同步JavaScript文件的任何更改. `ReplaceEmbeddedByPyhsical` 方法使其成为可能.
-The example below shows an application that depends on a module (`MyModule`) that itself contains embedded files. The application can reach the source code of the module at development time.
+下面的示例展示了应用程序依赖于包含嵌入文件的模块("MyModule"), 并且应用程序可以在开发过程中直接使用模块的源代码.
````C#
[DependsOn(typeof(MyModule))]
@@ -126,7 +127,7 @@ public class MyWebAppModule : AbpModule
{
//ReplaceEmbeddedByPyhsical gets the root folder of the MyModule project
options.FileSets.ReplaceEmbeddedByPyhsical(
- Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}MyModuleProject", Path.DirectorySeparatorChar))
+ Path.Combine(hostingEnvironment.ContentRootPath, "..\\MyModuleProject")
);
});
}
@@ -136,30 +137,30 @@ public class MyWebAppModule : AbpModule
}
````
-The code above assumes that `MyWebAppModule` and `MyModule` are two different projects in a Visual Studio solution and `MyWebAppModule` depends on the `MyModule`.
+上面的代码假设`MyWebAppModule`和`MyModule`是Visual Studio解决方案中的两个不同的项目, `MyWebAppModule`依赖于`MyModule`.
-### ASP.NET Core Integration
+### ASP.NET Core 集成
-The Virtual File System is well integrated to ASP.NET Core:
+虚拟文件系统与 ASP.NET Core 无缝集成:
-* Virtual files can be used just like physical (static) files in a web application.
-* Razor Views, Razor Pages, js, css, image files and all other web content types can be embedded into assemblies and used just like the physical files.
-* An application (or another module) can override a virtual file of a module just like placing a file with the same name and extension into the same folder of the virtual file.
+* 虚拟文件可以像Web应用程序上的物理(静态)文件一样使用.
+* Razor Views, Razor Pages, js, css, 图像文件和所有其他Web内容可以嵌入到程序集中并像物理文件一样使用.
+* 应用程序(或其他模块)可以覆盖模块的虚拟文件, 就像将具有同名和同扩展名文件放入虚拟文件的同一文件夹中一样.
-#### Virtual Files Middleware
+#### 虚拟文件中间件
-The Virtual Files Middleware is used to serve embedded (js, css, image...) files to clients/browsers just like physical files in the **wwwroot** folder. Add it just after the static file middleware as shown below:
+虚拟文件中间件用于向客户端/浏览器提供嵌入式(js, css, image ...)文件, 就像 **wwwroot** 文件夹中的物理(静态)文件一样. 在静态文件中间件之后添加它, 如下所示:
````C#
app.UseVirtualFiles();
````
-Adding virtual files middleware after the static files middleware makes it possible to override a virtual file with a real physical file simply by placing it in the same location as the virtual file.
+在静态文件中间件之后添加虚拟文件中间件, 可以通过放置在同一位置,使用物理文件来覆盖虚拟文件.
->The Virtual File Middleware only serves the virtual wwwroot folder contents - just like the other static files.
+> 虚拟文件中间件只是像静态文件一样提供虚拟wwwroot文件夹内容.
#### Views & Pages
-Embedded razor views/pages are available in the application without any configuration. Simply place them into the standard Views/Pages virtual folders of the module being developed.
+无需任何配置即可在应用程序中使用嵌入式的 razor Views/pages. 只需要将它们放入模块开发中的标准 Views/Pages 虚拟文件夹即可.
-An embedded view/page can be overrided if a module/application locates a new file into the same location as mentioned above.
+如果模块/应用程序将新文件放置同一位置, 则会覆盖嵌入式的 Views/Pages.