IRequestCultureFeature
추천 자료: ASP.NET Core 인증 및 권한 부여
ASP.NET Core에서 HttpContext.Features.Get<IRequestCultureFeature>()
사용 예제
다음은 ASP.NET Core에서 HttpContext.Features.Get<IRequestCultureFeature>()
를 사용하여 현재 요청에 대한 문화권 정보를 가져오는 간단한 데모 예제입니다. 이 예제에서는 요청의 문화권을 기반으로 환영 메시지를 표시합니다.
1. ASP.NET Core 웹 애플리케이션 설정
먼저, 새로운 ASP.NET Core 웹 애플리케이션을 생성합니다. 이 예제에서는 Razor Pages를 사용합니다.
dotnet new webapp -n CultureDemo
cd CultureDemo
2. Startup.cs
설정
Startup.cs
파일을 열고, RequestLocalization
미들웨어를 설정하여 애플리케이션이 다양한 문화권을 지원하도록 합니다.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Globalization;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
// RequestLocalization 미들웨어 설정
var supportedCultures = new[] { "en-US", "fr-FR", "es-ES", "ko-KR" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
app.UseRequestLocalization(localizationOptions);
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
3. Razor 페이지에서 IRequestCultureFeature
사용
이제 Razor 페이지에서 HttpContext.Features.Get<IRequestCultureFeature>()
를 사용하여 현재 요청의 문화권 정보를 가져옵니다.
Pages/Index.cshtml.cs
파일을 다음과 같이 수정합니다:
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
public class IndexModel : PageModel
{
public string WelcomeMessage { get; private set; }
public void OnGet()
{
// 현재 요청의 문화권 정보 가져오기
var requestCultureFeature = HttpContext.Features.Get<IRequestCultureFeature>();
var requestCulture = requestCultureFeature?.RequestCulture;
// 요청된 문화권에 따른 환영 메시지 설정
WelcomeMessage = requestCulture?.Culture.Name switch
{
"fr-FR" => "Bienvenue!",
"es-ES" => "¡Bienvenido!",
"ko-KR" => "환영합니다!",
_ => "Welcome!"
};
}
}
Pages/Index.cshtml
파일을 다음과 같이 수정하여 환영 메시지를 표시합니다:
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<div class="text-center">
<h1 class="display-4">@Model.WelcomeMessage</h1>
<p>Select the desired culture by using the URL query parameter <strong>?culture=fr-FR</strong> or <strong>?culture=ko-KR</strong>.</p>
</div>
4. 애플리케이션 실행
이제 애플리케이션을 실행하고, 브라우저에서 https://localhost:5001/?culture=fr-FR
과 같은 URL로 접속하여 페이지를 확인합니다.
예를 들어:
https://localhost:5001/?culture=fr-FR
는 "Bienvenue!"라는 환영 메시지를 표시합니다.https://localhost:5001/?culture=es-ES
는 "¡Bienvenido!"라는 환영 메시지를 표시합니다.https://localhost:5001/?culture=ko-KR
는 "환영합니다!"라는 환영 메시지를 표시합니다.
5. 결론
이 예제는 HttpContext.Features.Get<IRequestCultureFeature>()
를 사용하여 현재 요청의 문화권 정보를 가져오고, 이를 기반으로 사용자에게 맞춤화된 메시지를 제공하는 방법을 보여줍니다. 이를 통해 ASP.NET Core 애플리케이션에서 다국어 지원을 효과적으로 구현할 수 있습니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!