2017-04-06 3 views
2

Asp.Net Coreのローカリゼーションに関するMicrosoftのチュートリアルに従っています.Shutup.csファイルのデフォルトカルチャを変更する場合を除いてCultureは変更されません。Asp.net core 1.1ローカリゼーション、cultureを変更しない

// Startup.cs - ConfigureServices Method 
services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); 

services.AddMvc() 
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) 
    .AddDataAnnotationsLocalization(); 



// Startup.cs - Configure Method 
var supportedCultures = new List<CultureInfo> 
{    
    new CultureInfo("en-GB"), 
    new CultureInfo("fr-FR"), 
    ... 
}; 

app.UseRequestLocalization(new RequestLocalizationOptions() 
{ 
    DefaultRequestCulture = new RequestCulture("en-GB"),    
    SupportedCultures = supportedCultures, 
    SupportedUICultures = supportedCultures, 
    RequestCultureProviders = new List<IRequestCultureProvider>() 
}); 


// HomeController 
public IActionResult SetLanguage(string culture, string returnUrl) 
    { 
     Response.Cookies.Append(
      CookieRequestCultureProvider.DefaultCookieName, 
      CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), 
      new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } 
     ); 

     return LocalRedirect(returnUrl); 
    } 

と私は好きアンカーリンクで言語を変更したい:私はクッキーが正常に設定、ページのリロードを取得しているが、ローカライズされたテキストが残っているリンクをクリックすると

<a asp-area="" asp-controller="Home" asp-action="SetLanguage" asp-route-culture="fr-FR" asp-route-returnUrl="@Context.Request.Path">FR</a>

同じ。 Startup.csファイルのDefaultRequestCultureを変更すると、カルチャが正常に表示されます(つまり、Resxファイルの名前が正しく指定されているなど)

クリックしたリンクに基づいて言語を変更するにはどうすればよいですか?私はまだ、誰もが、私は新しいソリューションを作り、問題はまだVS 2017年に発生した

EDIT 2 を助けることができるならば、私は場合のGithub上で私のVSプロジェクトをアップロードするソリューションを探しています

EDIT 誰も私が私の中にそのnugetパッケージを追加することで問題を解決することができたよりよく見てみると、私は

https://github.com/adonis07/Localization間違っEDIT 3
をやっているものを私に説明することができますソリューション Microsoft.AspNetCore.Authentication.Cookies。今、文化は適切に機能します。

+0

は、この参照してください。https://stackoverflow.com/a/38499465/5417285を –

答えて

-1

コード内の特定のカルチャに変更するようスレッドを設定していますか?このような何か、あなたは言語のクッキーを読んでどこ:

CultureInfo ci = new CultureInfo(culture); 
     System.Threading.Thread.CurrentThread.CurrentUICulture = ci; 
     System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 
+0

ありませんし、チュートリアルでは、そのようなことを言及していない、私は文化を考えましたプロバイダは、3つのオプション(Url、Cookie、Header)のいずれかが各リクエストで設定されているかどうかをチェックすることによってそれを処理します。 –

+0

これはASP.NET Core 1.1 Webサイトのデフォルトアプローチですか?私はこれまで何もしていない、私は言語を変更するための推奨された方法を待っている –

関連する問題