diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj
index c56459c5f3..07509841f1 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj
@@ -15,6 +15,10 @@
+
+
+
+
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/LocalizationTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/LocalizationTestController.cs
index 5404746dc5..184bfe1c99 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/LocalizationTestController.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/LocalizationTestController.cs
@@ -1,13 +1,31 @@
-using Microsoft.AspNetCore.Mvc;
+using System;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.Abp.AspNetCore.App
{
public class LocalizationTestController : AbpController
{
- public IActionResult Index1()
+ public IActionResult HelloJohn()
{
return View();
}
+
+ public IActionResult PersonForm()
+ {
+ return View(new PersonModel());
+ }
+
+ public class PersonModel
+ {
+ [Display(Name = nameof(BirthDate))]
+ public string BirthDate { get; set; }
+
+ public PersonModel()
+ {
+ BirthDate = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+ }
}
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/Index1.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/HelloJohn.cshtml
similarity index 100%
rename from framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/Index1.cshtml
rename to framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/HelloJohn.cshtml
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/PersonForm.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/PersonForm.cshtml
new file mode 100644
index 0000000000..7f0a0d470f
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/LocalizationTest/PersonForm.cshtml
@@ -0,0 +1,8 @@
+@using Microsoft.AspNetCore.Mvc.Localization
+@using Volo.Abp.AspNetCore.App
+@inject IViewLocalizer Localizer
+@model Volo.Abp.AspNetCore.App.LocalizationTestController.PersonModel
+
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/_ViewImports.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/_ViewImports.cshtml
new file mode 100644
index 0000000000..225780c2c2
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/App/Views/_ViewImports.cshtml
@@ -0,0 +1,3 @@
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap
+@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
index f8e9989a34..b6924f0485 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
@@ -3,12 +3,16 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Modularity;
using Volo.Abp.AspNetCore.Mvc.Authorization;
+using Volo.Abp.AspNetCore.Mvc.Localization;
+using Volo.Abp.AspNetCore.Mvc.Localization.Resource;
using Volo.Abp.AspNetCore.TestBase;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Autofac;
+using Volo.Abp.Localization;
using Volo.Abp.MemoryDb;
using Volo.Abp.Modularity;
using Volo.Abp.TestApp;
+using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.AspNetCore.Mvc
{
@@ -20,10 +24,19 @@ namespace Volo.Abp.AspNetCore.Mvc
)]
public class AbpAspNetCoreMvcTestModule : AbpModule
{
- public override void ConfigureServices(ServiceConfigurationContext context)
+ public override void PreConfigureServices(ServiceConfigurationContext context)
{
- context.Services.AddLocalization(); //TODO: Move to the framework..?
+ context.Services.PreConfigure(options =>
+ {
+ options.AddAssemblyResource(
+ typeof(MvcTestResource),
+ typeof(AbpAspNetCoreMvcTestModule).Assembly
+ );
+ });
+ }
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
context.Services.AddAuthorization(options =>
{
options.AddPolicy("MyClaimTestPolicy", policy =>
@@ -48,6 +61,18 @@ namespace Volo.Abp.AspNetCore.Mvc
options.DefinitionProviders.Add();
});
+ context.Services.Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+
+ context.Services.Configure(options =>
+ {
+ options.Resources
+ .Add("en")
+ .AddVirtualJson("/Volo/Abp/AspNetCore/Mvc/Localization/Resource");
+ });
+
context.Services.AddAssemblyOf();
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs
index c042734c87..16057c3f07 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/MvcLocalization_Tests.cs
@@ -2,6 +2,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Shouldly;
+using Volo.Abp.Localization;
using Xunit;
namespace Volo.Abp.AspNetCore.Mvc.Localization
@@ -26,8 +27,24 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
[Fact]
public async Task Should_Get_Same_Text_If_Not_Defined_In_Razor_View()
{
- var result = await GetResponseAsStringAsync("/LocalizationTest/Index1");
+ var result = await GetResponseAsStringAsync("/LocalizationTest/HelloJohn");
result.ShouldBe("Hello John.");
}
+
+ [Fact]
+ public async Task Should_Localize_Display_Attribute()
+ {
+ using (AbpCultureHelper.Use("en"))
+ {
+ var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm");
+ result.ShouldContain("");
+ }
+
+ using (AbpCultureHelper.Use("tr"))
+ {
+ var result = await GetResponseAsStringAsync("/LocalizationTest/PersonForm");
+ result.ShouldContain("");
+ }
+ }
}
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/MvcTestResource.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/MvcTestResource.cs
new file mode 100644
index 0000000000..e0bef7a6b4
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/MvcTestResource.cs
@@ -0,0 +1,7 @@
+namespace Volo.Abp.AspNetCore.Mvc.Localization.Resource
+{
+ public class MvcTestResource
+ {
+
+ }
+}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/en.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/en.json
new file mode 100644
index 0000000000..fb353b16d6
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/en.json
@@ -0,0 +1,6 @@
+{
+ "culture": "en",
+ "texts": {
+ "BirthDate": "Birth date"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/tr.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/tr.json
new file mode 100644
index 0000000000..21c274bd42
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+ "BirthDate": "Dogum gunu"
+ }
+}
\ No newline at end of file