ساخت سایت چند زبانه با 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 هر سه را به یک ساب روتین متصل کنید (البته میتوانید به دلخواه خود این قسمت را کد نویسی کنید) :
کد فوق یک کوکی با همان نام ایجاد کرده و زبان جدید را جایگزین می نماید .
کار تمام است سایت چند زبانه شما حاضر است.
- ASP.net
- 15k بازدید
- 21 تشکر