Browse Source

Merge pull request #2 from abpframework/master

Updating from abp
pull/628/head
Marcelo Mohr Maciel 7 years ago
committed by GitHub
parent
commit
3090b67f12
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      docs/zh-Hans/Getting-Started-AspNetCore-Application.md
  2. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json
  3. 24
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/BreadCrumb.cs
  4. 18
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/BreadCrumbItem.cs
  5. 16
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs
  6. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ILayoutManager.cs
  7. 14
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/PageLayout.cs
  8. 20
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json
  9. 1
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs
  10. 8
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs
  11. 28
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/HasMenuItemsExtensions.cs
  12. 1
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/StandardMenus.cs
  13. 40
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
  14. 20
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationHandler.cs
  15. 28
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml
  16. 16
      framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs
  17. 15
      modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json
  18. 14
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/zh-Hans.json
  19. 41
      modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json
  20. 8
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json
  21. 2
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/en.json
  22. 12
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/zh-Hans.json
  23. 33
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/zh-Hans.json
  24. 39
      modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/zh-Hans.json
  25. 6
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json
  26. 9
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json
  27. 11
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/zh-Hans.json
  28. 20
      samples/BookStore/src/Acme.BookStore.Domain/Localization/BookStore/zh-Hans.json
  29. 6
      templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/Localization/ApplicationContracts/zh-Hans.json
  30. 6
      templates/module/src/MyCompanyName.MyProjectName.Domain/MyCompanyName/MyProjectName/Localization/Domain/zh-Hans.json
  31. 6
      templates/module/src/MyCompanyName.MyProjectName.Web/Localization/Resources/MyProjectName/zh-Hans.json
  32. 8
      templates/mvc/src/MyCompanyName.MyProjectName.Domain/Localization/MyProjectName/zh-Hans.json
  33. 6
      templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/Localization/ApplicationContracts/zh-Hans.json
  34. 6
      templates/service/src/MyCompanyName.MyProjectName.Domain/MyCompanyName/MyProjectName/Localization/Domain/zh-Hans.json

4
docs/zh-Hans/Getting-Started-AspNetCore-Application.md

