    Ext.define('Ext.rtl.chart.LegendItem', {
        override: 'Ext.chart.LegendItem',

        updatePosition: function(relativeTo) {
            var me = this,
                items = me.items,
                ln = items.length,
                legend = me.legend,
                currentX = me.x,
                currentY = me.y,
                item, i, x, y, translate, o, width,
                relativeX, relativeY;

            if (!relativeTo) {
                relativeTo = legend;
            }

            if (!legend.chart.getHierarchyState().rtl || !relativeTo.width) {
                me.callParent(arguments);
                return;
            }

            relativeX = relativeTo.x;
            relativeY = relativeTo.y;
            width = relativeTo.width;
            for (i = 0; i < ln; i++) {
                translate = true;
                item = items[i];
                switch (item.type) {
                    case 'text':
                        x = width + relativeX + currentX - 30 - item.getBBox().width; // -25 & -5 for a gap
                        y = relativeY + currentY;
                        translate = false;
                        break;
                    case 'rect':
                        x = width + relativeX + currentX - 25;
                        y = relativeY + currentY - 6;
                        break;
                    default:
                        x = width + relativeX + currentX - 25;
                        y = relativeY + currentY;
                }

                o = {
                    x: x,
                    y: y
                };

                item.setAttributes(translate ? {
                    translate: o
                } : o, true);
            }
        }
    });