From afed97ab86cffc2d899896b6fb54907a346d208e Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 4 Jan 2019 15:03:32 +0800 Subject: [PATCH 1/5] Update Part-III.md --- docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md index 418c29a119..6b31e9ba84 100644 --- a/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md +++ b/docs/zh-Hans/Tutorials/AspNetCore-Mvc/Part-III.md @@ -1,6 +1,6 @@ -## ASP.NET Core MVC Tutorial - Part III +## ASP.NET Core MVC 教程 - 第三章 -### About this Tutorial +### 关于本教程 这是本教程所有章节中的第三章.下面是所有的章节: @@ -214,4 +214,4 @@ public async Task Should_Not_Create_A_Book_Without_Name() ### 测试 Web 页面 -TODO \ No newline at end of file +TODO From 184bc984f15ec3fdabe8bf058313ba246616ccfb Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 6 Jan 2019 16:19:19 +0800 Subject: [PATCH 2/5] Update docs-nav.json --- docs/zh-Hans/docs-nav.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index 554967dbac..202bd7b57d 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -16,11 +16,11 @@ "text": "从空项目开始", "items": [ { - "text": "使用Console Application", + "text": "使用ASP.NET Core Web Application", "path": "Getting-Started-AspNetCore-Application.md" }, { - "text": "使用 ASP.NET Core Web Application", + "text": "使用Console Application", "path": "Getting-Started-Console-Application.md" } ] From c98bf645602c41d6fc58263cd3c7f1c5664e1705 Mon Sep 17 00:00:00 2001 From: edison Date: Tue, 15 Jan 2019 15:45:16 +0800 Subject: [PATCH 3/5] Update Dynamic-CSharp-API-Clients.md --- .../AspNetCore/Dynamic-CSharp-API-Clients.md | 100 ++++++++++-------- 1 file changed, 56 insertions(+), 44 deletions(-) diff --git a/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md b/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md index 0deeedf5ab..789779f916 100644 --- a/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md +++ b/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md @@ -1,21 +1,21 @@ # 动态 C# API 客户端 -ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 `HttpClient` 或者其他低级的HTTP功能调用远程服务并获取数据. +ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据. ## 服务接口 你的service或controller需要实现一个在服务端和客户端共享的接口.因此,首先需要在一个共享的类库项目中定义一个服务接口.例如: ````csharp -public interface IBookService : IApplicationService +public interface IBookAppService : IApplicationService { Task> GetListAsync(); } ```` -你的接口需要实现`IRemoteService`接口.由于`IApplicationService`继承自`IRemoteService`接口.所以`IBookService`完全满足这个条件. +为了能自动被发现,你的接口需要实现IRemoteService接口.由于IApplicationService继承自IRemoteService接口.所以IBookAppService完全满足这个条件. -在你的服务中实现这个类,你可以使用[Auto API Controller](Auto-API-Controllers.md)将你的服务暴漏为一个REST API 端点. +在你的服务中实现这个类,你可以使用[auto API controller system](Auto-API-Controllers.md)将你的服务暴漏为一个REST API 端点. ## 客户端代理生成 @@ -25,7 +25,7 @@ public interface IBookService : IApplicationService Install-Package Volo.Abp.Http.Client ```` -然后给你的模块添加`AbpHttpClientModule`依赖: +然后给你的模块添加AbpHttpClientModule依赖: ````csharp [DependsOn(typeof(AbpHttpClientModule))] //添加依赖 @@ -45,13 +45,6 @@ public class MyClientAppModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - //配置远程端点 - context.Services.Configure(options => - { - options.RemoteServices.Default = - new RemoteServiceConfiguration("http://localhost:53929/"); - }); - //创建动态客户端代理 context.Services.AddHttpClientProxies( typeof(BookStoreApplicationModule).Assembly @@ -60,9 +53,23 @@ public class MyClientAppModule : AbpModule } ```` -`RemoteServiceOptions`被用来为远程服务配置端点(本例设置了默认的端点,当然你也可以拥有不同的服务端点供不同的客户端使用.参考本文"多个远程服务端点"小节). +AddHttpClientproxies方法获得一个程序集,找到这个程序集中所有的服务接口,创建并注册代理类. + +### Endpoint配置 + +`appsettings.json`文件中的`RemoteServices`节点被用来设置默认的服务地址.下面是最简单的配置: + +```` +{ + "RemoteServices": { + "Default": { + "BaseUrl": "http://localhost:53929/" + } + } +} +```` -`AddHttpClientproxies`方法获得一个程序集,找到这个程序集中所有的服务接口,创建并注册代理类. +查看下面的"RemoteServiceOptions"章节获取更多详细配置. ## 使用 @@ -71,9 +78,9 @@ public class MyClientAppModule : AbpModule ````csharp public class MyService : ITransientDependency { - private readonly IBookService _bookService; + private readonly IBookAppService _bookService; - public MyService(IBookService bookService) + public MyService(IBookAppService bookService) { _bookService = bookService; } @@ -89,38 +96,32 @@ public class MyService : ITransientDependency } ```` -本例注入了上面定义的`IBookService`服务接口.当客户端调用服务方法的时候动态客户端代理就会创建一个HTTP调用. +本例注入了上面定义的IBookAppService服务接口.当客户端调用服务方法的时候动态客户端代理就会创建一个HTTP调用. -## 详细配置 +### IHttpClientProxy接口 -### RemoteServiceOptions +你可以像上面那样注入`IBookAppService`来使用客户端代理,也可以注入`IHttpClientProxy`获取更多明确的用法.这种情况下你可以使用`IHttpClientProxy`接口的`Service`属性. -你可以像上面展示的那样配置`RemoteServiceOptions`.也可以从`appsettings.json`文件中读取.在你的`appsettings.json`文件中添加`RemoteServices`节点: +## 配置 -````json -{ - "RemoteServices": { - "Default": { - "BaseUrl": "http://localhost:53929/" - } - } -} -```` +### RemoteServiceOptions -然后你可以像下面这样将`IConfigurationRoot`实例直接传递到`Configure()`方法中: +默认情况下`RemoteServiceOptions`从`appsettings.json`获取.或者,你可以使用`Configure`方法来设置或重写它.如: ````csharp -var configuration = new ConfigurationBuilder() - .SetBasePath(Directory.GetCurrentDirectory()) - .AddJsonFile("appsettings.json") - .Build(); - -context.Services.Configure(configuration); +public override void ConfigureServices(ServiceConfigurationContext context) +{ + context.Services.Configure(options => + { + options.RemoteServices.Default = + new RemoteServiceConfiguration("http://localhost:53929/"); + }); + + //... +} ```` -这种方式对于不修改代码来改变配置是非常有用的. - -#### 多个远程服务端点 +### 多个远程服务端点 上面的例子已经配置了"Default"远程服务端点.你可能需要为不同的服务创建不同的端点.(就像在微服务方法中一样,每个微服务具有不同的端点).在这种情况下,你可以在你的配置文件中添加其他的端点: @@ -137,17 +138,28 @@ context.Services.Configure(configuration); } ```` -下一节学习如何使用这个新的端点. +AddHttpClientProxies方法有一个可选的参数来定义远程服务的名字: -### AddHttpClientProxies方法 +````csharp +context.Services.AddHttpClientProxies( + typeof(BookStoreApplicationModule).Assembly, + remoteServiceName: "BookStore" +); +```` + +remoteServiceName参数会匹配通过RemoteServiceOptions配置的服务端点.如果BookStore端点没有定义就会使用默认的Default端点. + +### 作为默认服务 -`AddHttpClientProxies`方法有一个可选的参数来定义远程服务的名字: +当你为`IBookAppService`创建了一个服务代理,你可以直接注入`IBookAppService`来使用代理客户端(像上面章节中将的那样).你可以传递`asDefaultService:false`到`AddHttpClientProxies`方法来禁用此功能. ````csharp context.Services.AddHttpClientProxies( typeof(BookStoreApplicationModule).Assembly, - remoteServiceName: "BookStore" + asDefaultServices: false ); ```` -`remoteServiceName`参数会匹配通过`RemoteServiceOptions`配置的服务端点.如果`BookStore`端点没有定义就会使用默认的`Default`端点. \ No newline at end of file +如果你的程序中已经有一个服务的实现并且你不想用你的客户端代理重写或替换其他的实现,就需要使用`asDefaultServices:false` + +> 如果你禁用了`asDefaultService`,你只能使用`IHttpClientProxy`接口去使用客户端代理.(参见上面的相关章节). \ No newline at end of file From 9ed3deff7a51fb9556c60136fdcb5788ad0c7d45 Mon Sep 17 00:00:00 2001 From: edison Date: Wed, 16 Jan 2019 12:44:35 +0800 Subject: [PATCH 4/5] Update Dynamic-CSharp-API-Clients.md --- .../AspNetCore/Dynamic-CSharp-API-Clients.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md b/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md index 789779f916..f964ac9013 100644 --- a/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md +++ b/docs/zh-Hans/AspNetCore/Dynamic-CSharp-API-Clients.md @@ -1,6 +1,6 @@ # 动态 C# API 客户端 -ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据. +ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 `HttpClient` 或者其他低级的HTTP功能调用远程服务并获取数据. ## 服务接口 @@ -13,7 +13,7 @@ public interface IBookAppService : IApplicationService } ```` -为了能自动被发现,你的接口需要实现IRemoteService接口.由于IApplicationService继承自IRemoteService接口.所以IBookAppService完全满足这个条件. +为了能自动被发现,你的接口需要实现`IRemoteService`接口.由于`IApplicationService`继承自`IRemoteService`接口.所以`IBookAppService`完全满足这个条件. 在你的服务中实现这个类,你可以使用[auto API controller system](Auto-API-Controllers.md)将你的服务暴漏为一个REST API 端点. @@ -25,7 +25,7 @@ public interface IBookAppService : IApplicationService Install-Package Volo.Abp.Http.Client ```` -然后给你的模块添加AbpHttpClientModule依赖: +然后给你的模块添加`AbpHttpClientModule`依赖: ````csharp [DependsOn(typeof(AbpHttpClientModule))] //添加依赖 @@ -53,7 +53,7 @@ public class MyClientAppModule : AbpModule } ```` -AddHttpClientproxies方法获得一个程序集,找到这个程序集中所有的服务接口,创建并注册代理类. +`AddHttpClientproxies`方法获得一个程序集,找到这个程序集中所有的服务接口,创建并注册代理类. ### Endpoint配置 @@ -96,7 +96,7 @@ public class MyService : ITransientDependency } ```` -本例注入了上面定义的IBookAppService服务接口.当客户端调用服务方法的时候动态客户端代理就会创建一个HTTP调用. +本例注入了上面定义的`IBookAppService`服务接口.当客户端调用服务方法的时候动态客户端代理就会创建一个HTTP调用. ### IHttpClientProxy接口 @@ -138,7 +138,7 @@ public override void ConfigureServices(ServiceConfigurationContext context) } ```` -AddHttpClientProxies方法有一个可选的参数来定义远程服务的名字: +`AddHttpClientProxies`方法有一个可选的参数来定义远程服务的名字: ````csharp context.Services.AddHttpClientProxies( @@ -147,7 +147,7 @@ context.Services.AddHttpClientProxies( ); ```` -remoteServiceName参数会匹配通过RemoteServiceOptions配置的服务端点.如果BookStore端点没有定义就会使用默认的Default端点. +`remoteServiceName`参数会匹配通过`RemoteServiceOptions`配置的服务端点.如果`BookStore`端点没有定义就会使用默认的`Default`端点. ### 作为默认服务 From 53b1f79c99457bddc4024b790c20119d7cf1b007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=A3=AB=E4=BC=9F?= Date: Fri, 18 Jan 2019 10:25:36 +0800 Subject: [PATCH 5/5] Improve Chinese translate --- docs/zh-Hans/Modules/Docs.md | 2 +- docs/zh-Hans/Modules/Index.md | 2 +- .../src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json | 4 ++-- .../Localization/Resources/AbpAccount/Web/zh-Hans.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/zh-Hans/Modules/Docs.md b/docs/zh-Hans/Modules/Docs.md index 05ade1df92..cfe287082b 100644 --- a/docs/zh-Hans/Modules/Docs.md +++ b/docs/zh-Hans/Modules/Docs.md @@ -54,7 +54,7 @@ ABP框架的[文档](https://abp.io/documents/)也是使用的此模块. 现在一个空的ABP项目已经创建完成! 现在你可以运行项目并且查看网站. -输入用户名 `admin` 密码 `1q2w3E*` 登陆到网站. +输入用户名 `admin` 密码 `1q2w3E*` 登录到网站. ### 2- 引用文档模块包 diff --git a/docs/zh-Hans/Modules/Index.md b/docs/zh-Hans/Modules/Index.md index 1ea5ba2a7a..8e5edf35b6 100644 --- a/docs/zh-Hans/Modules/Index.md +++ b/docs/zh-Hans/Modules/Index.md @@ -11,7 +11,7 @@ ABP是一个 **模块化的应用程序框架** 由十多个 **nuget packages** 有一些由ABP社区开发和维护的 **开源免费** 的应用程序模块: -* **Account**: 用于用户登陆/注册应用程序. +* **Account**: 用于用户登录/注册应用程序. * **Audit Logging**: 用于将审计日志持久化到数据库. * **Background Jobs**: 用于在使用默认后台作业管理器时保存后台作业. * **Blogging**: 用于创建精美的博客. ABP的[博客](https://abp.io/blog/abp/) 就使用了此模块. diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json index e8f5663153..e3d8028f0a 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json @@ -7,7 +7,7 @@ "DefaultErrorMessage": "发生错误!", "DefaultErrorMessageDetail": "服务器未发送错误的详细信息.", "DefaultErrorMessage401": "未通过身份验证!", - "DefaultErrorMessage401Detail": "你需要进行身份认证(登陆)后再执行此操作.", + "DefaultErrorMessage401Detail": "你需要进行身份认证(登录)后再执行此操作.", "DefaultErrorMessage403": "你没有权限!", "DefaultErrorMessage403Detail": "你不能执行此操作!", "DefaultErrorMessage404": "未找到资源!", @@ -25,7 +25,7 @@ "Delete": "删除", "Edit": "修改", "ProcessingWithThreeDot": "处理中...", - "Login": "登陆", + "Login": "登录", "Register": "注册", "Logout": "注销", "Submit": "提交", diff --git a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json index c3541a62a2..b019757f83 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json @@ -6,10 +6,10 @@ "UserNameOrEmailAddress": "用户名称或邮箱地址", "Password": "密码", "RememberMe": "记住我", - "UseAnotherServiceToLogin": "使用另一个服务登陆", + "UseAnotherServiceToLogin": "使用另一个服务登录", "UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.", "InvalidUserNameOrPassword": "用户名或密码错误!", - "LoginIsNotAllowed": "无法登陆!你需要确认邮箱地址/手机号.", + "LoginIsNotAllowed": "无法登录!你需要验证邮箱地址/手机号.", "SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户." } }