다음 본문은 도서 이펙티브 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으로 변환하자.
'🌍 C# Study > 이펙티브 C#' 카테고리의 다른 글
[07] 델리게이트를 이용하여 콜백을 표현하라 (0) | 2021.04.23 |
---|---|
[06] nameof() 연산자를 적극 활용하라 (0) | 2021.04.22 |
[04] string.Format()을 보간 문자열로 대체하라 (0) | 2021.04.22 |
[03] 캐스트보다는 is, as가 좋다 (0) | 2021.04.22 |
[02] const보다는 readonly가 좋다 (0) | 2021.04.22 |