본문 바로가기

개발/.NET Core

요청 헤더를 이용한 다국어(지역화) 처리

ASP.NET Core에서 요청 헤더에 따른 다국어 처리방법을 설명드립니다.

 

Microsoft Docs에서 이미 자세하게 설명이 되어있고 저 또한 해당 링크를 참고하여 작성하였습니다.

 

ASP.NET Core에서 세계화 및 지역화 | Microsoft Docs

 

ASP.NET Core에서 세계화 및 지역화

ASP.NET Core에서 다른 언어와 문화권으로의 콘텐츠 지역화를 위한 서비스 및 미들웨어를 제공하는 방법을 알아봅니다.

docs.microsoft.com

다국어 처리방법에는 기본적으로 3가지 옵션을 제공하고 있으며 각각 우선순위를 두고 적용됩니다.

(첫번째가 제일 높아요~)

 

물론 기본적인 옵션 말고도 커스텀이 가능합니다.

 

1. 쿼리 스트링(QueryStringRequestCultureProvider) 

 

2. 쿠키(CookieRequestCultureProvider)

 

3. 헤더(AcceptLanguageHeaderRequestCultureProvider)

 

여기서 우리는 세번째인 요청 헤더를 가지고 설명하도록 하겠습니다.

 

요청 헤더를 선택한 이유는 제가 Web API 프로젝트를 진행하는데 있어 쿼리 스트링과 쿠키를 쓰지 않는 경우가 있어 앞서 2가지는 환경에 맞지 않다고 보였기 때문입니다.

 

그럼 먼저, 리소스 파일을 생성합니다.

 

생성이 완료되었으면 Startup.ConfigureServices 함수에서 지역화 서비스를 추가합니다.

 

Startup.ConfigureServices

위의 코드에서 중요한 부분은 options.ResourcesPath를 리소스 파일이 존재하는 경로를 기입하는 것 입니다.

 

만일 어셈블리가 다르다면 참조 후 네임스페이스까지 풀로 작성해주시면 됩니다.

 

Startup.Configure 함수에서 지역화를 사용한다고 설정합니다.

 

Startup.Configure

설정이 완료되면 Controller에서 자유롭게 리소스를 사용합니다.

 

LocalizationController

스웨거를 통해서 확인을 하면 요청 헤더의 Accept-Language값에 따라 반환 값이 다른걸 확인 할 수 있습니다.

 

Swagger UI

작성한 예제는 .NET 5.0, Web API에서 작성되었습니다.

 

GitHub 소스


Swagger UI에서 요청 헤더를 추가 시키는 방법은 다음과 같습니다.

 

IOperationFilter를 상속하여 다음과 같은 클래스를 작성합니다.

 

AddAcceptLanguageHeaderParameter

Startup.ConfigureServices 함수에서 c.OperationFilter<AddAcceptLanguageHeaderParameter>();를 추가합니다.

 

Startup.ConfigureServices