こんにちはSharedResourcesファイルについて質問があります。それはここのチュートリアルで一見されます:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization、そして私はそれを正しく得るかどうかわかりません。
SharedResources.cs
クラスを作成することになっていますが、どこに配置し、それを空にする必要がありますか、それともデータで埋める必要がありますか?
同じことはリソースファイルにも当てはまります。ファイルを作成してSharedResources.da.resx
すべての共有文字列をそこに配置する必要がありますか?どこに行けばいいの?
そして、私が使用するときは、それをIHtmlLocalizer<SharedResources>
書いて@using
、SharedResources.cs
存在する名前空間を指すようにしますか?
Resourcesフォルダーに入れSharedResources.cs
てSharedResources.da.resx
、それを使用してWebサイトの言語をデンマーク語に変更しようとしましたが、機能しません。のような専用のリソースファイルを使用するIndex.da.resx
と、IViewLocalizer
正常に動作しますが、動作IHtmlLocalizer<SharedResources>
しないようです。
ページの下部にリンクされているサンプルプロジェクトを見たときに、SharedResourcesが使用されている場所が見つからなかった場合、誰かがその例を使用して更新したとしたらすばらしいでしょう。
これが私がそれをやろうとした方法です:
Views / Home / Index.cshtml:
@using Funkipedia.Resources
@using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer<Shared> SharedLocalizer
...
<p>@SharedLocalizer["Hei"]</p>
...
Startup.csのConfigureServicesの上部:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
Startup.csのConfigureの上部:
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("nb-NO"),
new CultureInfo("sv-SE"),
new CultureInfo("da-DK")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("nb-NO"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
空のクラスを含むフォルダリソースが呼ばれるShared.cs
と、Shared.da.resx
その共有の文字列が含まれています。名前をに変更する必要がSharedResources.cs
ありSharedResources.da.resx
ますか?
さて、少し掘り下げてさらに試行錯誤した結果、質問に対する回答が見つかり、すべてが機能するようになりました。これが私が見つけたものです:
SharedResources.cs
クラスを作成することになっていますが、どこに配置し、それを空にする必要がありますか、それともデータで埋める必要がありますか?
回答: SharedResources.cs
プロジェクトのルートフォルダーまたはリソースフォルダーに配置できますが、最も重要なことは、名前空間をプロジェクトのルートに設定する必要があることです。私の場合namespace Funkipedia
。また、データを含める必要はなく、クラス宣言のみを含める必要があります。
同じことはリソースファイルにも当てはまります。ファイルを作成してSharedResources.da.resx
すべての共有文字列をそこに配置する必要がありますか?どこに行けばいいの?
回答:はい。.csファイルと同じ名前のリソースファイルを作成する必要があり、Resourcesフォルダーに配置する必要があります。
そして、私が使用するときは、それをIHtmlLocalizer<SharedResources>
書いて@using
、SharedResources.cs
存在する名前空間を指すようにしますか?
回答:使用する場合IHtmlLocalizer
および/またはIStringLocalizer
表示する場合、これを.cshtml
ファイルの先頭に書き込む必要があります。
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization
@inject IViewLocalizer Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer
@inject IHtmlLocalizer<SharedResources> SharedHtmlLocalizer
@using Microsoft.Extensions.Localization
あなたが使用する場合にのみ必要であることに注意してくださいIStringLocalizer
これが、リソースファイルやASP.NET Coreアプリケーションのローカリゼーションに不慣れな他のユーザーに役立つことを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加