What is a satellite assembly, and how can we use it?
Satellite assemblies are small assemblies that contain only resources and are specific to a particular language (or, more accurately, culture). For instance, say I have an assembly called "MyAssembly.dll". If I had translations for US English and Chinese (PRC), the file structure would look like this:
MyAssembly.dll
en-US/
MyAssembly.resources.dll
zh-CN/
MyAssembly.resources.dll
Each of the .resources.dll
files would contain the data from any culture-specific resource files that would be in the project (they would take the form of FileName.culture.resx
, so if we're talking about the US English translation of Form1
's resources, it would be Form1.us-EN.resx
).
As for using these files, this is done automatically by the resource manager. In the generated code for a resources file (that gives you the property-based syntax for reading a resource's value) it uses the current UI culture, but you can override this by calling the ResourceManager.GetString(string name, CultureInfo culture)
overload.