ASP.NET کور ایم وی سی بلٹ ان فیچرز کے ساتھ ملٹی لنگول سوئچنگ

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

ماحول

بصری سٹوڈیو
  • بصری سٹوڈیو 2019
ASP.NET کور
  • 3.0
  • 3.1

پہلے

ASP.NET بنیادی MVC مقامیانے خصوصیات کو ظاہر کرنے کے لئے ایک سے زیادہ زبانوں کے درمیان سوئچ کرنے کے لئے استعمال کریں.

ترجمہ متن کے لیے ایک وسیلہ مسل بنائیں

وسیلہ مسلیں (مسل) ذخیرہ کرنے کے لیے ایک پوشہ بنائیں جو متن کا انتظام کرتا ہے ۔ جگہ کہیں بھی ہے ، لیکن اسے براہ راست راستے سے نیچے چھوڑ دیں. یہ راستہ بعد میں ترتیبات پر بھی اثر انداز ہوتا ہے.

پراجیکٹ پر دایاں کلک کریں اور ا ضافہ کریں یا نیا پوشہ منتخب کریں ۔

image

فولڈر کا نام وسائل چھوڑ دیں ۔ آپ اس فولڈر کا نام منمانے بھی مقرر کرسکتے ہیں ، لیکن آپ اس فولڈر کا نام بعد میں ترتیبات میں وضاحت کرسکتے ہیں.

image

پھر ہر زبان کے لئے متن درج کرنے کے لئے ایک ذریعہ فائل بنائیں.

وسائل کے فولڈر پر دائیں کلک کریں اور شامل کریں یا نئی شے منتخب کريں ۔

image

وسیلہ مسل منتخب کریں (.... نام مسل صوابدیدی ہو سکتا ہے لیکن بعد میں اختصاص کردہ نام سے مشابہ ہونا چاہیے ۔ اب کے لئے ، چلو کہتے ہیں کہ شارادریسوورکا.

image

جب آپ تخلیق کرنے کے بعد. فائلوں کے بعد ، اسے کھولنے کے لئے ڈبل کلک کریں ، اور پھر اس نام کو لکھیں جو متن اور متن کی شناخت کرتا ہے جو آپ اصل میں ظاہر کرنا چاہتے ہیں. شارادریسوورکا. پھر x مسل اس مسل کی حامل ہے اگر زبان موجود نہ ہو ۔ میں یہاں جاپان میں داخل ہوا ۔ اگر آپ چاہتے ہیں کہ دیگر زبانیں ، جیسے انگریزی ، بنیادی طور پر ، ان زبانوں میں درج کریں.

یہاں ہم نمونے کے طور پر ہیلو اور الوداع درج کریں. نوٹ کریں کہ یہ کیس حساس ہے.

image

دیگر زبانوں کے لیے وسیلہ مسلیں بنانے کے لیے جاری رکھیں ۔ زبان کی شناخت کے لیے ، نام مسل کی اختصاص کریں ، مثلا شارادریسوورکا. ≪ ثقافت ضابطہ >. .. آپ کو ایک یا دونوں کے مجموعے کی وضاحت کر سکتے ہیں ISO 639 اور ISO 3166 کے لئے ثقافت کوڈ. سپورٹ کوڈ ایک وقت سے وقت سے تبدیل کرنے کے تابع ہے ، لہذا مائیکروسافٹ سائٹ پر کولٹورینفا کلاس براہ مہربانی صفحے سے رجوع کریں.

اس وقت, en (انگریزی) اور es (ہسپانوی) تیار کر رہے ہیں. جاپانی دستیاب نہیں ہے کیونکہ یہ طے شدہ ہے ۔

image

ہر فائل کے لئے اسی حالت میں چابیاں کے ساتھ ترجمہ شدہ متن درج کریں.

image

image

اگلا ، آپ کے پاس ایک فائل ہوگی جو صرف کلاسوں کی وضاحت کرتا ہے. آپ اسے اسی نام کے ساتھ تخلیق کرتے ہیں جس میں آپ نے ابھی پیدا کیا ہے.

اصل میں ، مجھے اس بات کی پرواہ نہیں ہے کہ کوڈ فائل کا نام کیا ہے کیونکہ آپ کو صرف اندر کلاس کے نام سے ملنا پڑتا ہے ، لیکن اسے چھوڑ دو تاکہ یہ سمجھنا آسان ہے. اس سے کوئی فرق نہیں پڑتا کہ آپ کوڈ لکھنا چاہتے ہیں.

image

جگہ کا نام اس منصوبے کی جڑ بنائیں اور ایک خالی کلاس بنائیں.

namespace LocalizationText
{
  // クラス名は作成した .resx のファイル名と同じにする必要がある
  public class SharedResource { }
}

ہر پروگرام کو درست کریں

Startup.cs

Startup.cs درست کریں ۔ مندرجہ ذیل کونفاگوریسرواک طریقہ کی وضاحت کریں:

خدمات. اضافی (). اگر ایک ادویولوکالازاٹاون طریقہ ہے تو ، دونوں نقطہ نظر کی طرف سے ترجمہ اور کنٹرولر کی طرف ہے مجھے یقین ہے کہ میں اسے حاصل کر سکتا ہوں ، لیکن جیسا کہ سرکاری ویب سائٹ کی خدمات پر بھی ہے. ایک دوسرے کے ساتھ ادلوکالازاشن طریقہ کار کو کال کرنے کے ساتھ کوئی مسئلہ نہیں ہے.

اختیارات. ریسوورسسپیٹہ اس پوشہ کی راہ کا اختصاص کرتا ہے جہاں مسل موجود ہے ۔ اگر دونوں کی وضاحت کی جاتی ہے تو ، خدمات. اضافی (). ادویولوکالازاٹاون طریقہ سبقت لے جاتا ہے.

public void ConfigureServices(IServiceCollection services)
{
  services.AddControllersWithViews();

  // Resx ファイルのあるフォルダを指定する。
  // コントローラー側でしか使用しないならこちらでもよい。AddViewLocalization を使用するならこちらはなくても動作する。
  //services.AddLocalization(options => options.ResourcesPath = "Resources");

  services.AddMvc()
    // ローカライズに必要。Resx ファイルのフォルダパスを指定
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; });
}