@ -1,6 +1,6 @@
## 在AspNet Core MVC Web Application中使用ABP
本教程将介绍如何开始以最少的依赖关系开始使用ABP开发. You generally want to start with a ***[startup template](https://abp.io/Templates)***
本教程将介绍如何开始以最少的依赖关系开始使用ABP开发.
通常情况下你需要下载一个 ***[启动模板](https://abp.io/Templates)***
@ -158,4 +158,4 @@ services.AddApplication<AppModule>(options =>
### 源码
从[此处](../samples/BasicAspNetCoreApplication)获取本教程中创建的示例项目的源代码.
从[此处](../samples/BasicAspNetCoreApplication)获取本教程中创建的示例项目的源代码.

9
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json

@ -0,0 +1,9 @@
{
"culture": "zh-Hans",
"texts": {
"GivenTenantIsNotAvailable": "给定的租户不可用: {0}",
"SwitchTenant": "切换租户",
"Name": "名称",
"SwitchTenantHint": "将name字段留空以切换到宿主端."
}
}

24
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/BreadCrumb.cs

@ -0,0 +1,24 @@
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{
public class BreadCrumb
{
/// <summary>
/// Default: true.
/// </summary>
public bool ShowHome { get; set; } = true;
/// <summary>
/// Default: true.
/// </summary>
public bool ShowCurrent { get; set; } = true;
public List<BreadCrumbItem> Items { get; }
public BreadCrumb()
{
Items = new List<BreadCrumbItem>();
}
}
}

18
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/BreadCrumbItem.cs

@ -0,0 +1,18 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{
public class BreadCrumbItem
{
public string Text { get; set; }
public string Icon { get; set; }
public string Url { get; set; }
public BreadCrumbItem(string text, string url = null, string icon = null)
{
Text = text;
Url = url;
Icon = icon;
}
}
}

16
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs

@ -0,0 +1,16 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{
public class ContentLayout
{
public string Title { get; set; }
public BreadCrumb BreadCrumb { get; }
public string MenuItemName { get; set; }
public ContentLayout()
{
BreadCrumb = new BreadCrumb();
}
}
}

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ILayoutManager.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{
public interface IPageLayout
{
ContentLayout Content { get; }
}
}

14
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/PageLayout.cs

@ -0,0 +1,14 @@
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{
public class PageLayout : IPageLayout, IScopedDependency
{
public ContentLayout Content { get; }
public PageLayout()
{
Content = new ContentLayout();
}
}
}

20
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpValidation/zh-Hans.json

@ -0,0 +1,20 @@
{
"culture": "zh-Hans",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}'与'{1}'不匹配.",
"The {0} field is not a valid credit card number.": "字段{0}不是有效的信用卡号码.",
"{0} is not valid.": "{0}验证未通过.",
"The {0} field is not a valid e-mail address.": "字段{0}不是有效的邮箱地址.",
"The {0} field only accepts files with the following extensions: {1}": "{0}字段只允许以下扩展名的文件: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "字段{0}必须是最大长度为'{1}'的字符串或数组.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "字段{0}必须是最小长度为'{1}'的字符串或数组.",
"The {0} field is not a valid phone number.": "字段{0}不是有效的身份证号码.",
"The field {0} must be between {1} and {2}.": "字段{0}值必须在{1}和{2}范围内.",
"The field {0} must match the regular expression '{1}'.": "字段{0}必须匹配正则表达式'{1}'.",
"The {0} field is required.": "字段{0}不可为空.",
"The field {0} must be a string with a maximum length of {1}.": "字段{0}必须是长度为{1}的字符串.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "字段{0}必须是最小长度为{2}并且最大长度{1}的字符串.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "字段{0}不是有效的完全限定的http,https或ftp URL.",
"The field {0} is invalid.": "字段{0}是无效值."
}
}

1
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs

@ -33,6 +33,7 @@ namespace Volo.Abp.UI.Navigation
/// <summary>
/// Can be used to store a custom object related to this menu.
/// TODO: Conver to dictionary!
/// </summary>
[CanBeNull]
public object CustomData { get; set; }

8
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs

@ -85,7 +85,6 @@ namespace Volo.Abp.UI.Navigation
/// </summary>
public string CssClass { get; set; }
public ApplicationMenuItem(
[NotNull] string name,
[NotNull] string displayName,
@ -107,7 +106,7 @@ namespace Volo.Abp.UI.Navigation
Order = order;
CustomData = customData;
Target = target;
ElementId = elementId;
ElementId = elementId ?? GetDefaultElementId();
CssClass = cssClass;
Items = new List<ApplicationMenuItem>();
@ -123,5 +122,10 @@ namespace Volo.Abp.UI.Navigation
Items.Add(menuItem);
return this;
}
private string GetDefaultElementId()
{
return "MenuItem_" + Name;
}
}
}

28
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/HasMenuItemsExtensions.cs

@ -0,0 +1,28 @@
using JetBrains.Annotations;
using Volo.Abp.UI.Navigation;
namespace Volo.Abp.Ui.Navigation
{
public static class HasMenuItemsExtensions
{
[CanBeNull]
public static ApplicationMenuItem FindMenuItem(this IHasMenuItems container, string menuItemName)
{
foreach (var menuItem in container.Items)
{
if (menuItem.Name == menuItemName)
{
return menuItem;
}
var subItem = FindMenuItem(menuItem, menuItemName);
if (subItem != null)
{
return subItem;
}
}
return null;
}
}
}

1
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/StandardMenus.cs

@ -4,5 +4,6 @@ namespace Volo.Abp.UI.Navigation
{
public const string Main = "Main";
public const string User = "User";
public const string Shortcut = "User";
}
}

40
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json

@ -0,0 +1,40 @@
{
"culture": "zh-Hans",
"texts": {
"InternalServerErrorMessage": "对不起,在处理你的请求期间,产生了一个服务器内部错误!",
"ValidationErrorMessage": "你的请求无效!",
"ValidationNarrativeErrorMessageTitle": "验证时发现以下错误.",
"DefaultErrorMessage": "发生错误!",
"DefaultErrorMessageDetail": "服务器未发送错误的详细信息.",
"DefaultErrorMessage401": "未通过身份验证!",
"DefaultErrorMessage401Detail": "你需要进行身份认证(登陆)后再执行此操作.",
"DefaultErrorMessage403": "你没有权限!",
"DefaultErrorMessage403Detail": "你不能执行此操作!",
"DefaultErrorMessage404": "未找到资源!",
"DefaultErrorMessage404Detail": "未在服务中找到请求的资源!",
"EntityNotFoundErrorMessage": "实体 {0} 不存在,id = {1}!",
"Error": "错误",
"AreYouSure": "你确定吗?",
"Cancel": "取消",
"Yes": "是",
"No": "否",
"Close": "关闭",
"Save": "保存",
"SavingWithThreeDot": "保存中...",
"Actions": "操作",
"Delete": "删除",
"Edit": "修改",
"ProcessingWithThreeDot": "处理中...",
"Login": "登陆",
"Register": "注册",
"Logout": "注销",
"Submit": "提交",
"Back": "返回",
"PagerNext": "下一页",
"PagerPrevious": "上一页",
"PagerInfo": "显示 {0} 到 {1} 个 {2} 条目.",
"DatatableActionDropdownDefaultText": "操作",
"ChangePassword": "修改密码",
"PersonalInfo": "个人信息"
}
}

20
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ValidationHandler.cs

@ -0,0 +1,20 @@
using System.Text.RegularExpressions;
namespace Volo.Abp.Validation
{
public class ValidationHandler
{
private const string EmailRegEx = @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
public static bool IsValidEmailAddress(string email)
{
if (string.IsNullOrEmpty(email))
{
return false;
}
/*RFC 2822 (simplified)*/
return Regex.IsMatch(email, EmailRegEx, RegexOptions.Compiled | RegexOptions.IgnoreCase);
}
}
}

28
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml

@ -18,7 +18,6 @@
<div class="demo-with-code">
<div class="demo-area">
<span abp-border="Default">aaa</span>
<span abp-border="Top">bbb</span>
<span abp-border="Right">ccc</span>
@ -32,23 +31,22 @@
<span abp-border="Warning_0">kkk</span>
<span abp-border="Bottom_Primary_0">lll</span>
<span abp-border="Left_Danger">mmm</span>
</div>
<div class="code-area">
<pre>
&lt;span abp-border&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Top&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Right&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Left&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Bottom&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Top_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Right_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Left_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Bottom_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Top_Primary&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Warning_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Bottom_Primary_0&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Left_Danger&quot;&gt;&lt;/span&gt;
&lt;span abp-border=&quot;Default&quot;&gt;aaa&lt;/span&gt;
&lt;span abp-border=&quot;Top&quot;&gt;bbb&lt;/span&gt;
&lt;span abp-border=&quot;Right&quot;&gt;ccc&lt;/span&gt;
&lt;span abp-border=&quot;Left&quot;&gt;ddd&lt;/span&gt;
&lt;span abp-border=&quot;Bottom&quot;&gt;eee&lt;/span&gt;
&lt;span abp-border=&quot;Top_0&quot;&gt;fff&lt;/span&gt;
&lt;span abp-border=&quot;Right_0&quot;&gt;ggg&lt;/span&gt;
&lt;span abp-border=&quot;Left_0&quot;&gt;hhh&lt;/span&gt;
&lt;span abp-border=&quot;Bottom_0&quot;&gt;iii&lt;/span&gt;
&lt;span abp-border=&quot;Top_Primary&quot;&gt;jjj&lt;/span&gt;
&lt;span abp-border=&quot;Warning_0&quot;&gt;kkk&lt;/span&gt;
&lt;span abp-border=&quot;Bottom_Primary_0&quot;&gt;lll&lt;/span&gt;
&lt;span abp-border=&quot;Left_Danger&quot;&gt;mmm&lt;/span&gt;
</pre>
</div>
</div>

