Consider the following construction:
I have been learning German for two years.
I have learned the following ways to translate this sentence and they seem to all mean the same thing despite differences in syntax:
Llevo dos años aprendiendo alemán.
Hace dos años que aprendo alemán.
He estado aprendiendo alemán por dos años.
I don't know if there are any more ways to do this. So my question is, which of the above construct is most likely to be used by a native speaker in day-to-day conversation to convey this idea? Is the preference tied to the region or dialect? If so, in what ways?
Also, how would you translate the sentence if one is to add words like "past" or "last" to it? For example:
I have been learning German for the last two years.
P.S. Please mention the flavor of Spanish your answer pertains to, e.g. Mexican, Argentinean, Latin American, Castilian, etc., if applicable