So, guys... Let me summarize what we have at the moment.
Basically, there are several ways to handle passing culture to a formatter:

1) An additional parameter to formatter's methods. Like i have done it originally.
  Pros: - the actual culture object is used, not some surrogate
            - no need to create a new formatter object on each call
  Cons: - the design is less "clean". Same culture object should be used when locating the formatter and when formatting value.

 2) Use surrogate "culture" object in the formatter.
  Pros: - no need to create a new formatter object on each call, an object from the cache can be re-used.
  Cons: - surrogate "culture" object is used to locate string resources, not actual "culture" object passed to the Humanize() call. I'm not sure if this really poses any real-world problem. Do someone has any idea why this might be bad?

3) Pass actual "culture" object to the formatter's constructor.
 Pros: - actual culture is used
 Cons: - a new object has to be created each time. Sure, we can employ a kind of cache here, but it creates more problems then solves - particularly, we have to make sure the cache is thread-safe. I'm not sure if there will be any performance gain because of using such a cache.

Let's decide how we go there and i will implement it in a decided way.