Hi again, Anatoliy.
I would like to give us some conclusion. If your application needs the Localization (and from my point of view it is always - 'FirstName' should be 'First name' for the user even if only English is used) you have to decide which way to go.
Catharsis implementation is not forcing you in any way. You can use standard ASP.NET localization with .rescx if you like it. The syntax of the 1) $resources and 2) metaKey="key"... is also supported (It is so so long time ago I did use it...).
If you prefere to profit from the adavantages of the MVC (as the design pattern) and OOP then the Catharsis framework has something more for you:
Create the contract (IModel) which expects some strings, numbers, Entities
Fill that contract in the Controller-Action. And do decide (if it is suitable) that you will localize the 'contracted' strings here - on the Controllre-Action layer. That will allow you to fill the contract (IModel) and be the Master of the provided result.
For instance - to localize headers of the exported MS Excel sheet - this is not thebest but also the only place where to do it.
On the UI layer use passed data (filled in the IModel contract) . If this is the general Control - e.g. the List View - render the strings as was provided in the contract (based on the agreement: localized or as the keys to be localized). In specific cases,
e.g. you are on the DetailWC of your entity - call localization there (no need to generalize).
In runtime - for administrators, the localization infrastructure allowes to search not only the keys, but even in the 'localized' phrases. so, if the 'First name' should be changed to the 'Name', it is possible to search with the localized phrase 'First
name' instead of the key 'FirstName'.
And that, from our experience (based on currently 3 projects running in the production!!!) is very very user Friendly.
One important note to the Catharsis List View control. I would say that this is absolutelly unique control (which I did not ever met before...) You are not declaring the <gridView> elements and Binding them as in the ASP.NET web forms world for every
List View si the real MVC control. There is a contract: IListModel. You are filling it completely in the Controller-Action-List -> result is then rendered without any other declarations, and Localized. That is really lot of time saving not only during
development, but mostly in the maintainance.
ListView is powerful control, adjustable on the Controller layer, by switching the IListModel properties - including localization. This is in the ASP.NET web form world unthinkable, and with the .rescx files very complicated task.
Anatoliy, I am not sure if I am talking about stuff you'd like to talk. About your suggestions which are suitable for you (in comparison with the Catharsis implementation). Please, if my answers are still not clear, do not hesitate to give use some
example how it should be done. Maybe your Idea is functional and can move us forward.
And thanks for your time - to write these notes.
Enjoy Catharsis, and have the working localization...
PS: there is another fundamental extension provided by the Catharsis framework, which is missing in Microsoft System.Web and System.Web.Mvc libraries.
If the user changes the (in runtime appended) culture, he/she can intaract with textboxes in his/her native format: e.g. 12/31/2010 or 31.12.2010. This culture is then correctly used for binding, and the Dates and Numbers are correctly transformed and bounded.
Such functionality is in ASP.NET web forms and even mvc NOT WORKING at all (for instance Czech culture thousand separators are broken)
This is another brutal plus for the Catharsis built-in localization extending (see the .ToDisplay() extension method)...