Посмотрите на кнопку:
Меня бы не удивило, если бы эта проблема присутствовала во всех всплывающих подсказках.
Посмотрите на кнопку:
Меня бы не удивило, если бы эта проблема присутствовала во всех всплывающих подсказках.
Я столкнулся с той же проблемой.
Краткий обзор кода Discourse показывает, что escape используется для метки кнопки, заголовка и содержимого.
Что делает escape:
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/escape.js
В текстовом контексте это, кажется, все допустимые символы.
Интересно, обязательно ли это здесь?
Я полагаю, что HTML, не помеченный как htmlSafe, будет экранирован шаблоном? ![]()
Исправлением может стать замена программной апострофной кавычки на настоящую французскую апострофную кавычку.
Используйте: ’
Не используйте: '
Этот символ отсутствует на американских клавиатурах QWERTY, а также на старых клавиатурах AZERTY, но присутствует на новых французских клавиатурах, соответствующих стандарту AFNOR (Association française de normalisation), — как на новых AZERTY new AZERTY, так и на BÉPO BÉPO.
Это не решит более глубокую проблему некорректного экранирования программной апострофной кавычки, однако настоящая французская апострофная кавычка является правильной, и именно её большинство франкоговорящих будут использовать при наборе текста, когда большинство из них перейдёт на стандартные клавиатуры.
Старая раскладка AZERTY никогда не была официально стандартизирована никаким официальным органом.
Та же проблема в Discourse 3.4.1 …
Я не могу заменить все символы ' на сайте. Есть какие-то предложения?
Я только что исправил эту проблему с помощью пользовательского кода: замените ' на ’ в I18n.translations
withPluginApi("0.8.18", (api) => {
const locale = I18n.currentLocale();
function replaceSingleQuotes(obj) {
if (typeof obj === 'string') {
// Разбиваем строку на HTML-теги и нетеговые части
return obj.split(/(<[^>]+>)/g).map(segment => {
// Если сегмент является HTML-тегом, ничего не заменяем
if (segment.startsWith('<') && segment.endsWith('>')) {
return segment;
} else {
// Заменяем одинарные кавычки только в нетеговых частях
return segment.replace(/'/g, '’');
}
}).join('');
} else if (typeof obj === 'object' && obj !== null) {
// Рекурсивно обрабатываем свойства объекта
for (const key in obj) {
obj[key] = replaceSingleQuotes(obj[key]);
}
}
return obj;
}
if (I18n.translations[locale].js) {
I18n.translations[locale].js = replaceSingleQuotes(I18n.translations[locale].js);
}
});
Это должно быть исправлено после этого коммита: FIX: user tips in languages with apostrophes by pmusaraj · Pull Request #34118 · discourse/discourse · GitHub
Спасибо за отчет!
Эта тема была автоматически закрыта через 3 дня. Новые ответы больше не принимаются.