نمایش صحیح متون فارسی-انگلیسی در جهت چپ به راست
۱۳۸۹/۰۱/۳۰ ۱:۳۸ منتشر شده در تاریخ : ۱۳۸۹/۰۱/۳۰ دسته بندی : آموزشی ، برنامه نویسی ، dotNET Framework ، SalarBlog 16
خوشبختانه اکثر کامپوننت های کنونی از ویژگی راست به چپ متون پشتیبانی می کنند، اما همچنان کامپوننت هایی هستند که این ویژگی را که برای ما حیاتی است پشتیبانی نمی کنند. در چنین مواقعی ممکنه که نیاز داشته باشید که حتما از آن ابزار استفاده کنید، ولی همچنان مشکل متون فارسی همراه با متون انگلیسی را خواهید داشت.
در ادامه با استفاده از کدی که تهیه کردم کاری می کنیم که متونی اینچنینی در حالت چپ به راست هم به درستی نمایش داده بشوند. برای نمونه:

کاری که این تابع انجام می دهد تغییر و جابجایی محل متون انگلیسی و فارسی هست. توجه کنید که متن تغییر داده شده قابل برگشت نیست و هیچ تابعی برای برگشت آن نوشته نشده، پس سعی کنید آن را در هیچ جایی ذخیره نکنید.
کد این کلاس همراه با پروژه نمونه از آدرس زیر قابل دریافت است.
به روزرسانی: نسخه جدیدی از این کلاس تهیه شد که در این آدرس قابل دریافت است.
ویرایش: همچنین نرم افزاری بر اساس همین کلاس نوشتم تا عمل تبدیل را بر روی فایل متنی انجام بده. این نرم افزار هم از همان لینک قابل دریافت است.
پ.ن1: ممکن است که این کلاس برای برخی کاراکتر ها به درستی کار نکند، در صورت مشاهده این موارد لطفا آنها را گزارش کنید تا بررسی شوند.
پ.ن2: در متون چند خطی ترتیب نمایش به پایین به بالا تغییر پیدا می کند و این به خاطر از آخر به اول شدن متون فارسی هست.
موفق باشید.
در ادامه با استفاده از کدی که تهیه کردم کاری می کنیم که متونی اینچنینی در حالت چپ به راست هم به درستی نمایش داده بشوند. برای نمونه:
کاری که این تابع انجام می دهد تغییر و جابجایی محل متون انگلیسی و فارسی هست. توجه کنید که متن تغییر داده شده قابل برگشت نیست و هیچ تابعی برای برگشت آن نوشته نشده، پس سعی کنید آن را در هیچ جایی ذخیره نکنید.
کد این کلاس همراه با پروژه نمونه از آدرس زیر قابل دریافت است.
به روزرسانی: نسخه جدیدی از این کلاس تهیه شد که در این آدرس قابل دریافت است.
ویرایش: همچنین نرم افزاری بر اساس همین کلاس نوشتم تا عمل تبدیل را بر روی فایل متنی انجام بده. این نرم افزار هم از همان لینک قابل دریافت است.
پ.ن1: ممکن است که این کلاس برای برخی کاراکتر ها به درستی کار نکند، در صورت مشاهده این موارد لطفا آنها را گزارش کنید تا بررسی شوند.
پ.ن2: در متون چند خطی ترتیب نمایش به پایین به بالا تغییر پیدا می کند و این به خاطر از آخر به اول شدن متون فارسی هست.
موفق باشید.
با سپاس از راه حل ارائه شده -
پاسخحذفدر این مورد من قبلا یک مطلب در مسیر
http://hajloo.wordpress.com/2009/03/02/persian-text-problem-in-ltr-forms/
نوشته بودم که البته راه دیگری را معرفی می کرد و کلا نه نیازی به برنامه نویسی داشت و نه حتی نیاز به پشتیبانی توسط برنامه ثالث - بنابراین همه جا قابل استفاده بود.
گرچه کاری که شما کردید هم خالی از لطف نیست و باید برای انجام آن از شما قدردانی کرد
عالیست! این دقیقا همون ایدهایه که مدتی سعی دارم بنویسمش! منتهی با زبان جاوااسکریپت.
پاسخحذفسپاس گذارم!
از دارا بودن همچین امکانی در استاندارد جدید خبر نداشتم، اما باز هم قابل استفاده نیست، مشکل اول تغییر محل تعدادی دکمه هست که از محل فعلی رواج شده توسط ویندوز تغییر پیدا می کنه، مشکل دوم تغییر فرمت(و نه نمایش) اعداد به فارسی که معلوم نیست در برنامه مشکل ایجاد نکنه (با توجه تغییر کد کلید).
پاسخحذفو مشکل اصلی عدم اطمینان به درایوری که داده اند با توجه به اینکه برای ویندوز 2000 است و در هیچ یک از ویندوز های سون 32bitو 64Bit من نصب نشد. و البته آخرین به روزرسانی درایور مربوط به سال 2003 هست.
خطاب به حسن
پاسخحذفاینایده جاوااسکریپت شما هم قبلا پیاده سازی شده کمی بیشترجستجو کنید . در وبلاگستان فارسی پیداش می کنید.
Nice Trick Good Luck
پاسخحذفUseful thing
پاسخحذفThanks
سلام
پاسخحذفممنون تو یه برنامه ازش استفاده کردم اسم سایتتون رو هم تو About گذاشتم
اگه مشکل قابل حلی داره با ایمیل بهم خبر بدید اگه مقدور بود نتونستم ایمیلتون رو پیدا کنم
مشکل که در تست های من نداشت, این کاربران که شما هم باشید هستند که اشکالات رو اعلام می کنند. در صورت بروز اشکال در کمترین زمان ممکن حلشون می کنم.
پاسخحذفخوشحالم مفید واقع شد.
می تونید مشترک فید این پست هم بشید.
سلام
پاسخحذفمن این ایرادها رو توش پیدا کردم
1- اگه اول خط فاصله بزاریم ارور میده(index and refer must be to a location...)
2- - سلام. --> -سلام. جای اسپیس رو عوض میکنه. - متن - -> -متن-
3- سلام "دوست عزیز". خوبی! --> خوبی."سلام "دوست عزیز!
4- اگه به غیر از آخر خط نقطه بزاریم جابجا میکنه جمله هاشو
4- در windows. --> در .widows -- جای نقطه اش عوض میشه.
برنامه ای که دارم میسازم برای زیرنویس کردنه برای همین همچین جمله هایی توشون زیاد استفاده میشه در هر حال برطرف هم نشه بازم شما زحمتتون رو کشیدید
سپاس
موارد 1, 3 و 4 حل شد که از لینک جدید در پست قابل دریافت هست.
پاسخحذفمورد 2 نیاز به کار بیشتری داره که در فرصت مناسب بررسی می کنم.
نسخه جدیدی برای این کلاس تهیه کردم که از اینجا قابل دریافت است:
پاسخحذفhttp://blog.salarcode.com/2012/01/persian-text-rtl-correction.html
سپاس فراوان و خسته نباشید
پاسخحذفسلام خسته نباشید.لینک دانلود کد خراب است. من نیاز مبرم به این کد دارم.لطفا لینک رو تصحیح کنید
پاسخحذفhttp://www.4shared.com/file/JMDGm2Yw/SalarPersianLeftToRightCorrect.html
پاسخحذفلینک در پست اصلاح شد.
پاسخحذفدرست شد ولی قابلیت های قبلی از بین رفت مثل
پاسخحذف...جمله
جمله...
"جمله".
---
مشکلهای بزرگ ورژن قبلی
در windows. --> در .widows
space اول جمله
و نقطه وسط جمله بود.
بقیه شون رو با چند خط کد شناسایی میشه راحت حل کرد
مثلا هر جا '- جمله' دید درست راست به چپش کنه، البته میشه بعد از ذخیره سازی رو Return اینو بهش اضافه کرد که برعکس میشه یعنی هرجا ' -' رو دید بجاش '- ' بزاره
بقیه شون رو با کدنویسی میشه حل کرد که یا کد برنامه نویس یا کلاس شما باید قابلیتش رو داشته باشه.
ممنون