Как запретить перевод контента тегов в файле через CSS?

На сайте много названий животных, растейний написанных латиницей и при их переводе автоматическом получается полная ерунда. Понимаю что можно это сделать через атрибуты в каждом теге частно, но хочется один раз прописать в CSS файле и больше не вспоминать.


Ответы (2 шт):

Автор решения: Dev18

Один раз прописать в CSS файле и больше не вспоминать

К сожалению, в CSS на сегодняшний день нельзя отключить автоматический перевод — этим управляет только HTML- атрибут translate

Если нет возможности изменить HTML, можно добавить атрибуты динамически:

через JavaScript: например, контент в тегах <p> не будет переводиться, а в <div> — будет. (вместо тегов можно использовать классы)

document.querySelectorAll('p').forEach(el => {
  el.setAttribute('translate', 'no');
});
<p>translate</p>
<div>translate</div>

Однако помните: скрипт выполняется после загрузки страницы, поэтому переводчик может успеть обработать текст до применения атрибута

→ Ссылка
Автор решения: InterceptorTSK

Попробуйте глобальный атрибут "lang".

<p lang="enu">Some bird Sunshine Extraflyer</p>
<p lang="lat">Estus espiritas Ptichcus Obiknoventus</p>

По идее, если вы переводите с английского на например русский, то переведётся на русский всё, но кроме lang="la", или lang="lat". Но нужно экспериментировать.

lang - HTML | MDN

RFC 5646 - Tags for Identifying Languages

ISO-639

Вам же хватит простейшей версии тега, а именно указания языка. Идентификаторы языков - это 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 вообще не должно переводиться, никогда, ни за что, ни при каких условиях.

→ Ссылка