Local vs Global Resource Files in ASP.NET

One question developer’s eventually ask themselves when localizing APS.NET web apps using resource files is why the hell would anyone use local resource files when the advantages and simplicity of using global resource files seems so obvious?

The closest I have got to any definitive guidelines from Microsoft is this passage from the “ASP.NET Web Page Resources Overview” on MSDN

Choosing Between Global and Local Resource Files

You can use any combination of global and local resource files in the Web application. Generally, you add resources to a global resource file when you want to share the resources between pages. Resources in global resource files are also strongly typed for when you want to access the files programmatically.

However, global resource files can become large, if you store all localized resources in them. Global resource files can also be more difficult to manage, if more than one developer is working on different pages but in a single resource file.

Local resource files make it easier to manage resources for a single ASP.NET Web page. But you cannot share resources between pages. Additionally, you might create lots of local resource files, if you have many pages that must be localized into many languages. If sites are large with many folders and languages, local resources can quickly expand the number of assemblies in the application domain.

When you make a change to a default resource file, either local or global, ASP.NET recompiles the resources and restarts the ASP.NET application. This can affect the overall performance of your site. If you add satellite resource files, it does not cause a recompilation of resources, but the ASP.NET application will restart.

The ClientSide API for the ASP.NET Validation Controls

Page_IsValid – A global boolean variable indicating if the page is valid.

Page_Validators – An array containing all the validation controls on the page.

ValidatorValidate(Validator) – Calls the validation function for a specified Validation control. Validator is an actual control reference, not an id.

This will update the global Page_IsValid boolean variable.

Page_ClientValidate() – Calls the validation routine for all validation controls in the Page_Validators array. This will update the global Page_IsValid boolean variable.