2017-08-14 5 views
0

私はi18nを使用するバイリンガルサイトを持っています。 i18nは、レンダリング時にクラスのタグをサイトのタグに付加します。例えば、私が持っている:@ font-facesが動作しない言語固有のLESSクラス

<html class="en"> 
    <body class="i18n-en"> 
    </body> 
</html> 

そしてユーザーは、言語を切り替えると、次のようにレンダリング:

<html class="ar> 
    <body class="i18n-ar"> 
    </body> 
</html> 

私はプログラム的に英語のデフォルトフォントを置き換えるために、別のフォントをロードLESSファイルを作成しましたがサイトの負荷のときアラビア語版、次のようになるように私は、「DIN-代替bold.ttf」と同じ変数名を持つ「ハルマッタン-Regular.woff」を呼び出しています

body.i18n-en { 
    @font-face { 
     font-family: 'DinAlternateBold'; 
     src: url('../fonts/din-alternate-bold.ttf') format('truetype'); 
    } 
} 

body.i18n-ar { 
    @font-face { 
     font-family: 'DinAlternateBold'; 
     src: url('../fonts/Harmattan-Regular.woff') format('woff'); 
    } 
} 

注意をサイト上のDinAlternateBoldのすべてのインスタンスの置換は自動的に行われます。

ただし、動作していません。後でLESSファイルで宣言されたフォントは、本文のクラスに関係なくページにロードされます。上記のケースでは、アラビア語版と英語版の両方でHarmattan-Regular.woffが読み込まれています。

CSS/LESSでフォントがどのように動作するかについての基本的な情報がありますか?もしそうなら、私が探している効果を達成するための適切な方法は何でしょうか?

各フォントが単独で使用されたときに正しく読み込まれることに注意してください。これは、私が問題に遭遇している組み合わせでしかありません。

+1

解決策はありませんが、これは技術的にフォントの問題ではありません。これは、同じセレクタに対して、 "color:red"を宣言し、後で "color:blue"というファイルで宣言するのと同じことです。ファイルの後の方が使用されます。ただし、フォントに固有のものは、srcフォントファイルは 'body.i18n-ar'のプロパティではなく、font-family" DinAlternateBold "のプロパティです。 – sn3ll

+0

洞察に感謝します。 – JBeck

答えて

2

あなたはこのようにそれを試すことができます。

@font-face { 
    font-family: 'din-alternate-bold'; 
    src: url("../fonts/din-alternate-bold.eot?-gqzqge"); 
    src: url("../fonts/din-alternate-bold.eot?#iefix-gqzqge") format("embedded-opentype"), 
     url("../fonts/din-alternate-bold.ttf?-gqzqge") format("woff"), 
     url("../fonts/din-alternate-bold.ttf?-gqzqge") format("truetype"), 
     url("../fonts/din-alternate-bold.svg?-gqzqge#din-alternate-bold") format("svg"); 
    font-weight: normal; 
    font-style: normal 
} 

body.i18n-ar { 
    font-family: 'din-alternate-bold'; 
} 

あなたが簡単かつ迅速な方法のために、あなたのフォントhereを生成しようとすることができます。

+0

このようなアプローチが働いた。ありがとうございました。 – JBeck

関連する問題