16
framework/test/Volo.Abp.Validation.Tests/Volo/Abp/Validation/ApplicationService_Validation_Tests.cs

@ -145,6 +145,22 @@ namespace Volo.Abp.Validation
_myAppService.MyMethodWithNullableEnum(null);
}
[Fact]
public void Should_Validate_Emails()
{
//Valid
ValidationHandler.IsValidEmailAddress("john.doe@domain.com").ShouldBe(true);
ValidationHandler.IsValidEmailAddress("ip@1.2.3.123").ShouldBe(true);
ValidationHandler.IsValidEmailAddress("pharaoh@egyptian.museum").ShouldBe(true);
ValidationHandler.IsValidEmailAddress("john.doe+regexbuddy@gmail.com").ShouldBe(true);
ValidationHandler.IsValidEmailAddress("Mike.O'Dell@ireland.com").ShouldBe(true);
//Invalid
ValidationHandler.IsValidEmailAddress("1024x768@60Hz").ShouldBe(false);
ValidationHandler.IsValidEmailAddress("not.a.valid.email").ShouldBe(false);
ValidationHandler.IsValidEmailAddress("john@aol...com").ShouldBe(false);
}
[DependsOn(typeof(AbpAutofacModule))]
[DependsOn(typeof(AbpValidationModule))]
public class TestModule : AbpModule

15
modules/account/src/Volo.Abp.Account.Web/Localization/Resources/AbpAccount/Web/zh-Hans.json

@ -0,0 +1,15 @@
{
"culture": "zh-Hans",
"texts": {
"UserName": "用户名称",
"EmailAddress": "邮箱地址",
"UserNameOrEmailAddress": "用户名称或邮箱地址",
"Password": "密码",
"RememberMe": "记住我",
"UseAnotherServiceToLogin": "使用另一个服务登陆",
"UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.",
"InvalidUserNameOrPassword": "用户名或密码错误!",
"LoginIsNotAllowed": "无法登陆!你需要确认邮箱地址/手机号.",
"SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户."
}
}

14
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/zh-Hans.json

@ -0,0 +1,14 @@
{
"culture": "zh-Hans",
"texts": {
"Permission:Blogging": "博客",
"Permission:Blogs": "博客",
"Permission:Posts": "帖子",
"Permission:Tags": "标签",
"Permission:Comments": "评论",
"Permission:Management": "管理",
"Permission:Edit": "修改",
"Permission:Create": "创建",
"Permission:Delete": "删除"
}
}

41
modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/zh-Hans.json

@ -0,0 +1,41 @@
{
"culture": "zh-Hans",
"texts": {
"Menu:Blogs": "博客",
"Menu:BlogManagement": "博客管理",
"Title": "标题",
"Delete": "删除",
"Reply": "回复",
"ReplyTo": "回复 {0}",
"ContinueReading": "继续阅读",
"DaysAgo": "{0}天前",
"YearsAgo": "{0}年前",
"MonthsAgo": "{0}月前",
"WeeksAgo": "{0}周前",
"MinutesAgo": "{0}分前",
"SecondsAgo": "{0}秒前",
"HoursAgo": "{0}小时前",
"Now": "刚刚",
"Content": "内容",
"SeeAll": "查看所有",
"PopularTags": "热门标签",
"WiewsWithCount": "{0}人查看",
"LastPosts": "最后的帖子",
"LeaveComment": "发布评论",
"TagsInThisArticle": "文章中的标签",
"Posts": "帖子",
"Edit": "编辑",
"BLOG": "博客",
"CommentDeletionWarningMessage": "评论将被删除.",
"PostDeletionWarningMessage": "帖子将被删除",
"BlogDeletionWarningMessage": "博客将被删除.",
"AreYouSure": "你确定吗?",
"CommentWithCount": "{0}个评论",
"Comment": "评论",
"ShareOnTwitter": "分享到Twitter",
"CoverImage": "封面图",
"CreateANewPost": "创建一个新帖子",
"CreateANewBlog": "创建一个新博客",
"WhatIsNew": "最新消息"
}
}

8
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh.json → modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json

@ -1,5 +1,5 @@
{
"culture": "zh",
"culture": "zh-Hans",
"texts": {
"Documents": "文档",
"BackToWebsite": "返回网站",
@ -8,8 +8,8 @@
"InThisDocument": "在这个文档中",
"GoToTop": "返回顶部",
"Projects": "项目",
"NoProjectWarning": "当前并没有项目",
"DocumentNotFound": "抱歉,您请求的文档不存在!",
"NavigationDocumentNotFound": "此版本并没有导航文档"
"NoProjectWarning": "当前并没有项目!",
"DocumentNotFound": "抱歉,您请求的文档不存在!",
"NavigationDocumentNotFound": "此版本并没有导航文档!"
}
}

2
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/en.json

@ -1,7 +1,7 @@
{
"culture": "en",
"texts": {
"Permission:IdentityManagement": "Idetity management",
"Permission:IdentityManagement": "Identity management",
"Permission:RoleManagement": "Role management",
"Permission:Create": "Create",
"Permission:Edit": "Edit",

12
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/zh-Hans.json

@ -0,0 +1,12 @@
{
"culture": "zh-Hans",
"texts": {
"Permission:IdentityManagement": "身份认证管理",
"Permission:RoleManagement": "角色管理",
"Permission:Create": "创建",
"Permission:Edit": "编辑",
"Permission:Delete": "删除",
"Permission:ChangePermissions": "更改权限",
"Permission:UserManagement": "用户管理"
}
}

33
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/Localization/Domain/zh-Hans.json

@ -0,0 +1,33 @@
{
"culture": "zh-Hans",
"texts": {
"Identity.DefaultError": "发生了一个未知错误.",
"Identity.ConcurrencyFailure": "对象已被修改,乐观并发失败.",
"Identity.DuplicateEmail": "邮箱 '{0}' 已存在.",
"Identity.DuplicateRoleName": "角色名 '{0}' 已存在.",
"Identity.DuplicateUserName": "用户名 '{0}' 已存在.",
"Identity.InvalidEmail": "邮箱 '{0}' 无效.",
"Identity.InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.",
"Identity.InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.",
"Identity.InvalidRoleName": "角色名 '{0}' 无效.",
"Identity.InvalidToken": "token无效.",
"Identity.InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.",
"Identity.LoginAlreadyAssociated": "此登录名的用户已存在.",
"Identity.PasswordMismatch": "密码错误.",
"Identity.PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').",
"Identity.PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').",
"Identity.PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.",
"Identity.PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').",
"Identity.PasswordTooShort": "密码至少为{0}个字符.",
"Identity.RoleNotFound": "角色 {0} 不存在.",
"Identity.UserAlreadyHasPassword": "用户已设置密码.",
"Identity.UserAlreadyInRole": "用户已具有角色 '{0}'.",
"Identity.UserLockedOut": "用户被锁定.",
"Identity.UserLockoutNotEnabled": "该用户未启用锁定.",
"Identity.UserNameNotFound": "用户 {0} 不存在.",
"Identity.UserNotInRole": "用户不具有 '{0}' 角色.",
"Identity.PasswordConfirmationFailed": "密码或确认密码不一致.",
"Identity.StaticRoleRenamingErrorMessage": "无法重命名静态角色.",
"Identity.StaticRoleDeletionErrorMessage": "无法删除静态角色."
}
}

39
modules/identity/src/Volo.Abp.Identity.Web/Localization/Resources/AbpIdentity/zh-Hans.json

@ -0,0 +1,39 @@
{
"culture": "zh-Hans",
"texts": {
"Menu:IdentityManagement": "身份认证管理",
"Users": "用户",
"NewUser": "新用户",
"UserName": "用户名称",
"EmailAddress": "邮箱地址",
"PhoneNumber": "手机号",
"UserInformations": "用户信息",
"DisplayName:IsDefault": "默认",
"DisplayName:IsStatic": "静态",
"DisplayName:IsPublic": "公开",
"Roles": "角色",
"Password": "密码",
"PersonalInfo": " 个人信息",
"PersonalSettings": "个人设置",
"UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?",
"RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?",
"DisplayName:RoleName": "角色名称",
"DisplayName:UserName": "用户名称",
"DisplayName:Name": "名",
"DisplayName:Surname": "姓",
"DisplayName:Password": "密码",
"DisplayName:EmailAddress": "邮箱地址",
"DisplayName:PhoneNumber": "手机号码",
"DisplayName:TwoFactorEnabled": "二次认证",
"DisplayName:LockoutEnabled": "登录失败,账户被锁定",
"NewRole": "新角色",
"RoleName": "角色名称",
"CreationTime": "创建时间",
"Permissions": "权限",
"DisplayName:CurrentPassword": "当前密码",
"DisplayName:NewPassword": "新密码",
"DisplayName:NewPasswordConfirm": "确认新密码",
"PasswordChangedMessage": "你已成功更改密码.",
"PersonalSettingsSavedMessage": "你的个人设置保存成功."
}
}

6
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
"Permissions": "权限"
}
}

