ساخت سایت چند زبانه با Asp.Net

یکشنبه 22 اردیبهشت 1392

امروزه سایت ها چند زبانه در اینترنت از اهمیت فراوانی برخوردادر هستند ، علاوه بر اینکه بازدیدکنندگان خود را وسعت داده اید کار موتور های جستجو را نیز برای جستجو راحت تر کرده اید .

امروزه سایت ها چند زبانه در اینترنت از اهمیت فراوانی برخوردادر هستند ، علاوه بر اینکه بازدیدکنندگان خود را وسعت داده اید کار موتور های جستجو را نیز برای جستجو راحت تر کرده اید .

در سایت های استاتیک (ایستا) ایجاد یک سایت چند زبانه بسیار مشکل بوده و کل سایتی که طراحی کرده اید را باید کپی کرده و آن را ترجمه نمایید ، علاوه براین برای تغییر هر قسمت زمان زیادی از شما گرفته خواهد شد .

خوشبختانه در Asp.NET امکانات بسیار جالبی برای ایجاد یک سایت چند زبانه در نظر گرفته شده است .

نکات زیر برای یک سایت چند زبانه نیاز است :

  •  ظاهر سایت برای زبان های راست به چپ (RTL) و چپ به راست (LTR)
  • متن های ثابت سایت (مانند کلمات : تایید ، انصراف و....)
  • متن های داینامیک سایت که از بانک اطلاعات بازخوانی خواهد شد .
  • دکمه تغییر زبان

برای شروع کار یک پروژه به نام MultyLanguage ایجاد نمایید ، یک بانک اطلاعاتی نیز برای ذخیره محتوای سایت ایجاد نمایید .

یک پوشه به نام Theme ایجاد نموده و دو پوشه دیگر به نام های RTL و LTR نیز به این پوشه اضافه کنید ، داخل این پوشه ها تم های سایت شما قرار خواهد گرفت .

بنابراین بنده یک پوشه دیگر به نام Theme1 به هر یک از این پوشه ها اضافه کردم و داخل هر کدام یک فایل Css قرار دادم که چینش سایت را مشخص می نماید .

خوب حال به سراغ بخش دوم یعنی متن های ثابت سایت می روید ، این بخش را توسط GlobalResource ها انجام خواهیم داد .

برای اینکار وارد منوی WebSite و سپس Add Asp.NET Folder و سپس App_GlobalResources را انتخاب نمایید ، با انتخاب این گزینه یک پوشه با این نام به پروژه شما اضافه خواهد شد .

بر روی این پوشه کلیک راست نموده و گزینه Add New Item را انتخاب نمایید ، از لیست آیتم های موجود آیتم Resource File را انتخاب کرده (Resource.resx) و دکمه Add را بفشارید .

حال دوباره این عمل را تکرار کرده و سه فایل Resource دیگر با نام Resource.fa.resx و Resource.en.resx و Resource.ar.resx به ترتیب برای زبان های فارسی ،انگلیسی و عربی اضافه نمایید .

یکی از فایل اضافه شده (مثلا Resource.fa.resx) را باز نمایید این فایل دارای یک جدول با سه ستون Name و Value و Comment می باشد .

به عنوان مثال مقادیر زیر وارد این جدول نمایید :

و برای فایل Resource.en.resx نیز مقادیر زیر :

 

و به همین ترتیب برای فایل زبان عربی...

خوب حال به سراغ قسمت سوم یعنی بانک اطلاعاتی می رویم ، یک جدول به نام TBLContents به بانک اطلاعاتی خود به صورت زیر اضافه کنید .

و به عنوان مثال رکورد های زیر را اضافه نمایید :

 

خوب حال کمی کد نویسی می کنیم .

فایل Global.asax را به پروژه اضافه کنید  ، فضا نام های زیر را اضافه نمایید :

<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.Threading" %>

و در رویداد Application_BeginRequest به صورت زیر کد نویسی کنید :

 

کد های فوق کوکی mylang را چک می کند ، اگر این کوکی وجود نداشته باشد آنرا ایجاد کرده و مقدار پیشفرض fa را وارد آن می کند ، این بخش زبان پیشفرض سایت شما را تعیین می کند ، شما میتوانید آنرا به en یا ... تغییر دهید .

در خط ها بعد زبان پیشفرض سیستم تعیین می گردد ، این کدها GlobalResource مرتبط را بارگزاری می نماید .

کار ما با فایل Global.asax تمام است .

یک فایل به نام Hello.aspx به پروژه اضافه نمایید ، قبل از هر چیز لینک Css را اضافه نمایید :


 
 

ذقت نمایید که خاصیت runat را برابر server قرار داده و یک id (مثلا MyCss) برای آن تعیین نمایید .

در متد Page_Load کد زیر را وارد نمایید :

 

متد GetGlobalResourceObject مقدار SiteDir را از GlobalResource جاری دریافت می کند ، بنابراین تم مربوط به RTL یا LTR لود خواهد شد .

البته شما میتوایند مقدار Theme1 را نیز از کوکی یا دیتابیس یا هرجای دیگر بخوانید ، که خارج از بحث این مقاله است .

حال به سراغ  صفحه Hello.aspx می رویم ، یک Label برای نمایش پیام خوش آمدگویی به صفحه اضافه کنید ، طبق تصویر زیر وارد خاصیت Expressions شده و خاصیت Text آن را به فایل resource و گزینه Welcome بایند می کنیم :

و به همین ترتیب برای دکمه تایید .

حال میخواهیم با کلیک بر روی دکمه تایید اطلاعات زبان جاری از بانک اطلاعاتی دریافت و داخل صفحه نمایش داده شود :

در رویداد مربوط به کلیک شدن دکمه تایید ، کد های مربوط به دریافت اطلاعات از بانک را به صورت زیر می نویسم :

 

در کد فوق اطلاعات از بانک اطلاعاتی با شرط بر روی  زبان دریافت و در لیبل نمایش داده می شود .

تنها چیزی که باقی مانده دکمه های تغییر زبان است ، سه عدد LinkButton به صفحه اضافه کنید ، خاصیت CommandArgumant را برابر زبان مورد نظر قرار دهید (fa ، en ، ar) و رویداد Command هر سه را به یک ساب روتین متصل کنید (البته میتوانید به دلخواه خود این قسمت را کد نویسی کنید) :

 


کد فوق یک کوکی با همان نام ایجاد کرده و زبان جدید را جایگزین می نماید .

کار تمام است سایت چند زبانه شما حاضر است.

فایل های ضمیمه

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید