Translated to english this sentence reads; She has eighteen years, when speaking to romanians and asking there age, they have told me they have x number of years, instead of "I am eighteen years old, I think this is worth taking into consideration especially when teaching Romanian speakers the english language.
We don't translate word for word. In all the Romance languages one says, she has (number) years. In Russian they say To her us (number) years. In English we say she is (number) years. It is accurate to translate the phrase and not by word for word.
I notice this sentence says "optsprezece ani" but a parallel sentence where the age is sixty years says "șaizeci de ani". When does one use "de" between the number and the noun? Or is it optional with all numbers?
You have to use DE for any number above 19. So: Eu am nouăsprezeci an, tu ai douăzeci de ani. Tu ai nouăsprezeci vaci, eu am douăzeci de vaci.