I have been learning English for many years.听起来正常一些,表示学了很多年,并且现在还在学习。
I have learnt 表示已经学会了,学到了,学完了。
I learned 表示学过,不能加for many years,除非你表达的事已经完全结束。比如,你想说你曾经学过几年英文,现在没学了:I studied/learned Englsih for five years when I was young.
补充一下,你quote的这个外国人的提问句有点不太通顺,语法上要改一改How many years have you been learning English? 或How many years did you studied English before?前者表示你还在学,后者表示问你曾经学过多少年,潜在意思是你现在没学了。
I have been learning English for many years. 过去时强调动作已经截止,表示过去某一具体时间发生的动作或存在状态;完成时强调已经完成的动作对现在的影响。
你这句话最好用现在完成进行时,因为你学习英语的动作还没停止,还会继续下去,你说是吧。当然,用现在完成时也是可以的。不同时态表达的意思不太相同
现在完成时表示一个过去发生并且已经结束的动作对现在产生的影响和结果。过去时是表示过去发生并且已经结束的动作,区别是对现在没有影响。
例如:我昨天去上海了。I got to Shanghai yesterday.
我在上海住三年了。I have been in Shanghai for three years.
那你要表达我学英语很多年了,那是对现在有影响的,应该用完成时,说明你还在学。
注意:一些现完的时间状语for~years,since~years ago,never,yet,
如果是为了应付考试你需要加以区分,完成时表示学过现在还在学,过去式是过去学了现在可能在学也可能没学了(没学可能性大)。你跟外国人聊天没人会在意你用什么时态,你说的两种外国人都能明白意思。
可以翻译成: I've been learning English for many years。
learning 英[ˈlɜ:nɪŋ] 美[ˈlɜ:rnɪŋ]
n. 学问,学术,知识;
v. (learn的现在分词) 学习;
year 英[jɪə(r)] 美[jɪr]
n. 年; 年纪; 一年的期间; 某年级的学生;
[例句]We had an election last year.
去年我们进行了一次选举。