امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
فارسی‌نویسی صحیح در برنامه‌ها
نویسنده پیام
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #1
فارسی‌نویسی صحیح در برنامه‌ها
فارسی‌نویسی درست

این برنامه که به شکل یک کتابخانه درش آورم توابعی داره که به شما کمک می کنه برای تصحیح ایرادات زبان فارسی در برنامه هاتون.

لینک برنامه روی خود سایت
http://www.iranvig.com/4547.html

اول از همه بگم که تمام کد های این برنامه از خودمه و یه نوبت چگونگی عملکرد این توابع رو براتون توضیح می دم.

در کل این برنامه کار های زیر رو انجام میده:
- تمام یاء های نقطه دار یعنی "ي" ها تبدیل می شند به شکل فارسی خودشون یعنی "ی"
- به طور کلی در کلمات جمع "ها" جمع در تایپ صحیح خودش نباید از کلمه قبلیش با یک فاصله جدا باشه. که این برنامه این اصلاح رو انجام می ده.
مثلا این غلطه "جمع ها" اما درستش می شه "جمع‌ها"
- در مورد پیشوند و پسوند هایی مثل "یی,های, می, نمی" هم دو مورد بالا اجرا خواهد شد. یعنی شما رشته خودتون رو به برنامه می دید و برنامه حروف به شکل برگردان صحیح فارسیش به شما تحویل می ده.

درن برنامه ای که دانلود خواهید کرد یک برنامه تست هم هست که درش به خوبی این مسئله نشون داده شده. دو تا فرم رو با هم مقایسه کنید که چه اتفاقی برای نوشته های فارسی شون بعد از اعمال توابع برنامه من افتاده.
توجه کنید که برنامه هایی که به این شکل تصفیه اصطلاح درشون اتفاق بیافته بسیار زیبا تر, شکیل تر و حرفه ای تر هستند.
من خودم دارم دیگه تو تمام پروژه هایی که آوردن زبان فارسی رو احتیاج داره به طور کامل از این کد استفاده می کنم.
اما درون اون کتابخانه چند تا تابع هست که خیلی جالبند در زیر عملکرد هر کدوم رو توضیح دادم:

کد:
Public Function StringCorrectPersian(ByVal StrIn As String) As String
شما رشته فارسی رو وارد این تابع کنید خروجی اون تصحیح شده اون رشته خواهد بود.
توجه کنید در بعضی از انواع پایگاه های داده دوستان دچار مشکل می شند با ذخیره و بازیافت "ي" های نقطه دار که این تابع کمک بزرگی برای اون ها خواهد بود.

کد:
Public Sub SCPO(ObjIn)
شما یک شیئ مثل CommandButton یا Label و یا هر چیزی که لازم هست کلیه متون فارسی اعم از Caption یا Tag یا ToolTipText درون اون شیئ به شکل صحیح خودش درباید, رو وارد این زیر برنامه کنید تا براتون کار رو اتوماتیک انجام بده.

کد:
Public Sub SCPF(FormIn)
و اما تابع جالب دیگه ما همین تابع SCPF است. شما فقط کافیه اسم فرمی که می خواید خود فرم, منو های فرم و تمام اشیای موجود در فرم به شکل صحیح فارسی تبدیل بشند, رو وارد این زیر برنامه کنید این زیر برنامه همه کار ها رو خودش انجام میده.

حالا چطور این برنامه میتونه حروف اشتباه رو تشخیص بده و یا اینکه چطور می تونه حروف صحیح رو جایگزین کند رو براتون توضیح خواهم داد.
(آخرین ویرایش در این ارسال: ۱۴-آبان-۱۳۸۶, ۲۲:۵۶:۳۴، توسط Darg.)
۲۹-مرداد-۱۳۸۶, ۲۰:۳۸:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : arnh
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #2
RE: برنامه فارسی نویسی صحیح در برنامه ها
دست شما درد نکنه به نظر برنامه جالب و مفیدی میاد. من قبلا به طور دستی همون ابتدای وارد کردن اطلاعات فارسی، اونها رو به طور درست وارد می کردم ولی بعدا به این نتیجه رسیدم که به زحمتش نمی ارزه!!! ولی با این برنامه می شه دوباره اون کار رو از سر گرفت.
الگوریتمش باید به این صورت باشه که داخل متن به دنبال "ی" نقطه دار می گرده و اون رو با کاراکتر صحیح جایگزین می کنه همینطور دنبال "می" و " ها " و ... هم می گرده و اسیس قبل یا بعد اونها رو ( که اضافه هست ) با کاراکتر فاصله جایگزین می کنه.
به نظر ساده میاد ولی احتمال بروز خطا داخل کد برنامه تبدیل شده وجود داره. اگه می شه یه توضیحی در مورد جلوگیری از بروز خطا بدید.

