PDA

View Full Version : فارسی کردن پیغام های برنامه



karzari
چهارشنبه 01 خرداد 1387, 10:49 صبح
سلام
من یه برنامه دارم که امکان رخداد خطا همیشه وجود داره مثلا وقتی که یوزر و پسورد اشتباه وارد بشه
حالا من می خوام این پیغام ها رو فارسی کنم
در ضمن من می خوام در کلیه مسیج باکس و دیالوگ ها تمامی کپشن ها فارسی باشن
چگونه میشه چنین کاری کرد

B-Vedadian
چهارشنبه 01 خرداد 1387, 10:59 صبح
فارسی کردن پیغامهای معمولی که کاری نداره. برای فارسی کردن پیغام های خطا، اول یک ApplicationEvent از تب Additionalv روی فرم اصلی برنامت بذار، بعدش تو رویداد OnException پیغام مورد نظر رو نمایش بده. برای اینکه بتونی این کار رو بکنی، باید پیغام Exceptionهای ممکن رو ترجمه کنی و بر اساس کد نشونشون بدی. یک بخش هم برای قسمتهایی که احیانا ترجمه نکردی بذار که مثلا بگه "خطا با پیغام انگلیسی ... ایجاد شد، با توزیع کننده نرم افزار تماس بگیرید"!

SYNDROME
چهارشنبه 01 خرداد 1387, 20:51 عصر
یک نگاه به این هم بنداز.
http://barnamenevis.org/forum/showthread.php?p=512112#post512112
موفق باشید

daffy_duck376
پنج شنبه 16 خرداد 1387, 00:26 صبح
با عرض ادب خدمت SYNDROME
براي كپشن هم كافيه از منوي پروژه گزينه option ‌را انتخاب كني بعدش براي برنامه يه TITLE بنويسي

a_mosavian
یک شنبه 06 اردیبهشت 1388, 15:35 عصر
فایلهای Consts.pas و DBConsts.pas و SysConsts.pas و VDBConsts و RTLConsts.pas و ComStr.pas رو پیدا کنید و داخل پوشه ی برنامه کپی کنید و پیغام های آن را فارسی کنید

Tasiyan
یک شنبه 06 اردیبهشت 1388, 16:05 عصر
فایلهای Consts.pas و DBConsts.pas و SysConsts.pas و VDBConsts و RTLConsts.pas و ComStr.pas رو پیدا کنید و داخل پوشه ی برنامه کپی کنید و پیغام های آن را فارسی کنید

خسته نباشی a_mosavian،زحمت کشیدید
ولی یه نگاهم به تاریخ تاپیک می کردی بد نبود:اشتباه::لبخند:

a_mosavian
دوشنبه 07 اردیبهشت 1388, 14:42 عصر
چیزی که نوشتم تاریخ بردار نیست. همیشه کار میکنه. استثناها ایجاد شدن تا جلوی برنامه نویسی اضافی برای نمایش پیغام خطا رو بگیرن.رویداد OnException برای این تعبیه نشده که شما اونجا چه پیغامی نمایش بدید. صرفا برای تعیین نحوه نمایش پیغام های خطا و استثناها رو تغییر بدید. مثل کاری که توی ویندوز اکس پی انجام شده و مثلا پیغام خطا رو می تونید به سایت مایکروسافت بفرستید تا اونا بررسی کنن. این رویداد صرفا برای این موضوع هستش.
من این فایل ها را برای خودم فارسی کردم. اگه کسی می خواد بگه.
در ضمن حال نداشتم بگم برای اینکه پیغام های خطا و MessageDlg ها رو راست به چپ کنید باید خط زیر رو به سورس فایل اصلی پروژه اضافه کنید

Application.BiDiMode:=bdRightToLeft;
برای فارسی کردن دکمه های OK و Cancel هم تغییر فایل Consts.pas کفایت می کنه. لازم نیست برای پیاده کردن متدی برای نمایش پیغام با دکمه های فارسی خودتون رو آزار بدید.

