사용자는 브라우저의 언어를 설정할 수 있습니다.
예를 들어,
브라우저는 사용자가 설정한 언어를 Accept Language 헤더에 포함시킵니다.
블레이저 웹어셈블리가 이 값들을 기반으로 문자열 자원을 선택하도록 만드는 방법입니다.
설정 방법
블레이저 웹어셈블리 프로젝트 파일(.csproj) 에 아래 항목을 추가합니다.
<PropertyGroup>
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Localization" Version="7.0.11" />
</ItemGroup>
사실 위 항목들이 필요한 전부라고 할 수 있습니다.
사용 방법
ResourceManager 보다 IStringLocalizer<T> 를 사용하면, 자원 파일의 키값에 예민하지 않다는 편리함이 있습니다.
IStringLocalizer 는 아래와 같이 의존성 주입기에 등록합니다.
//Program.cs
// extesion.
builder.services.AddLocalization();
이 서비스를 사용하여 한국어 사이트를 만든다면, 아래와 같이 사용합니다.
@*MyComponent.razor*@
@inject IStringLocalizer<App> Loc
...
<button ... >@Loc["확인"]</button>
한국어 버전 사이트만 만든다면, 프로젝트에 자원 파일(app.resx)을 추가하지 않아도 됩니다.
IStringLocalizer 는 자원 파일이 없거나, 있어도 키가 존재하지 않은 경우, 예외를 발생시키는게 아니라 키를 반환하기 때문입니다.
한국어 버전 사이트가 완성된 후, 영어 버전을 만든다면, 아래의 파일을 프로젝트에 포함시킵니다.
app.en.resx
이 파일에 대한 편집은 VS 가 제일 간편합니다.
브라우저 언어 설정에서 영어가 최상단에 위치한 경우, 영어 자원이 표시되고, 그렇지 않은 경우 모두 한국어 자원이 표시됩니다.
요즘과 같은 K 열풍에 숟가락을 얹어 봅니다…