Feature #8121
closedAllow overriding direction of part of text
0%
Description
There should be a way to override direction of part of text. Maybe using <span dir="rtl"> and <p dir="rtl"> (needs permitting use of "dir" HTML attribute and/or "direction" CSS attribute) or even better some nicer shorter Textile-ful syntax.
Upstream Textile supports <span dir="rtl">. It also supports another trick using CSS, but just for a complete paragraph (not some part of it):
p{direction: rtl}.
This one doesn't work in Redmine too.
An example (paste it in some RTL context and view there):
ابراهیم C++ را دوست دارد.
In this example "C++" is shown as "++C" in an RTL context, while it should be shown like result of the following HTML snippet:
<p dir="rtl">ابراهیم <div dir="ltr">C++</div> را دوست دارد.</p>
(The "C++" example is a simple one to show the problem. I'm aware of workaround of writing it as "++C", but that's just a workaround. And even if someone prefers to go the workaround way, working around more complex examples can be very more difficult.)
Related issues
Updated by Etienne Massip over 13 years ago
- Tracker changed from Defect to Feature
Updated by Ebrahim Mohammadi over 13 years ago
Actually I should have used a span
tag instead of div
:
<p dir="rtl">ابراهیم <span dir="ltr">C++</span> را دوست دارد.</p>
Updated by Boaz Rymland over 11 years ago
I'd be happy to see this one implemented. TIA!
Updated by Ali Nadalizadeh almost 10 years ago
Temporary fix for persian users which converts the whole wiki paragraph to RTL (once detects persian/arabic content):
<script>
$(document).ready(function() {
$.each($(".wiki, .wiki-edit"), function(i,v){
var txt = $(v).text();
for(ci in txt) {
if (txt.charCodeAt(ci) > 0x600 && txt.charCodeAt(ci) < 0x700) {
$(v).css("direction", "rtl");
break;
}
}
});
$.each($(".issue .subject a"), function(i,v){
var txt = $(v).text();
console.log(txt);
for(ci in txt) {
if (txt.charCodeAt(ci) > 0x600 && txt.charCodeAt(ci) < 0x700) {
$(v).parent().css("direction", "rtl");
$(v).parent().css("text-align", "right");
break;
}
}
});
});
</script>
Append the code above to the main layout file (app/views/layouts/base.html.erb) or any other javascript file which is included in all pages.
Updated by Jean-Philippe Lang almost 10 years ago
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Target version set to 3.0.0
- Resolution set to Fixed
2 builtin css classes (rtl and ltr) are added in r13951.
You can use them with textile formatting by using parenthesis, here on a paragraph and a span:
p(rtl). ابراهیم %(ltr)C++% را دوست دارد.
Updated by Hooman Valibeigi almost 7 years ago
Jean-Philippe Lang wrote:
2 builtin css classes (rtl and ltr) are added in r13951.
You can use them with textile formatting by using parenthesis, here on a paragraph and a span:[...]
This fix is broken.
My environment: Redmine 3.4.2, Google Chrome 63
Take this example:
Textile:
p(rtl). این یک test است
Generated html:
<p class="wiki-class-rtl">این یک test است</p>
First of all there is no such class as "wiki-class-rtl" in application.css.
Second, "unicode-bidi:bidi-override" makes the LTR parts of an RTL paragraph printed in reverse. e.g. 'tset' instead of 'test'. Simply having direction:rtl would make everything work just fine.
Updated by Toshi MARUYAMA almost 7 years ago
Updated by Jean-Philippe Lang over 6 years ago
- Related to Defect #27884: RTL wiki class broken in Redmine 3.2.6 added