Index: /CKEditor/branches/versions/3.4.x/CHANGES.html
===================================================================
--- /CKEditor/branches/versions/3.4.x/CHANGES.html	(revision 5676)
+++ /CKEditor/branches/versions/3.4.x/CHANGES.html	(revision 5677)
@@ -46,4 +46,5 @@
 			Fixed issues:</p>
 	<ul>
+		<li><a href="http://dev.fckeditor.net/ticket/5911">#5911</a> : BIDI: List items should support and retain correct base language direction
 		<li><a href="http://dev.fckeditor.net/ticket/5436">#5436</a> : IE: Cursor goes to next Table Cell after we insert a Smiley in the Table Cell.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/5580">#5580</a> : Maximize does not work properly in the Office 2003 and V2 skins.</li>
Index: /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js	(revision 5676)
+++ /CKEditor/branches/versions/3.4.x/_source/plugins/list/plugin.js	(revision 5677)
@@ -68,5 +68,5 @@
 
 		// Convert our internal representation of a list back to a DOM forest.
-		arrayToList : function( listArray, database, baseIndex, paragraphMode )
+		arrayToList : function( listArray, database, baseIndex, paragraphMode, dir )
 		{
 			if ( !baseIndex )
@@ -110,6 +110,10 @@
 					{
 						// Create completely new blocks here, attributes are dropped.
-						if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' )
+						if ( dir || ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' ) )
+						{
 							currentListItem = doc.createElement( paragraphName );
+							if ( dir )
+								currentListItem.setAttribute( 'dir', dir );
+						}
 						else
 							currentListItem = new CKEDITOR.dom.documentFragment( doc );
@@ -281,5 +285,6 @@
 		// Insert the list to the DOM tree.
 		var insertAnchor = listContents[ listContents.length - 1 ].getNext(),
-			listNode = doc.createElement( this.type );
+			listNode = doc.createElement( this.type ),
+			dir;
 
 		listsCreated.push( listNode );
@@ -294,4 +299,9 @@
 			else
 			{
+				if ( contentBlock.hasAttribute( 'dir' ) )
+				{
+					dir = dir || contentBlock.getAttribute( 'dir' ); 
+					contentBlock.removeAttribute( 'dir' );
+				}
 				contentBlock.copyAttributes( listItem );
 				contentBlock.moveChildren( listItem );
@@ -305,4 +315,8 @@
 				listItem.appendBogus();
 		}
+
+		if ( dir )
+			listNode.setAttribute( 'dir', dir );
+
 		if ( insertAnchor )
 			listNode.insertBefore( insertAnchor );
@@ -354,5 +368,6 @@
 		}
 
-		var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode );
+		var newList = CKEDITOR.plugins.list.arrayToList( listArray, database, null, editor.config.enterMode,
+			groupObj.root.getAttribute( 'dir' ) );
 
 		// Compensate <br> before/after the list node if the surrounds are non-blocks.(#3836)
