Я разрабатываю многоязычный сайт, на котором я хотел бы основывать некоторые из своих стилей на активном языке.
Подумайте как-то так:
body.en-uk li.artist:before {content:"Artist: "}
body.it-it li.artist:before {content:"Artista: "}
body.de-de li.artist:before {content:"Künstler"}
Кто-нибудь знает расширение, способное на это (т.е. добавление класса в тег в зависимости от активного языка)?
extensions
СМЗ
источник
источник
Ответы:
На самом деле есть более простое решение вашей проблемы. Любой вменяемый шаблон (включая все шаблоны, поставляемые с CMS Joomla) будет устанавливать
lang
атрибут для элемента HTML. Это позволяет вам использовать:lang()
псевдо-селектор CSS .Ваш пример будет выглядеть так:
Это имеет пару преимуществ. Начнем с того, что он будет работать независимо от шаблона или даже с решениями, отличными от Joomla, поскольку все это делается в браузере.
Также он будет хорошо работать со встроенными частями на других языках, если
lang
атрибут установлен правильно. Например:Наконец, Joomla выводит не только язык, но и локаль. Таким образом, один ваш сайт может использовать en-GB, другой en-US, и шаблон будет отражать это. Использование
:lang(en)
будет соответствовать либо, но вы также можете использовать:lang(en-US)
для таргетинга только на американский английский.источник
Я бы просто изменил файл шаблонов index.php и добавил туда класс.
Назначил бы текущий язык как класс для тега body.
источник
Одна небольшая вещь, которую нужно добавить в отношении метода Рувена; поддержка браузера лучше для селекторов атрибутов, чем для псевдоселектора языка, так что вы можете рассмотреть возможность использования чего-то подобного для целевых стилей:
источник
В index.php вашего шаблона вы можете заменить текущий
<body>
тег следующим:Это выведет следующее в качестве примера:
источник