백엔드 개발 C#.Net 튜토리얼 Asp.Net Core MVC 프로젝트의 다국어 구현을 위한 샘플 코드에 대한 자세한 소개

Asp.Net Core MVC 프로젝트의 다국어 구현을 위한 샘플 코드에 대한 자세한 소개

Jun 04, 2017 am 09:48 AM

이 글은 주로 Asp.Net Core MVC프로젝트 구현다국어인스턴스(세계화/현지화)에 대해 소개하고 있으니 관심 있는 분들은 참고하시면 좋을 것 같습니다

최근에는 세계화, 현지화 등 Razor MVC 프로젝트에 대한 다중 언어 기능을 구현했습니다. 달성할 수 있는 최종 효과는 한 번의 클릭으로 전체 사이트의 언어를 전환하는 것이며, 개발 중에는 한 세트의 페이지만 작성하면 됩니다.

본론으로 들어가겠습니다

먼저 지역화된 리소스를 관리하고 "번역" 링크를 완료하기 위해 CultureConfigurer 클래스를 만들어야 합니다.

여기서는 static 클래스를 사용한 다음 Init(MVC 프로젝트가 실행될 때)를 실행했습니다. StartUp ) 방법은 실제로 약간 어리석습니다. 물론 인터페이스를 먼저 작성한 다음 종속성 주입을 사용하여 싱글톤을 만들 수도 있습니다.

using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;

namespace Localization
{
  public enum Culture
  {
    Cn,
    En
  }

  public static class CultureConfigurer
  {
    private static Dictionary<string, string> _enDictionary;
    private static Dictionary<string, string> _cnDictionary;

    public static void Init()
    {
      var assembly = Assembly.Load(new AssemblyName("Localization"));

      var resourceNames = assembly.GetManifestResourceNames();
      foreach (var resourceName in resourceNames)
      {
        if (resourceName.EndsWith("en-US.json") || resourceName.EndsWith("zh-CN.json"))
        {
          using (var stream = assembly.GetManifestResourceStream(resourceName))
          {
            if (stream != null)
            {
              using (StreamReader reader = new StreamReader(stream))
              {
                var content = reader.ReadToEnd();
                Dictionary<string, string> localizationDictionary =
                  JsonConvert.DeserializeObject<Dictionary<string, string>>(content);
                if (resourceName.EndsWith("en-US.json"))
                {
                  _enDictionary = localizationDictionary;
                }
                else
                {
                  _cnDictionary = localizationDictionary;
                }
              }
            }
          }
        }
      }
    }

    public static string GetValue(string key, Culture culture)
    {
      switch (culture)
      {
        case (Culture.Cn):
          {
            if (_cnDictionary.ContainsKey(key))
            {
              return _cnDictionary[key];
            }
            else
            {
              return $"[{key}]";
            }
          }
        case (Culture.En):
          {
            if (_enDictionary.ContainsKey(key))
            {
              return _enDictionary[key];
            }
            else
            {
              return $"[{key}]";
            }
          }
        default:
          {
            return $"[{key}]";
          }
      }
    }
  }
}
로그인 후 복사

여기서 주목해야 할 몇 가지 사항:

 1. enum 클래스 Culture는 구현할 언어를 나타내는 데 사용됩니다. 여기서는 단순히 중국어와 영어(다른 언어는 이해하지 못함)와 해당 CultureConfigurer를 구현했습니다. 클래스에는 중국어와 영어로 된 두 개의 사전이 있습니다

  2. Assembly.Load를 사용하여 어셈블리를 로드합니다. 매개 변수는 사용자 고유의 어셈블리 이름입니다. 여기에 하나를 썼습니다

  3. 리소스 파일용으로 json 파일을 선택했습니다. js 호출의 편리함은 물론 xml 또는 사용하려는 모든 형식을 사용할 수도 있습니다. 구문 분석 방법을 조정하고 해당 Dictionary

  4에 파일 콘텐츠를 로드하기만 하면 됩니다. GetValue 메서드를 참조하세요. 사실 다국어는 어떤 언어이든지 특정 단어를 핵심으로 사용하고, 이를 현재 언어의 단어로 "번역"하기 위해 이 방법을 호출합니다. 예를 들어 "Open"이 키로 사용되는 경우 중국어 사전에 "Open": "Open"인 KeyValuePair가 있어야 하며 해당 영어에는 "Open": "Open"이 있어야 합니다. Culture가 중국어인 경우 디스플레이는 "Open"이 됩니다. 이는 영어로 "Open"을 의미합니다.

 5. 리소스 파일은 어셈블리 어디에서나 생성할 수 있습니다. 프로젝트에 project.json 파일이 있는 경우 해당 파일을 buildOptions에 추가하세요. 자신의 파일 위치에 따라 경로를 수정하세요.

"embed": {
   "include": [
    "Localization/SourceFiles/*.json"
   ]
  }
로그인 후 복사

VS2017인 경우 , csproj 파일입니다. 그런 다음 추가할 리소스 파일을 마우스 오른쪽 버튼으로 클릭하고 "Properties"을 선택하고 구성을 "모든 구성"으로 변경하고 고급 구성 속성에서 "작업 생성"을 "포함된 리소스"로 변경합니다. , 아래와 같이

이 시점에서 현지화를 구현하기 위한 핵심 클래스를 작성했습니다. 다음으로 이를 페이지에 표시하는 방법에 대한 문제를 해결해야 합니다.

새 클래스 MyRazorPage를 생성합니다. MVC 프로젝트

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

namespace MVC.Views
{
  public abstract class MyRazorPage<TModel> : RazorPage<TModel>
  {
    public virtual string L(string source)
    {
      var value = Context.Request.Cookies["culture"];
      Culture c;
      if (string.IsNullOrEmpty(value) || !Enum.TryParse(value, out c))
      {
        c = Culture.Cn;
      }
      return CultureConfigurer.GetValue(source, c);
    }
  }
}
로그인 후 복사

이 클래스는 추상 클래스, Inherits RazorPage입니다. 그런 다음 Views 폴더에서 _ViewImports.cshtml 파일을 찾아 "@inherits MVC.Views.MyRazorPage" 줄을 추가하면 모든 RazorPages가 MyRazorPage 클래스를 상속하게 됩니다. 사용하고 싶고 cshtml에서 직접 호출할 수 있습니다. 여기서는 L 메서드를 작성하고 CultureConfigurer의 GetValue 메서드를 호출했습니다. 그런 다음 페이지에서 번역해야 할 텍스트를 @L("Open")처럼 작성하면 됩니다. ​

쿠키에 사용자 언어를 저장한 것을 볼 수 있으며 여기서는 누구나 자신만의 구현 방법을 가질 수 있습니다. 내 구현 방법은 매우 간단합니다. 사용자가 언어를 전환하면 인터페이스에 액세스하고 언어를 나타내는 쿠키를 수정한 다음 페이지를 새로 고칩니다.

위 내용은 Asp.Net Core MVC 프로젝트의 다국어 구현을 위한 샘플 코드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 코어 격리의 메모리 무결성 기능을 활성화하는 방법 Windows 11에서 코어 격리의 메모리 무결성 기능을 활성화하는 방법 May 10, 2023 pm 11:49 PM

Microsoft의 Windows 11 2022 업데이트(22H2)는 기본적으로 CoreIsolation의 메모리 무결성 보호를 활성화합니다. 그러나 Windows 11 2022 업데이트(22H1)와 같은 이전 버전의 운영 체제를 실행하는 경우 이 기능을 수동으로 켜야 합니다. Windows 11에서 CoreIsolation의 메모리 무결성 기능 켜기 Core Isolation에 대해 모르는 사용자를 위해 Windows의 기본 핵심 활동을 메모리에서 격리하여 악성 프로그램으로부터 보호하도록 설계된 보안 프로세스입니다. 메모리 무결성 기능과 결합된 이 프로세스는 다음을 보장합니다.

컴퓨터 코어는 무엇을 의미합니까? 컴퓨터 코어는 무엇을 의미합니까? Sep 05, 2022 am 11:24 AM

코어는 컴퓨터에서 두 가지 의미를 갖습니다. 1. 코어라고도 알려진 코어는 CPU의 가장 중요한 구성 요소입니다. CPU의 모든 계산, 저장 명령 수락 및 데이터 처리는 코어에서 수행됩니다. core는 Intel의 프로세서 이름이며, Core는 Intel이 Pentium 프로세서에 이어 출시한 프로세서 브랜드입니다. 현재 12세대 Core 프로세서를 출시했습니다.

PHP로 다국어 웹사이트를 구현하는 방법 PHP로 다국어 웹사이트를 구현하는 방법 May 22, 2023 am 11:31 AM

인터넷의 인기가 높아짐에 따라 점점 더 많은 웹사이트가 다국어를 지원해야 합니다. 이는 웹사이트의 독자층이 다양한 지역과 문화적 배경을 가질 수 있고, 웹사이트가 단일 언어로만 제공된다면 방문자의 수와 경험이 제한될 수 있기 때문입니다. 이 기사에서는 PHP로 다국어 웹사이트를 구현하는 방법을 소개합니다. 1. 언어 파일의 생성 및 설계 언어 파일은 모든 텍스트 문자열과 해당 번역을 저장하는 파일이며 특정 형식으로 생성되어야 합니다. 언어 파일을 생성할 때 다음 사항을 고려해야 합니다. 1. 이름 지정 및 저장 위치 파일 이름은 다음과 같아야 합니다.

다국어 및 국제 지원을 달성하기 위해 vue 및 Element-plus를 사용하는 방법 다국어 및 국제 지원을 달성하기 위해 vue 및 Element-plus를 사용하는 방법 Jul 17, 2023 pm 04:03 PM

다국어 및 국제 지원을 위해 vue 및 Element-plus를 사용하는 방법 소개: 오늘날의 세계화 시대에 다양한 언어와 문화권의 사용자 요구에 대처하기 위해 다국어 및 국제 지원이 필수 기능이 되었습니다. 많은 프런트엔드 프로젝트에 사용됩니다. 이 기사에서는 프로젝트가 다양한 언어 환경의 요구에 유연하게 적응할 수 있도록 vue 및 Element-plus를 사용하여 다국어 및 국제 지원을 달성하는 방법을 소개합니다. 1. Element-plusElement-plus 설치는 vue 공식입니다.

CakePHP는 다국어를 어떻게 처리하나요? CakePHP는 다국어를 어떻게 처리하나요? Jun 06, 2023 am 08:03 AM

CakePHP는 개발자가 고품질 웹 애플리케이션을 신속하게 구축하는 데 도움이 되는 인기 있는 PHP 개발 프레임워크입니다. 세계화가 발전함에 따라 점점 더 많은 애플리케이션이 다국어를 지원해야 하며 CakePHP도 이에 상응하는 지원을 제공합니다. 이 기사에서는 CakePHP가 여러 언어를 처리하는 방법을 소개합니다. 1. 다국어 지원 다국어 지원은 CakePHP의 중요한 기능입니다. 버전 2.0부터 CakePHP는 gettext 파일 형식을 지원합니다.

i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 Jun 25, 2023 am 09:33 AM

국제화가 지속적으로 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션이 다중 언어 전환 기능을 지원해야 합니다. 널리 사용되는 프런트엔드 프레임워크인 Vue는 다중 언어 전환을 달성하는 데 도움이 되는 i18n이라는 플러그인을 제공합니다. 이 기사에서는 i18n을 사용하여 Vue에서 다중 언어 전환을 구현하는 일반적인 기술을 소개합니다. 1단계: i18n 플러그인 설치 먼저 npm 또는 Yarn을 사용하여 i18n 플러그인을 설치해야 합니다. 명령줄에 다음 명령을 입력합니다: npminst

Windows 11/10에서 프로세서 열 트립 오류를 수정하는 방법 [수정] Windows 11/10에서 프로세서 열 트립 오류를 수정하는 방법 [수정] Apr 17, 2023 am 08:13 AM

노트북, 데스크탑 등 대부분의 장치는 오랫동안 젊은 게이머와 코더들이 많이 사용해 왔습니다. 애플리케이션 과부하로 인해 시스템이 중단되는 경우가 있습니다. 이로 인해 사용자는 시스템을 종료해야 합니다. 이는 주로 무거운 게임을 설치하고 플레이하는 플레이어에게 발생합니다. 강제 종료 후 시스템이 부팅을 시도하면 아래와 같이 검은색 화면에 오류가 발생합니다. 다음은 이 부팅 중에 감지된 경고입니다. 이는 이벤트 로그 페이지의 설정에서 볼 수 있습니다. 경고: 프로세서 열 트립. 계속하려면 아무 키나 누르세요. ..이러한 유형의 경고 메시지는 데스크탑이나 노트북의 프로세서 온도가 임계값 온도를 초과할 때 항상 표시됩니다. 아래에는 Windows 시스템에서 이런 일이 발생하는 이유가 나와 있습니다. 많은 무거운 응용 프로그램이 있습니다

Flask-Babel을 사용하여 다국어 지원을 구현하는 방법 Flask-Babel을 사용하여 다국어 지원을 구현하는 방법 Aug 02, 2023 am 08:55 AM

Flask-Babel을 사용하여 다중 언어 지원을 구현하는 방법 소개: 인터넷의 지속적인 발전으로 인해 다중 언어 지원은 대부분의 웹 사이트와 애플리케이션에 필요한 기능이 되었습니다. Flask-Babel은 Babel 라이브러리를 기반으로 다국어 지원을 제공하는 편리하고 사용하기 쉬운 Flask 확장입니다. 이 기사에서는 Flask-Babel을 사용하여 다국어 지원을 구현하는 방법을 소개하고 코드 예제를 첨부합니다. 1. Flask-Babel을 설치하기 전에 먼저 Flask-Bab을 설치해야 합니다.

See all articles