2009-03-31 6 views
1

YUI supporte-t-il les langages rtl? (rtl: droite à gauche, comme l'hébreu ou l'arabe).Support YUI des langages rtl

Si oui, comment? Je souhaite afficher un MenuBar où les différents éléments de menu commencent près de la marge de droite et vont vers la gauche.

Répondre

4

Il n'y a pas de support pour les langages RTL dans YUI 2.x. J'ai déposé un bug à ce sujet il y a plus d'un an et j'ai reçu une réponse disant qu'ils pourraient l'ajouter dans une version ultérieure. (Je ne trouve plus le bogue depuis qu'ils sont passés à leur nouveau tracker, désolé.) J'espère qu'ils ajoutent le support RTL pour YUI 3.x, mais je n'ai pas vérifié les versions de prévisualisation (je ne peux pas les trouver en ajoutant Support RTL). Cela ne veut pas dire que les menus YUI ne peuvent pas faire de RTL, même si cela prend un peu de travail car il n'y a pas de prise en charge intégrée. Je ne prétends pas que cela fonctionne 100% dans tous les navigateurs, surtout pas IE. D'abord, vous avez besoin des éléments de menu pour circuler dans la direction opposée, et commencez du côté opposé de la page. Je crois que cela fonctionne dans la plupart des navigateurs (sauf IE6, bien sûr, argh - pour ce navigateur, vous devez faire un travail supplémentaire que je ne me rappelle pas la réponse à):

.yuimenubaritem { float: right; } 

Deuxièmement, vous avez besoin sous-menus du MenuBar pour circuler dans la direction opposée. Vous pouvez le faire en changeant la submenualignment attribut de vos configurations Menus:

// 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"] }); 

Le pire tente d'obtenir les événements du clavier fonctionnent correctement, comme à ce point pressant fait à droite le curseur aller à gauche et vice versa. Pour ce faire, vous devrez détourner _onKeyDown() de MenuBar et le modifier de sorte que, si le MenuBar est défini sur RTL (stocker cette information dans un var quelque part), il traite différemment gauche/droite. (Pardon, vous devrez vous débrouiller seul, mais il vous suffira de changer de case sur les touches).

+0

wow - excellente réponse, très détaillée. Ce serait bien d'avoir une place pour mettre toutes ces questions en jeu. Ainsi, lorsque de nouveaux problèmes sont découverts et résolus, ils peuvent être mis là. – flybywire