I have come across this foreach() problem with several non_standrd modules or blocks. I thin it happens whenever there is code that has the assumption built in that there will always be at least one of whatever object the foreach() is trying to act upon. I suppose it means that testing on moodles that don't have these objects hasn't been doen. An understandable mistake.
Even code on MoodleDocs has stuff like this in it. Take the resetting blocks code at http://docs.moodle.org/en/Block_layout . The foreach() there would fail if there was no courses in a moodle when it it run. Not that that's likely as I guess every moodle has course 1.
I have fixed these myself usually by putting an if obect existst then do the foreach() code else don't but that could cause issues. You may need to substitute in a string such as "No assignments set" or something like that depending on the block/module etc.
However I do believe there are better ways of coding this mentioned elsewhere on the forums.
In this instance if it doesn't occur in the same circumstances on 1.53 it may be the way 1.6 determines if a block is shown?
Sorry I can't help further.
What I can do is point you to an en lang file that has many if not all the strings filled in. I believe the copy on MoodleDocs has an old en lang file. I attached my copy to this post http://moodle.org/mod/forum/discuss.php?d=45432