it-swarm-tr.com

Etkin dile bağlı olarak <body> öğesine bir CSS sınıfı nasıl eklenir

Stillerimin bir kısmını aktif dile dayandırmak istediğim çok dilli bir site tasarlıyorum.

Bunun gibi bir şey düşünün:

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"}

Bunu yapabilen bir uzantı biliyor mu (etkin dile bağlı olarak etikete bir sınıf eklemek)?

8
smz

Aslında probleminize daha kolay bir çözüm var. Herhangi bir akıllı şablon (Joomla CMS ile birlikte gelen tüm şablonlar dahil) HTML öğesinde lang niteliğini ayarlar. Bu, CSS :lang() sözde seçici kullanmanıza olanak tanır.

Örneğiniz şöyle görünecektir:

li.artist:lang(en):before {content:"Artist: "}
li.artist:lang(it):before {content:"Artista: "}
li.artist:lang(de):before {content:"Künstler"}

Bunun birkaç avantajı var. Yeni başlayanlar için, Şablondan bağımsız olarak veya hatta Tarayıcı'da yapıldığı için Joomla dışındaki çözümlerle çalışacaktır.

Ayrıca, lang özniteliği doğru ayarlandığı sürece, diğer dillerdeki gömülü parçalarla da iyi çalışır. Örneğin:

<html lang="en">
  <head>
    <style>
     blockquote:lang(de) { color: red; }
     blockquote:lang(en) { color: red; }
    </style>
  </head>
  <body>
    <p>A famous German quote is:</p>
    <blockquote lang="de">
      <p>Den Wald vor lauter Bäumen nicht sehen</p>
    </blockquote>
    <p>A famous English quote is:</p>
    <blockquote>
      <p>Listen to many, speak to a few.</p>
    </blockquote>
  <body>
</html>

Son olarak, Joomla sadece dili değil yerel ayarı da çıktılar. Dolayısıyla bir siteniz en-GB, başka bir en-US kullanabilir ve şablon bunu yansıtır. :lang(en) kullanıldığında da eşleşecektir, ancak :lang(en-US) öğesini yalnızca Amerikan İngilizcesini hedeflemek için de kullanabilirsiniz.

14
Rouven Weßling

Ben sadece şablonları index.php dosyasını değiştirmek ve doğrudan orada sınıf ekleyin.

<body class="<?php echo $this->language; ?>">

Mevcut dili gövde etiketine sınıf olarak atar.

5
Bakual

Rouven'in yöntemine ekleyecek küçük bir şey; tarayıcı desteği, özellik seçicileri için dil sahte seçicisinden daha iyidir, bu nedenle stillerinizi hedeflemek için böyle bir şey kullanmayı düşünebilirsiniz:

[lang="en-GB"] .artist {…}
3
Seth Warburton

Şablonunuzun index.php dosyasında mevcut <body> etiketi ve aşağıdakileri içeren:

<?php $lang = JFactory::getLanguage(); ?>
<body class="<?php echo $lang->getTag(); ?>">

Bu, aşağıdakileri örnek olarak verecektir:

<body class="en-GB">
1
Lodder