Translation cache/invalidation by touch

Everything works not ok, however, this needs still some DRYing up (as you can see, almost copy-pasted code in 4 different places).