Hi Daryl,
Thanks for posting this. I started this issue on git and agree that it's a good idea we have the detailed discussion here, and get ideas and feedback on this from the community.
Below I'll detail what I was able to do so far when it comes to RTL support, but I'd start with what I suggest might be the ideal solution in my view for RTL support.
Ideally, I'd like to see a LESS variable, in which you could indicate the course content direction (e.g. right-to-left, left-to-right), and that would impact all the content and behavior. That variable would impact all needed CSS properties, all icons used that are relevant, all positions of layout blocks, and even contrib elements and plugins, etc. See below my description of what's required at this point to support RTL, to understand why I consider this an ideal solution.
I've played around with the default Adapt course of the framework, to see what needs to be done to make it RTL. Here is a summary of my actions and results:
- I started by changing the theme main CSS and making element properties from left to right (and vice versa), including body text directions, paddings, alignments, etc.
- I also had to change some of the graphic elements (e.g. arrows, progress bars) to fit RTL reading direction.
- I noticed that contrib elements seemed to override the CSS properties I added to the main theme, so I had to individually modify the LESS properties for these elements as well.
- With some elements, things seemed to work with just "left" property. A good example is the hotgraphic pin elements where I could change the position from left:80 to right:80, but in fact had to subtract that from 100 i.e. left:20 for the design to work.
These above process is quite time-demanding in terms of finding and replacing all the relevant CSS properties and prone to errors and issues. Hopefully this explains why the ideal solution is as I described above. Not sure if technically it would be possible but what it would mean, and happy to hear others' ideas and suggestions.