*** هیچ وقت به سورس های اصلی VCL دست نزنید. اگه می خواید Customize کنید اول توی فولدر برنامه کپی کنید بعد دستکاری کنید.

**متاسفانه اکثر برنامه نویسای ما مدیریت استثناها رو بلد نیستند و هنور با سیستم برنامه نویسی داس کار میکنند و کد خطا رو کشف رمز میکنند. هنگامی که یک خطا هم توسط کاربر بوجود میاد از تابع MessageDlg یا ShowMessage استفاده می کنند. در صورتی که باید از دستور

raise Exception.Create('پیغام')
استفاده کنن.
اصلاح: البته حتما این پیغام رو تو بلوک try بگذارید تا بتونید نمونه های اشیایی که ایجاد کردید آزاد کنید و از Memory Leak جلوگیری کنید. چون ایجاد استثنا از اجرای ادامه روتین جلوگیری میکنه و کار ناقص میشه.
نکته: اگه استثنا رو توی رویداد BeforePost ایجاد کنیداز پست شدن رکورد جلوگیری می کند.
تکته 2: تابع Abort هم استثنای EAbort رو ایجاد میکنه که روتین رو ناقص می کنه و اگه دارید این متد رو استفاده می کنید، به دلایل بالا حتما توی بلوک try استفاده کنید. تنها تفاوت این استثنا به بقیه این است که پیغامی نمایش نمی دهد که اصطلاحا به آن Silent Exception می گویند

hojjatcroos
سه شنبه 08 اردیبهشت 1388, 12:35 عصر
اگه می خواهید پیغام های برنامه رو فارسی کنید به طور کلی باید پیغامتون رو از نوع فرم تعریف کنید(به نقل از یکی از اساتید) و درست هم هست.حتی با این کار می تونید دکمه های پیغام کپشن و چیز های دیگر رو هم فارسی کنید قبلا دربارش بحث شده

V60
شنبه 20 تیر 1388, 15:06 عصر
سلام a_mosavian
نیکی و پرسش
خب اگر فارسی کردی بذار تا ما هم استفاده کنیم
متشکر

جواد ملاولی
شنبه 20 تیر 1388, 23:08 عصر
سلام. این دو تا فایل رو در پوشه برنامه کپی کنید تا همه چی درست بشه.

V60
دوشنبه 29 تیر 1388, 21:34 عصر
سلام
این که فقط 10 درصد خطاها فارسی شده مهندس!

a_mosavian
جمعه 02 مرداد 1388, 03:24 صبح
مسئله نیکی و پرسش نیست. این فایل ها کپی رایت شرکت بورلند را دارند. مثلا راست به چپ شده ی کمپوننت ریبون دلفی 2009 را هم دارم که مشمول کپی رایت است. یا تقویم شمسی پیک آپ با استفاده از کمپوننت های Adv که زحمت خودم هست ولی کپی رایت شرکت سازنده را دارد و آپلود آنها احتمالا خلاف قوانین سایت خواهد بود. فایل زیر را برای ترجمه پیغام های دلفی 2009 ضمیمه کردم که البته روی نسخه های قدیمی تر قهرا کار خواهد کرد. آنهایی را فارسی کرده ام که نیاز داشته م. از ترجمه قسمت های زمان طراحی هم خودداری کرده م، نیازی هم نبود چون دلفی در زمان طراحی از این فایل ها استفاده نمی کند. محتویات فایل زیپ را باید درون پوشه برنامه بریزید.

a_mosavian
جمعه 02 مرداد 1388, 03:26 صبح
البته خودم روی فارسی کردن پیغام های Ado مشکل دارم. احتمالا متن پیغام ها داخل فایل های DLL خود ADO هست. اگر کسی برای آنها راه عاقلانه ای پیدا کرد لطف کند بزند.

