내용으로 건너뛰기
Building Simple Multilingual ASP.NET Core Website

Building Simple Multilingual ASP.NET Core Website

이 자습서에서는 ASP.NET Core에서 새로운 다국어 웹 사이트를 만들고 IIS에 게시합니다. ASP.NET Core의 버전 1.0은 2016 년 6 월에 출시되었으므로 매우 새로운 도구입니다. 그것의 주요 특징은 Windows, Linux 및 Mac에서 크로스 플랫폼으로 앱을 개발하고 실행할 수 있다는 것입니다.

10min read

오늘은 Windows에 대해 집중적으로 설명하겠습니다. ASP.NET Core ASP.NET MVC 5와 비교하여 몇 가지 차이점이 있으므로 간단한 것부터 시작하는 것이 좋으며 3개 언어로 된 두 개의 웹 페이지로 구성된 웹 사이트부터 시작하는 것이 좋습니다.

Windows에서 .NET Core 환경 만들기

시작하려면 ASP.NET Core, Visual Studio 업데이트 2015가 설치된 Visual Studio 3이 필요합니다. 이미 둘 다 설치한 경우 이 단계를 건너뜁니다. 그렇지 않은 경우 Visual Studio Community 2015 다운로드 및 Visual Studio 업데이트 3 다운로드에서 Visual Studio Community를 무료로 다운로드할 수 있습니다. Visual Studio Community 2015를 설치하는 동안 기본 설치를 선택하기만 하면 됩니다.

Visual Studio 및 .NET Core Windows Server 호스팅용 .NET Core 1.0 설치

이제 Visual Studio 및 .NET Core Windows Server 호스팅용 .NET Core 1.0을 설치해야 웹 사이트를 구축하고 게시할 수 있습니다. Visual Studio용 .NET Core 1.0은 Visual Studio용 .NET Core 1.0 다운로드 및 .NET Core Windows Server 호스팅에서 다운로드할 수 있습니다.

웹 사이트 만들기

이러한 모든 필수품을 이미 설치한 경우 새 웹사이트 만들기를 진행할 수 있습니다. 이렇게 하려면 Visual Studio 2015를 열고 파일/새로 만들기/프로젝트로 이동한 다음 Visual C#/웹/ ASP.NET Core 웹 애플리케이션(.NET Core)을 선택합니다. 이름을 NETCoreWebsite로 지정합니다(그림 1).

그림 1 - ASP .NET Core 응용 프로그램 용 템플릿 만들기

다음 창에서 인증 유형과 함께 템플릿 유형을 선택해야 합니다. 우리의 경우 각각 Web ApplicationNo authentication이 될 것입니다. Host in cloud(클라우드 내 호스트) 옵션을 선택 취소해야 합니다(그림 2).

그림 2 – 올바른 템플릿 및 인증 유형 선택

새로운 ASP.NET Core 프로젝트가 방금 생성되었습니다. 또한 웹 브라우저에 표시할 수 있습니다. 이렇게 하려면 탐색 모음에서 IIS Express 버튼을 클릭합니다. 몇 초 후에 기본 웹 사이트가 웹 브라우저에 나타나야합니다. 탐색 모음에서 모든 항목 간에 전환할 수 있습니다.

그림 3 – 새 ASP.NET Core 프로젝트를 만드는 동안 만들어진 기본 웹 사이트

웹 페이지 및 정적 파일 추가

이제 우리는 우리 자신의 웹 사이트를 만들기 위해 계속 나아갑니다. 이 자습서에서 언급할 모든 디렉터리와 파일은 솔루션 탐색기​ ​src/NETCoreWebsite에 배치됩니다.

우선, 불필요한 파일을 제거해야 합니다. 이렇게 하려면 보기/홈으로 이동하여 거기에 있는 세 개의 웹 페이지를 모두 삭제합니다. 그런 다음 wwwroot / images로 이동하여 해당 디렉토리에 포함 된 모든 이미지를 삭제하십시오.

이제 웹 페이지를 프로젝트에 추가할 차례입니다. Views/Home으로 이동하여 마우스 오른쪽 버튼을 클릭하고 Add/New item을 선택합니다(그림 4).

그림 4 – 프로젝트에 새 웹 페이지 추가

새 창에서.NET Core/ASP.NET/MVC 보기 페이지를 선택합니다. 이름을 FirstWebpage.cshtml로 지정합니다(그림 5).

그림 5 – 프로젝트에 새 웹 페이지 추가, 계속

웹 페이지가 방금 생성되었습니다. SecondWebpage.cshtml에 대해 해당 단계를 반복합니다.

이제 마지막 단계에서 만든 .cshtml 파일을 HTML 코드로 채웁니다. 중요 :.cshtml 파일에는 공유 요소 (예 : 탐색 모음 또는 바닥 글)< 선언 없이 body> 태그의 내용, CSS 파일에 대한 참조, 글꼴 및 <script> 태그 만 포함해야합니다. <body> 태그도 포함해서는 안 됩니다.

