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

۱۳۸۹/۰۱/۳۰ ۱:۳۸ Salar Khalilzadeh https://plus.google.com/105397214522932500988 منتشر شده در تاریخ : ۱۳۸۹/۰۱/۳۰ دسته بندی : ، ، ، 16

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

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

PersianLeftToRightText

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

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

به روزرسانی: نسخه جدیدی از این کلاس تهیه شد که در این آدرس قابل دریافت است.

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

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

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

موفق باشید.

 

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

  1. با سپاس از راه حل ارائه شده -

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

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

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

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

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

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

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

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

    پاسخحذف
  6. مشکل که در تست های من نداشت, این کاربران که شما هم باشید هستند که اشکالات رو اعلام می کنند. در صورت بروز اشکال در کمترین زمان ممکن حلشون می کنم.
    خوشحالم مفید واقع شد.
    می تونید مشترک فید این پست هم بشید.

    پاسخحذف
  7. سلام
    من این ایرادها رو توش پیدا کردم
    1- اگه اول خط فاصله بزاریم ارور میده(index and refer must be to a location...)
    2- - سلام. --> -سلام. جای اسپیس رو عوض میکنه. - متن - -> -متن-
    3- سلام "دوست عزیز". خوبی! --> خوبی."سلام "دوست عزیز!
    4- اگه به غیر از آخر خط نقطه بزاریم جابجا میکنه جمله هاشو
    4- در windows. --> در .widows -- جای نقطه اش عوض میشه.

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

    پاسخحذف
  8. موارد 1, 3 و 4 حل شد که از لینک جدید در پست قابل دریافت هست.
    مورد 2 نیاز به کار بیشتری داره که در فرصت مناسب بررسی می کنم.

    پاسخحذف
  9. نسخه جدیدی برای این کلاس تهیه کردم که از اینجا قابل دریافت است:
    http://blog.salarcode.com/2012/01/persian-text-rtl-correction.html

    پاسخحذف
  10. سپاس فراوان و خسته نباشید

    پاسخحذف
  11. سلام خسته نباشید.لینک دانلود کد خراب است. من نیاز مبرم به این کد دارم.لطفا لینک رو تصحیح کنید

    پاسخحذف
  12. http://www.4shared.com/file/JMDGm2Yw/SalarPersianLeftToRightCorrect.html

    پاسخحذف
  13. درست شد ولی قابلیت های قبلی از بین رفت مثل
    ...جمله
    جمله...
    "جمله".
    ---
    مشکلهای بزرگ ورژن قبلی
    در windows. --> در .widows
    space اول جمله
    و نقطه وسط جمله بود.

    بقیه شون رو با چند خط کد شناسایی میشه راحت حل کرد
    مثلا هر جا '- جمله' دید درست راست به چپش کنه، البته میشه بعد از ذخیره سازی رو Return اینو بهش اضافه کرد که برعکس میشه یعنی هرجا ' -' رو دید بجاش '- ' بزاره

    بقیه شون رو با کدنویسی میشه حل کرد که یا کد برنامه نویس یا کلاس شما باید قابلیتش رو داشته باشه.
    ممنون

    پاسخحذف