Использование глобализации и локализации в многоуровневом проекте .net core

#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 .