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. 테스트 및 배포

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

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