Here’s a hack to detect which is the locale text direction (e.g. left-to-right for English or right-to-left for Hebrew) using JavaScript:
/** * Detects locale text direction... * @return {String} "ltr" or "rtl" */ function detectTextDir() { var container = document.createElement("p"); container.style.margin = "0 0 0 0"; container.style.padding = "0 0 0 0"; // container.style.textAlign = "start"; // If CSS 3+ container.style.textAlign = ""; // Explicitly override text align that might be assigned via style sheets var span = document.createElement("span"); span.innerHTML = "X"; container.appendChild(span); document.body.appendChild(container); // LTR if text position is nearer left of container, RTL if text position is nearer right of container var localeDirection = span.offsetLeft < (container.offsetWidth - (span.offsetLeft + span.offsetWidth)) ? "ltr" : "rtl"; document.body.removeChild(container); return localeDirection; }
A limitation is that it doesn’t work if there is a style sheet present which explicitly assigns a text-align value other than “start” for paragraphs directly in the document body. You could probably tweak the idea to use something more obscure like an address block to reduce chances of this happening.
Posted in Programming Problems - Resolved, Web Programming Tagged: code, css, css2, css3, detect, detection, dir, direction, hack, html, javascript, js, jscript, language, locale, script, text-direction, web 2.0
