خوشبختانه اکثر کامپوننت های کنونی از ویژگی راست به چپ متون پشتیبانی می کنند، اما همچنان کامپوننت هایی هستند که این ویژگی را که برای ما حیاتی است پشتیبانی نمی کنند. در چنین مواقعی ممکنه که نیاز داشته باشید که حتما از آن ابزار استفاده کنید، ولی همچنان مشکل متون فارسی همراه با متون انگلیسی را خواهید داشت.
در ادامه با استفاده از کدی که تهیه کردم کاری می کنیم که متونی اینچنینی در حالت چپ به راست هم به درستی نمایش داده بشوند. برای نمونه:

اصلاح متن فارسی برای نمایش صحیح در حالت چپ به راست
کاری که این تابع انجام می دهد تغییر و جابجایی محل متون انگلیسی و فارسی هست. توجه کنید که متن تغییر داده شده قابل برگشت نیست و هیچ تابعی برای برگشت آن نوشته نشده، پس سعی کنید آن را در هیچ جایی ذخیره نکنید.
کد این کلاس همراه با پروژه نمونه از آدرس زیر قابل دریافت است.
دریافت کلاس PersianLeftToRight
ویرایش: همچنین نرم افزاری بر اساس همین کلاس نوشتم تا عمل تبدیل را بر روی فایل متنی انجام بده. این نرم افزار رو هم از اینجا دریافت کنید
دریافت برنامه PersianLeftToRightCorrection
پ.ن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
من متاسفانه دات نت بلد نیستم و نمی تونم از این کمپوننت استفاده کنم. می تونید برنامه ای بنویسید که خط به خط فایلی که بهش می دیم رو اصلاح کنه؟
تصمیم دارم زیرنویس فیلم ترجمه کنم و از اون جایی که چپ به راست نمایش داده می شن این برنامه می تونه کمک خیلی بزرگی باشه.
به نظرم ایده جالبی اومد. به خاطر همین این برنامه رو اماده کردم که می تونید از اینجا دانلودش کنید:
http://www.4shared.com/file/ET-QeiW7/PersianLeftToRightCorrection.html
ببخشید اما اکثر محیطهایی که از Unicode به درتسی پشتیبانی میکنند برای نمایش صحیحی RTL متون فقط کافیست کاراکتر 0x202E Unicode را در ابتداری متن اضافه کنید. نام دیگر این کاراکتر Right-To-Left Override میباشد.
میتوانید در Notepad امتحان کنید. Align متن عوض نمیشود اما Right-To-Left خواهد شد.
احتمالا منظورتون کارکاتر RLE هست با کد 0x202B.
اینی که شما گقتی کاراکترهار انگلیسی رو هم راست به و ناصحیح نشون میده.
یک Application کوچک ایجاد کردهام که با فشردن یک دکمه Shortcut قابل تنظیم این کارکتر را در هر محیطی که باشید در محل Focus کیبورد درج میکند. (اگر خواستید برایتان ارسال میکنم شاید به درد بخورد)
قبلا در VS2008 از این برنامه برای کامنت گذاشتن به زبان فارسی استفاده میکردیم و چون در میان جملات فارسی مجبوریم از کلمات انگلیسی استفاده کنیم این روش خیلی به درد میخورد. اما متاسفانه یا خوشبختانه (چون باعث شد کامنت ها را به انگلیسی بنویسیم و زبانمان بهتر شود) در VS2010 از این روش پشتیبانی نمیشود که البته فکر میکنم یکی از Bug های WPF باشد.
معذرت! یکی از کامنت ها در باره همین موضوع بود. من مطلب تکراری نوشتم.
سلام
پست با ارزش و پر استفاده اي هست اما متأسفانه لينك 4shared كار نميكنه اگه ممكنه فايلها رو دوباره آپلود كنيد.
ممنون.
لینکها اصلاح شد