ASP.NET Core 本地化项目教程
项目目录结构及介绍
AspNetCoreLocalization/
├── src/
│ ├── AspNetCoreLocalization.Web/
│ │ ├── Controllers/
│ │ ├── Data/
│ │ ├── Models/
│ │ ├── Views/
│ │ ├── appsettings.json
│ │ ├── Program.cs
│ │ ├── Startup.cs
│ │ └── AspNetCoreLocalization.Web.csproj
│ └── AspNetCoreLocalization.Data/
│ ├── Migrations/
│ ├── Entities/
│ └── AspNetCoreLocalization.Data.csproj
├── test/
│ └── AspNetCoreLocalization.Tests/
│ └── AspNetCoreLocalization.Tests.csproj
└── README.md
- src/: 包含项目的源代码。
- AspNetCoreLocalization.Web/: 包含Web应用程序的主要代码。
- Controllers/: 包含MVC控制器。
- Data/: 包含数据访问层代码。
- Models/: 包含应用程序模型。
- Views/: 包含MVC视图。
- appsettings.json: 配置文件。
- Program.cs: 应用程序的入口点。
- Startup.cs: 配置服务和应用程序的请求管道。
- AspNetCoreLocalization.Web.csproj: Web项目的项目文件。
- AspNetCoreLocalization.Data/: 包含数据访问层代码。
- Migrations/: 包含数据库迁移文件。
- Entities/: 包含实体类。
- AspNetCoreLocalization.Data.csproj: 数据项目的项目文件。
- AspNetCoreLocalization.Web/: 包含Web应用程序的主要代码。
- test/: 包含测试代码。
- AspNetCoreLocalization.Tests/: 包含单元测试和集成测试。
- AspNetCoreLocalization.Tests.csproj: 测试项目的项目文件。
- AspNetCoreLocalization.Tests/: 包含单元测试和集成测试。
- README.md: 项目说明文档。
项目的启动文件介绍
Program.cs
Program.cs
是应用程序的入口点,负责配置和启动应用程序。以下是示例代码:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace AspNetCoreLocalization.Web
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Startup.cs
Startup.cs
文件负责配置服务和应用程序的请求管道。以下是示例代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using AspNetCoreLocalization.Web.Extensions;
namespace AspNetCoreLocalization.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddControllersWithViews()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
var supportedCultures = new[] { "en-US", "es-ES", "fr-FR" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(supportedCultures[0])
.AddSupported