01. FormattableString.. 이게 도대체 뭐야?
나는 글을 포스팅하면 읽은 내용을 바로 올리는 것보다는 천천히 올리는 것을 선호한다. 지금 글을 작성하는 시점에서 Effective C# 책의 Item#12까지 읽었는데 가장 애매한 부분이 지금 작성하는 Item#5였다.
FormattableString? 이게 도대체 뭔데.. 문화권별로 다른 문자열을 생성해주는 것임은 알겠는데 사용 경험이 없으니까.. Effective C# 책에 나올 내용인가 싶었다.
실제로 다른 분들의 블로그에서 FormattableString의 사용 경험이 있는지를 검색하기 위해서 다양한 검색어로 서칭해봤다. 대부분이 나와 같이 공부한 Effective C# 책 내용을 작성하기 위해서 올린 것이 대부분이라서 찾기 어려웠다. 그래도 나름의 결론은 챙겼다.
게임 출시에 앞서 로컬라이징을 준비하고 있는 상태라고 생각해보자. 출시 국가는 한국과 미국이다. 그러면 DB에 한글 텍스트와 영문 텍스트를 작성하고 Key 값을 통해서 호출하는 방식으로 언어 변경을 대응한다. 이 부분에서 FormattableString이 할 수 있는 역할이 있을까? 결론은 있다.
언어권마다 기호를 표기하는 방법이 다를 수 있기 때문에 이를 해결하는 방법으로 사용할 수 있다. 예시로 책에 나온대로 미국식 소수점 표현 방법인 '.'을 대다수 유럽 국가에서 사용하는 소수점 기호 ','로 변경할 수 있는 것이다.
02. FormattableString
간단하게 짚고 넘어가자. C# 6.0 버전에 포함된 기능으로 문화권을 고려하여 문자열을 생성할 수 있다.
string first = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
FormattableString second = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
var vs = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";
위 코드에서 var로 선언한 변수 vs의 타입은 string 타입일 수 있으며 FormattableString 타입이 될 수 도 있다. 다음은 사용 방법에 대한 코드다.
using System;
using System.Globalization;
class Program
{
static void Main()
{
float value = 123.456f;
// FormattableString 사용
FormattableString message = $"{value}";
// 문화권 설정을 독일로 변경
CultureInfo culture = new CultureInfo("de-DE");
// 출력
Console.WriteLine(message.ToString(culture));
Console.WriteLine(value.ToString());
}
}
'독서 > Effective C#' 카테고리의 다른 글
[Effective C#] 델리게이트를 이용하여 콜백을 표현하라 (0) | 2024.08.02 |
---|---|
[Effective C#] nameof() 연산자를 적극 활용하라 (0) | 2024.08.01 |
[Effective C#] string.Format()을 보간 문자열로 대체하라 (0) | 2024.07.30 |
[Effective C#] 캐스트보다는 is, as가 좋다 (0) | 2024.07.29 |
[Effective C#] const보다는 readonly가 좋다. (1) | 2024.07.24 |