When displaying a field with a vocabular, get the values and translate them

This builds on 5daa7af2a1611e23ffdabea3ed9bc51c01b76f17 which is a fix for [ticket 7627](https://dev.plone.org/ticket/7627) but misses some corner cases.  I added tests for those.

The danger is that I now break it for other corner cases. If you know cases where it could fail, please tell me. Bonus points if you can write test cases for those.

@kiorky maybe you can have a look, because you did the original fix.

My branch is based on the 1.9.x branch. Tested in the core-dev 4.3 buildout.