I guess the best answer to your question is to enable cache/sql debug and check if what you are caching is actually being taken from the cache in another request. On top of that you can always go to Debug\caches items\ and see if a key is formed the way you wanted.
It seems that you are mixing up the two things: partial (for web parts) and output caching (for the whole page). They are configured independently.
P.S. Some web parts have 'System settings' with 'Cache item name' property which is actually the cache key. So can call it 'TopMenu' and this will be the cachekey ;) you can use macro when you forming the name.For example 'TopMenu{%CurrentDocument.DocumentCulture|(identity)GlobalAdministrator%}'