static IResourceReader GetReader(Stream stream, string name, bool useSourcePath, Options options) { string format = Path.GetExtension(name); switch (format.ToLower(System.Globalization.CultureInfo.InvariantCulture)) { case ".po": case ".pot": return new PoResourceReader(stream, options); case ".isl": return new IslResourceReader(stream, options); /* this version has been specialized for use converting between '.resx' * and '.po' files, other formats will now fail! case ".txt": case ".text": return new TxtResourceReader (stream); case ".resources": return new ResourceReader (stream);*/ case ".resx": IResourceReader reader = new ResXResourceReader(stream); if (useSourcePath) { // only possible on 2.0 profile, or higher PropertyInfo p = reader.GetType().GetProperty("BasePath", BindingFlags.Public | BindingFlags.Instance); if (p != null && p.CanWrite) { p.SetValue(reader, Path.GetDirectoryName(name), null); } } ((ResXResourceReader)reader).UseResXDataNodes = true; return reader; default: throw new Exception("Unknown format in file " + name); } }