جواد ملاولی
چهارشنبه 04 شهریور 1388, 09:38 صبح
محتویات فایل زیپ را باید درون پوشه برنامه بریزید.
سلام. ضمن تشکر از شما دوست عزیز، 2 تا مشکل دارم و از شما کمک می خوام:
1- فایلهای شما در حالت عادی درست کار می کنه ولی وقتی از کامپوننت alphaControls استفاده می کنم، فایل sConst رو که از فایلهای این کامپوننته نمی تونه کامپایل کنه (به دلیل وجود فایل Const شما در کنار برنامه) و خطا میده. چکار کنم؟
2- وقتی از دیتابیس DBISAM استفاده می کنم، پیغامهای دیتابیس فارسی نیستن. باز هم چکار کنم؟!
پیشاپیش از کمکت ممنونم.

جواد ملاولی
شنبه 07 شهریور 1388, 18:08 عصر
رفقا لطفاً کمک کنن.

a_mosavian
شنبه 05 دی 1388, 14:14 عصر
آقا جواد،
لطفا متن شرح خطا رو بگید شاید بتونم کمکی کنم.
با DBISAM کار نکردم. ولی اگه کنترلر خطا مثل ADO جزء خود موتور باشه متاسفانه نمیشه کاری کرد. باید resource های فایل های DLL ش رو تغییر داد که عملا غیر ممکنه. ولی اگر جزء سورس دلفی ش باشه و شما دسترسی به سورس موتور داشته باشید، می تونید همین پروسه ای که من انجام دادم انجام بدید.

جواد ملاولی
سه شنبه 08 دی 1388, 23:31 عصر
آقا جواد،
لطفا متن شرح خطا رو بگید شاید بتونم کمکی کنم.
سلام جناب موسویان. خیلی ممنون از لطفتون.
اون خطا بر طرف شد. الان 2 تا مشکل دارم. یکی این که پیامهای مربوط به ADO به شکل زیر نشون داده میشه. (شکل 1)

و دومی این که من در سورس برنامه کد زیر رو می نویسم تا آیکون پیامها سمت راست بیاد:

Application.BiDiMode := bdRightToLeft;
و درست هم کار میکنه؛ ولی وقتی از کامپوننت Alpha Controls استفاده می کنم یه کم خراب میشه (شکل 2)
البته شاید این مشکل دوم هیچ ربطی به فایلهای شما نداشته باشه.

باز هم خیلی ممنون.

a_mosavian
پنج شنبه 22 بهمن 1388, 19:11 عصر
قابلی نداره جناب ملاولی،
من نمی دونم آلفا چطوری کار میکنه. ولی احتمالا توابع رسم مربوط به دیالوگ ها رو تغییر میده. بهترین کار اینه که اگه به سورس آلفا دسترسی دارید قسمت مربوط به رسم دیالوگ رو پیدا کنید و تصحیح کنید.
اون طوری هم که من فهمیدم این دستور کمی با اکس پی مشکل داره، علیرغم اینکه رسم دیالوگ تو ویستا درست و صحیح هست. متاسفانه وقت ندارم وگرنه قسمت باگ دار سورس دلفی رو پیدا می کردم و درستش رو میفرستادم. اگه وقت کردم این کار رو براتون می کنم

جواد ملاولی
شنبه 24 بهمن 1388, 00:42 صبح
جناب موسویان ضمن تشکر مجدد از شما، یه سوال دیگه هم داشتم. اگه بخوایم برنامه مون چند زبانه باشه، در مورد پیغامها باید چکار بکنیم؟ این یونیتها رو که کنار پروژه میذاریم فارسی میشن. برای زبانهای دیگه چی؟

جواد ملاولی
جمعه 21 اسفند 1388, 15:51 عصر
جناب موسویان! یونیتهایی که برای فارسی کردن پیغامها گذاشته بودید،‌ در دلفی 2010 جواب نمیده. آپدیت شون نکردید؟

