Basically I add a new resource file to my project, then rename the file with the appropriate culture code. I then copy the data keys from the default resource file into the new culture resource file and change as appropriate.
So if I had an ASP.NET project with the file test.aspx.resx as my default resource file, I would add a new resource file for English with the name test.aspx.en.resx and add another resource file for Spanish with the name test.aspx.es.resx. Now copy the <data>
elements from test.aspx.resx and place them in test.aspx.en.resx and test.aspx.es.resx. Then edit the <value> element contents as appropriate for the culture.
Once I rebuild my project, VS.NET will create the appropriate structure under the bin directory.
If you want to define a more specifc culture resource files, you can just use that culture identifier code. So in your example, you use en-US and es-ES. This would translate in my example to be the files: test.aspx.en-us.resx and test.aspx.es-es.resx. Along
with these files you could still have the other files: test.aspx.en.resx and test.aspx.es.resx.
When your user is associated with the culture identifier en-UK, the .NET framework will see only the resource files for en and en-US. It doesn't find en-UK so it strips the the -UK and will find the en resource file and use it. If you didn't have the en resource
file, the .NET framework will use the default resoruce file as a last resort.