! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

.NET C# 응용 프로그램에서 현지화 기능을 사용하는 방법 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

.NET C# 응용 프로그램에서 현지화 기능을 사용하는 방법

페이지 정보

작성자 GrapeCity 작성일 2023-08-01 10:36 조회 391회 댓글 0건

본문

.NET 응용 프로그램의 현지화


현지화를 논의할 때, Microsoft의 자체 지침(Localization in .NET/현지화 - .NET)에서는, 응용 프로그램을 사용자 인터페이스 부분이 포함된 블록과 실행될 코드가 포함된 블록 등 두 부분으로 분할해야 한다고 언급합니다. .NET에서는 응용 프로그램의 리소스를 해당 코드와 구별하는 위성 어셈블리 리소스 모델을 지원하는 공통 언어 런타임을 사용합니다.


응용 프로그램에서 지원하려는 모든 언어에 대해, 응용 프로그램을 위한 현지화된 사용자 인터페이스 블록을 포함하는 새로운 위성 어셈블리가 필요합니다. 위성 어셈블리는 보통 .resx 파일이라고도 하는 여러 리소스 파일로 분할됩니다. 이들은 코드가 사용하는 응용 프로그램에 의해 실행되기 전 번역되는 XML 파일로, 응용 프로그램이 런타임에 해당 콘텐츠를 번역할 수 있도록 돕습니다.



현지화 기능이 기본 제공 되는 ComponentOne 컨트롤


ComponentOne 라이브러리를 사용하면, 완벽하게 번역된 수십 개의 현지화 파일이 각 릴리스에 함께 배포됩니다. ComponentOne 컨트롤을 활용하여 소프트웨어 언어를 코드 한 줄로 신속하게 변경할 수 있습니다.


이번 예시에서는 FlexPivotPanel 내에 표시되는 텍스트를 영어에서 독일어로 변경하겠습니다.


응용 프로그램의 컴포넌트를 초기화하기 전에 System.Threading 라이브러리에 다음 코드 한 줄을 사용하는지 먼저 확인해야 합니다.

Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");


이제 응용 프로그램을 실행하면 ComponentOne 컨트롤이 기본 제공 텍스트를 영어 대신 독일어로 표시하는 것을 확인할 수 있습니다.

.NET C# 현지화


코드 한 줄이면 ComponentOne 컨트롤에 현지화를 적용할 수 있습니다.


ComponentOne 컨트롤을 사용하지 않는 응용 프로그램의 나머지 부분을 현지화에 대해 자세히 알아보려면 아래의 내용을 계속 읽어 보세요.



응용 프로그램의 나머지 부분까지 현지화를 확장하는 방법


ComponentOne 컨트롤은 독일어 또는 원하는 언어로 간단히 현지화할 수 있지만 .NET 응용 프로그램의 나머지 부분을 구성하는 것은 더 까다로울 수 있습니다.

먼저 가져오는 언어에 필요한 적절한 리소스 파일이 응용 프로그램에 있는지 확인해야 합니다.


아직 존재하지 않으면 직접 만들어 .resx 파일로 저장해야 합니다.

예를 들면, 응용 프로그램에 다음 .resx(XML) 파일을 포함할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>

<root>
  <data name="WelcomeMessage" xml:space="preserve">
    <value>Welcome to GrapeCity!</value>
  </data>
</root>


다음은 동일한 응용 프로그램을 독일어로 배포할 계획이 있는 경우, 응용 프로그램과 함께 리소스로 포함할 독일어 .resx 파일입니다.

<?xml version="1.0" encoding="utf-8"?>

<root>
  <data name="WelcomeMessage" xml:space="preserve">
    <value>Willkommen bei GrapeCity!</value>
  </data>
</root>


이 리소스 파일은 자동으로 확인되지만, 프로젝트 파일 이름이 프로젝트의 루트 네임스페이스와 다른 경우 어셈블리 이름이 다를 수도 있습니다.


이번 예시에서는 현지화 파일에 RootNamespace를 지정해야 합니다.


예를 들어, 프로젝트가 (translator.dll 및 translator.exe를 만드는) translator.csproj이지만 다른 네임스페이스에서 "Real.Localization"라는 제목의 현지화가 발생하는 경우, 다음과 같은 코드 줄을 사용합니다.

[assembly: RootNamespace("Real.Localization")]


다음으로 Microsoft.Extensions.Localization.IStringLocalizer<T> 및 Microsoft.Extensions.Localization.IStringLocalizerFactory 모두의 종속성 삽입을 허용하는 AddLocalization 확장 메서드 중 하나를 활용하여 현지화 서비스를 등록해야 합니다. 

using IHost testHost = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddLocalization(options =>
        {
            options.ResourcesPath = "Resources";
        });
    });


현지화 서비스를 성공적으로 등록한 후, 이제 위에 레이블이 지정된 두 유형 중 하나를 사용하여 아래의 코드 예에 표시된 대로 응용 프로그램에 현지화를 적용할 수 있습니다.

using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Localization;

namespace Real.Localization;

public sealed class TranslastionService
{
    private readonly IStringLocalizer<TranslationService> _localize = null!; 
    public MessageService(IStringLocalizer<TranslationService> localize) =>
        _localize = localize;
 
    [return: NotNullIfNotNull(nameof(_localize))]
    public string? GetWelcomeMessage()
    {
        LocalizedString translatedString = _localize["WelcomeMessage"];
        return translatedString;
    }
}


보시다시피 응용 프로그램 전체에 현지화를 적용하는 것은 코드 한 줄을 적용하는 ComponentOne 컨트롤의 접근 방식처럼 간단하지 않다는 것을 알 수 있습니다.





지금 바로 ComponentOne을 다운로드하여 직접 테스트해 보세요!

c1.png



  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.