PDA

View Full Version : استفاده از localization برای سایت چند زبانه



nazaninam
چهارشنبه 10 خرداد 1385, 16:57 عصر
در یک سایت چند زبانه یک فرم برای ثبت نام دارم که فرض کنید نام و نام خانوادگی رو می گیره
نام : یک تکس باکس
نام خانوادگی : یک تکس باکس
من با یک querystring زبان رو تعیید می کنم اینجوری mysite.aspx?lang=fa یا mysite.aspx?lang=en
خوب حالا میخوام اگه en بود فرم این شکلی بشه
name: textbox
family: textbox
برای اینکار برای نام و نام خانوادگی از لیبل استفاده کردم ، راه سادش اینه که با یک if ساده مقادیر مختلف رو برای لیبل ها تعیین کنم ولی راه درستش اینه که از resource های localizaion استفاده شه کسی میتونه راهنمایی کنه؟

Farhad.B.S
چهارشنبه 10 خرداد 1385, 17:51 عصر
برای چه قسمتیش راهنمایی میخوای ؟

معمولا یه فایل ریسورس برای هر زبان ایجاد میکنند (این فایل میتونه برای کل اپلیکیشن باشه یا ممکنه هر صفحه یا ماژول فایل مربوط به خودشو داشته باشه)

در ساده ترین حالت زمان لود صفحه هر کنترل مقدارش از این فایل خونده میشه و به عنوان Text براش ست میشه.
تو چند مرحله بالاتر ممکنه کسی برای راحت تر کردن کارش یه کلاس از System.Web.UI.Page مشتق کنه و در ایونت PreRender یا حتی Load کدی بنویسه که به طور اتوماتیک کلیه کنترل
های موجود بر روی صفحه رو شناسایی کنه و تکست هر کنترل رو از فایل ریسورس استخراج کنه و به این کنترل ها اختصاص بده.

nazaninam
چهارشنبه 10 خرداد 1385, 20:55 عصر
میدونید مشکلم کجاست اینه که این resource از زبان پیشفرض استفاده میکنن که معمولا انگلیسی هست من میخوام از querystring که تو هر صفحه پاس میشه زبان رو تشخیص بده
اگه راه حل یا توضیحاتی هم در ضیمنه سایت های چند زبانه دارید بفرمایید استفاده کنیم

Farhad.B.S
پنج شنبه 11 خرداد 1385, 13:48 عصر
هر زبان باید فایل ریسورس مربوط به خودش رو داشته باشه که نامگذاریش ؛ به عنوان مثال برای زبان فارسی به شکل زیر هستش:

Default : MyResource.resx
Farsi : MyResource.fa.resx

کلاس های مربوط به کار با ریسورس ها هم با توجه به CultureId فعلی به طور اتوماتیک از فایل ریسورسی که با Culture فعلی مطابقت داره دیتا رو استخراج میکنند.

برای اطلاعات بیشتر :
http://www.codeproject.com/dotnet/Localization.asp

nazaninam
پنج شنبه 11 خرداد 1385, 16:53 عصر
ممنون آقا فرهاد میدونم بصورت اتوماتیک هست چطور میشه دستیش کرد که از query بخونی اینجوری قابل انعطاف میشه...

Farhad.B.S
جمعه 12 خرداد 1385, 00:47 صبح
مقاله بالا رو مطالعه کن.
ضمن اینکه برای تغییر Culture فعلی کافیه از کد زیر استفاده کنی :




System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-ir");
System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
System.Threading.Thread.CurrentThread.CurrentCultu re = calture;

Arminizer_88
دوشنبه 15 خرداد 1385, 11:14 صبح
هر زبان باید فایل ریسورس مربوط به خودش رو داشته باشه که نامگذاریش ؛ به عنوان مثال برای زبان فارسی به شکل زیر هستش:

Default : MyResource.resx
Farsi : MyResource.fa.resx

کلاس های مربوط به کار با ریسورس ها هم با توجه به CultureId فعلی به طور اتوماتیک از فایل ریسورسی که با Culture فعلی مطابقت داره دیتا رو استخراج میکنند.

برای اطلاعات بیشتر :
http://www.codeproject.com/dotnet/Localization.asp
کاملا درست و بهترین روش .

kochol
دوشنبه 21 آبان 1386, 18:32 عصر
سلام
چه طوری چپ چین و راست چین فرم رو درست کنیم.

kochol
سه شنبه 22 آبان 1386, 11:04 صبح
سلام
من یه فیلد direction اضافه کردم.


<form id="form1" runat="server" dir="<%$ Resources:, Direction%>">


ولی من می خوام که یه فایل داشته باشم و کلماتی مثله yes و no که زیاد تکرار می شن رو اونجا بنویسم.
یه فایل به اسم WebResources.resx ساختم و کد زیر رو نوشتم.


<form id="form1" runat="server" dir="<%$ Resources:WebResources, Direction%>">

ولی ارور می ده که نمی تونم دایرکشن رو پیدا کنم.