이미지, CSS 또는 JavaScript와 같은 정적 파일을 프로젝트에 추가할 때입니다. 몇 단계 전에 wwwroot/images에서 불필요한 이미지를 삭제했습니다. 이제 이 디렉토리에 이미지를 바로 추가하겠습니다. 그것을 마우스 오른쪽 버튼으로 클릭하고 파일 탐색기에서 폴더 열기를 선택하십시오 (그림 6). 그러면 파일 탐색기에서 이미지 디렉토리가 열리고 이제 여기에 이미지를 복사하기만 하면 됩니다. 메모: 모든 이미지 경로의 시작 부분에 "~/"를 추가해야 합니다.

그림 6 – 파일 탐색기에서 디렉토리를 열어 새 항목을 쉽게 추가 할 수 있습니다.

매우 유사한 방식으로 CSS 및 JavaScript 파일을 추가할 수 있습니다. wwwroot/css 또는 wwwroot/js에 추가하기만 하면 됩니다.

ASP.NET Core MVC 패턴을 사용하는데, 이는 컨트롤러가 최종 사용자에게 뷰를 표시할 책임이 있음을 의미합니다. 웹 페이지를 표시하려면 Controllers 디렉토리에 있는 HomeController.cs 편집해야 합니다.

HomeController.cs에서 메서드 About() 및 Contact()를 삭제합니다. 그런 다음 Index() 메서드를 복사하여 원래 Index() 메서드 바로 아래에 붙여넣습니다. 그런 다음 첫 번째 방법에서 "Index"를 "FirstWebpage"로 변경하고 두 번째 방법에서 "SecondWebpage"로 변경합니다. 이러한 메소드는 브라우저에서 웹 페이지를 표시 할 수있는 View 만 반환합니다. 이 단계를 완료하면 HomeController.cs 클래스가 다음과 같이 표시됩니다.

public class HomeController : Controller {
    public IActionResult FirstWebpage() {
        return View();
    }

    public IActionResult SecondWebpage() {
        return View();
    }

    public IActionResult Error() {
        return View();
    }
}

Startup.cs 클래스로 이동하여 Configure라는 메소드를 찾으십시오. 메소드 본문에서 다음과 유사한 코드를 찾을 수 있습니다.

