in Managed/PseudoLoc/PseudoLocalizer.cs [124:160]
public static void Enable(Type resourcesType)
{
if (null == resourcesType)
{
throw new ArgumentNullException("resourcesType");
}
// Get the ResourceManager property
var resourceManagerProperty = resourcesType.GetProperty("ResourceManager", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
if (null == resourceManagerProperty)
{
throw new NotSupportedException("RESX managed wrapper class does not contain the expected internal/public static ResourceManager property.");
}
// Get the ResourceManager value (ensures the resourceMan field gets initialized)
var resourceManagerValue = resourceManagerProperty.GetValue(null, null) as ResourceManager;
if (null == resourceManagerValue)
{
throw new NotSupportedException("RESX managed wrapper class returned null for the ResourceManager property getter.");
}
// Get the resourceMan field
var resourceManField = resourcesType.GetField("resourceMan", BindingFlags.Static | BindingFlags.NonPublic);
if (null == resourceManField)
{
throw new NotSupportedException("RESX managed wrapper class does not contain the expected private static resourceMan field.");
}
// Create a substitute ResourceManager to do the pseudo-localization
var resourceManSubstitute = new PseudoLocalizerResourceManager(
_plocPaddingLengthRatio,
resourceManagerValue.BaseName,
resourcesType.Assembly);
// Replace the resourceMan field value
resourceManField.SetValue(null, resourceManSubstitute);
}