htaccess多语言重定向错误

I have some issue to write htaccess.
for two days is i searching and google to found my answer but all answers not solved my issue!
this is part of my htaccess

Options +FollowSymLinks -MultiViews<br/>
RewriteEngine On

for remove / end of url

RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)/$ /$1 [R=301,L,NE]  

for auto redirect to en/home

RewriteCond %{REQUEST_URI} ^/$  
RewriteRule (.*) http://www.--.com/en/home [R=301,L,NE]  

RewriteCond %{REQUEST_FILENAME} \.(gif|jpeg|png|js|css|swf|php|ico|txt|pdf|xml)$ [OR]  
RewriteCond %{REQUEST_FILENAME} -f [OR]  
RewriteCond %{REQUEST_FILENAME} -d [OR]  
RewriteCond %{REQUEST_FILENAME} -l  
RewriteRule ^ - [L,NE]  

for redirect all links without lang code to default language

RewriteCond %{REQUEST_URI} !^/(?:[a-z]{2})(/|$)  
RewriteRule ^([^/]+(/.*)?)$ /en/$1 [R=301,L,NE]  

rewrite url for news

RewriteRule ^([a-z]{2})/(news)/([0-9]+).*       $2.php?news_id=$3&lang=$1&%{QUERY_STRING}       [L,NE]        

To externally redirect /dir/file.php to /dir/file

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]  
RewriteRule ^ /%1%2/ [R=302,L,NE]  

To internally forward /dir/file to /dir/file.php

RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]  
RewriteRule ^(.+?)/?$ $1.php%{QUERY_STRING} [L,NE]  

ErrorDocument 404 http://www.--.com/404.php  

everything is ok for exp if open /about-us site automatic will open /en/abput-us also work correctly for /news/34/test-news automatic will redirect to /en/news/34/test-news
but my problem is when if change the url for this /en/news/34/test-news change to /en/news/test-news (remove news id or remove news word) instead open 404 error page, page not open and url changed to this
en/news/new-news-25th.php?lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en&lang=en ****

What part of my htaccess is wrong, Anyone can help me? Thank you