پھر Startup.cs کے لئے ترتیب کے طریقہ میں ترمیم کریں . اگر آپ صرف وسائل کی فائل کو پڑھنا چاہتے ہیں ، تو آپ کو اس کی ضرورت نہیں ہے. وہ کوڈ جو صارف کو زبان کی منمانے کی وضاحت کرنے کی اجازت دیتی ہے ۔

ہم معیار کے طور پر ASP.NET کور MVC میں تعمیر کی خصوصیات کا استعمال کر رہے ہیں. مندرجہ ذیل کوڈ "query سٹرنگ" ، "کوکی" ، اور "صارف کے ماحول پر منحصر ہے-زبان HTTP ہیڈر" کو قبول کرتا ہے. آپ ان میں سے ایک میں ڈسپلے زبانوں کے درمیان سوئچ کر سکتے ہیں. ہم بعد میں آپ دیکھیں گے کہ کس طرح اصل آپریشن کی جانچ پڑتال کریں.

سواٹچابلی زبان صف (سپپورٹیدکولٹوراس) میں یہاں بیان کی گئی ہے ۔ میں نے وضاحت کی ڈیفالٹ زبان کے طور پر ، لیکن میں نے اس وقت کی پاس فائل کو پیدا نہیں کیا ہے. شارادریسوورکا اگر اس کے علاوہ ایک زبان ہے تو ، es کا تعین کیا جاتا ہے.

آپ کو آپ کی حمایت زبانوں سے UI الگ کر سکتے ہیں, لیکن اس کو الگ کرنے کے لئے زیادہ سے زیادہ فائدہ نہیں ہے. آپ کو ایک ہی زبان ہے.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  if (env.IsDevelopment())
  {
    // 省略
  }

  // 標準の機能で切り替えたい言語を定義します。
  var supportedCultures = new[]
  {
    new CultureInfo("ja"),
    new CultureInfo("en"),
    new CultureInfo("es"),
  };

  // 標準の言語切り替え機能を有効にします。対応しているのは「クエリ文字列」「Cookie」「Accept-Language HTTP ヘッダー」です。
  app.UseRequestLocalization(new RequestLocalizationOptions
  {
    DefaultRequestCulture = new RequestCulture("ja"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
  });

  app.UseHttpsRedirection();
  app.UseStaticFiles();

  // 省略
}

controllers\homecontroller.cs

Controllers\homecontroller.cs مسل ۔ کنٹرولر کی طرف سے ایک مقامی زبان حاصل کرنے کے لئے, اسٹرانگلوکالیزر کونسٹروکٹاور میں موصول ہوئی ہے. شارادریسوورکا آپ کو پہلے پیدا کی کلاس کے طور پر ایک ہی نام ہونا ضروری ہے. متن وسیلہ مسل میں داخل کردہ کلیدی سلک کو گزرنے سے موصول شدہ لوکالیزر کے درآمد کار کو منظور کیا جاتا ہے ۔ بازیافت کیا جا سکتا. متن کی زبان کی درخواست کی جا رہی ثقافت کی بنیاد پر مقرر کیا جاتا ہے.

