1654256160
グローバリゼーションとローカリゼーションは、特定の言語に縛られないようにアプリケーションアーキテクチャを設計する手法であり、いつでも手直しなしでより多くの言語を導入することができます。アプリケーションは言語に依存しないように設計されています。より正確に言うと、アプリケーションをグローバル化する場合、出力値を生の文字列としてハードコーディングするのではなく、キーを使用してテキストを識別します。ローカリゼーションの段階で使用できる重要なテキストまたは理解しやすいテキストとして、あらゆるものを識別できます。ローカリゼーションとは、グローバル化されたアプリケーションに加えて、さまざまな言語のサポートを追加することを意味します。グローバリゼーションがなければ、アプリケーションをローカライズすることはできません。一部のアクションを無視できる他の言語に変換できない場合は、例外が発生する可能性があります。また、
このプロセスを展開するための最良の方法は上に示されています。
グローバリゼーションを実装するために、たとえば、アプリケーションの各テキストをキーに変換します。この値は、依存性注入としてIStringLocalizer <T>ローカライザーを使用して利用できます。ここで、Tは、リソースを作成するRazorコンポーネント名を表します。キーと値は、razorコンポーネントの.resxファイルとコードスニペットにあります。
価値 | 鍵 | コードスニペット |
こんにちは世界 | greet_hello | ローカライザー['greet_hello'] |
私たちに関しては | title_about | ローカライザー['title_about'] |
たとえば、以下はIStringLocalizer <NavMenu>です。ローカライザーは依存関係として挿入され、値を取得するためにキー名を参照しています。
ローカリゼーション
ローカリゼーションを実装するには、MicrosoftExtensionLocalizationパッケージをインストールします。
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Localization" Version="6.0.5" />
</ItemGroup>
Program.csに、ミドルウェアを追加します。
builder.Services.AddLocalization();
次に、言語とコンポーネントの組み合わせ用のリソースファイルを作成します。規則<ComponentName>。<language>.resxに従う必要があります
プロジェクト構造
リソースファイルNavMenu.fr-CA-resx
次に、ユーザーの好みに基づいて言語を選択します。これを実装するために、ユーザーが選択した言語をブラウザのlocalstorageに保存します。以下は、参照用の簡単なコンポーネントです。
LanguageSelector.razor
<ul>
@foreach(var lang in new string[] { "en-IN","hi","pa","fr-CA" })
{
<li><a href="#" onclick="(localStorage.setItem('lang','@lang'),window.location.reload())();">@lang</a></li>
}
</ul>
ローカルストレージから言語を選択してアプリケーションで使用するには、最終的なコードは次のようになります。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>BlazorGlobalizationTutorial</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorGlobalizationTutorial.Client.styles.css" rel="stylesheet" />
<script>
//Function to get localizer language for webassembly C# code
window.getCultureLang = () => {
return window.localStorage['lang']
};
</script>
</head>
<body>
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.webassembly.js" autostart="false"></script>
<script>
//Function to get localizer language for application startup. If language is not set use ‘en-IN’
let languageSet = (localStorage.getItem('lang') || 'en-IN');
console.log(languageSet);
Blazor.start({
applicationCulture: languageSet
});
</script>
</body>
</html>
Program.cs
using BlazorGlobalizationTutorial.Client;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using System.Globalization;
using Microsoft.JSInterop;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add < App > ("#app");
builder.RootComponents.Add < HeadOutlet > ("head::after");
builder.Services.AddScoped(sp => new HttpClient {
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
builder.Services.AddLocalization(); //Localizer added
var host = builder.Build();
/*Localizer setting start*/
var js = host.Services.GetRequiredService < IJSRuntime > ();
var lang = await js.InvokeAsync < string > ("getCultureLang");
CultureInfo.DefaultThreadCurrentCulture = string.IsNullOrWhiteSpace(lang) ? CultureInfo.CurrentCulture : new CultureInfo(lang);
CultureInfo.DefaultThreadCurrentUICulture = string.IsNullOrWhiteSpace(lang) ? CultureInfo.CurrentCulture : new CultureInfo(lang);
/*Localizer setting end*/
await host.RunAsync();
参考までに、アップロードされたコードを確認してください。読んでくれてありがとう。
#global #localization #dotnet #blazor
1654256160
グローバリゼーションとローカリゼーションは、特定の言語に縛られないようにアプリケーションアーキテクチャを設計する手法であり、いつでも手直しなしでより多くの言語を導入することができます。アプリケーションは言語に依存しないように設計されています。より正確に言うと、アプリケーションをグローバル化する場合、出力値を生の文字列としてハードコーディングするのではなく、キーを使用してテキストを識別します。ローカリゼーションの段階で使用できる重要なテキストまたは理解しやすいテキストとして、あらゆるものを識別できます。ローカリゼーションとは、グローバル化されたアプリケーションに加えて、さまざまな言語のサポートを追加することを意味します。グローバリゼーションがなければ、アプリケーションをローカライズすることはできません。一部のアクションを無視できる他の言語に変換できない場合は、例外が発生する可能性があります。また、
このプロセスを展開するための最良の方法は上に示されています。
グローバリゼーションを実装するために、たとえば、アプリケーションの各テキストをキーに変換します。この値は、依存性注入としてIStringLocalizer <T>ローカライザーを使用して利用できます。ここで、Tは、リソースを作成するRazorコンポーネント名を表します。キーと値は、razorコンポーネントの.resxファイルとコードスニペットにあります。
価値 | 鍵 | コードスニペット |
こんにちは世界 | greet_hello | ローカライザー['greet_hello'] |
私たちに関しては | title_about | ローカライザー['title_about'] |
たとえば、以下はIStringLocalizer <NavMenu>です。ローカライザーは依存関係として挿入され、値を取得するためにキー名を参照しています。
ローカリゼーション
ローカリゼーションを実装するには、MicrosoftExtensionLocalizationパッケージをインストールします。
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Localization" Version="6.0.5" />
</ItemGroup>
Program.csに、ミドルウェアを追加します。
builder.Services.AddLocalization();
次に、言語とコンポーネントの組み合わせ用のリソースファイルを作成します。規則<ComponentName>。<language>.resxに従う必要があります
プロジェクト構造
リソースファイルNavMenu.fr-CA-resx
次に、ユーザーの好みに基づいて言語を選択します。これを実装するために、ユーザーが選択した言語をブラウザのlocalstorageに保存します。以下は、参照用の簡単なコンポーネントです。
LanguageSelector.razor
<ul>
@foreach(var lang in new string[] { "en-IN","hi","pa","fr-CA" })
{
<li><a href="#" onclick="(localStorage.setItem('lang','@lang'),window.location.reload())();">@lang</a></li>
}
</ul>
ローカルストレージから言語を選択してアプリケーションで使用するには、最終的なコードは次のようになります。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>BlazorGlobalizationTutorial</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorGlobalizationTutorial.Client.styles.css" rel="stylesheet" />
<script>
//Function to get localizer language for webassembly C# code
window.getCultureLang = () => {
return window.localStorage['lang']
};
</script>
</head>
<body>
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.webassembly.js" autostart="false"></script>
<script>
//Function to get localizer language for application startup. If language is not set use ‘en-IN’
let languageSet = (localStorage.getItem('lang') || 'en-IN');
console.log(languageSet);
Blazor.start({
applicationCulture: languageSet
});
</script>
</body>
</html>
Program.cs
using BlazorGlobalizationTutorial.Client;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using System.Globalization;
using Microsoft.JSInterop;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add < App > ("#app");
builder.RootComponents.Add < HeadOutlet > ("head::after");
builder.Services.AddScoped(sp => new HttpClient {
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
builder.Services.AddLocalization(); //Localizer added
var host = builder.Build();
/*Localizer setting start*/
var js = host.Services.GetRequiredService < IJSRuntime > ();
var lang = await js.InvokeAsync < string > ("getCultureLang");
CultureInfo.DefaultThreadCurrentCulture = string.IsNullOrWhiteSpace(lang) ? CultureInfo.CurrentCulture : new CultureInfo(lang);
CultureInfo.DefaultThreadCurrentUICulture = string.IsNullOrWhiteSpace(lang) ? CultureInfo.CurrentCulture : new CultureInfo(lang);
/*Localizer setting end*/
await host.RunAsync();
参考までに、アップロードされたコードを確認してください。読んでくれてありがとう。