private static IReadOnlyDictionary <CultureInfo, string> FindCultureFileNames(Uri assemblyLocation) { Dictionary <CultureInfo, string> cultures = null; var resourceFileName = $"{Path.GetFileNameWithoutExtension(assemblyLocation.AbsolutePath)}.resources.dll"; var directoryName = Path.GetDirectoryName(assemblyLocation.AbsolutePath); foreach (var folder in Directory.EnumerateDirectories(directoryName)) { var folderName = Path.GetFileName(folder); if (Culture.Exists(folderName)) { var match = Directory.EnumerateFiles(folder, resourceFileName, SearchOption.TopDirectoryOnly) .SingleOrDefault(); if (match == null) { continue; } var cultureInfo = CultureInfo.GetCultureInfo(folderName); if (cultures == null) { cultures = new Dictionary <CultureInfo, string>(CultureInfoComparer.ByName); } cultures.Add(cultureInfo, string.Empty); } } return(cultures ?? (IReadOnlyDictionary <CultureInfo, string>)EmptyReadOnlyDictionary <CultureInfo, string> .Default); }
public void RoundTripAll() { var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures) .Where(x => !string.IsNullOrEmpty(x.Name)) .ToArray(); foreach (var culture in cultures) { var name = culture.Name; Assert.IsTrue(Culture.Exists(name)); CultureInfo.GetCultureInfo(name); name = culture.TwoLetterISOLanguageName; Assert.IsTrue(Culture.Exists(name)); CultureInfo.GetCultureInfo(name); } }
private static bool TryGetCultureAndFile(string directory, string searchPattern, out CultureInfo culture, out string fileName) { var folderName = System.IO.Path.GetFileName(directory); if (!Culture.Exists(folderName)) { culture = null; fileName = null; return(false); } fileName = Directory.EnumerateFiles(directory, searchPattern, SearchOption.TopDirectoryOnly).SingleOrDefault(); if (fileName == null) { culture = null; return(false); } culture = CultureInfo.GetCultureInfo(folderName); return(true); }