ویسے ، اسٹرانگلوکالیزر کے علاوہ ، ایک اہٹمللوکالیزر بھی ہے جو ایچ ٹی ایم ایل حاصل کرسکتا ہے.

public class HomeController : Controller
{
  private readonly ILogger<HomeController> _logger;
  private readonly IStringLocalizer<SharedResource> _localizer;

  // DI でローカライザーを取得します。
  public HomeController(ILogger<HomeController> logger, IStringLocalizer<SharedResource> localizer)
  {
    _logger = logger;
    _localizer = localizer;
  }

  public IActionResult Index()
  {
    // ローカライザーを使用して設定されている言語のリソースファイルからテキストを取得します。
    ViewData["Message"] = _localizer["Goodbye"];

    return View();
  }

  // 省略
}

مناظر \ _ViewImports ۔

منظر \ _ViewImports. cshtml فائل. نظر کی طرف ایک لوکالیزر استعمال کرنے کے لئے ، آپ کو اہٹمللوکالیزر کو انجکشن کرنا ہوگا. اگر آپ اسے اب کے لئے مندرجہ ذیل وضاحت کرتے ہیں تو یہ ٹھیک ہے. اس کے علاوہ ، شارادریسوورکا کو ایک ہی نام ہونا ضروری ہے جس کے ذریعہ آپ نے پہلے پیدا کیا ہے.

اہٹمللوکالیزر مائیکروسافٹ. اسپنیٹکوری. Mvc. مقامیانے جگہ کا نام ہے ، لہذا میں اس کا استعمال کرتے ہوئے کی وضاحت کروں گا.

اگر آپ صرف ایک خاص نقطہ پر لوکالیزر استعمال کرنا چاہتے ہیں تو ، آپ مندرجہ ذیل کوڈ کو علیحدہ نقطہ نظر فائل میں شامل کرسکتے ہیں. اگر آپ اسے _ViewImports. cshtml فائل میں لکھتے ہیں ، تو آپ خود بخود تمام نقطہ نظر فائلوں میں استعمال کرنے کے قابل ہو جائیں گے.

@using LocalizationText
@using LocalizationText.Models
@using Microsoft.AspNetCore.Mvc.Localization
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@* ビュー側でローカライザーを使用できるように定義します *@
@inject IHtmlLocalizer<SharedResource> Localizer

views\home\index.cshtml

Views\home\index.cshtml مسل ۔ کنٹرولر کی طرف سے حاصل کردہ متن اور نقطہ نظر پر براہ راست حاصل کردہ متن کو بالترتیب دکھایا جاتا ہے. نقطہ نظر کی طرف لوکالیزر بھی اندیاار کے لئے ایک اہم تار کی وضاحت کی طرف سے متن ہو جاتا ہے.

@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
  <h1 class="display-4">Welcome</h1>
  <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

@* ローカライザーから取得したテキストを表示します。 *@
<p>@Localizer["Hello"]</p>
<p>@ViewData["Message"]</p>

چیک آپریشن

طلب سلک

آپ URL کے استفسار سٹرنگ میں ایک ثقافت کوڈ کی وضاحت کرکے ڈسپلے زبان کو سوئچ کرسکتے ہیں. فارمیٹ ہے ؟ ثقافت = < ثقافت کوڈ >. اگر آپ اسے UI سے الگ کرنا چاہتے ہیں تو یہ ہو گا ؟ ثقافت = < ثقافت کے کوڈ > & UI ثقافت = < ثقافت کوڈ >.

اگر آپ کچھ متعین نہیں کرتے ہیں: اگر اختصاص نہیں کیا گیا تو شارادریسوورکا x استعمال کیا جاتا ہے ۔ (حقیقت میں ، ایک اور فیصلہ لاگو کیا گیا ہے...)

image

کے لئے مخصوص پیٹرن ? ثقافت = en. ڈسپلے زبان انگریزی ہے ۔

image

کے لئے مخصوص پیٹرن ? ثقافت = es. ڈسپلے زبان ہسپانوی ہے.

image

کے لئے مخصوص پیٹرن ? ثقافت = جے. اصل میں ، شارادریسوورکا.... x فائل استعمال کیا جاتا ہے. شارادریسوورکا x استعمال کیا جاتا ہے کیونکہ یہ موجود نہیں ہے.

