블레이저 웹어셈블리 - 브라우저 언어 따른 문자열 자원 설정 방법.

사용자는 브라우저의 언어를 설정할 수 있습니다.

예를 들어,

브라우저는 사용자가 설정한 언어를 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 열풍에 숟가락을 얹어 봅니다…

9개의 좋아요