PDA

View Full Version : سوال: نشان دادن نرم افزار با دو زبان فارسی و انگلیسی



Twoplus2010
سه شنبه 02 اسفند 1390, 22:11 عصر
سلام
من یه نرم افزار طراحی کردم می خوام هم بتونم با فارسی نشون بدم هم با زبون انگلیسی یعنی یه دکمه بزارم تو برنامه که با فشردن اون تمام اجزای نرم افزار انگلیسی بشه از نوارمنو گرفته تا تک تک لیبلایی که توش قرار گرفته و برعکس اگه میشه منو راهنمایی کنید باتشکر

vahdani_d
سه شنبه 02 اسفند 1390, 23:17 عصر
به نظر من برای این کار باید خاصیت Text همه اجزا و گزینه ها و ابزار رو دستی بدید و دو Radio botom یکی برای فارسی و دیگری برای زبان دوم (EN)
(یا یک چک باکس که اگه انتخاب شده بود مثلا EN و نشده بود FA ) که چک کنی هر وقت هر کدوم از اینها انتخاب شده بود ابزار با نام دلخواه مقدار بگیره یک دستور if ساده میتونه راحت این کار رو براتون انجام بده

mrbm_2007
سه شنبه 02 اسفند 1390, 23:25 عصر
این راه که دوستمون گفت راه منطقی و خوبه ی
ولی اگر می خوای یک کار حرفه ای بکنی می تونی مثلا یه کلاس از کلاس Label مشتق کنی که دو تا خاصیت Text_EN و Text_FA داشته باشه و بر اساس فارسی یا انگلیسی بودن (که داخل فرم اصلی تعیین میشه) تکست خودش رو آپدیت کنه

Twoplus2010
چهارشنبه 03 اسفند 1390, 01:21 صبح
دوستای عزیز چجور می تونم خاصیت language رو که به لیبل مشتق شده اضافه کردم با مقدار true , false مقدار دهی کنم

mrbm_2007
چهارشنبه 03 اسفند 1390, 03:43 صبح
به این مثال توجه کن
public class MyLabel : Label
{
public string Text_EN { set; get; }
public string Text_FA { set; get; }

private Language _language;
public Language language
{
set
{
if (value == Language.EN)
Text = Text_EN;
else if (value == Language.FA)
Text = Text_FA;
_language = value;
}
get
{
return _language;
}
}

public enum Language { EN, FA }
}

mrbm_2007
چهارشنبه 03 اسفند 1390, 03:46 صبح
Text_EN، Text_FA، language در مثال بالا پروپرتی هستند و در حالت دیزاین در پروپرتی های کنترل مورد نظر قابل مشاهده و تغییر هستند.

mrbm_2007
چهارشنبه 03 اسفند 1390, 03:56 صبح
83140

اینم مثال

83139

FastCode
چهارشنبه 03 اسفند 1390, 07:37 صبح
راه درست درستش اینه که هر textbox یا label یک Identifier یا مشخصه داشته باشه و با اون مشخصه متن خودش رو در یک دیکشنری پیدا کنه(منظورم کلاسه دیکشنریه)

شبه کد:
class locale
{
Dictinary<string,string> currentlocale;

string GetString(string Name)
{
string sout;
if(currentLocale.TryGetValue(Name,sout))
{
return sout;
}
return "Text Not Found";
}

Dictionary<string,Dictinary<string,string>> locales;
void addlocale
void removelocale
void save
void reload
void alterText
}

mostafaaa
چهارشنبه 03 اسفند 1390, 11:41 صبح
سلام
How to Localize Windows Forms and Change the Language at Runtime (http://www.dotnetcurry.com/ShowArticle.aspx?ID=174)