.NET 애플리케이션에서 포르투갈어 지역화 처리: 숫자 형식 변환 및 계산

포르투갈어를 지원하는 소프트웨어에서 숫자 지역화는 주로 소수점과 천 단위 구분자의 표현 방식에 따라 달라집니다. 포르투갈어에서는 소수점을 나타낼 때 쉼표(,)를 사용하며, 천 단위 구분자는 공백 또는 점(.)으로 표시됩니다.

예를 들어, "62,5"라는 값은 영어 기준 62.5가 아닌 625백만을 의미할 수 있으므로 정확한 해석이 필요합니다.

.NET Framework에서는 CultureInfo 클래스를 활용하여 현재 스레드의 로캘 설정을 지정함으로써 올바른 숫자 형식과 구분자를 적용할 수 있습니다. 아래 예제는 문자열 "62,5"를 decimal 타입으로 변환하는 방법을 보여줍니다:

// 현재 스레드의 문화권을 포르투갈어로 설정
Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-PT");

// "62,5" 문자열을 decimal로 파싱
decimal value = decimal.Parse("62,5");

숫자 연산 시에도 동일하게 올바른 형식과 구분자를 유지해야 합니다. 다음 코드는 두 개의 decimal 값을 더하는 예시입니다:

// 포르투갈어 문화권 설정
Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-PT");

// 두 decimal 값 파싱 및 덧셈
decimal firstValue = decimal.Parse("62,5");
decimal secondValue = decimal.Parse("37,5");
decimal sumResult = firstValue + secondValue;

출력 시에도 적절한 형식을 유지해야 하며, ToString() 메서드를 이용해 원하는 형식으로 변환할 수 있습니다:

// 포르투갈어 문화권 설정
Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-PT");

// decimal 값을 포맷된 문자열로 변환
decimal amount = decimal.Parse("62,5");
string formattedAmount = amount.ToString("N2"); // 결과: "62,50"

다국어 지원 애플리케이션을 구현하는 것은 국제화의 첫걸음일 뿐이며, 실제 운영 환경에서는 시간, 통화, 숫자 등 다양한 요소에 대한 지역화(Localization) 작업이 추가로 필요합니다.

특히 포르투갈어 환경에서는 소수점 표기법이 영어와 다르기 때문에 입력부터 저장, 연산에 이르기까지 모든 단계에서 특별한 처리가 요구됩니다.

이러한 복잡성을 해결하기 위해 지역화 관련 유틸리티 클래스를 만들어 재사용성을 높일 수 있습니다. 아래는 문자열과 숫자 간 변환을 담당하는 예제 클래스입니다:

internal class LocalizationHelper
{
    public void ParseToLocalNumber(string input = "1234.56")
    {
        // 포르투갈어 문화권 정보 생성
        CultureInfo portugueseCulture = new CultureInfo("pt-PT");

        // 기본 형식에서 포르투갈어 형식으로 변환
        double number = double.Parse(input, CultureInfo.InvariantCulture);
        string localizedString = number.ToString("N2", portugueseCulture);
        Console.WriteLine($"{input} → {localizedString} (포르투갈어)");
    }

    public void ParseFromLocalNumber()
    {
        // 포르투갈어 형식의 숫자를 표준 형식으로 변환
        string portugueseFormat = "1.234,56";
        double parsedNumber = Convert.ToDouble(portugueseFormat);
        string standardFormat = parsedNumber.ToString("N2", CultureInfo.InvariantCulture);
        Console.WriteLine($"{portugueseFormat} → {standardFormat} (영어)");
    }
}

태그: .NET CultureInfo Localization number-formatting portuguese-localization

8월 5일 20:30에 게시됨