[05] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라

다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.

 

 

로컬라이징을 경험해본 사람이라면 알겠지만,

국가권에 따라서 사용하는 특수문자나 표기 형식이 다른 경우가 존재한다.

이를 해결하기 위해 FormattableString이라는 것이 존재한다!

 

문자열 보간 기능의 반환형은?

 - string이 될 수도 있고, FormattableString이 될 수도 있다.

string first = $"It's the {Data.Now.Day}";
FormattableString second = $"It's the {Data.Now.Day}";

 - var를 사용하는 경우 반환 객체 오른쪽에 '.'을 사용하는 경우라면 문자열을 생성한다. 

 

FormattableString 타입 객체

 - FormattableString 타입의 객체를 이용하면 문화권과 언어를 지정하여 문자열을 생성할 수 있다. 

public static string ToGerman(FormattableString src)
{
    return string.Format(null,
        System.Globalization.CultureInfo.CreateSpecificCulture("de-de"),
        src.Format, src.GetArguments());
}

public static string ToFrenchCanada(FormattableString src)
{
    return string.Format(null,
        System.Globalization.CultureInfo.CreateSpecificCulture("fr-CA"),
        src.Format, src.GetArguments());
}

 

결론

 - 로컬라이징이 필요한 부분은 명시적으로 FormattableString으로 리턴타입을 지정한 뒤,

   언어권에 맞게 string으로 변환하자.

 

 

댓글

Designed by JB FACTORY