Fayo
@Fayo
Притворись дураком 5 минут, чем быть им всю жизнь.

Как можно перевести только текст в поле CKEditor?

В админке сайта на Django я создал кнопку, при нажатии которой из одного поля (RichTextUploadingField) нужно взять только текст, перевести с помощью googletrans и вставить на другое поле.

Проблема в том, что CKEditor генерирует не просто текст, а html теги (параграфы, картинки, iframe и т.д.)
Если передать в виде html не фильтруя, то ещё и классы вместе с текстом переводятся на другой язык.
Пробовал с помощью regex отделить их, но не получается.

Как сделать так, чтобы названия тегов оставались прежними, и переводился только текст?

UPD
Пример HTML:
<p>Hello!</p>
<p><img alt="" height="360" src="/media/upl4/2021/10/19/6tuja_znjxqz2iqurlhhedcgkawy_kuk_medium.jpg" width="536" /></p>

Получаю:
<p>Привет!</p>
<p><Img ширина="" высота="360" src="/ media/ upl4/ 2021/ 10/ 19/ 6tuja_znjxqz2iqurlhhedcgkawy_kuk_medium.jpg" ширина="536" /></p>


Python код:
from googletrans import Translator
def translate(text, source="en", destination="ru"):
    translator = Translator()
    return translator.translate(text=text, src=source, dest=destination).text


P.S данные с сайта отправляются с ajax запросом
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вижу два варианта:
1. Получение текста без тегов можно делать в JavaScript коде. На сколько я помню в API CKEditor была такая возможность.
2. Очистку текста от тегов можно делать на бэке с помощью https://pypi.org/project/bleach/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы