#asp.net-core #localization #globalization
#asp.net-core #локализация #глобализация
Вопрос:
Я создал многоязычный и многоуровневый проект .net core. Я использовал глобализацию и локализацию для создания многоязычного проекта. Уровень данных, ресурсы и веб-проект отделены друг от друга.Я знаю, как реализовать глобализацию, когда папка ресурсов находится на основном уровне.
Запуск:
services.AddLocalization(opt => { opt.ResourcesPath = "Resources"; });
services.AddLocalization();
services.AddMvc().AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization(
options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
{
var assemblyName = new AssemblyName(typeof(SharedResource).GetTypeInfo().Assembly.FullName);
return factory.Create("SharedResource", assemblyName.Name);
};
});
services.Configure<RequestLocalizationOptions>(
opt =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("fa"),
new CultureInfo("en")
};
opt.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("fa");
opt.SupportedCultures = supportedCultures;
opt.SupportedUICultures = supportedCultures;
});
services.AddControllersWithViews()
.AddRazorRuntimeCompilation();
Я создал файлы на уровне ресурсов и в папке ресурсов, например, для размещения в общей папке следующим образом:
_Layout.ru-US.resx и
_Layout.fa-IR.resx
но когда я запускаю project, ресурсы неизвестны в макете. Как я могу использовать ресурсы для моделей и представлений на других уровнях?
Комментарии:
1. Вы встречаете какое-либо сообщение об ошибке? Находятся ли эти файлы resx в папке ресурсов или нет? Вот пример о глобализации и локализации в ASP.NET Ядро , ты мог бы это проверить. Из этой статьи и примера кода кажется, что служба IViewLocalizer предоставляет локализованные строки для представления, пожалуйста, проверьте код страницы просмотра, убедитесь, что он также содержит аналогичную службу.
2. У меня нет ошибки. В однослойном проекте у меня нет проблем с использованием глобализации, но в многослойном проекте у меня это не работает. например, в макете на основном уровне, когда я использую @localizar[«Home»], не отображается значение, которое я сохранил в файле ресурсов, а отображается ключ Home .