‫החדרת תגי תמיכה בדו-כיווניות (BiDi) בשדות טקסט‬

Jun 20, 2009

הקדמה: פוסט זה הוא תגובה לפוסט של לירון נוימן בנושא הנ”ל. לירון שואל “מכירים את זה שאתם כותבים בעברית באתר בינלאומי כלשהו שלא תומך בכיווניות טקסט (למשל פייסבוק), ואז, לא רק שסימני הפיסוק שלכם יוצאים בצד הלא נכון, אלא גם שאם עירבתם גם אנגלית בטקסט, כל הסדר שלו מתחרבש?” הוא מסיים את הפוסט שלו ושואל “מי מתנדב להרים את הכפפה ולבנות איזה תוסף לשועל שיאפשר להוסיף את התווים האלה איפה שצריך…?”
ובכן, התשובה שלי היא ‘טוב, נו, אני אעשה את זה…’

הקדמה 2: פוסט זה הוא תרגום לעברית של הפוסט הקודם שלי, למקרה ואתם רוצים לקרוא את זה באנגלית או לחלוק עם אנשים בניכר.

הנה דוגמא לבעיה המתוארת:

ובכן, הפתרון (הנכון) לבעיה הזו היא כזו: יש לעטוף את הטקסט שאנחנו רוצים לשנות את הכיווניות שלו בתווי היוניקוד המציינים הטמעת כיווניות ימין לשמאל (או לחילופין שמאל לימין) בתחילת המחרוזת, ותו היוניקוד שמציין את סוף הכיווניות בסופה.
למידע נוסף, ראו כאן.

בשעתו, כשלירון כתב את הפוסט שלו, חשבתי לעצמי שזה עשוי להיות פרוייקט קטן וחביב – לכתוב תוסף לשועל, או סקריפט לקוף הגריז שמאפשר לך לעטוף טקסט שאתה כותב בתווים האלה, לטובת אלה שיבואו אחריך ויקראו את הטקסט שלך. אך מאז התוודעתי לבוקמרקלטים (סימניונות? יש לזה שם בעברית?), ולמדתי להעריך אותם עד מאד. אני חושב שסימניונת היא הדרך הטובה ביותר לפתור את הבעיה הזו, מאחר והן קטנות, קלות להתקנה ועריכה, ו(לפחות בתיאוריה) נתמכות על ידי כל הדפדפנים.

כשניגשתי לפתור את העניין, ידעתי שאני צריך להחדיר מחרוזת של תווים לפני ואחרי הטקסט המסומן בשדה-טקסט. ידעתי שראיתי את זה נעשה איפהשהו… אה, כן! ממש כאן, במערכת של WordPress, כשרוצים לסמן טקסט כמודגש או נטוי.
אז הלכתי למצוא את קוד הג’אווהסקריפט שעומד מאחורי היכולת הזו (זו פונקציה בשם edInsertTag), והוצאתי את החלקים שרלוונטיים לצורך שלי ולפיירפוקס (הרבה מהפונקציה המקורית נועדה לתאימות דפדפנים).

ללא דיחוי נוסף, אני גאה להציג בפניכם את RTL ואת LTR.

פשוט קחו את הקישורים האלה, וגררו אותם לסרגל כלים של הסימניות שלכם (אני יצרתי לעצמי תיקיה של סימניונות שימושיות), ובפעם הבאה שאתם כותבים טקסט דו-כיווני, סמנו את הקטע שזורם בכיוון הלא-נכון ולחצו על הסימניונת הרלוונטית.
תוכלו לנסות זאת כאן:

אשמח לקבל משוב על הסימניונות האלה. הן נוסו אך ורק בפיירפוקס, ולדעתי לא יעבדו בדפדפנים אחרים, מאחר ומהפונקציה שלקחתי מ-WP השארתי רק את החלקים שרלוונטיים לשועל. אם הם עובדים גם בדפדפנים אחרים, או לא עובדים כראוי בשועל, אנא יידעו אותי.

Posted by | Categories: weekend project | Tagged: , , , |Tagged: , , , |

Share with others

6 Responses so far | Have Your Say!

  1. Ilan Shavit
    August 13th, 2009 at 22:10 #

    עובד מצויין על פיירפוקס 3.5.2 (אובונטו לינוקס)

  2. Yehuda
    August 14th, 2009 at 07:03 #

    ‫עובד מצויין על פיירפוקס 3.5.2 (מק)‬

    ‫אילן, נפלת בפח…‬

  3. Oh, zift
    August 18th, 2009 at 08:39 #

    ‫‫עובד יופי בכרום
    (לפחות באתר שלך)
    הגעתי מ404. ‬‬

  4. Ethan
    August 18th, 2009 at 09:29 #

    אני שמח לשמוע שזה עובד גם בכרום!

    יהודה? למה התכוונת לגבי אילן?

  5. Avish
    December 14th, 2009 at 22:49 #

    הרעיון ראוי, ורק חבל שפייסבוק לא אוהבים תווי בקרה של יוניקוד. בכל זאת, כל הכבוד על הרמת הכפפה – אני כבר שנים מכניס את התווים ידנית ולא חשבתי לרגע למכן את התהליך.

  6. Ethan
    December 14th, 2009 at 23:19 #

    פייסבוק אכן מעצבנים ככה.
    השלב הבא – תוסף שעוקף את החסימה הזו?

Leave a Feedback

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>