Well, no. You cannot assign them an order cause that can change from a language to another and they need to be translated wherever they are in the sentence so they have to be named keywords.
Actually, there is 2 styles currently implemented to convert keywords and this is going to change. The Template.substitute way (which is the one using the $ prefix) is going to be removed. You will have to use the
str.format pattern (minus the indexing part like I mentionned above) so your file will become:
Syntax: Select all
[EliminatedTarget]
en = Eliminated {target} with {weapon}
Anyways, you could also use ** combined with a dict storing your keywords:
Syntax: Select all
keywords = {'target': 'foo', 'weapon': 'bar'}
string = strings['EliminatedTarget'].get_string(language, **keywords)
Since you mentionned list, you could always use pairs with the dict constructor:
Syntax: Select all
keywords = dict([('target', 'foo'), ['weapon', 'bar')])
But heh, prefer the dictionary.