private bool TryAddReader(TranslationReaderCollection collection, string filePath, ITranslationReader reader) { string fileName = Path.GetFileNameWithoutExtension(filePath); CultureInfo culture; if (CultureInfoParser.TryParse(fileName, out culture)) { collection.Add(culture, reader); return(true); } // Everything before last '.' use as assembly name; everthing behind last '.' use as culture info. string assemblyName = Path.GetFileNameWithoutExtension(fileName); string cultureName = Path.GetExtension(fileName); if (cultureName.StartsWith(".")) { cultureName = cultureName.Substring(1); } if (CultureInfoParser.TryParse(cultureName, out culture)) { collection.Add(culture, assemblyName, reader); return(true); } return(false); }
public void GetText() { TranslationReaderCollection collection = new TranslationReaderCollection() .Add(new CultureInfo("cs-CZ"), new DefaultTranslationReader().Add("Hello, World!", "Ahoj všichni!")); ITranslationReaderProvider provider = new GetTextTranslationReaderProvider( new EnumerationCultureProvider(new CultureInfo("en-US").ParentsWithSelf()), collection ); /// EN ------------------ ITranslationReader reader; Assert.AreEqual(true, provider.TryGetReader(new CultureInfo("en-US"), Assembly.GetExecutingAssembly(), out reader)); string translatedText; Assert.AreEqual(true, reader.TryGet("Hello, World!", out translatedText)); Assert.AreEqual("Hello, World!", translatedText); Assert.AreEqual(true, reader.TryGet("Hello!", out translatedText)); Assert.AreEqual("Hello!", translatedText); /// CS ------------------ Assert.AreEqual(true, provider.TryGetReader(new CultureInfo("cs-CZ"), Assembly.GetExecutingAssembly(), out reader)); Assert.AreEqual(true, reader.TryGet("Hello, World!", out translatedText)); Assert.AreEqual("Ahoj všichni!", translatedText); Assert.AreEqual(false, reader.TryGet("Hello!", out translatedText)); Assert.AreEqual(null, translatedText); }
public void TranslationCollection() { TranslationReaderCollection collection = new TranslationReaderCollection() .Add(new CultureInfo("cs-CZ"), new EmptyTranslationReader()); ITranslationReader reader; Assert.AreEqual(true, collection.TryGetReader(new CultureInfo("cs-CZ"), Assembly.GetCallingAssembly(), out reader)); Assert.AreEqual(false, collection.TryGetReader(new CultureInfo("en-US"), Assembly.GetCallingAssembly(), out reader)); }
/// <summary> /// Creates translation reader provider from directory path. /// </summary> /// <param name="directoryPath">Path to directory to load readers from.</param> /// <returns></returns> public ITranslationReaderProvider Create(string directoryPath) { TranslationReaderCollection result = new TranslationReaderCollection(); foreach (string filePath in Directory.EnumerateFiles(directoryPath, searchPattern)) { using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { ITranslationReader reader = readerFactory.Create(fileStream); TryAddReader(result, filePath, reader); } } return(result); }