When using resources in ASP.Net, you will see a specialized compiler (native property of the tool) in .resx files (ResXCodeGen)
The bottom line of this is that your resources are compiled into a class. The name of this class is the name you should use when you want to use the resources there.
The class name is created as follows:
{project namespace} {folder structure} {filename} .resx (.resx is NOT part of the generated name)
Since you mentioned that your resx file is in the name of the "Locales / resources" directory, you will need to use the name (it is assumed that the resx file is called "locales.resx")
"locales.resources.locales"
Adding a language and language, for example, "uk-en", is added by the resource manager, loading the appropriate assembly based on the culture that was specified when creating the ResourceManager instance. If none are specified, Thread.CurrentCulture is used. You do not have to use the language / language extensions yourself, leave this in the resource manager to handle this.
If you don't know how the resource class will end, you can always look at MSIL or use a reflector to determine the name of the resource class in the actual deployed assembly.
; - Added after comments where posted -------
I also looked at another code in which there was arround;
Have you tried the Reflection on App_GlobalResources approach?
1: you load the library "App_GlobalResources" in the context of the website (in HttpHandler, Aspx, Ascx, etc.). => Assembly.Load ("App_GlobalResources");
2: Go through the available types and take the ResourceManager property from each type. =>
PropertyInfo pi = type.GetProperty ("ResourceManager");
resManager = pi.GetValue (null, new object [] {}) as ResourceManager;
3: If he has one, get the required ResourceSet => resManager.GetResourceSet (englishCulture, true, true);
Hope this helps.