Как запретить перевод контента тегов в файле через CSS?
На сайте много названий животных, растейний написанных латиницей и при их переводе автоматическом получается полная ерунда. Понимаю что можно это сделать через атрибуты в каждом теге частно, но хочется один раз прописать в CSS файле и больше не вспоминать.
Ответы (2 шт):
Один раз прописать в CSS файле и больше не вспоминать
К сожалению, в CSS на сегодняшний день нельзя отключить автоматический перевод — этим управляет только HTML- атрибут translate
Если нет возможности изменить HTML, можно добавить атрибуты динамически:
через JavaScript: например, контент в тегах <p> не будет переводиться, а в <div> — будет. (вместо тегов можно использовать классы)
document.querySelectorAll('p').forEach(el => {
el.setAttribute('translate', 'no');
});
<p>translate</p>
<div>translate</div>
Однако помните: скрипт выполняется после загрузки страницы, поэтому переводчик может успеть обработать текст до применения атрибута
Попробуйте глобальный атрибут "lang".
<p lang="enu">Some bird Sunshine Extraflyer</p>
<p lang="lat">Estus espiritas Ptichcus Obiknoventus</p>
По идее, если вы переводите с английского на например русский, то переведётся на русский всё, но кроме lang="la", или lang="lat". Но нужно экспериментировать.
RFC 5646 - Tags for Identifying Languages
Вам же хватит простейшей версии тега, а именно указания языка. Идентификаторы языков - это ISO-639, в вашем случае Part 1 достаточен.
// ISO-639, codes for Latin Language:
// Part 1: la
// Part 2: lat
// Part 3: lat
Иначе говоря, к чему нужно - можете подцепить класс, а через класс подцепить атрибут lang. Это максимально честно получится. Переводчики должны игнорировать перевод всего, у чего есть lang="lat", в случае перевода на например русский -> английский, или же английский -> русский.
Или же переводчики снова нечестно переведут с латинского на например - английский.
Но тогда можно попробовать "трюкачество". Укажите код языка, который вообще не существует у переводчиков. Иначе говоря, это код языка племени джунглей. Т.к. переводчик не знает такого языка, то и не переведёт. Пробуйте.
Запрет перевода - тоже не совсем выход. Ну потому что, а вдруг кому то понадобится всё ж таки перевести латинские названия? Оставьте такую опцию.
В таком случае, латинские названия будут "как то" переведены, но по запросу пользователя, конечно же. Если ему надо перевести страницу c латинского на русский, то зачем ограничивать в этом пользователя?
П.С.: Скорее всего нужно поставить атрибут языка ещё и в тег html
<html lang="ru">
Оно должно "помочь" переводчику понимать "запрос/хотелку" юзера. Иначе говоря переводчик "видит" то, что страница на русском, но может включать другие вставки на других языках, в вашем случае на латинском. А латинский вы обозначаете собственно по месту.
Но тогда при переводе с русского на английский, оно и должно помочь переводчику. Расставленные атрибуты lang. Если переводчик переводит не "по дурному", то атрибуты lang должны учитываться при переводе.
П.П.С.: Совершенно случайно подсказали интереснейшую мысль, а именно про тег code. Всё что в теге code вообще не должно переводиться, никогда, ни за что, ни при каких условиях.