Esempio n. 1
0
        public bool TryGetReader(CultureInfo culture, Assembly assembly, out ITranslationReader reader)
        {
            Ensure.NotNull(culture, "culture");
            Ensure.NotNull(assembly, "assembly");
            string assemblyName = GetAssemblyName(assembly);

            IEnumerable <ITranslationReader> assemblyReaders = FindReaders(culture, assemblyName);
            IEnumerable <ITranslationReader> globalReaders   = FindReaders(culture, String.Empty);

            if (assemblyReaders != null || globalReaders != null)
            {
                if (assemblyReaders == null)
                {
                    reader = new EnumerationTranslationReader(globalReaders);
                }
                else if (globalReaders == null)
                {
                    reader = new EnumerationTranslationReader(assemblyReaders);
                }
                else
                {
                    reader = new EnumerationTranslationReader(Enumerable.Concat(assemblyReaders, globalReaders));
                }

                return(true);
            }

            reader = null;
            return(false);
        }
Esempio n. 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));
        }
        /// <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);
        }
        public void TranslateTextUsingL()
        {
            PlainTextTranslationReaderFactory factory = new PlainTextTranslationReaderFactory();

            using (MemoryStream fileContent = new MemoryStream())
                using (TextWriter writer = new StreamWriter(fileContent))
                {
                    writer.WriteLine("Hello, World!=Ahoj světe!");
                    writer.WriteLine("Character '\\=' means 'equal'=Znak '\\=' znamená 'rovnost'");
                    writer.Flush();
                    fileContent.Seek(0, SeekOrigin.Begin);

                    ITranslationReader reader  = factory.Create(fileContent);
                    TranslationAdapter adapter = new TranslationAdapter(new DefaultCultureProvider(), new TranslationReaderCollection().Add(new CultureInfo("cs"), reader));
                    Translate.SetHandler(adapter.Translate);

                    Assert.AreEqual("Ahoj světe!", (L)"Hello, World!");
                }
        }
        public void PlainTextReaderFactory()
        {
            PlainTextTranslationReaderFactory factory = new PlainTextTranslationReaderFactory();

            using (MemoryStream fileContent = new MemoryStream())
                using (TextWriter writer = new StreamWriter(fileContent))
                {
                    writer.WriteLine("Hello, World!=Ahoj světe!");
                    writer.WriteLine("Character '\\=' means 'equal'=Znak '\\=' znamená 'rovnost'");
                    writer.Flush();
                    fileContent.Seek(0, SeekOrigin.Begin);

                    ITranslationReader reader = factory.Create(fileContent);

                    string translatedText;
                    Assert.AreEqual(true, reader.TryGet("Hello, World!", out translatedText));
                    Assert.AreEqual("Ahoj světe!", translatedText);
                    Assert.AreEqual(true, reader.TryGet("Character '\\=' means 'equal'", out translatedText));
                    Assert.AreEqual("Znak '\\=' znamená 'rovnost'", translatedText);
                }
        }
Esempio n. 6
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "translation/{lang}/{resourceGroup}_{resource}")] HttpRequest req,
            string lang, string resourceGroup, string resource,
            ILogger log)
        {
            log.LogInformation($"C# HTTP trigger function processed a request. Requested language: {lang}, resource group: {resourceGroup}, resource: {resource}");

            try
            {
                // Load configurations
                string storageConnString      = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
                string langFilesContainerName = Environment.GetEnvironmentVariable("LanaguageFilesContainer");

                // Get the blob reader and get the required translation file.
                TranslatorFactory translatorFactory = new TranslatorFactory();
                IBlobReader       blobReader        = translatorFactory.GetBlobReader();
                BlobDownloadInfo  languageFile      = await blobReader.ReadBlobAsync(storageConnString, langFilesContainerName, $"{lang}.xml");

                if (languageFile != null)
                {
                    // Read the requested resource from the translation file
                    ITranslationReader translationReader = translatorFactory.GetTranslationReader();
                    string             result            = translationReader.ReadResource(lang, resourceGroup, resource, log, languageFile.Content);
                    if (!string.IsNullOrEmpty(result))
                    {
                        return(new OkObjectResult(result));
                    }
                    return(new BadRequestObjectResult("Requested resource does not exist"));
                }

                log.LogInformation("Translations don't exist for the language");
                return(new BadRequestObjectResult("Translations don't exist for the language"));
            }
            catch (Exception e)
            {
                log.LogError(e, "Unexpected error");
                return(new BadRequestResult());
            }
        }
        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);
        }
Esempio n. 8
0
        /// <summary>
        /// Adds <paramref name="reader"/> for <paramref name="culture"/> and <paramref name="assembly"/>.
        /// </summary>
        /// <param name="culture">Culture to add <paramref name="reader"/> for.</param>
        /// <param name="assembly">Assembly to add <paramref name="reader"/> for.</param>
        /// <param name="reader">Translation reader.</param>
        /// <returns>Self (for fluency).</returns>
        public TranslationReaderCollection Add(CultureInfo culture, Assembly assembly, ITranslationReader reader)
        {
            Ensure.NotNull(culture, "culture");
            Ensure.NotNull(assembly, "assembly");
            string assemblyName = GetAssemblyName(assembly);

            Add(culture, assemblyName, reader);
            return(this);
        }
Esempio n. 9
0
 /// <summary>
 /// Adds <paramref name="reader"/> for <paramref name="culture"/>.
 /// </summary>
 /// <param name="culture">Culture to add <paramref name="reader"/> for.</param>
 /// <param name="reader">Translation reader.</param>
 /// <returns>Self (for fluency).</returns>
 public TranslationReaderCollection Add(CultureInfo culture, ITranslationReader reader)
 {
     Add(culture, String.Empty, reader);
     return(this);
 }
Esempio n. 10
0
        /// <summary>
        /// Adds <paramref name="reader"/> for <paramref name="culture"/> and <paramref name="assemblyName"/>.
        /// </summary>
        /// <param name="culture">Culture to add <paramref name="reader"/> for.</param>
        /// <param name="assemblyName">Name of the assembly to add <paramref name="reader"/> for.</param>
        /// <param name="reader">Translation reader.</param>
        /// <returns>Self (for fluency).</returns>
        public TranslationReaderCollection Add(CultureInfo culture, string assemblyName, ITranslationReader reader)
        {
            Ensure.NotNull(culture, "culture");
            Ensure.NotNull(reader, "reader");

            Dictionary <string, List <ITranslationReader> > cultureReaders;

            if (!storage.TryGetValue(culture, out cultureReaders))
            {
                storage[culture] = cultureReaders = new Dictionary <string, List <ITranslationReader> >();
            }

            List <ITranslationReader> assemblyReaders;

            if (!cultureReaders.TryGetValue(assemblyName, out assemblyReaders))
            {
                cultureReaders[assemblyName] = assemblyReaders = new List <ITranslationReader>();
            }

            assemblyReaders.Add(reader);
            return(this);
        }