設置資源文件:為不同的語言創建資源文件。
配置 ASP.NET Core 應用程序:配置中間件以支持國際化和本地化。
使用資源文件:在 Razor Pages 和其他部分使用資源文件進行翻譯。
1. 設置資源文件
首先,創建資源文件來存儲不同語言的翻譯。在項目中,您可以創建一個名為 Resources 的文件夾。
創建資源文件
Resources/Pages/Index.en.resx(英語資源文件)
Resources/Pages/Index.zh-TW.resx(繁體中文資源文件)
每個資源文件中包含鍵值對,表示需要翻譯的文本。例如:
Resources/Pages/Index.en.resx
Resources/Pages/Index.zh-TW.resx
2. 配置 ASP.NET Core 應用程序
在 Startup.cs 或 Program.cs 文件中配置國際化和本地化服務。
Program.cs
csharp
3. 使用資源文件
在 Razor Pages 中使用本地化資源文件進行翻譯。
創建或修改 Razor Page
假設我們有一個 Index.cshtml 文件,我們將使用本地化資源。
Pages/Index.cshtml
csharp
Pages/Index.cshtml.cs
csharp
4. 切換語言
可以通過查詢字符串、Cookie 或基於路徑的方式來切換語言。例如,使用查詢字符串的方式:
Pages/_Host.cshtml
csharp
處理語言切換
需要在中間件中處理語言切換。修改 Program.cs 中的中間件配置:
csharp
這樣,當您訪問 https://yourdomain/?culture=zh-TW 時,頁面將顯示繁體中文的內容。
總結
在 ASP.NET Core 8 Razor Pages 中使用多國語言涉及以下步驟:
設置資源文件:為每種語言創建 .resx 資源文件。
配置本地化服務:在 Program.cs 中配置國際化和本地化服務。
使用本地化資源:在 Razor Pages 中使用 IStringLocalizer 來加載本地化資源。
切換語言:通過查詢字符串、Cookie 或路徑來切換語言。
這些步驟可以幫助您在 ASP.NET Core 8 應用程序中實現多國語言支持。
Name | Value |
Welcome | Welcome to our site! |
Message | Have a great day! |
Resources/Pages/Index.zh-TW.resx
Name | Value |
Welcome | 歡迎來到我們的網站! |
Message | 祝您有美好的一天! |
2. 配置 ASP.NET Core 應用程序
在 Startup.cs 或 Program.cs 文件中配置國際化和本地化服務。
Program.cs
csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.Configure(options =>
{
var supportedCultures = new[] { "en", "zh-TW" };
options.SetDefaultCulture(supportedCultures[0]);
options.AddSupportedCultures(supportedCultures);
options.AddSupportedUICultures(supportedCultures);
});
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseRequestLocalization();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
3. 使用資源文件
在 Razor Pages 中使用本地化資源文件進行翻譯。
創建或修改 Razor Page
假設我們有一個 Index.cshtml 文件,我們將使用本地化資源。
Pages/Index.cshtml
csharp
@page
@model IndexModel
@inject IStringLocalizer<IndexModel> Localizer
<h2>@Localizer["Welcome"]</h2>
<p>@Localizer["Message"]</p>
Pages/Index.cshtml.cs
csharp
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Localization;
namespace YourApp.Pages
{
public class IndexModel : PageModel
{
private readonly IStringLocalizer _localizer;
public IndexModel(IStringLocalizer localizer)
{
_localizer = localizer;
}
public void OnGet()
{
// You can also access localized strings in the code-behind if needed
var welcomeMessage = _localizer["Welcome"];
}
}
}
4. 切換語言
可以通過查詢字符串、Cookie 或基於路徑的方式來切換語言。例如,使用查詢字符串的方式:
Pages/_Host.cshtml
csharp
@page
@namespace YourApp.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>ASP.NET Core Localization</title>
</head>
<body>
<a href="?culture=en">English</a> |
<a href="?culture=zh-TW">繁體中文</a>
<div>
@RenderBody()
</div>
</body>
</html>
處理語言切換
需要在中間件中處理語言切換。修改 Program.cs 中的中間件配置:
csharp
app.UseRequestLocalization(options =>
{
var supportedCultures = new[] { "en", "zh-TW" };
options.SetDefaultCulture(supportedCultures[0]);
options.AddSupportedCultures(supportedCultures);
options.AddSupportedUICultures(supportedCultures);
options.RequestCultureProviders.Insert(0, new QueryStringRequestCultureProvider());
});
這樣,當您訪問 https://yourdomain/?culture=zh-TW 時,頁面將顯示繁體中文的內容。
總結
在 ASP.NET Core 8 Razor Pages 中使用多國語言涉及以下步驟:
設置資源文件:為每種語言創建 .resx 資源文件。
配置本地化服務:在 Program.cs 中配置國際化和本地化服務。
使用本地化資源:在 Razor Pages 中使用 IStringLocalizer 來加載本地化資源。
切換語言:通過查詢字符串、Cookie 或路徑來切換語言。
這些步驟可以幫助您在 ASP.NET Core 8 應用程序中實現多國語言支持。