晩ご飯が作ってある
Dinner has been made. (intentional)晩ご飯を作っておいた.
(I) made dinner (so I can eat it).
They seem quite the same. Btw what are some cases in which -てあった are used? I can't recreate one.
Japanese Language Stack Exchange is a question and answer site for students, teachers, and linguists wanting to discuss the finer points of the Japanese language. It only takes a minute to sign up.
Sign up to join this community1)「晩{ばん}ご飯{はん}が作{つく}ってある。」
Dinner has been made (and it is still there untouched.)
2)「晩ご飯を作っておいた.」
Someone made dinner some time ago (so that I/someone could eat it later on).
The difference in meaning between the two sentences would depend heavily on the current situation of the meal that one made.
Sentence #1, even without any further context, would always mean that the meal (or at least the speaker's portion) is still there uneaten and available as the speaker utters the sentence. This is because of the use of 「~~ってある」. "Dinner was made and it is still there." The temporal point of reference is NOW.
Sentence #2 without any further context, however, leaves one unsure of what has happened to the dinner that was made. Someone may already have eaten it or it may still be there untouched. The temporal point of reference is in the PAST.
Thus, the two sentences would describe practically the same situation only on the condition that the dinner in question is still there.
Moving on to 「~~てあった」...
「晩ご飯が作ってあった。」
means:
"Dinner had been made." (You found that situation some time ago.)
The temporal point of reference is in the past. For instance, you could say "When I got home from school yesterday, dinner had already been made." The meal was there ready to eat. Once again, the sentence says nothing about whether or not you actually ate it.
~ておく is used for doing something in advance, so one doesn't have to do it later
~てある simply describes the state of something already having been done
晩ご飯が作ってある。
Dinner is ready.晩ご飯を作っておいた。
I already prepared dinner (in advance) [so that we wouldn't have to make dinner now].
The difference in meaning is I think the emphasis of ~ておく on the fact that something was done as a preliminary measure / pre-emptively / in advance.
There is also an important difference in grammar: In the first sentence 晩ご飯 is the subject; in the second sentence 晩ご飯 is the object and the subject is missing (and only implied by the context).
According to "A Dictionary of Basic Japanese Grammar", page76:
ある: Something has been done to something, and the resultant state of that action remains.
Examples:
それはもうジョンに話してある。
It has been told to John already.飲み物はもう買ってあります。
Drinks have already been bought.窓が開けてある。
The window is open.おく: do something in advance for future convenience.
Examples:
話しておく: talk in advance.
食べておく: eat something in advance.
Verbて+ある: represents a state.
Verbて+おく: represents an action.