示例#1
0
        public void DirectoryProviderFactory()
        {
            DirectoryTranslationReaderProviderFactory factory = new DirectoryTranslationReaderProviderFactory(
                new PlainTextTranslationReaderFactory(),
                "*.txt"
                );

            string rootPath = @"C:\\Temp\\Localization";

            Assert.AreEqual(true, Directory.Exists(rootPath));

            File.WriteAllText(Path.Combine(rootPath, "en-US.txt"), "Hello, World!=Hello, World!");
            File.WriteAllText(Path.Combine(rootPath, "cs-CZ.txt"), "Hello, World!=Ahoj všichni!");
            File.WriteAllText(Path.Combine(rootPath, "UnitTest.cs-CZ.txt"), "Hello, World!=Ahoj!");


            /// EN ------------------
            ITranslationReaderProvider provider = factory.Create(rootPath);
            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);


            /// 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!", translatedText);
        }
示例#2
0
        public bool TryGetReader(CultureInfo culture, Assembly assembly, out ITranslationReader reader)
        {
            IEnumerable <CultureInfo> defaultCultures = defaultCultureProvider.GetCulture();

            if (defaultCultures.Contains(culture))
            {
                reader = EmptyTranslationReader.SourceAsTranslated;
                return(true);
            }

            return(readerProvider.TryGetReader(culture, assembly, out reader));
        }
        public string Translate(Assembly callingAssembly, string originalText)
        {
            IEnumerable <CultureInfo> cultureInfos = cultureProvider.GetCulture();

            foreach (CultureInfo cultureInfo in cultureInfos)
            {
                ITranslationReader reader;
                string             translatedText;
                if (readerProvider.TryGetReader(cultureInfo, callingAssembly, out reader) && reader.TryGet(originalText, out translatedText))
                {
                    return(translatedText);
                }
            }

            return(originalText);
        }