سلام و درود
در جواب یکی از دوستان گفتید که پوشه مربوط به چند زبانگی رو توی core قرار میدید. این مورد برای مدیریت تو سطح کنترلر و ویو که تو همون لایه هستن مناسبه، اما انگار با annotation هایی که توی لایه دامین برای مدل هامون تعریف کردیم، مساله دارن.
وقتی بخوایم از لایه domain به resource مون که تو لایه پرزنت هست، دسترسی داشته باشیم، به چه صورت میشه؟
خاطرم نیست چرا این رو گفتم ولی خیر ما در خود وب میزاریم چون مربوط به presenter هست
بله این رو متوجه شدم
سوالم این بود که چطوری به مدل های لایه ی دامین، یا ویو مدل ها، اون رو معرفی میکنید.
اینطور که من متوجه شدم، اسم پروژه ای که میخواد ازش استفاده کنه رو هم باید به ابتدای فایل resource اضافه کنیم. در واقع نام فایل resource اینطوری میشه:
xProject.Domain.Models.Product.fa-IR
وقتی اسم رو این مدلی قرار بدیم، لایه مدل هم فایل resource ما رو میشناسه، تا اینجاشو متوجه شدم، الان سوالم اینه که چطور برای کل پوشه ی Models یک resource اشتراکی قرار بدم؟
چون اینطوری برای هر کلاس باید یک resource بسازم که منطقی نیست.
https://github.com/damienbod/AspNetCoreMvcSharedLocalization
متشکرم جناب مدائنی
جوابی که خودم بهش رسیدم رو اینجا می ذارم، برای بقیه دوستان که ممکنه نیازشون بشه
کلیت بدین صورت هست:
ریسورس ها رو توی همون لایه پرزنت، به یک class library می بریم.
تنظیمات استارت آپ هم بدین صورته:
services.AddControllersWithViews()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, option =>
{
option.ResourcesPath = "Resources";
})
.AddDataAnnotationsLocalization(option =>
{
option.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(
baseName: "SharedResource", // همون کلاس SharedResource.cs
location: "X.Resource" // همون class library که ساختیم
);
});
services.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
بدین صورت هر موردی که توی فایل resource مون ساختیم، از لایه دامین و ویو مدل و ... در دسترس هست.
ممنون