Рассмотрим этот сценарий: вы разрабатываете многоязычное веб-приложение. Если все языки, на которые вы ориентируетесь, являются либо LTR, либо RTL, вам не нужны правила CSS для языка. Однако, если ваши целевые языки представляют собой сочетание языков LTR и RTL, вам необходимо указать направление чтения страницы для каждого языка.
Если вы добавите dir='ltr' или dir='rtl' в элемент <body>, вы логически должны ожидать, что он должен сделать необходимую магию.
Однако вам действительно нужно переключить все настройки right и left в правилах, таких как text-direction и margin. Вам также необходимо изменить правила, такие как margin: 0 10px 0 20px; на margin: 0 20px 0 10px;
Стандарт W3C мог бы избежать этой проблемы, разрешив еще два значения для правил, связанных с направлением. Другими словами, вместо -right и -left (как в margin-right и margin-left), они могут допускать следующее:
div.foo { margin-near: 100px; }
/* This would be equivalent to margin-left in LTR, and margin-right in RTL */
div.bar { margin-far: 100px; }
/* This would be equivalent to margin-right in LTR, and margin-left in RTL */
В сущности, во всех правилах/значениях, в которых вы можете в настоящее время ввести слово с привязкой left или right, вместо этого вы можете написать near или far.
Учитывая текущие недостатки в текущей версии CSS, я ищу некоторые предложения по оптимизации создания и обслуживания двунаправленных больших веб-приложений.