2 Answers
2

The sentence as written uses the verb speak in Present Indefinite Tense. What tense to use depends on what exactly the statement is trying to convey. It is a bit difficult to discern the intended meaning from the sentence written.

If the non-native speaker wants to say that "he" is capable of expressing himself in German, and that ability became evident some (long) time ago, then I'd say

He has spoken German for a long time.

Another possible form has two clauses connected by a conjunction 'and':

He speaks German, and has for a long time.

If the speaker wants to say that "he" uses German now and that action started some (long) time ago, then Present Perfect Continuous is better:

When we want to show that an activity or situation started in the past and is continuing now, we use a present perfect construction, not the present simple:

*I work here for four years. (wrong - might possibly refer to the future, but cannot refer to the past continuing into the present)

*I worked here for four years. (wrong - it implies that this four years is entirely in the past).

I have worked here for four years. (good)

Forandsince

The Original Poster's example uses since with a period of time. This is an easy mistake to make. We usually use since with a point in time when we use the present perfect. Here are some potential points in time we can use with the present perfect:

Tuesday

1pm

1984

A period of time is different from a point in time. Periods have length. Three o'clock has no length. Three hours has length. It's three hours long! When we want to use the present perfect with a period of time, we need to use the preposition for. Here are some more examples of periods of time:

three days

two years

five minutes

ages

a while

We can change a period of time into a point in time by adding the word ago:

three days ago

five years ago

Some examples of the present perfect with points:

I've been vegetarian since 1995.

She hasn't been seen since Wednesday evening.

Bob hasn't eaten since dinnertime.

Some examples of the present perfect with periods:

I've been vegetarian for ten years.

She hasn't been seen for five days.

Bob hasn't eaten for ages.

The Original Poster's Question

The man's speaking German started in the past and is continuing now. So we need a present perfect construction. We could choose either a continuous perfect or just a plain present perfect. A long time is a period, not a point, so we have a choice. We can use the preposition for, or we could change the phrase to *a long time ago:

Simple

He's spoken German for a long time.

He's spoken German since a long time ago.

Continuous

He's been speaking German for a long time

He's been speaking German since a long time ago.

My favourite choice would be (3). Both the continuous aspect and the preposition for emphasise the duration of the activity, in my opinion.