What kind of scripting do you need exactly? What kind of game?
I've always figured XML would be a great scripting language, as it is heiarchy based. And depending on the node in a childlist, you could easily call different functions depending on what you needed.
Granted, this could be extended to fit on needs. But here's an example of RPG dialog in XML, where each tag would open up a new window on the screen to display text.
<game>
<dialog>
<character type="womanA">
<event type="crops-died">
<speech text="The weather has been so horrible. The crops have died" image="womanAfarmer" />
<event type="cow-died">
<speech text="I'm so sad my cow died." image="womanAfarmer" />
<speech text="Sorry to hear that." image="primaryCharacter" />
<exit />
</event>
<exit />
</event>
<speech text="Today is a beautiful day!" image="womanAfarmer" />
<speech text="Oh noes! A killer sandworm!" image="primaryCharacter" />
<battle type="bossSandworm" setup="1"/>
<exit />
</character>
</dialog>
</game>
I did actually have a prototype of this system working 5 years ago. You parse the XML file and compare what to do with each node, depending on the current variables of the game. How you would react to each node too would influence how the XML is parsed. It wouldn't be hard to come up with decision trees within the XML structure; e.g., did user select YES or NO?
In the example above, for an RPG, if the player talks to a character, you get the character information. If the character type equals womanA, you go down that node path.
From there on out, you can check to see if some events have occured to change dialog. If the "crops have died", store that event somewhere in memory (list of strings :P) and see if that list contains "crops-died". If so, go down that node path. Has "cow-died"? If so, go down that node path.
Each path has different dialog, and the node means stop parsing XML and resume regular gameplay. If you notice, talking to the woman with the cows and crops alive means you get to face a sandworm boss :P
In addition, you can compound dialog. If the crops are dead but the cow is alive, the person would just say "The weather is so horrible. The crops are all dead." However, if the cow is dead as well, the character would say "The weather is so horrible. The crops are all dead" in addition to "I'm so sad my cow died." to the player responding "Sorry to hear that", because they're all part of the same chain of events.
Actual mileage per program may vary, and it wouldn't be too hard to switch the embedded dialog within this file with references like, 'stringA' which would be located in another file. That way, you could have multiple files of the text in different languages, and just need to point to the correct file to get the language-specific text :)