PDA

View Full Version : ست نشدن Thread.CurrentThread.CurrentUICulture



resident
یک شنبه 25 اسفند 1392, 09:45 صبح
سلام.
من برای تعیین زبان سیستم چند تا Resource تعریف کردم.مقادیر رو هم ازش میخونم.
مشکلی که هست اینه که مقدار System.Threading.Thread.CurrentThread.CurrentCultu re همیشه en-US است.

من تو Application_Start() کدهای زیر رو نوشتم:

Thread.CurrentThread.CurrentCulture =CultureInfo.CreateSpecificCulture("fa-IR");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR");

ولی تو تابعی که برای خوندن مقدار key مورد نظرم از Resourceها نوشتم، مقدار Thread.CurrentThread.CurrentCulture فارسی نیست.میخوام زبان سیستم فارسی باشه.
چکار کنم؟

مهدی کرامتی
یک شنبه 25 اسفند 1392, 10:23 صبح
اولا کد فوق را در رویداد Application_BeginRequest قرار دهید، ثانیا کدتان را به شکل زیر تغییر دهید:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR");

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR");

resident
یک شنبه 25 اسفند 1392, 13:25 عصر
اولا کد فوق را در رویداد Application_BeginRequest قرار دهید، ثانیا کدتان را به شکل زیر تغییر دهید:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR");

Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR");




تشکــــــــــــــــــــــ ــــر فراواااااااااااان.... حل شد :)
من قبلا از این کد هم استفاده کرده بودم اما جواب نمیداد. نکته اش این بوده که باید در Application_BeginRequest میذاشتیم...

resident
یک شنبه 25 اسفند 1392, 20:35 عصر
یه سوال دیگه:
چطور میتونم بگم زبان مورد استفاده برای هر فیلد چی باشه و خودش اتوماتیک تغییر کنه؟
مثلا فرض کنید در فرم ورود اطلاعات افراد، نام و نام خانوادگی فارسی باشه و وقتی رفت روی فیلد ایمیل، زبان سیستم به انگلیسی تغییر کنه و وقتی روی فیلد بعدی رفت، دوباره فارسی بشه...

مهدی کرامتی
دوشنبه 26 اسفند 1392, 05:22 صبح
Cultue برای لود کردن ریسورس های مربوط به یک زبان استفاده میشه.

برای اینکه زبان ورودی در فیلدهای مختلف متفاوت باشه میبایست از راهی که اینترنت بانک های ایرانی استفاده می کنند پیروی کنید. در اون سایت ها خودشون از یک فارسی سازی کی برد مبتنی بر جاوا اسکریپت مانند این (http://hasheminezhad.com/kblayout) استفاده می کنند و می توانند کنترل داشته باشند که زبان کدام فیلد ورودی چه باشد.

kavayo
سه شنبه 27 اسفند 1392, 18:36 عصر
حال چگونه میشود داده هایی رو که از دیتابیس میگیریم و میخواهیم نمایش دهیم با انتخاب کاربر به صورت انگلیسی یا فارسی در آوریم؟

مهدی کرامتی
سه شنبه 27 اسفند 1392, 22:30 عصر
می توانید یک دکمه برای انتخاب Culture توسط کاربر بگذارید. وقتی کاربر یک زبان را انتخاب کرد در Session اش ذخیره کنید. در دستورات فوق بجای پاس دادن مقدار به صورت ثابت چک کنید اگر در Session نام Culture موجود است از آنجا بخوانید، وگر نه مقدار پیش فرض که قرار است زبان پیش فرض سایت لود شود را پاس دهید.
دیتابیس شما هم بالطبع میبایست مقادیر متنی را به ازای زبان های مختلف داشته باشد.

kavayo
چهارشنبه 28 اسفند 1392, 10:54 صبح
آیا نیمتوانم دو قالب متفاوت ایجاد کنم و بر حسب زبان انتخابی کاربر قالب مورد نظر به عنوان قالب پیش فرض قرار گیرد ؟و در مورد داده های دیتابیس ،یعنی در دیتابیس بایستی به ازای هر جدول یک جدول مشابه آن برای ورود داده های زبان دیگر ایجاد کنم ؟یا اینکه یک فیلد در جدول را دو بار یک بار برای ورود داده های فارسی و یک بار هم برای داده های انگلیسی ایجاد کنم؟

مهدی کرامتی
چهارشنبه 28 اسفند 1392, 11:25 صبح
من در سیستم های خودم معمولا یک جدول به نام Languages با فیلدهای LanguageID و LanguageTitle و CultrueCode ایجاد می کنم و زبان ها رو در اون تعریف می کنم. برای جدولهایی که داده های متنی دارند ستون های nvarchar که قرار است چند زبانه شوند را در یک جدول جدا قرار میدم که یک Foreign Key به جدول Languages داره. سپس هر ردیف متنی رو به ازای هر زبان یک بار جدا Insert میکنم.

resident
چهارشنبه 28 اسفند 1392, 11:48 صبح
یعنی شما استفاده از دیتابیس رو به استفاده از Resource ها ترجیح میدید. درسته؟