Blazor Server에서 resx 파일 만들기 및 관리하기

  • 5 minutes to read

Blazor Server 프로젝트에서 리소스 파일(resx)을 사용하면 여러 언어로 웹 애플리케이션을 지원할 수 있습니다. 이 아티클에서는 resx 파일을 만들고 관리하는 방법에 대해 설명합니다.

resx 파일 생성

  1. 프로젝트에서 Resources라는 새 폴더를 생성합니다.
  2. Resources 폴더에서 마우스 오른쪽 버튼을 클릭하고, 추가 > 새 항목을 선택하여 새 리소스 파일을 만듭니다. 파일 이름을 지정하고, 파일 확장자를 .resx로 설정합니다 (예: MyResource.resx).

resx 파일에 문자열 리소스 추가

  1. 생성한 resx 파일을 열어서, 이름(Name)과 값(Value)을 입력합니다. 이 때 이름은 고유한 문자열이어야 합니다.
  2. 다양한 언어를 지원하려면 각 언어에 대한 resx 파일을 추가합니다. 각 파일의 이름은 기본 resx 파일 이름에 문화권 코드를 추가하여 설정합니다 (예: MyResource.ko-KR.resx, MyResource.en-US.resx).

리소스 파일 사용

  1. 프로젝트에 ResourceManager 인스턴스를 만듭니다.
using System.Globalization;
using System.Resources;

ResourceManager resourceManager = new ResourceManager("MyNamespace.Resources.MyResource", typeof(Startup).Assembly);

이때, MyNamespace를 프로젝트의 네임스페이스로 변경하고, MyResource를 생성한 resx 파일의 이름으로 변경해야 합니다.

  1. ResourceManager를 사용하여 리소스를 가져옵니다.
string localizedString = resourceManager.GetString("ResourceName", CultureInfo.CurrentCulture);

이때, ResourceName을 resx 파일에 있는 리소스 이름으로 변경해야 합니다.

리소스를 Razor 컴포넌트에서 사용하기

  1. 리소스를 가져와서 프로퍼티에 할당합니다.
@using System.Globalization;
@using System.Resources;
@inject IServiceProvider ServiceProvider

@code {
    private ResourceManager _resourceManager;
    private string _localizedString;

    protected override void OnInitialized()
    {
        _resourceManager = new ResourceManager("MyNamespace.Resources.MyResource", ServiceProvider.GetService(typeof(Startup).Assembly));
        _localizedString = _resourceManager.GetString("ResourceName", CultureInfo.CurrentCulture);
    }
}
  1. Razor 컴포넌트에서 할당된 프로퍼티를 사용합니다.
<p>@_localizedString</p>

이제 Blazor Server 프로젝트에서 resx 파일을 사용하여 다국어를 지원할 수 있습니다. 이 방법을 사용하면 유지보수가 쉬워지고, 여러 언어로 웹 애플리케이션을 제공할 수 있습니다.

IStringLocalizer 사용

1. 프로젝트 준비

먼저, Blazor Server 애플리케이션을 준비합니다. Visual Studio 또는 dotnet CLI를 사용하여 새로운 Blazor Server 프로젝트를 생성할 수 있습니다.

dotnet new blazorserver -o BlazorApp
cd BlazorApp

2. 리소스 파일 추가

다양한 언어를 위한 리소스 파일을 추가합니다. 예를 들어, 영어(en)와 한국어(ko)를 지원하려면 다음과 같이 리소스 파일을 추가할 수 있습니다.

  • Resources/MyResources.en.resx : 영어 리소스
  • Resources/MyResources.ko.resx : 한국어 리소스

각 리소스 파일에는 키-값 쌍을 사용하여 번역할 문자열을 정의합니다.

3. 서비스 구성

Startup.cs 파일 또는 .NET 6 이상을 사용하는 경우 Program.cs 파일에서 AddLocalization 메서드를 호출하여 로컬라이제이션 서비스를 구성합니다.

public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");

    services.AddRazorPages();
    services.AddServerSideBlazor();
}

또한, 애플리케이션의 요청 파이프라인에 로컬라이제이션 미들웨어를 추가합니다.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRequestLocalization(app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value);
    
    // 기타 미들웨어 설정...
}

4. IStringLocalizer<T> 사용

특정 페이지 또는 컴포넌트에서 IStringLocalizer<T>를 사용하여 다국어 리소스에 액세스합니다. 예를 들어, Index.razor 페이지에서 사용하는 방법은 다음과 같습니다.

@page "/"
@using Microsoft.Extensions.Localization
@inject IStringLocalizer<MyResources> Localizer

<h1>@Localizer["HelloWorld"]</h1>

여기서 "HelloWorld"는 리소스 파일에 정의된 키입니다.

5. 언어 선택 및 적용

사용자가 원하는 언어를 선택할 수 있도록 언어 선택 기능을 구현합니다. 선택한 언어는 RequestLocalizationOptions를 통해 설정할 수 있습니다.

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<RequestLocalizationOptions>(options =>
    {
        var supportedCultures = new[] { "en-US", "ko-KR" };
        options.SetDefaultCulture(supportedCultures[0])
               .AddSupportedCultures(supportedCultures)
               .AddSupportedUICultures(supportedCultures);
    });

    // 기타 서비스 구성...
}

사용자가 언어를 선택하면 해당 언어를 애플리케이션의 기본 문화권으로 설정하여 내용이 해당 언어로 표시되도록 할 수 있습니다.

6. 테스트 및 배포

개발 중에는 다양한 언어 설정을 테스트하여 모든 번역이 정상적으로 작동하는지 확인합니다. 배포 전에는 모든 리소스 파일이 정확하게 포함되었는지 확인하십시오.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com