BORHAN TEC
شنبه 22 اسفند 1388, 00:22 صبح
جناب موسویان ضمن تشکر مجدد از شما، یه سوال دیگه هم داشتم. اگه بخوایم برنامه مون چند زبانه باشه، در مورد پیغامها باید چکار بکنیم؟ این یونیتها رو که کنار پروژه میذاریم فارسی میشن. برای زبانهای دیگه چی؟
بايد از Resource ها استفاده كنيم. و تمام پيام ها را دا داخل Resource ها نگهداري كنيم و به فراخوار زبان انتخاب شده براي برنامه آنها را لود كنيم.

جواد ملاولی
شنبه 22 اسفند 1388, 00:33 صبح
بايد از Resource ها استفاده كنيم. و تمام پيام ها را دا داخل Resource ها نگهداري كنيم و به فراخوار زبان انتخاب شده براي برنامه آنها را لود كنيم.
با تشكر از شما؛ من خيلي با Resource ها كار نكردم. ممكنه بيشتر توضيح بديد؟

حسین خانی
شنبه 22 اسفند 1388, 09:40 صبح
با سلام :لبخندساده:


من خيلي با Resource ها كار نكردم. ممكنه بيشتر توضيح بديد؟ به تاپیک آقای Mahmood_N (http://barnamenevis.org/forum/member.php?u=16833) در لینک زیر مراجعه کنید :


http://barnamenevis.org/forum/showthread.php?p=931200#post931200


موفق باشید ...

جواد ملاولی
پنج شنبه 12 فروردین 1389, 14:29 عصر
برای فارسی کردن پیغامها در دلفی 2010، کسی یونیتهای آپلود شده در همین تاپیک رو آپدیت نکرده؟

mofrad
یک شنبه 03 مرداد 1389, 20:46 عصر
چه جوری توی 2010 پیغام ها رو فارسی کنم؟
من فایل consts.pas رو ندارم! فقط کامپایل شده است (consts.dcu)

MOJTABAATEFEH
دوشنبه 04 مرداد 1389, 12:56 عصر
سلام
من یه برنامه دارم که امکان رخداد خطا همیشه وجود داره مثلا وقتی که یوزر و پسورد اشتباه وارد بشه
حالا من می خوام این پیغام ها رو فارسی کنم
در ضمن من می خوام در کلیه مسیج باکس و دیالوگ ها تمامی کپشن ها فارسی باشن
چگونه میشه چنین کاری کرد

دوست عزیز از کد زیر هم می توانید استفاده کنید


MessageBox( Handle, PChar('Your Message'), PChar('Your Caption'), MB_OK + MB_ICONSTOP + MB_DEFBUTTON1 + MB_APPLMODAL + MB_RIGHT + MB_RTLREADING);

mofrad
دوشنبه 04 مرداد 1389, 13:09 عصر
با احترام . جناب MOJTABAATEFEH تاپیک اون بنده خدا یکم قدیمی نیست!:متفکر:
سؤال بنده جدیدتره!
اگه کسی یونیت Consts.pas دلفی 2010 رو داره بذاره خیییییلی ممنون میشم. یا حداقل کامپایل شده با پیغام های فارسی رو دوستان اگه دارن بذارن تا ما هم فیض ببریم!
ممنون

Pascal
دوشنبه 04 مرداد 1389, 13:24 عصر
با احترام . جناب MOJTABAATEFEH تاپیک اون بنده خدا یکم قدیمی نیست!:متفکر:
سؤال بنده جدیدتره!
اگه کسی یونیت Consts.pas دلفی 2010 رو داره بذاره خیییییلی ممنون میشم. یا حداقل کامپایل شده با پیغام های فارسی رو دوستان اگه دارن بذارن تا ما هم فیض ببریم!
ممنون
این فایل را می توانید در آدرس RAD Studio\7.0\source\Win32\vcl پیدا کنید با این حال من فایل را ضمیمه می کنم

mofrad
دوشنبه 04 مرداد 1389, 13:36 عصر
این فایل را می توانید در آدرس RAD Studio\7.0\source\Win32\vcl پیدا کنید با این حال من فایل را ضمیمه می کنم
ممنون
بله ولی من دلفیم بدون سورسه و کامل نصب نیست!!!
باز هم ممنون