There are several ways to handle this:
1. As Erik indicated, an embedded user control which inherits PortalModuleBase can be given it's own resx file(s). In this case, note that the base name of the file should be that of the embedded control's ID. For example if the embedded user control has an ID of "ctlMyUserControl", the base name of the resx file must be "ctlMyUserControl.resx".
2. As in #1 above, set up your embedded user control to inherit the PortalModuleBase class as would any module control. In the Page_Load of the parent control, set the embedded user control's LocalResourceFile propert to that of the parent:
ctlMyUserControl.LocalResourceFile = Me.LocalResourceFile
In this case, localization values will be pulled from the parent control's resx file.
3. If your embedded user control does not inherit from PortalModuleBase, define a Public ReadOnly Property LocalResourceFile and in the property's getter you can return the appropriate resource file name. For example:
Public ReadOnly Property LocalResourceFile As String
Get
Return Me.TemplateSourceDirectory & "/" & Services.Localization.Localization.LocalResourceDirectory & "/MyUserControl"
End Get
End Property
In this case, the resx file should be named "MyUserControl.resx" and located in the App_LocalResources subfolder of the folder containing the usercontrol.
4. As a variation of #3, add a setter to the LocalResourceFile property of the embedded user control and set it to the parent's LocalResourceFile as in #2 above.
5. Finally, if appropriate in your case, place the needed localization strings in the module's App_LocalResources/SharedResources.resx file. I generally include a Public ReadOnly Property SharedResourcesFile in my module's Configuration class or in a module base class (inheriting from PortalModuleBase) so that I may obtain a reference to the path of SharedResources.resx from any control in the module.