app.UseMvc(routes=> {
        routes.MapRoute(name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });

{action=Index}를 {action=FirstWebpage}로 변경하여 선택한 웹 페이지가 기본적으로 표시되도록 합니다.

다음 단계에서는 CSS 및 JavaScript 파일에 대한 참조를 추가하고 공유 파일을 추출합니다.

공유 파일 추출

공유 파일을 추출하려면_Layout.cshtml 파일을 편집해야 합니다. 레이아웃 페이지에는 웹 사이트의 구조와 공유 콘텐츠가 포함되어 있습니다. 웹 페이지(콘텐츠 페이지)가 레이아웃 페이지에 연결되면 레이아웃 페이지(템플릿)에 따라 표시됩니다.

레이아웃 페이지는 콘텐츠 페이지가 포함될 @RenderBody() 메서드를 호출하는 것을 제외하고는 일반 웹 페이지와 같습니다.

_Layout.cshtml을 엽니다. 보시다시피 <head> 태그와 CSS 및 JavaScript 파일에 대한 참조가 바로 여기에 정의되어 있습니다.

CSS부터 시작하겠습니다. 개발 이라는 환경을 찾습니다. 이와 같이 호출되는 두 개의 환경이 있는데, 하나는 <head>이고 다른 하나는 <body>입니다. CSS 파일에 대한 참조를 추가하고 싶기 때문에 당연히 <head> Development 환경의 코드를 변경할 것입니다.

개발에서 <link rel="stylesheet" href="~/css/site.css" />를 찾을 수 있습니다. 자체 CSS 파일에 대한 참조를 추가하고 싶으므로 site.css CSS 파일의 이름으로 변경하기만 하면 됩니다.

또한 웹 사이트에서 사용할 글꼴에 대한 참조를 추가해야 합니다. CSS 파일 참조 바로 아래에 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600" />를 추가합니다.

개발 환경의 포함을 Staging, Production 환경 (바로 아래에 찾을 수 있음)에 복사하는 것이 매우 중요하므로 프로젝트를 게시 한 후 추가 참조를 사용할 수 있습니다.

이제 JavaScript 파일에 대한 참조를 추가합니다.

<body> 선언에서 Development 라는 환경을 찾습니다. 거기에서 다음과 같은 선을 찾을 수 있습니다.

< script src ="~/js/site.js" asp-append-version ="true"></ script >

이전과 마찬가지로 우리가 해야 할 일은 site.js JavaScript 파일의 이름으로 변경하는 것입니다. 이 경우 popups.js이 됩니다.

다시 개발 환경의 내용을​ ​스테이징, 프로덕션 환경으로 복사합니다.

_Layout.cshtml 편집의 마지막 요점은 웹 사이트의 공유 요소를 정의하는 것입니다. 우리의 경우 탐색 모음과 바닥 글이 될 것이며 두 웹 페이지에서 동일합니다. 기본 탐색 바코드를 자체 탐색 바코드로 바꾸고 바닥글에 대해 동일한 단계를 반복하기만 하면 됩니다.

완료되면 IIS Express 버튼을 클릭하고 브라우저에 웹 사이트를 표시 할 수 있습니다.

리소스를 사용하여 웹 사이트 지역화

리소스를 사용하면 웹 사이트를 빠르고 쉽게 현지화 할 수 있습니다. 이에 대한 자세한 내용은 세계화와 현지화에서 확인할 수 있습니다.

리소스를 추가하기 전에 각 요청에 대한 언어를 선택하는 전략을 구현해야 합니다. 이렇게 하려면 Startup.cs로 이동하여 ConfigureServices 라는 메서드를 찾습니다. 메소드 본문을 아래와 같은 코드로 바꿉니다.

services.AddLocalization(options=> options.ResourcesPath="Resources");
services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization();

서비스 컨테이너에 현지화 서비스를 추가하고 리소스 경로를 리소스로 설정했습니다(잠시 후에 만들 예정). 또한 뷰 파일 접미사를 기반으로 지역화할 수 있습니다.

우리는 웹사이트를 영어, 폴란드어 및 독일어의 세 가지 언어로 현지화하고자 합니다. 기본 언어는 영어입니다. Startup.cs​ ​Configure 라는 메소드를 찾아 아래와 같이 코드를 추가하십시오.

var supportedCultures=new[] {
    new CultureInfo("en-US"),
    new CultureInfo("pl-PL"),
    new CultureInfo("de-DE")
};

app.UseRequestLocalization(new RequestLocalizationOptions {
        DefaultRequestCulture=new RequestCulture("en-US"),
        SupportedCultures=supportedCultures,
        SupportedUICultures=supportedCultures
    });

Startup.cs의 맨 처음에 다음 코드를 추가하십시오.

using System.Globalization;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.AspNetCore.Localization;

이제 웹 사이트를 현지화하기 위한 리소스를 추가하겠습니다. 솔루션 탐색기에서 src/NETCoreWebsite를 마우스 오른쪽 버튼으로 클릭하고 추가/새 폴더를 선택합니다(그림 7). 이름을 Resources로 지정합니다.

그림 7 – 리소스 파일을 포함 할 새 디렉토리 추가

그런 다음 Resources 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 Add/New Item을 선택합니다(그림 8).

In new window choose .NET Core/Code/Resources File. Name it Views.Home.FirstWebpage.en.resx (fig. 9).

그림 9 – 새 리소스 파일 추가

FirstWebpage.cshtml에 대한 리소스 파일(영어)이 방금 생성되었습니다. 폴란드어 및 독일어에 대해 이 단계를 반복합니다(en을 각각 plde로 변경해야 함). 그 후 Resources 디렉토리에 3개의 리소스 파일이 있어야 합니다.

이제 SecondWebpage.cshtml에 대한 리소스 파일을 만들어야 합니다. 각 언어에 대해 위의 단계를 세 번 반복합니다. 리소스 파일의 이름에서 FirstWebpageSecondWebpage로 변경하고 접미사를 변경해야 합니다.

또한_Layout.cshtml에 대한 리소스 파일을 만들어야 합니다. 알 수 있듯이 리소스 파일의 이름은 적절한 .cshtml 파일의 경로와 언어 접미사입니다._Layout.cshtml 디렉터리에 있지 않지만 공유 디렉터리에 있기 때문에 영어의 리소스 파일 이름은 Views.Shared._Layout.en.resx가 됩니다. 폴란드어 및 독일어에 대해 이 단계를 반복합니다.

웹 사이트 현지화로 넘어갈 수 있습니다. FirstWebpage.cshtml, SecondWebpage.cshtml_Layout.cshtml의 시작 부분에 다음 코드를 추가합니다.

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer

코드에서 문자열을 지역화하려면 .cshtml 파일에서 선택한 문자열을 @Localizer["String or it's ID"]로 바꿔야 합니다. 짧은 문장과 한 단어 문자열을 @Localizer["String"]으로, 긴 문장을 @Localizer["ID"]로 바꾸는 것이 좋습니다. 예를 들어 Contact us를 지역화하려면 @Localizer["Contact us"]를 작성해야 하지만 지역화하려는 경우이 자습서에서는 ASP .NET Core를 사용하여 Windows에서 다국어 웹 사이트를 빌드하고 게시하는 방법을 배우 므로 @Localizer["About tutorial"]을 작성하는 것이 좋습니다.

코드에서 @Localizer["About tutorial"]을 사용했다고 가정해 보겠습니다. 다른 언어로 번역하려면 적절한 리소스 파일을 열고 Key(키)에서 About tutorial(자습서 정보)을 작성하고 Value translated sentence(번역 된 문장)를 엽니다. 그게 전부에요.

웹 사이트의 탐색 모음에서 적절한 언어를 선택할 수 있습니다. 작동하려면_Layout.cshtml과 같은 단추를 코딩해야 합니다.

좋아하는 프레임워크를 사용하여 모든 시나리오에 대한 최신 웹 앱을 만드세요. 지금 Ignite UI 다운로드하고 Infragistics JavaScript/HTML5 컨트롤의 강력한 기능을 경험해 보세요.

데모 요청