Blazor Server에서 resx 파일 만들기 및 관리하기
Blazor Server 프로젝트에서 리소스 파일(resx)을 사용하면 여러 언어로 웹 애플리케이션을 지원할 수 있습니다. 이 아티클에서는 resx 파일을 만들고 관리하는 방법에 대해 설명합니다.
resx 파일 생성
- 프로젝트에서
Resources
라는 새 폴더를 생성합니다. Resources
폴더에서 마우스 오른쪽 버튼을 클릭하고,추가
>새 항목
을 선택하여 새 리소스 파일을 만듭니다. 파일 이름을 지정하고, 파일 확장자를.resx
로 설정합니다 (예:MyResource.resx
).
resx 파일에 문자열 리소스 추가
- 생성한 resx 파일을 열어서, 이름(Name)과 값(Value)을 입력합니다. 이 때 이름은 고유한 문자열이어야 합니다.
- 다양한 언어를 지원하려면 각 언어에 대한 resx 파일을 추가합니다. 각 파일의 이름은 기본 resx 파일 이름에 문화권 코드를 추가하여 설정합니다 (예:
MyResource.ko-KR.resx
,MyResource.en-US.resx
).
리소스 파일 사용
- 프로젝트에
ResourceManager
인스턴스를 만듭니다.
using System.Globalization;
using System.Resources;
ResourceManager resourceManager = new ResourceManager("MyNamespace.Resources.MyResource", typeof(Startup).Assembly);
이때, MyNamespace
를 프로젝트의 네임스페이스로 변경하고, MyResource
를 생성한 resx 파일의 이름으로 변경해야 합니다.
ResourceManager
를 사용하여 리소스를 가져옵니다.
string localizedString = resourceManager.GetString("ResourceName", CultureInfo.CurrentCulture);
이때, ResourceName
을 resx 파일에 있는 리소스 이름으로 변경해야 합니다.
리소스를 Razor 컴포넌트에서 사용하기
- 리소스를 가져와서 프로퍼티에 할당합니다.
@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);
}
}
- 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. 테스트 및 배포
개발 중에는 다양한 언어 설정을 테스트하여 모든 번역이 정상적으로 작동하는지 확인합니다. 배포 전에는 모든 리소스 파일이 정확하게 포함되었는지 확인하십시오.