RTL言語のYUIのサポート
-
22-08-2019 - |
質問
YUIサポートRTL言語をしていますか? (RTL:右から左へ、例えばヘブライ語やアラビア語など)。
もしそうなら、どのように? 私は別のメニュー項目が右マージンの近くに開始するメニューバーを表示し、左に行きたい。
解決
YUIの2.xではRTL言語はサポートされていません私は一年以上前にそれについてのバグを提出し、彼らは将来のリリースでは、それが追加される場合がありますと言って応答を得ました。 (私はもはや申し訳ありませんが、彼らは彼らの新しいトラッカーに切り替えるので、バグを見つけることができません。)うまくいけば、彼らはYUI 3.xのためのRTLのサポートを追加しているが、私はプレビューリリースをチェックアウトしていない(また、私はそれらを追加言及見つけることができますRTLのサポート)。
何がビルトインサポートがないと、それは仕事のビットを取るのにこれは、YUIのメニューは、RTLを行うことができないと言うことはありません。私は、これはすべてのブラウザ、特にないIEで100%に動作することを一切主張をしない。
まず、あなたは反対の方向に流れて、ページの反対側に起動するメニュー項目を必要とします。私は、これはほとんどのブラウザで動作信じて(IE6以外、もちろん、なんてこった - そのブラウザのため、あなたは私が答えを覚えていないいくつかの余分な作業を行う必要があります):
.yuimenubaritem { float: right; }
第二に、あなたは反対の方向に流れるようにメニューバーのサブメニューを必要とします。あなたのメニュー構成ののsubmenualignment の属性を変更することにより、これを行うことができます:
// For the main submenu
new YAHOO.widget.MenuBar("id", { submenualignment: ["tr","br"] });
// You have to manually add all the Menus,
// so that you can set the submenualignment on each.
new YAHOO.widget.Menu("id", { submenualignment: ["tl","tr"] });
この時点で押し、右カーソルが行く左、およびその逆になるように、最悪の部分は、キーボードイベントが正常に動作するために取得しようとしています。メニューバーは、RTL(どこかのVARにこの情報を保存する)に設定されている場合ことを行うには、メニューバーの_onKeyDown()をハイジャックし、そのように変更する必要があります、それは少し違っ/左右処理します。 (申し訳ありませんが、あなたが自分でこれを把握する必要がありますが、それはキーの押下に例を切り替えるだけの簡単な作業でなければなりません)。