Я создаю многоязычные приложения в net core 3.1 и Angular 9. Лично у меня проблема с переводом сообщений, сгенерированных в net core, с помощью ручек.
Вот мой код запуска:
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("pl"),
new CultureInfo("en")
};
options.DefaultRequestCulture = new RequestCulture(culture: "pl");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat
.Suffix).AddDataAnnotationsLocalization();
Я создаю повар ie для хранения информации о текущем языке:
export class SettingsService {
url:string;
constructor(private http: HttpClient) {
this.url = environment.apiUrl + '/settings/';
}
setLanguageCookie(name: string){
this.http.get(this.url + 'SetCookie?culture=' + name);
}
}
. net core:
[ApiController]
[AllowAnonymous]
[Route("[controller]")]
public class SettingsController : BaseController
{
[AllowAnonymous]
[HttpGet("SetCookie")]
public IActionResult Cookie(string culture)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddMonths(1) }
);
return RedirectToAction("SetCookie");
}
}
}
файл руля перевести:
{{#>BasicHtmlLayout}}
<p>
Twoje konto w systemie BLS zostało aktywowane.
</p>
{{/BasicHtmlLayout}}
Есть у кого идеи?