IRequestCultureFeature

  • 3 minutes to read

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 애플리케이션에서 다국어 지원을 효과적으로 구현할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com