نمایش صحیح متون فارسی-انگلیسی در جهت چپ به راست

18 04 2010

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

در ادامه با استفاده از کدی که تهیه کردم کاری می کنیم که متونی اینچنینی در حالت چپ به راست هم به درستی نمایش داده بشوند. برای نمونه:

PersianLeftToRightText

اصلاح متن فارسی برای نمایش صحیح در حالت چپ به راست

کاری که این تابع انجام می دهد تغییر و جابجایی محل متون انگلیسی و فارسی هست. توجه کنید که متن تغییر داده شده قابل برگشت نیست و هیچ تابعی برای برگشت آن نوشته نشده، پس سعی کنید آن را در هیچ جایی ذخیره نکنید.

کد این کلاس همراه با پروژه نمونه از آدرس زیر قابل دریافت است.

دریافت کلاس PersianLeftToRight

ویرایش: همچنین نرم افزاری بر اساس همین کلاس نوشتم تا عمل تبدیل را بر روی فایل متنی انجام بده. این نرم افزار رو هم از اینجا دریافت کنید

دریافت برنامه PersianLeftToRightCorrection

پ.ن1: ممکن است که این کلاس برای برخی کاراکتر ها به درستی کار نکند، در صورت مشاهده این موارد لطفا آنها را گزارش کنید تا بررسی شوند.

پ.ن2: در متون چند خطی ترتیب نمایش به پایین به بالا تغییر پیدا می کند و این به خاطر از آخر به اول شدن متون فارسی هست.

موفق باشید.


کارها

Information

14 responses

19 04 2010
Nasser Hadjloo

با سپاس از راه حل ارائه شده –

در این مورد من قبلا یک مطلب در مسیر

http://hajloo.wordpress.com/2009/03/02/persian-text-problem-in-ltr-forms/

نوشته بودم که البته راه دیگری را معرفی می کرد و کلا نه نیازی به برنامه نویسی داشت و نه حتی نیاز به پشتیبانی توسط برنامه ثالث – بنابراین همه جا قابل استفاده بود.

گرچه کاری که شما کردید هم خالی از لطف نیست و باید برای انجام آن از شما قدردانی کرد

19 04 2010
Salar

از دارا بودن همچین امکانی در استاندارد جدید خبر نداشتم، اما باز هم قابل استفاده نیست، مشکل اول تغییر محل تعدادی دکمه هست که از محل فعلی رواج شده توسط ویندوز تغییر پیدا می کنه، مشکل دوم تغییر فرمت(و نه نمایش) اعداد به فارسی که معلوم نیست در برنامه مشکل ایجاد نکنه (با توجه تغییر کد کلید).
و مشکل اصلی عدم اطمینان به درایوری که داده اند با توجه به اینکه برای ویندوز 2000 است و در هیچ یک از ویندوز های سون 32bitو 64Bit من نصب نشد. و البته آخرین به روزرسانی درایور مربوط به سال 2003 هست.

19 04 2010
حسن

عالیست! این دقیقا همون ایده‌ایه که مدتی سعی دارم بنویسمش! منتهی با زبان جاوااسکریپت.
سپاس گذارم!

21 04 2010
Nasser Hadjloo

خطاب به حسن
اینایده جاوااسکریپت شما هم قبلا پیاده سازی شده کمی بیشترجستجو کنید . در وبلاگستان فارسی پیداش می کنید.

21 04 2010
behnam

Nice Trick Good Luck

1 05 2010
SirAsad

Useful thing

Thanks

17 08 2010
حسن

من متاسفانه دات نت بلد نیستم و نمی تونم از این کمپوننت استفاده کنم. می تونید برنامه ای بنویسید که خط به خط فایلی که بهش می دیم رو اصلاح کنه؟
تصمیم دارم زیرنویس فیلم ترجمه کنم و از اون جایی که چپ به راست نمایش داده می شن این برنامه می تونه کمک خیلی بزرگی باشه.

18 08 2010
Salar

به نظرم ایده جالبی اومد. به خاطر همین این برنامه رو اماده کردم که می تونید از اینجا دانلودش کنید:
http://www.4shared.com/file/ET-QeiW7/PersianLeftToRightCorrection.html

6 12 2010
a

ببخشید اما اکثر محیط‌هایی که از Unicode به درتسی پشتیبانی می‌کنند برای نمایش صحیحی RTL متون فقط کافیست کاراکتر 0x202E Unicode را در ابتداری متن اضافه کنید. نام دیگر این کاراکتر Right-To-Left Override می‌باشد.

می‌توانید در Notepad امتحان کنید. Align متن عوض نمی‌شود اما Right-To-Left خواهد شد.

6 12 2010
Salar

احتمالا منظورتون کارکاتر RLE هست با کد 0x202B.
اینی که شما گقتی کاراکترهار انگلیسی رو هم راست به و ناصحیح نشون میده.

6 12 2010
a

یک Application کوچک ایجاد کرده‌ام که با فشردن یک دکمه Shortcut قابل تنظیم این کارکتر را در هر محیطی که باشید در محل Focus کیبورد درج می‌کند. (اگر خواستید برایتان ارسال می‌کنم شاید به درد بخورد)

قبلا در VS2008 از این برنامه برای کامنت گذاشتن به زبان فارسی استفاده می‌کردیم و چون در میان جملات فارسی مجبوریم از کلمات انگلیسی استفاده کنیم این روش خیلی به درد می‌خورد. اما متاسفانه یا خوشبختانه (چون باعث شد کامنت ها را به انگلیسی بنویسیم و زبانمان بهتر شود) در VS2010 از این روش پشتیبانی نمی‌شود که البته فکر می‌کنم یکی از Bug های WPF باشد.

6 12 2010
a

معذرت! یکی از کامنت ها در باره همین موضوع بود. من مطلب تکراری نوشتم.

14 09 2011
مسعود

سلام
پست با ارزش و پر استفاده اي هست اما متأسفانه لينك 4shared كار نميكنه اگه ممكنه فايلها رو دوباره آپلود كنيد.
ممنون.

6 10 2011
Salar

لینکها اصلاح شد

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s




%d وب‌نوشت‌نویس این را دوست دارند: