1

私のリソースファイルが読み込まれない、または何か他のものが正しい値をロードするために私のアプリケーションを保持しています。ASPNETコアとresxファイルによるローカライゼーション

これは私のStartup.csからです:

services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); 
services.AddMvc() 
     .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, 
     opts => { opts.ResourcesPath = "Resources"; })      
     .AddDataAnnotationsLocalization(); 

services.Configure<RequestLocalizationOptions>(options => 
{ 
    var supportedCultures = new[] 
    { 
     new CultureInfo("da-DK") 
    }; 

    options.DefaultRequestCulture = new RequestCulture(culture: "da-DK", 
    uiCulture: "da-DK"); 
    options.SupportedCultures = supportedCultures; 
    options.SupportedUICultures = supportedCultures; 
}); 

そして、これは私のコントローラからです:

public class CustomerController : Controller 
{ 
    private readonly IHtmlLocalizer<CustomerController> _localizer; 

    public CustomerController(IHtmlLocalizer<CustomerController> localizer) 
    { 
     _localizer = localizer; 
    } 

    public IActionResult MyAccount() 
    { 
     string test = Language.MyAccount; 
     ViewData["Message"] = _localizer["MyAccount"]; 

     return View(); 
    } 

私のリソースファイルは、私のアプリのルートにリソースという名前のフォルダに配置され、そして、呼ばれています。

  • Language.da-DK.resx
  • L anguage.resx

_localizer ["MyAccount"]; 文字列 "MyAccount"を、ローカリゼーションで何も見つからないかのように返します。

The Language.MyAccount;デフォルト値である「My account」が返されます。 誰もこの鍵のデンマーク語の翻訳を見つけることはできません。

誰でも私が間違っているのを見ることができますか?

+0

'Startup.Configure'の先頭に' app.UseRequestLocalization(new RequestLocalizationOptions(...)) 'を追加しましたか?あなたには本当に 'services.Configure (...)'が必要なわけではありませんので、あなたには分かりません。 –

+0

あなたの提案をありがとう、私はそれを試して、それは文化の問題に役立った。 今: - 文字列テスト=言語。マイアカウント; デンマーク語のテキストを返します: "Min konto" しかし、私はまだカンツを取得します - _localizer ["MyAccount"]; "MyAccount"以外の値を返します。これはキーであり、値ではありません。 私の問題は、私のリソースファイルが正しくロードされていないことと関係していると思います。 これに関する提案はありますか? –

答えて

0

は、今私は、部分的にはい、私は私のStartup.csの設定部分で

app.UseRequestLocalization(new RequestLocalizationOptions(...)) 

を持つために必要なダニエルJ. G. に助けられ、それを考え出しました。

しかし、_localizerが実際にリソースファイルを見つけたのは、resx.designerファイルの名前空間を変更することでした。

namespace AO.Customer.Resources 

の代わりに、それは

namespace AO.Customer 

でなければなりません

名前空間のリソースの一部は、サービス、それが自己によって追加されました。 _localizer使用するための

おかげでダニエル

0

[「マイアカウント」]は、あなたは> IHtmlLocalizer < ここに指定されたタイプと名前のリソースファイルを持っている必要があります。

Language.da-DK.resx、Language.resxはCustomerController.da-DK.resx命名する必要が

、CustomerController.en.resx

.NETコア局在化のための公式ドキュメントの上に見てみましょうhere

関連する問題