public static TrySplitResourceName ( string fname, string &only_filename, string &culture, string &extn ) : bool | ||
fname | string | |
only_filename | string | |
culture | string | |
extn | string | |
return | bool |
public static bool TrySplitResourceName (string fname, out string only_filename, out string culture, out string extn)
{
only_filename = culture = extn = null;
int last_dot = -1;
int culture_dot = -1;
int i = fname.Length - 1;
while (i >= 0) {
if (fname [i] == '.') {
last_dot = i;
break;
}
i --;
}
if (i < 0)
return false;
i--;
while (i >= 0) {
if (fname [i] == '.') {
culture_dot = i;
break;
}
i --;
}
if (culture_dot < 0)
return false;
culture = fname.Substring (culture_dot + 1, last_dot - culture_dot - 1);
if (!CultureNamesTable.ContainsKey (culture))
return false;
only_filename = fname.Substring (0, culture_dot);
extn = fname.Substring (last_dot + 1);
return true;
}
public virtual string GetDefaultResourceId(ProjectFile file) { string fname = file.ProjectVirtualPath; fname = FileService.NormalizeRelativePath(fname); fname = Path.Combine(Path.GetDirectoryName(fname).Replace(' ', '_'), Path.GetFileName(fname)); if (String.Compare(Path.GetExtension(fname), ".resx", true) == 0) { fname = Path.ChangeExtension(fname, ".resources"); } else { string only_filename, culture, extn; if (MSBuildProjectService.TrySplitResourceName(fname, out only_filename, out culture, out extn)) { //remove the culture from fname //foo.it.bmp -> foo.bmp fname = only_filename + "." + extn; } } string rname = fname.Replace(Path.DirectorySeparatorChar, '.'); DotNetProject dp = file.Project as DotNetProject; if (dp == null || String.IsNullOrEmpty(dp.DefaultNamespace)) { return(rname); } else { return(dp.DefaultNamespace + "." + rname); } }