- Resources are created automatically by default by VS.Net for Windows forms. They can be plain text files for string resources or XML files for string and binary resources.
- You can select language for each form and have different layout for each language.
- This creates satiellite assemblies for each language which are used by runtime depending on the culture selected.
- Each satellite assembly resides in a culture specific folder which uses ISO naming convention for e.g. for UK English it will be en-GB and for US English it would be en-US.
- There is no code in the resource dll.
- Main assembly will use resourse dll in sub directories e.g. en-GB\assemblyName.resources.dll.
- You can add custom resources.
- Naming convention for custom resource file [resourceType].[culture].resx. This way the culture specific custom resouce files will be compile in the satellite assemblies [undocumented feature].
- Resouces files are deployed in \[culture] fodler for windows forms and \bin\[culture] folder for asp.net.
- You can access culture specific resource using ResourceManager.GetResourceSet(cultureInfo)
- If the resource manager can't find the specific culture resource, it will fall back to neutal resource. For e.g. en is neautral resource for en-US, en-GB or en-CA.
- If resource manager can't find netural resouce it will fall back to invariant resouce which is located in main aseembley.
- A resouce manager bases its resource lookup based on the current thread's UI culture.
Very often while reviewing the code for my team, I will come across a semicolon at the start of JavaScript function as show below ; (function () { 'use strict'; ...and I often wondered what purpose it served. Guess what. It is an insurance to make sure your script works fine when all other scripts are merged together; The leading ; in front of immediately-invoked function expressions (iffe) is there to prevent errors when appending the file during concatenation to a file containing an expression not properly terminated with a ;. So there you go. Now you know what that little semicolon is doing there in your code.
Comments