PDA

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



resident
جمعه 16 اسفند 1392, 19:17 عصر
سلام.
من برای تعیین زبان سیستم چند تا 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 فارسی نیست.میخوام زبان سیستم فارسی باشه.
چکار کنم؟

sds1920
شنبه 17 اسفند 1392, 12:53 عصر
این روش برای تغییر زیان توی ویندوز 7 کار نمی کنه.
با استفاده از توابع زیر می تونید این کار رو بکنید.



public enum Languages
{
English = 0,
Farsi
}
[DllImport("user32.dll", SetLastError = true)]
private static extern int LoadKeyboardLayoutA(string pwszKLID, int flags);
public static void ChangeKeyboardLayout(Languages language)
{
if (language == Languages.English)
{
if (System.Environment.OSVersion.Version.Major == 5) InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("En-En"));
else //For Win 7
ClsStatics.LoadKeyboardLayoutA("00000409", 1);
}
else
{
if (System.Environment.OSVersion.Version.Major == 5) InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("fa-IR"));
else //For Win 7
{
System.PlatformID platform = Environment.OSVersion.Platform;
System.String windowstype = platform.ToString();
if (windowstype == "Win32NT") ClsStatics.LoadKeyboardLayoutA("00000429", 1);
}
}
}