image

کوئی ایسی زبان متعین کرنے کی کوشش کریں جو موجود نہ ہو ۔ شارادریسوورکا x استعمال کیا جاتا ہے کیونکہ یہاں کوئی متعلقہ فائل نہیں ہے.

image

کوکیز

کوکیز ڈسپلے زبان کو سوئچ کر سکتے ہیں. عام طور پر سرور کی طرف سے شائع ، لیکن اس وقت میں براہ راست براؤزر کی تقریب میں کوکیز کو رجسٹر کرنے کی کوشش کروں گا.

کیونکہ ہر ویب براؤزر میں ایک ڈویلپر کا آلہ ہے ، آپ اسے کوکیز رجسٹر کرنے کے لئے استعمال کرتے ہیں. ذیل کے اعداد و شمار میں ، آپ ڈویلپر کے اوزار کو ظاہر کرنے کے لئے کنارے پر F12 پریس کرسکتے ہیں.

متعلقہ کوکی کا نام ہے ۔ اسپنیٹکوری ثقافت ، اور زبان کی وضاحت کرتا ہے کہ قیمت کی شکل میں درج کریں c = < ثقافت کوڈ > | یواک = < ثقافت کوڈ >. کوکیز کے لئے ، آپ کو ui کوڈ بھی درج کرنا ضروری ہے ۔ اپنے کوکی کو رجسٹر کرنے کے بعد ، اسے تازہ کرنے کے لیے اپنا ویب براؤزر صفحہ تازہ کریں ۔ ایک کوکی سرور کو بھیجا جاتا ہے تاکہ سرور مخصوص زبان کو بازیافت کرے ۔

مندرجہ ذیل اعداد و شمار میں ، آپ درج کر سکتے ہیں c = en | یواک = En انگریزی کو ظاہر کرنے کے لئے.

image

قسم c = es | یواک = Es ہسپانوی دکھانے کے لیے.

image

قبول-زبان HTTP سرتحریر

قبول زبان HTTP ہیڈر ویب براؤزر سے سرور کے لئے درخواست کردہ ہیڈر کی معلومات کو چیک کرتا ہے. اس کے مطابق زبانوں کو سوئچ کرنے کی صلاحیت ہے.

آپ اپنے ویب براؤزر کی ترتیبات میں کوئی بھی قبول زبان بھیج سکتے ہیں ، لیکن پہلے سے طے شدہ طور پر آپ os زبان کی ترتیبات سے مماثل ہوسکتے ہیں ۔ قبول زبان اب بھیجی جاتی ہے ۔ (چاہے یہ اصل میں بھیجا جاتا ہے یا نہیں ہے اس پر منحصر ہے OS اور ویب براؤزر.) یہ زبان OS کی زبان کے لئے ویب براؤزر میں ابتدا کی جاتی ہے ، لیکن یہ درست ہوسکتا ہے.)

لہذا ، مثال کے طور پر ، ذیل میں اعداد و شمار میں دکھایا گیا ہے ، آپ انگریزی زبان کے OS کے ویب براؤزر میں صفحہ کھول سکتے ہیں اور اس کی معلومات بھیجیں ، لہذا آپ خود کار طریقے سے شارادریسوورکا. en. کو انگریزی دکھانے کے لئے منتخب کیا جاتا ہے.

image

اگر آپ سوال سٹرنگ میں موجود نہیں ہے کہ ایک زبان کی وضاحت کرنے کی کوشش, آپ کو اصل میں شارادریسوورکا استعمال کرنا چاہئے... قبول زبان اردو دکھاتا ہے کیونکہ این موجود ہے ۔

image

اگر جے سوال سٹرنگ میں بیان کیا جاتا ہے تو ، سوال سٹرنگ سبقت لیتا ہے اور جاپانی ظاہر ہوتا ہے.

image

خلاصہ

یہاں میں نے سب سے آسان طریقہ میں بہزبانی سوئچنگ کو لاگو کرنے کی کوشش کی. صارف کے ماحول سے ملنے کے لئے زبانوں کو سوئچ کرنے کے لئے ، ڈیفالٹ ڈسپلے زبان کے طور پر قبول زبان HTTP ہیڈر کا استعمال کریں. اگر صارف کسی بھی زبان کا انتخاب کرتا ہے تو ، یہ کوکیز کو شامل کرنے یا سوال سٹرنگ کے شامل کرنے کے لئے (یا براہ راست درج کریں) کا ایک اچھا خیال ہے.