۳۰-مرداد-۱۳۸۶, ۰۹:۴۰:۱۵
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #3
RE: برنامه فارسی نویسی صحیح در برنامه ها
امروز (جمعه) بالاخره وقت کردم توضیحات تکمیلی رو قرار بدم
حالا لازم می‌دونم در ابتدا چند نکته مهم و کاربردی رو برای دوستان بگم بعد برم سراغ خود برنامه.


•ما در اینجا صحبتمون روی استاندارد یونی کد هست برای نگارش فارسی

•هر حرف در سیستم یونی کد دارای یک کد خاص به خودش هست نمونه‌های زیر رو ببینید:
ی= 1609
ي= 1610
بنابراین با توجه به اینکه کد‌های دو حرف "ی" و "ي" از هم مجزا هستند می‌شه از کد یونی اون‌ها برای استفاده و اصلاح در رشته استفاده کرد و نه خودشون.

•برای تبدیل هر عدد یونی کد به حرف معادل خودش در زبان وی بی 6 از عملگر:

کد:
Function ChrW(CharCode As Long(

استفاده می‌شه مثلا (ChrW(1609 معنی همون حرف "ی" یاء بدون نقطه رو می ده.

•در سیستم کد دهی بونی کد کارکتر خاصی وجود داره به اسم NonJoiner با مشخصات:

کد:
    AscW = 8204         ,Hex = 200C

وظیفه این کاراکتر اینه که, اگر بین دو حرف فارسی اومد اون دو حرف رو بدون قید و شرط از هم جدا کنه.
مثلا کلمه "جواد" رو در نظر بگیرید. اگر من حرف (ChrW(8204 بین حرف "ج" و "و" در کلمه جواد بیارم به شکل "ج‌واد" در میاد. خوب می‌بینید با وجود اینکه حرف "ج" و حرف "و" درست بعد از هم اومدند اما به دلیل وجود عملگر NonJoiner که به معنی "بدون اتصال" هست, اون دو حرف به هم نچسبیندند. اینجا من NonJoiner رو عملگر خطاب کردم چون حروفی از این دست در جدول کد‌های یونی بیشتر به یک علگر شبیه هستند تا یک حرف قابل نمایش.

مسئله بعدی اینکه اسم کامل این عملگر در جدول کد‌های یونی ZERO WIDTH NON-JOINER هست که می‌تونید اون رو در برنامه‌ای که قبلا دانلود کردید در ماژول mMain از پروژه FunctionsGJS و با اسم ChNonJoiner مشاهده کنید.

•اما کارکتر خاصی دیگری وجود داره به اسم Joiner با مشخصات:

کد:
    AscW = 8205        ,Hex = 200D

این کاراکتر هم یک عملگره و دقیقا برعکس کاراکتر قبلی عمل می‌کنه. یعنی اگر بین دو حرف فارسی بیاد اون دو حرف به هم می‌چسبند.
اسم کامل این عملگر در جدول کد‌های یونی ZERO WIDTH JOINER هست که می‌تونید اون رو در ماژول mMain با اسم ChJoiner مشاهده کنید.

•کارکتر خاصی دیگری وجود داره به اسم کامل LEFT-TO-RIGHT MARK با مشخصات:

کد:
    AscW = 8206          ,Hex = 200E

این کاراکتر هم یک عملگر هست و وظیفش اینه که اگر در ابتدای یک رشته اومد نوع نمایش اون رشته رو تبدیل کنه به استاندارد چیدمان چپ به راست. در برنامه من با اسم CHL2RN مشخص شده اما این کاراکتر برای ما مهم نیست چون ما در فارسی راست به چپ داریم که مورد بعدی توضیح دادم و خیلی مهمه.

•کارکتر خاصی دیگری وجود داره به اسم کامل RIGHT-TO-LEFT MARK با مشخصات:

کد:
    AscW = 8207          ,Hex = 200F

این کاراکتر هم یک عملگر هست و وظیفش اینه که اگر در ابتدای یک رشته اومد نوع نمایش اون رشته رو تبدیل کنه به استاندارد چیدمان راست به چپ یعنی برای زبان خودمان فارسی. در برنامه من با اسم CHR2LN مشخص شده و این کاراکتر اهمیت و کاربرد بالایی داره. این نکته برای خیلی از برنامه‌نویس‌های فارسی زبان مهم خواهد بود.

* برای اعمال خط الرسم فارسی (عربی) در محیط‌هایی که اجازه راست به چپ کردن رشته‌ها درش وجود نداره (مثل خصوصیت ToolTipText کنترل‌های وی بی) شما کافیه کاراکتر (ChrW(8207 رو به اون رشته اضافه کنید.

فقط برای اینکه این مورد کامل براتون جا بیافتد من مجبور شدم دوباره برنامه رو آپ لود کنم که درش همین مورد هم ذکر شده. ToolTipText


اما توضیح در مورد الگوریتم استفاده شده در برنامه:

-برای یاء‌های نقطه دار طبق توضیحاتی که در بالا عنوان شد خیلی سادست از فرمان زیر برای جایگزین کردن "ي" ها با شکل درستشون یعنی "ی" استفاده می‌شه:

کد:
Replace(StrIn,ChrW$(1610),ChrW$(1609))


-اما در مورد پسوند "ها", برای اینکه اشتباهی رخ نده از همین خاصیت پسوند بودنش استفاده می‌شه. یعنی اونجا‌هایی که بعد از "ها" فاصله باشه و با شرط اینکه حرف ماقبل "ها" یکی از حروف مجاز (حروف معمول زبان فارسی و نه علائم و نشانه‌ها) باشد و حرف قبل از "ها" فضای خالی باشد, یک کاراکتر (ChrW(8204 یا (ChrW(NonJoiner جایگزین فضای خالی قبل از "ها" می‌شه تا برای مثلا کلمه "جمع ها" که درستش "جمع‌ها" هست, به شکل "جمعها" در نیاد.

-در مورد پسوند "های" مثل بالا عمل می‌شه اما برای پیشوند‌های "می" و "نمی" با توجه به پیشوند بودنشون برعکس بالا عمل می‌شه.
(آخرین ویرایش در این ارسال: ۰۴-شهریور-۱۳۸۶, ۱۲:۱۷:۵۶، توسط Darg.)
۰۲-شهریور-۱۳۸۶, ۱۶:۴۰:۵۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, CRazYFULL, Mr.pRoGraMmer
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #4
RE: برنامه فارسی نویسی صحیح در برنامه ها
ممنون که توضیح دادی . استفاده از یونی کد و کدهایی که گفتی مخصوصا برای Tooltip خیلی جالب بود. آقا جواد ( اگه درست گفته باشم ) کلا طرح برنامه و الگریتمهای اون خیلی جالب هست . فکر می کنم اگه بشه روش کار کرد تا به صورت یه تولبار در محیط برنامه نویسی یا محیط های ویرایشگر متن مثل ورود آماده اش کنیم خیلی خیلی کاربردی بشه. اگه موافق باشید با هم روش کار کنیم. ( حتی شاید بشه تو پروژه های گروهی روش کار کرد )

۰۲-شهریور-۱۳۸۶, ۱۷:۲۷:۱۲
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #5
RE: برنامه فارسی نویسی صحیح در برنامه ها
Di Di نوشته است:فکر می کنم اگه بشه روش کار کرد تا به صورت یه تولبار در محیط برنامه نویسی یا محیط های ویرایشگر متن مثل ورود آماده اش کنیم خیلی خیلی کاربردی بشه. اگه موافق باشید با هم روش کار کنیم. ( حتی شاید بشه تو پروژه های گروهی روش کار کرد )
این درخواستی که دادی فکر نمی کنم زیاد کار ببره. متاسفانه من وقتم کامل پره اما شما کار رو شروع کن در بخش پروژه های گروهی من قول همکاری می دم.
۰۳-شهریور-۱۳۸۶, ۰۲:۱۰:۱۹
وب سایت ارسال‌ها
پاسخ
ashkan آفلاین
بنيانگذار سايت
******

ارسال‌ها: 1,553
موضوع‌ها: 80
تاریخ عضویت: آبان ۱۳۸۲

تشکرها : 0
( 140 تشکر در 87 ارسال )
ارسال: #6
RE: برنامه فارسی نویسی صحیح در برنامه ها
ممنون ازت . عجب توابع و توضیحات کاملی منم خیلی مشکل با فارسی بخصوص توی بانک اطلاعاتی دارم واقعیتش اصلا هم نمیدونستم چطور میشه رفعش کرد. ممنون واقعا زحمت کشیدی.

آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
۱۴-شهریور-۱۳۸۶, ۰۷:۴۱:۲۹
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #7
RE: برنامه, فارسی‌نویسی صحیح در برنامه‌ها
یکی از دوستان سوال کرده بود چطور می شه تاریخ به شکل اعداد فارسی در کنترل MaskText مایکروسافت داشت.

من با اطلاعات همین تاپیک برنامه ضمیمه رو نوشم که چکونگی این کار رو درش می بینید.
خیلی خیلی سادست کد ها رو مطالعه کنید.


فایل‌(های) پیوست شده
.zip   MaskFarsi.zip (اندازه: 1.5 KB / تعداد دفعات دریافت: 159)
(آخرین ویرایش در این ارسال: ۱۴-آبان-۱۳۸۶, ۱۲:۵۴:۲۵، توسط Darg.)
۱۴-آبان-۱۳۸۶, ۱۲:۵۲:۵۲
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #8
RE: فارسی‌نویسی صحیح در برنامه‌ها
http://mahtaab.wordpress.com/2008/01/19/post_11
۲۶-اردیبهشت-۱۳۸۷, ۰۰:۰۰:۲۷
وب سایت ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #9
RE: فارسی‌نویسی صحیح در برنامه‌ها
آداب درست نوشتن
۱۵-تير-۱۳۸۸, ۱۷:۴۵:۲۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mojtabamalaekeh
farzinf آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: آذر ۱۳۸۷

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #10
RE: فارسی‌نویسی صحیح در برنامه‌ها
سلام دوستان

من این توابع رو لازم دارم اگه میشه یکی واسم دوباره آپلود کنه خیلی ضروریه

با تشکر
۰۹-فروردین-۱۳۹۰, ۱۱:۴۴:۲۳
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  گرفتن متن فارسی و نمایش آن از فایل متنی GTAexcess 2 3,065 ۱۳-اردیبهشت-۱۳۹۵, ۱۴:۰۸:۴۷
آخرین ارسال: Ghoghnus
  بدست آوردن عین قسمت صحیح و اعشار mr91090 3 3,559 ۱۲-دى-۱۳۹۴, ۱۴:۵۲:۴۲
آخرین ارسال: sharin
  تبدیل کد به یونیکد فارسی aleas 4 5,220 ۱۱-اسفند-۱۳۹۲, ۱۱:۱۶:۴۸
آخرین ارسال: aleas
Rolleyes مشکل با فارسی javaweb 1 2,746 ۰۷-فروردین-۱۳۹۲, ۱۵:۵۱:۲۴
آخرین ارسال: aleas
  راهنمایی برای چند مورد در برنامه نویسی VB6 Rain_Saeid 14 11,460 ۱۲-شهریور-۱۳۹۱, ۱۰:۰۸:۲۰
آخرین ارسال: vigraz
  مسیج باکس فارسی amin_amin 4 7,638 ۰۳-شهریور-۱۳۹۱, ۱۸:۳۴:۵۸
آخرین ارسال: ادریس قاسمی
  مشکل با زبان فارسی در کیلاگر XSS 11 9,477 ۲۶-اسفند-۱۳۹۰, ۱۷:۱۵:۴۰
آخرین ارسال: mohammadmohsenamiri
Shy مشکل بدست آوردن حجم فایلهای فارسی farshid_vb 4 5,234 ۰۷-آذر-۱۳۹۰, ۱۱:۰۴:۵۰
آخرین ارسال: Di Di
Wink تواناترین زبان برنامه نویسی دنیا مرد یخی 3 5,391 ۳۰-آبان-۱۳۹۰, ۱۱:۵۴:۵۳
آخرین ارسال: lord_viper
  نحوه فارسی نوشتن در vb marjan_r2000 15 21,634 ۲۱-اردیبهشت-۱۳۹۰, ۲۳:۲۴:۵۵
آخرین ارسال: Ghoghnus

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS