ホームページ バックエンド開発 C#.Net チュートリアル Asp.Net Core MVC プロジェクトの多言語実装のサンプル コードの詳細な紹介

Asp.Net Core MVC プロジェクトの多言語実装のサンプル コードの詳細な紹介

Jun 04, 2017 am 09:48 AM

この記事では主にAsp.Net CoreMVCプロジェクト実装多言語インスタンス(グローバリゼーション/ローカリゼーション)について紹介していますので、興味のある方は参考にしてみてください

。最近、Razor MVC プロジェクトに多言語機能を実装しました。それがグローバリゼーション、ローカリゼーションなどと呼ばれるものです。達成される最終的な効果は、ワンクリックでサイト全体の言語を切り替えることであり、開発中に作成する必要があるのは 1 セットのページだけです。

本題に移りましょう

まず、ローカリゼーション リソースを管理し、「翻訳」リンクを完了するために、CultureConfigurer クラスを作成する必要があります。

ここでは、static クラスを使用し、MVC プロジェクトのときに Init( を実行しました)もちろん、最初に interface を作成してから、Dependency Injection を使用してシングルトンを作成することもできます。

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 つあります

2. Assembly.Load を使用してアセンブリをロードします。パラメータは独自のアセンブリ名です。ここでは 1 つだけ書きました

3. リソース ファイル用の json ファイルを選択しました。 js の利便性 呼び出されます。もちろん、xml または使用したい任意の形式を使用することもできます。解析メソッドを調整して、ファイルの内容を対応する Dictionary にロードするだけです

4. GetValue メソッド を参照してください。実は多言語というのは、どんな言語であっても、ある単語をキーにして、それを現在の言語の単語に「翻訳」するメソッドを呼んでいるということは皆さんも理解されていると思います。たとえば、「Open」がキーとして使用されている場合、中国語辞書には「Open」:「Open」という KeyValuePair が存在し、対応する英語には「Open」:「Open」が存在する必要があります。カルチャーが中国語の場合、「Open」は英語で「Open」を意味します。

5. リソース ファイルはアセンブリ内のどこにでも作成できます。プロジェクトに project.json ファイルがある場合は、独自のファイルの場所に応じてパスを変更するように注意してください

"embed": {
   "include": [
    "Localization/SourceFiles/*.json"
   ]
  }
ログイン後にコピー

VS2017 の場合。 csproj ファイルです。追加するリソース ファイルを右クリックし、[プロパティ] を選択し、構成を [すべての構成] に変更し、詳細構成プロパティの [操作の生成] を [埋め込みリソース] に変更します。以下に示すように、

この時点で、ローカリゼーションを実装するためのコア クラスを作成しました。次に、それをページに表示する方法の問題を解決する必要があります。

MVC で新しいクラス MyRazorPage を作成します。 project

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") のように記述するだけです。

ご覧のとおり、ユーザー言語を Cookie に保存し、誰もがここで独自の実装方法を使用できます。私の実装方法は非常に簡単です。ユーザーが言語を切り替えるときは、インターフェイスにアクセスし、言語を表す Cookie を変更して、ページを更新します。

以上がAsp.Net Core MVC プロジェクトの多言語実装のサンプル コードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 May 10, 2023 pm 11:49 PM

Microsoft の Windows 11 2022 Update (22H2) では、CoreIsolation のメモリ整合性保護がデフォルトで有効になっています。ただし、Windows 11 2022 Update (22H1) などの古いバージョンのオペレーティング システムを実行している場合は、この機能を手動で有効にする必要があります。 Windows 11 で CoreIsolation のメモリ整合性機能をオンにする Core Isolation について知らないユーザーのために説明すると、これは Windows 上の基本的なコア アクティビティをメモリ内で隔離することで悪意のあるプログラムから保護するように設計されたセキュリティ プロセスです。このプロセスとメモリ整合性機能を組み合わせることで、

コンピューターコアとはどういう意味ですか? コンピューターコアとはどういう意味ですか? Sep 05, 2022 am 11:24 AM

コンピュータでは、コアには 2 つの意味があります: 1. コア (コアとも呼ばれる) は、CPU の最も重要なコンポーネントです。CPU のすべての計算、ストレージ コマンドの受け入れ、データの処理はコアによって実行されます。2. コア、 core は Intel のプロセッサ名で、Core は Intel が Pentium プロセッサに続いて立ち上げたプロセッサ ブランドで、現在は第 12 世代 Core プロセッサがリリースされています。

PHP で多言語 Web サイトを実装する方法 PHP で多言語 Web サイトを実装する方法 May 22, 2023 am 11:31 AM

インターネットの普及に伴い、多言語をサポートする必要がある Web サイトが増えています。これは、Web サイトの閲覧者がさまざまな地域や文化的背景を持っている可能性があり、Web サイトが 1 つの言語でしか利用できない場合、訪問者の数と体験が制限される可能性があるためです。この記事では、PHPで多言語Webサイトを実装する方法を紹介します。 1. 言語ファイルの作成と設計 言語ファイルは、すべてのテキスト文字列とそれに対応する翻訳を保存するファイルであり、特定の形式で作成する必要があります。言語ファイルを作成するときは、次の点を考慮する必要があります。 1. 名前付けと保存場所 ファイル名は次のようにする必要があります。

vue と Element-plus を使用して多言語および国際的なサポートを実現する方法 vue と Element-plus を使用して多言語および国際的なサポートを実現する方法 Jul 17, 2023 pm 04:03 PM

vue と Element-plus を使って多言語・国際対応を実現する方法 はじめに: 今日のグローバル化時代において、異なる言語や文化のユーザーのニーズに対応するために、多言語・国際対応は必須の機能となっています。多くのフロントエンド プロジェクトに適用されます。この記事では、プロジェクトがさまざまな言語環境のニーズに柔軟に対応できるように、vue と Element-plus を使用して多言語および国際的なサポートを実現する方法を紹介します。 1.Element-plusをインストールするElement-plusはvue公式です

CakePHP は複数の言語をどのように処理しますか? CakePHP は複数の言語をどのように処理しますか? Jun 06, 2023 am 08:03 AM

CakePHP は、開発者が高品質の Web アプリケーションを迅速に構築できるようにする人気の PHP 開発フレームワークです。グローバリゼーションの進展に伴い、複数の言語をサポートする必要があるアプリケーションがますます増えており、CakePHP も対応するサポートを提供しています。この記事では、CakePHP が複数の言語をどのように扱うかを紹介します。 1. 多言語サポート 多言語サポートは CakePHP の重要な機能です。バージョン 2.0 以降、CakePHP は gettext ファイル形式をサポートします。

i18n を使用して Vue で多言語切り替えを実装するためのヒント i18n を使用して Vue で多言語切り替えを実装するためのヒント Jun 25, 2023 am 09:33 AM

国際化の継続的な発展に伴い、多言語切り替え機能をサポートする必要がある Web サイトやアプリケーションがますます増えています。人気のあるフロントエンド フレームワークとして、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 を使用して多言語サポートを実現する方法 はじめに: インターネットの継続的な発展に伴い、多言語サポートはほとんどの Web サイトやアプリケーションに必要な機能になりました。 Flask-Babel は、Babel ライブラリに基づいて多言語サポートを提供する、便利で使いやすい Flask 拡張機能です。この記事では、Flask-Babel を使用して多言語サポートを実現する方法を紹介し、コード例を添付します。 1. Flask-Babel をインストールする 開始する前に、まず Flask-Bab をインストールする必要があります。

See all articles