One possible explanation to this could be that the workitem text is saved in the language it was run in the swwwihead (the text itself - without the variables) when reading it in the translated language however the text is calculated, so the &level& value is determined from the final &level& value ('03') for all steps.
That is exactly what is happening.
See if switching off the option "Display work items in logon language" makes a difference.
And the other option is to create a custom decision task, add the level as a container element, bind it in and use the 'Task local' element for your text.