9
modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/Localization/ApplicationContracts/zh-Hans.json

@ -0,0 +1,9 @@
{
"culture": "zh-Hans",
"texts": {
"Permission:TenantManagement": "租户管理",
"Permission:Create": "创建",
"Permission:Edit": "编辑",
"Permission:Delete": "删除"
}
}

11
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Localization/Resources/AbpTenantManagement/Web/zh-Hans.json

@ -0,0 +1,11 @@
{
"culture": "zh-Hans",
"texts": {
"Menu:TenantManagement": "租户管理",
"Tenants": "租户",
"NewTenant": "新租户",
"TenantName": "租户名称",
"DisplayName:TenantName": "租户名称",
"TenantDeletionConfirmationMessage": "租户 '{0}' 将被删除. 你确定吗?"
}
}

20
samples/BookStore/src/Acme.BookStore.Domain/Localization/BookStore/zh-Hans.json

@ -0,0 +1,20 @@
{
"culture": "zh-Hans",
"texts": {
"Menu:Home": "首页",
"Welcome": "欢迎",
"LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 cn.abp.io.",
"Menu:BookStore": "图书商店",
"Menu:Books": "图书",
"Name": "名称",
"Type": "类型",
"PublishDate": "出版时间",
"Price": "价格",
"CreationTime": "添加时间",
"NewBook": "新书籍",
"Books": "图书",
"Update": "更新",
"BookDeletionConfirmationMessage": "你确定删除书箱: {0} 吗",
"SuccessfullyDeleted": "删除成功."
}
}

6
templates/module/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/Localization/ApplicationContracts/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
"Permission:MyProjectName": "MyProjectName"
}
}

6
templates/module/src/MyCompanyName.MyProjectName.Domain/MyCompanyName/MyProjectName/Localization/Domain/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
}
}

6
templates/module/src/MyCompanyName.MyProjectName.Web/Localization/Resources/MyProjectName/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
}
}

8
templates/mvc/src/MyCompanyName.MyProjectName.Domain/Localization/MyProjectName/zh-Hans.json

@ -0,0 +1,8 @@
{
"culture": "zh-Hans",
"texts": {
"Menu:Home": "首页",
"Welcome": "欢迎",
"LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 cn.abp.io."
}
}

6
templates/service/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName/MyProjectName/Localization/ApplicationContracts/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
"Permission:MyProjectName": "MyProjectName"
}
}

6
templates/service/src/MyCompanyName.MyProjectName.Domain/MyCompanyName/MyProjectName/Localization/Domain/zh-Hans.json

@ -0,0 +1,6 @@
{
"culture": "zh-Hans",
"texts": {
}
}
Loading…
Cancel
Save