본문 바로가기

Programming/C#

C# .NET access localization resource use variable 지역화 리소스에 변수로 접근하기

반응형

 

이 포스팅은 .NET에서의 localization(지역화)에 대한 기본적인 이해를 전제로 쓰임

 

설명을 위해 아래와 같이 샘플 리소스를 만들었다.

Location 이라는 이름의 리소스파일 예시

 

기본적으로 리소스의 에 접근할 땐 아래와 같이 이름으로 접근한다

var firstLocation = Localization.Location.LocationName_1;

당연하게도 firstLocation에는 "로케이션_1"이라는 이 담긴다

 

이때 몇 번째 로케이션의 이 필요할지 모르는 상황에서 locationCode라는 것이 주어진다고 가정해보자

locationCode가 1이면 "로케이션_1"이라는 값을, 2라면 "로케이션_2"라는 값을

즉, $"로케이션_{locationCode}"라는 값을 얻고 싶다

코드상으로 아래와 같은 그림이다

private string GetLocationNameUseLocationCode(int locationCode)
{
	switch (locationCode)
    {
    	case 1 : 
        	return Localization.Location.LocationName_1;
        case 2 :
        	return Localization.Location.LocationName_2;
        case 3 :
        	return Localization.Location.LocationName_3;
        case 4 :
        	return Localization.Location.LocationName_4;
        defalut :
        	return null;
    }
}

뭘 하고 싶은진 한눈에 보이지만

리소스가 수정될 때마다 코드가 같이 수정되어야 한다는 단점이 있고

휴먼에러가 발생할 확률도 높다

 

이런 케이스에 ResourceManager를 사용하면 아래와 같이 간결하게 처리가 가능하다

private string GetLocationNameUseLocationCode(int locationCode)
{
	return Localization.Location.ResourceManager.GetString($"LocationName_{locationCode}");
}
반응형