הסימניה הזו של @יוסף-בן-שמעון, שכבר נפוצו לה כמה גרסאות, מכילה סקריפט שעובר על כל האלמנטים בHTML ומתקן את הdirection שלהם ל"rtl", מה שמאוד עוזר לדפים המתורגמים מאנגלית.
הבעיה, שיש לו כמה חסרונות:
-
הוא הופך את כיוון הטקסט גם באלמנטים שגוגל השאיר באנגלית (לרוב בצדק), כמו גושי קוד ועוד. ועל אף שכבר העירו שכדאי לסנן החוצה אלמנטי preו- code, זה עדיין לא מכסה את כל המקרים.
-
מלבד היפוך הטקסט עצמו, יש גם הנושא של היפוך כיוון האלמנטים עצמם. בדרך כלל זה רצוי (כנראה אי אפשר באמת לבנות את הסקריפט כך שהוא יעשה זאת רק כשצריך), אבל לפעמים זה עושה בעיות. לדוגמא באתר הזה, היישור דופק לגמרי את העמוד.
-
יש דפים שהקוד פשוט לא עובד עבורם. כך למשל גיליתי (למרבה התימה!) שמאפיין ה"CSS "textAlign* רלוונטי לזה. אך בדפים אחרים, גם אחרי שבכל האלמנטים מוגדר
dir="rtl"
style{
direction: rtl;
text-align: right;
}
הכיוויות נשארת LTR. כנראה זה תלוי במאפייני CSS נוספים שאני לא מכיר.
אז למעיישה, אני מבקש מחברי הפורום הבקיאים בHTML וCSS, שישתפו מידע הרלוונטי לפיתוח סקריפט שיפתור את בעיות היישור הכי טוב שאפשר: איך לזהות אלמנטים שאסור להפוך את יישורם? אלו מאפיינים משפיעים על יישור הטקסט? והמסתעף.
מצורף הקוד החלקי והבלתי הקריא שלי נכון לעכשיו (הוא נכתב טלאי ע"ג טלאי אז תסלחו על הבלגן):
javascript: (function() {
var elements = document.getElementsByTagName("*");
for (e of elements) {
if (!e.style) continue;
if (!e.style.direction || e.style.direction === 'ltr') {
e.style.direction = 'rtl';
e.dir == "rtl";
} else {
e.style.direction = 'ltr';
e.dir == "ltr"
}
}
})();
function yshur(elem) {
elem.dir = "ltr";
elem.style.direction = "ltr";
elem.style.textAlign = "right";
var elemchildren = Array.from(elem.getElementsByTagName("*"));
if (elemchildren[0] != undefined) elemchildren.forEach(yshur);
};
var pre = Array.from(document.getElementsByTagName("pre")),
code = Array.from(document.getElementsByTagName("code"));
var ElementsArray = pre.concat(code).concat(Array.from(document?.querySelector(".Code") || []));
ElementsArray.forEach(yshur);
*שוב בעיית יישור