PDA

View Full Version : سوال: بدست آوردن نام روزهای هفته به زبان های مختلف



morteza271
پنج شنبه 14 مهر 1390, 15:17 عصر
سلام دوستان.

من یه مشکلی دارم که نمیدونم مشکل از سیستم منه یا اینکه مشکل از سی شارپه یا چیز دیگه ای ...

من میخوام یه تابع بنویسم که نام امروز رو برگردونه...
یعنی مثلا اگه تاریخ سیستم انگلیسی هست نام روز رو مثلا برگردونه Monday و اگه فرانسه هست برگردونه مثلا lundi و ...

چون برنامه ای دارم مینویسم به زبان های مختلف هست و بسته به انتخاب کاربر زبان عوض میشه و تاریخ سیستم رو هم به فرمتی که خودش توی سیستم انتخاب کرده توی برنامه تغییر میکنه نمیتونم از یک تایع خاص که مثلا روزهای انگلیسی رو فرانسوی کنه استفاده کنم.

من خودم کد زیر رو می نویسم ولی متاسفانه تاریخ سیستم هرچی انتخاب شده باشه بازم روز هفته رو به انگلیسی برمیگردونه!!!
dt.DayOfWeek

آیا راهی داره ؟
اصلا چرا سی شارپ وقتی تاریخ رو عوض میکنم بازهم روز هفته رو به انگلیسی برمگردونه!!

با تشکر

modern_amin
پنج شنبه 14 مهر 1390, 15:54 عصر
بوونژیووو هموطن ، فکر نکنم جواب بده
اگه باز نتونستی یه if بزار که اگر زبان کاربر فرانسه انتخاب هست و مقدار Monday رو با lundi جایگزین کنه
یاعلی!

morteza271
پنج شنبه 14 مهر 1390, 15:58 عصر
دوست عزیز من گفتم زبان های مختلف و فقط یک یا دو زبان که نیست!!!!!!
در ضمن من میخوام وقتی کاربر زبان تاریخ رو عوض میکنه برنامه بازم روزهای هفته رو به زبانی که سیستم انتخاب شده برگردونه...
دوستان دیگه کمک کنید...

nunegandom
جمعه 15 مهر 1390, 01:32 صبح
سلام:
DateTime dt = DateTime.Now;

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
label6.Text = dt.ToLongDateString();


http://msdn.microsoft.com/en-us/library/ff647353.aspx

اینم برای بدست آوردن fr-FR کد بالا:
Thread.CurrentThread.CurrentCulture.CompareInfo.Na me;



به عبارتی وقتی میخوایم تاریخ رو به زبان سیستم نشون بدیم از این کد استفاده میکنیم:
Thread.CurrentThread.CurrentCulture = new CultureInfo(Thread.CurrentThread.CurrentCulture.Co mpareInfo.Name);

morteza271
جمعه 15 مهر 1390, 16:24 عصر
نه دوست عزیز منظور من این نیست.
چرا هیچکی متوجه منظورم نمیشه!!!!!!!!

من میخوام نام روز هفته رو به زبانی که برای تاریخ سیستم انتخاب شده برگردونم.
خواهشا اگه راهی داره کمک کنید

FastCode
جمعه 15 مهر 1390, 17:49 عصر
یه راه پیشنهادی:

Dictionary<string, string[]> DayOfWeeks = new Dictionary<string, string[]>();
DayOfWeeks.Add("en", new string[] {"Saturday","Sunday","Monday","Tuesday","Thursday","Wednesday","Friday"});
DayOfWeeks.Add("fa", new string[] {"شنبه","یک شنبه","دو شنبه","سه شنبه","چهار شنبه","پنج شنبه","جمعه"});

DayOfWeek a = DayOfWeek.Monday;
string Text = DayOfWeeks[en][(int)a]

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

morteza271
شنبه 16 مهر 1390, 10:30 صبح
ای خدااااااااااااااااااااااا اااااااااااااااااااااااا ......................
چرا متوجه نمیشین دوستان !!!!!!!!!!!!!!!

من نمیخوام از مقادیر ثابت استفاده کنم وگرنه از این راهها بلدم!!!!!!!!
بیخیال ...
از یه روش دیگه استفاده کردم تا الان که خطا نداده.
ممنونم از دوستان بابت پاسخاتون.

FastCode
شنبه 16 مهر 1390, 13:32 عصر
آها
فهمیدم چی میخوای

[Serializable]
class CultureData
{
public string Culture { get; set; }

public string Saturday { get; set; }
public string Sunday { get; set; }
public string Monday { get; set; }
public string Tuesday { get; set; }
public string Thursday { get; set; }
public string Wednesday { get; set; }
public string Friday { get; set; }

}

static Dictionary<string, CultureData> CultureDataCollection = new Dictionary<string, CultureData>();
static object sync = new object();
static string GetDayOfWeekNameInCulture(CultureData MyCultureData, DayOfWeek DayOfWeek)
{
if(MyCultureData == null) throw new InvalidArgumentException("MyCultureData");
switch(DayOfWeek)
{
//case X: rerurn MyCultureData.X;
}
throw new InvalidArgumentException("DayOfWeek");
}

static string GetDayOfWeekNameInCulture(string Culture, DayOfWeek DayOfWeek)
{
if(Culture == null) throw new InvalidArgumentException("Culture");
if(CultureDataCollection == null)
{
lock(sync)
{
if(CultureDataCollection == null)//if still null
{
System.Serialization.Formatters.Binary.BinaryForma tter MyFormatter = new .....
CultureDataCollection = //deserialize data from config file.
}
}
}
CultureData MyCultureData = null;
try
{
MyCultureData = CultureDataCollection[Culture];
}
catch() { /*do something when culture doesn't exist; or use TryGetValue*/ }
switch(DayOfWeek)
{
//case X: rerurn MyCultureData.X;
}
throw new InvalidArgumentException("DayOfWeek");
}


خودشه؟

پ.ن.
IDE نداشتم.کدهای serialize رو حفظ نبودم.