Вы знаете пример темы, которая не работает с RTL? Если да, опубликуйте ссылку на тему здесь, и я проверю свою теорию, а затем объясню, что идёт не так после тестирования.
Редактирование: Вот объяснение проблемы:
Для CSS-файлов, входящих в основную кодовую базу Discourse, RTL-CSS создаётся путём «отражения» большинства правил CSS, зависящих от направления макета сайта. Например, padding-left преобразуется в padding-right. Это делается с помощью гема RTLcss: GitHub - discourse/rtlcss: A wrapper around the rtlcss npm package to flip CSS direction in Ruby · GitHub.
Проблема заключается в том, что правила CSS тем Discourse не отражаются. Это означает, что если тема содержит правила CSS, задающие направление, это направление останется неизменным как при использовании RTL-языка, так и при использовании LTR-языка. Вот небольшой пример этого:
Когда тема используется с RTL-интерфейсом, padding-left: 8px; не преобразуется в padding-right: 8px;. Это вызывает небольшую проблему с выравниванием. Я уверен, что существуют примеры более серьёзных проблем, возникающих при использовании тем с RTL-языками.
То же самое относится к любому CSS, который вы добавляете в тему Discourse по умолчанию через редактор тем. Вот пример с использованием кода из этой темы: Can it be done with CSS? Grouping categories on category page - #4 by cosdesign.
Вот правило из этого CSS, задающее направление:
body [data-category-id="2"]::before,body [data-category-id="4"]::before {
position: absolute;
top: -35px;
left: 0; // это нужно изменить
font-weight: bold;
font-size: 15px;
text-transform: uppercase;
color: var(--primary-medium);
}
Для RTL-локализации возникает следующая проблема:
Если бы это правило находилось в основном CSS-файле Discourse, left: 0; автоматически преобразовалось бы в right: 0; при выборе RTL-языка. Поскольку CSS добавляется в тему, вам нужно вручную изменить его следующим образом:
body [data-category-id="2"]::before,body [data-category-id="4"]::before {
position: absolute;
top: -35px;
right: 0; // изменено на правильное положение для RTL-макетов
font-weight: bold;
font-size: 15px;
text-transform: uppercase;
color: var(--primary-medium);
}
Discourse добавляет класс rtl к тегу html, когда используется RTL-макет. Разработчики тем могли бы использовать этот класс, чтобы их темы работали как для LTR, так и для RTL-макетов. Это работает, и я думаю, что это правильно, но возможно, объявление left: auto не обязательно.
body [data-category-id="2"]::before,body [data-category-id="4"]::before {
position: absolute;
top: -35px;
left: 0;
font-weight: bold;
font-size: 15px;
text-transform: uppercase;
color: var(--primary-medium);
}
/* Исправление позиционирования для RTL-макетов */
.rtl body [data-category-id="2"]::before,.rtl body [data-category-id="4"]::before {
right: 0;
left: auto;
}
Я не уверен, следует ли разработчикам использовать этот подход для своих тем. Это отнимает много времени и может привести к ошибкам и проблемам с обслуживанием. Возможно, Discourse могла бы компилировать некоторые темы или рассмотреть возможность предоставления версии для RTL. Возможно, стоит протестировать этот подход на нескольких из них:
require "rtlcss"
Rtlcss.flip_css("theme_css")
Это должно было быть коротким ответом
Если то, что я написал, верно и ещё не обсуждалось в другой теме, возможно, его стоит переместить в новую тему.

