ব্লেজার সার্ভার সাইডে কীভাবে বৈধতা বার্তা (ডেটাঅ্যানোটেশনভালিডেটর) ​​স্থানীয়করণ করবেন


10

আমি ভিএস 2019 এর সর্বশেষ সংস্করণে ব্লেজার 3.1 ব্যবহার করছি।

এখন পর্যন্ত আমি পৃষ্ঠা লেবেলগুলি স্থানীয়করণ করতে সক্ষম (শিরোনাম, টেবিল ক্ষেত্রগুলি ইত্যাদি))

ইন ListEmployee.razorপৃষ্ঠা আমি স্থানীয়করণ সারণীর শিরোনাম ইত্যাদি সক্ষম এবং এর AddEmplyeeValidation.razorপৃষ্ঠা আমি স্থানীয় ভাষায় লিখুন ফর্ম লেবেলে সক্ষম কিন্তু আমি সমস্যা বৈধতা বার্তা স্থানীয় ভাষায় অনুবাদ করা আছে।

বৈধতা বার্তার জন্য Employee.csবৈধতা বার্তার জন্য এই ফাইলটি Resources/Dataফোল্ডারে সংজ্ঞায়িত করা হয় Data.Employee.ar.resxএবং নামটি দিয়ে ফোল্ডারে Data.Employee.ar.resxএটি কাজ করছে না

System.ComponentModel.DataAnnotations ব্যবহার করে;

নেমস্পেস ব্লাজারএসপিএ 1. ডেটা {পাবলিক ক্লাসের কর্মচারী {[ম্যাক্সেলেন্থ (50)] পাবলিক স্ট্রিং আইডি {পান; সেট; }

    [Required (ErrorMessage ="Name is RRRequired")]
    [StringLength(20, ErrorMessage = "Name is too long.")]
    public string Name { get; set; }

    [Required]
    [StringLength(20)]
    public string Department { get; set; }
    [MaxLength(100)]
    public string Designation { get; set; }
    [MaxLength(100)]
    public string Company { get; set; }
    [MaxLength(100)]
    public string City { get; set; }
}

}

আমি কীভাবে পারি কর্ম সংস্থার ফর্মের ভাষার ভিত্তিতে রিসোর্স ফাইলগুলি থেকে বৈধতা বার্তা।

@page "/addemployeeValidation"
@inject NavigationManager NavigationManager
@inject IEmployeeService EmployeeService
@inject IStringLocalizer<AddEmployeeValidation> L

<h2>Create Employee</h2>
<hr />
<EditForm Model="@employee" OnValidSubmit="@CreateEmployee">
    <DataAnnotationsValidator />
    <ValidationSummary />
    <div class="row">
        <div class="col-md-8">
            <div class="form-group">
                <label for="Name" class="control-label">@L["Name"]</label>
                <input for="Name" class="form-control" @bind="@employee.Name" />
                <ValidationMessage For="@(()=> employee.Name)" />
            </div>
            <div class="form-group">
                <label for="Department" class="control-label">@L["Department"]</label>
                <input for="Department" class="form-control" @bind="@employee.Department" />
            </div>
            <div class="form-group">
                <label for="Designation" class="control-label">@L["Designation"]</label>
                <input for="Designation" class="form-control" @bind="@employee.Designation" />
            </div>
            <div class="form-group">
                <label for="Company" class="control-label">@L["Company"]</label>
                <input for="Company" class="form-control" @bind="@employee.Company" />
            </div>
            <div class="form-group">
                <label for="City" class="control-label">@L["City"]</label>
                <input for="City" class="form-control" @bind="@employee.City" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Save" />
                <input type="button" class="btn" @onclick="@Cancel" value="Cancel" />
            </div>
        </div>
    </div>
</EditForm>

@code {

    Employee employee = new Employee();

    protected async Task CreateEmployee()
    {
        await EmployeeService.CreateEmployee(employee);
        NavigationManager.NavigateTo("listemployees");
    }


    void Cancel()
    {
        NavigationManager.NavigateTo("listemployees");
    }
}   

