関数索引
rtlRatio() 関数は文字列中に含まれる右から左に書かれる文字の比率を返します。右から左に書かれる文字と判断されるのは、Unicode のコードポイントで示すと下記の文字群です。
右から左に書かれる文字の比率を調べたい文字列を指定します。
長さ 0 の文字列を与えた場合、戻り値は 0 になります。
"Today's news أخبار اليوم" というアラビア語と英語の混ざった文字列に含まれる、右から左に書かれる文字の比率を表示してみます。
<body>
......
%rtlRatio("Today's news أخبار اليوم")%
.....
</body>
結果は 0.416... になります。rtlRatio() 関数に渡された文字列 "Today's news أخبار اليوم" の長さは 24 文字です。"Today's news " の部分が 13 文字です。アラビア語の単語の間にスペースが 1 文字あります。ですから、右から左に書かれる文字となるアラビア語部分は 10 文字で、戻り値は 10 / 24 = 0.416... になります。
要素 text に含まれる右から左に書かれる文字の比率に応じて表示を切り替えてみましょう。
<body>
......
<p <wr-if condition="rtlRatio(text) > 0.25">dir="rtl"</wr-if>>
%text%
</p>
.....
</body>
text という要素に 25% 以上、右から左に書かれる文字が含まれている場合に、p タグに dir="rtl" 属性を指定しています。