আমি কয়েকটি নিবন্ধ পড়েছি এবং কয়েকটি জিনিস চেষ্টা করেছি তবে কিছুই কাজ করছে বলে মনে হচ্ছে না

স্টার্টআপ.সিএস-এ কোড `

পরিষেবাদিগুলি.এডস সার্ভারসিডব্লাজর (বিকল্পগুলি => বিকল্পগুলি। বিবরণী ত্রুটিগুলি = সত্য);

    services.AddLocalization(options => options.ResourcesPath = "Resources");
    var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("ar") };
    services.Configure<RequestLocalizationOptions>(options =>
    {
        options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en");
        options.SupportedUICultures = supportedCultures;
    });

আমি স্থানীয়করণের জন্য নিম্নলিখিত উদাহরণ ব্যবহার করছি, এটি ত্রুটি বার্তাকে স্থানীয়করণ কীভাবে তা দেখায় না https://www.c-sharpcorner.com/article/localization-in-blazor-server/

রিফ্রেন্স জন্য ফোল্ডার কাঠামো চিত্র

এখানে চিত্র বর্ণনা লিখুন

রিসোর্স ফাইলের উদাহরণটি ইংরেজী সংস্করণের জন্য একইভাবে আমার কাছে আরবি ফাইলও রয়েছে

এখানে চিত্র বর্ণনা লিখুন

নীচের স্ক্রিনশটে আপনি ফিল্ডের নাম রিসোর্স ফাইল থেকে টানছেন তবে বৈধতা বার্তার জন্য কেবল ইংরেজিতে দেখায় এটি কাজ করছে না

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


7

ডেটা টিকাশ ত্রুটি বার্তাগুলি স্থানীয় করার জন্য আমার সমাধান এখানে is আমি দুটি সংস্থান ফাইল তৈরি করি, একটি ক্ষেত্রের জন্য এবং অন্যটি ত্রুটি বার্তাগুলির জন্য।

  • DisplayNameResource ক্ষেত্র স্থানীয়করণের জন্য
  • ErrorMessageResource স্থানীয়করণের ত্রুটি বার্তাগুলির জন্য

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

Displayক্ষেত্রের নাম স্থানীয়করণের জন্য মডেল শ্রেণীর ব্যবহার বৈশিষ্ট্য দেখুন। বৈশিষ্ট্য অনুসারে রিসোর্স ফাইল ব্যবহারের ResourceTypeসম্পত্তি নির্দিষ্ট করতে Display:

[Display(Name = "Address", ResourceType = typeof(DisplayNameResource))]

এবং বৈধতা বৈশিষ্ট্যগুলিতে ব্যবহার করে ErrorMessageResourceNameএবং ErrorMessageResourceTypeসংস্থান ফাইল নির্দিষ্ট করতে:

[Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]

এখানে সম্পূর্ণ উদাহরণ:

public class SomeViewModel
{
    [Display(Name = "Address", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(256, ErrorMessageResourceName = "MaxLengthError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string Address { get; set; }

    [Display(Name = "Phone", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [RegularExpression("^09([0-9]{9})$", ErrorMessageResourceName = "PhoneLengthError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string Phone { get; set; }

    [Display(Name = "Password", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(50, MinimumLength = 6, ErrorMessageResourceType = typeof(ErrorMessageResource), ErrorMessageResourceName = "MinxMaxLengthError")]
    public string Password { get; set; }

    [Display(Name = "ConfirmPassword", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(50, MinimumLength = 6, ErrorMessageResourceType = typeof(ErrorMessageResource), ErrorMessageResourceName = "MinxMaxLengthError")]
    [Compare("Password", ErrorMessageResourceName = "PasswordConfirmMisMatch", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string ConfirmPassword { get; set; }
}

ত্রুটির বার্তাটি MaxLengthErrorহ'ল {0} cannot be longer than {1} character, তাই {0}স্থানীয়ভাবে দায়েরকৃত নামের {1}সাথে প্রতিস্থাপন করা হবে এবং আপনাকে 256অ্যাট্রিবিউটকে নির্দিষ্ট করে দিয়ে প্রতিস্থাপন করা হবে[StringLength(256,...


1
এটি চেষ্টা করা উচিত বলে মনে হচ্ছে আমি এটি চেষ্টা করব .. আপনি যদি গিথুবকে এই জাতীয় পোস্ট বা পোস্ট করতে পারতেন তবে এই বিষয়টি বা প্রশ্ন প্রায়শই উত্থাপিত হবে এবং প্রচুর বহুভাষিক বিকল্প রয়েছে
শিখছি

1
@ শিখেছি আমি নিশ্চিতভাবে গিথুবকে পূর্ণ উদাহরণ দেব।
মোহসেন ইসমাইলপুর

এই স্বল্পতা আমার প্রেক্ষাপটে অনেক উদাহরণ আছে Blazor যেমন আমার মত প্রোগ্রামার অনেক মহান হেল্প এবং হতে হবে ...
শিক্ষণ

1

এটি আগে জিজ্ঞাসা করা হয়েছে:

ব্লাজারে ভিউমোডেল স্থানীয়করণ কীভাবে যুক্ত করবেন?

আমি প্রস্তাব দিয়েছি যে ফ্লুয়েন্টভ্ল্যাডেশন ব্যবহার করা আরও ভাল পদ্ধতির হতে পারে। আমার গিথুব রেপোতে এখানে একটি লিঙ্ক রয়েছে যা দেখায় যে এটি কীভাবে কাজ করতে পারে:

https://github.com/conficient/BlazorValidationLocalization


আমি মনে সমাধান এই ধরনের কিন্তু প্রতিটি জন্য এই ইচ্ছার দুই মোডাল ফাইল ছিল এবং যদি প্রকল্পের বড় এটা পরিচালনা করা কঠিন হয়ে যাবে, হ্যাঁ এই সমস্যা এড়ানোর একটি কাজ করুন এবং জিনিস কাজ ... হয়
শিক্ষণ

আপনি "দুটি মডেল ফাইল" বলতে চাইছেন তা পুরোপুরি নিশ্চিত নয়। আপনি এখনও ফ্লুয়েন্টভ্ল্যাডেশনের সাথে রেক্স ব্যবহার করতে পারেন। দেখতে fluentvalidation.net/localization
সরকারের আর্থিক সাহায্যপুষ্ট আধা-সরকারি সংস্থা

-1

আমি এটি চেষ্টা করে দেখিনি!

অ্যাসপেট কোরের অফিকাল ডক্সে কীভাবে স্থানীয়করণ করা যায় সেই বিভাগ রয়েছে DataAnnotations সম্ভবত আপনি সেখানে কিছু সংকেত খুঁজে পাবেন ।


আমি এএসপিএন কোর এ নতুন আমি চেষ্টা করেছি কিন্তু আমি এই প্রশ্নগুলি পোস্ট করার আগে কাজ করেছিলাম না আমি নিজের মতো করে সমাধানের চেষ্টা করেছি উদাহরণস্বরূপ, ভিন্ন জিনিস চেষ্টা করে দেখছি তবে এটি আমার মামলার পক্ষে কাজ করছে বলে মনে হচ্ছে না ... এটি কিছুটা কঠিন আমি এএসপিএন এমভিসির কোনও অভিজ্ঞতা ছাড়াই এসপ নেটফর্ম ওয়েবফর্ম ব্যাকগ্রাউন্ড থেকে এসেছি ... সুতরাং আমার ফোকাস কেবল এসপ নেট কোর রেজার পৃষ্ঠাগুলির দিকেই রয়েছে .. আসুন আমরা দেখুন
শিখছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.