コード例 #1
0
        public static void SaveTranslation(string languageCode, IEnumerable <TranslationItemWithCategory> items, string filename)
        {
            Translation foreignTranslation = new Translation {
                GitExVersion = GitCommands.Settings.GitExtensionsVersionString,
                LanguageCode = languageCode
            };

            foreach (TranslationItemWithCategory translateItem in items)
            {
                if (translateItem.Status == TranslationType.Obsolete &&
                    (String.IsNullOrEmpty(translateItem.TranslatedValue) || String.IsNullOrEmpty(translateItem.NeutralValue)))
                {
                    continue;
                }

                TranslationItem ti = translateItem.GetTranslationItem().Clone();
                if (ti.Status == TranslationType.New)
                {
                    ti.Status = TranslationType.Unfinished;
                }
                Debug.Assert(!string.IsNullOrEmpty(ti.Value) || ti.Status != TranslationType.Translated);
                ti.Value = ti.Value ?? String.Empty;
                Debug.Assert(ti.Status != TranslationType.Translated || translateItem.IsSourceEqual(ti.Source));
                foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).AddTranslationItem(ti);
            }
            TranslationSerializer.Serialize(foreignTranslation, filename);
        }
コード例 #2
0
        private async void BroadcastMessageAsync(string message)
        {
            string languages   = null;
            bool   doTranslate = Convert.ToBoolean(ConfigurationManager.AppSettings["TranslateServerEnabled"]);
            var    text        = message.Substring(BroadcastMessagePrefix.Length);

            if (doTranslate)
            {
                languages = GetLanguages(text, Convert.ToInt32(ConfigurationManager.AppSettings["TranslateCount"]));
                TranslationItem item = await DoTranslation(text, languages);

                // only a single translation item so use index [0]
                text = item.Text[0];
            }

            if (!string.IsNullOrWhiteSpace(text))
            {
                foreach (var client in _sockets)
                {
                    var languageKey = doTranslate ? $" as [{languages}]" : string.Empty;
                    Console.WriteLine($"broadcasting to {client.Value.Guid.ToString()}{languageKey}: " + text);
                    client.Value.WriteString(text);
                }
                BroadcastGpioSignal();
            }
        }
コード例 #3
0
        public Task SetItemRating(TranslationItem item, string fromLang, string toLang)
        {
            return
                (Task.Run(async() =>
            {
                Thread.Sleep(2000);
                int index;
                ObservableCollection <TranslationItem> translItems = await GetTranslations(item.Translation, fromLang, toLang);
                var zzz = translItems.FirstOrDefault(z => z.Translation == item.OriginalWord && z.LangPart == item.LangPart);
                index = zzz == null ? -1 : (100 - translItems.IndexOf(zzz));
                item.Rating = index;
            }));
            //return;
            //return
            //    Task.Run(() =>
            //    {
            //        var item1 = item;
            //        Random rnd = new Random(item.Translation.Length);
            //        int delay = rnd.Next(1000, 10000);

            //        Thread.Sleep(delay);
            //        Random rnd1 = new Random(delay);
            //        int res = rnd.Next(1, 15) + rnd1.Next(0, 15);
            //        item.Rating = delay;
            //        return delay; //res;
            //    });
        }
コード例 #4
0
ファイル: TextLocalizer.cs プロジェクト: vhatuncev/i18n
        /// <returns>null if not found.</returns>
        private string LookupText(string langtag, string msgkey)
        {
            // Note that there is no need to serialize access to System.Web.HttpRuntime.Cache when just reading from it.
            //
            var             messages = (ConcurrentDictionary <string, TranslationItem>)System.Web.HttpRuntime.Cache[GetCacheKey(langtag)];
            TranslationItem message  = null;

            //we need to populate the cache
            if (messages == null)
            {
                LoadMessagesIntoCache(langtag);
                messages = (ConcurrentDictionary <string, TranslationItem>)System.Web.HttpRuntime.Cache[GetCacheKey(langtag)];
            }

            // Normalize any CRLF in the msgid i.e. to just LF.
            // PO only support LF so we expect strings to be stored in the repo in that form.
            // NB: we test Contains before doing Replace in case string.Replace allocs a new
            // string even on no change. (This method is called very often.)
            if (msgkey.Contains("\r\n"))
            {
                msgkey = msgkey.Replace("\r\n", "\n");
            }

            if (messages == null ||
                !messages.TryGetValue(msgkey, out message) ||
                !message.Message.IsSet())
            {
                return(null);
            }

            return(message.Message);
        }
コード例 #5
0
        public void AddTranslationItem(TranslationItem translationItem)
        {
            if (string.IsNullOrEmpty(translationItem.Name))
                throw new InvalidOperationException("Cannot add translationitem without name");

            TranslationItems.Add(translationItem);
        }
コード例 #6
0
ファイル: TranslationMerger.cs プロジェクト: zingix/i18n
 public void MergeTranslation(IDictionary <string, TemplateItem> src, Translation dst)
 {
     // Our purpose here is to merge newly parsed message items (src) with those already stored in a translation repo (dst).
     // 1. Where an orphan msgid is found (present in the dst but not the src) we update it in the dst to remove all references.
     // 2. Where a src msgid is missing from dst, we simply ADD it to dst.
     // 3. Where a src msgid is present in dst, we update the item in the dst to match the src (references, comments, etc.).
     //
     // 1.
     // Simply remove all references from dst items, for now.
     foreach (TranslationItem dstItem in dst.Items.Values)
     {
         dstItem.References = null;
     }
     // 2. and 3.
     foreach (TemplateItem srcItem in src.Values)
     {
         TranslationItem dstItem = dst.Items.GetOrAdd(srcItem.MsgKey, k => new TranslationItem {
             MsgKey = srcItem.MsgKey
         });
         dstItem.MsgId             = srcItem.MsgId;
         dstItem.References        = srcItem.References;
         dstItem.ExtractedComments = srcItem.Comments;
     }
     // Persist changes.
     _repository.SaveTranslation(dst);
 }
コード例 #7
0
        public async Task <IActionResult> PutTranslationItem(string id, TranslationItem translationItem)
        {
            if (id != translationItem.Id)
            {
                return(BadRequest());
            }

            _context.Entry(translationItem).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TranslationItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #8
0
 public TranslationItemExists()
 {
     translationItem          = fixture.Create <TranslationItem>();
     translationItem.Language = currentLanguage;
     context.TranslationItems.Add(translationItem);
     context.SaveChanges();
 }
コード例 #9
0
        private void gridViewUI_ShowingEditor(object sender, CancelEventArgs e)
        {
            TranslationItem ti = (TranslationItem)gridViewUI.GetRow(gridViewUI.FocusedRowHandle);

            if (ti != null)
            {
                if (gridViewUI.FocusedColumn == gridColumnFrom)
                {
                    if (_fromLanguageId <= 0)
                    {
                        e.Cancel = true;
                    }
                }
                else
                {
                    if (gridViewUI.FocusedColumn == gridColumnTo)
                    {
                        if (_toLanguageId <= 0)
                        {
                            e.Cancel = true;
                        }
                    }
                }
            }
        }
コード例 #10
0
        public async Task <ActionResult <TranslationItem> > PostTranslationItem(TranslationItem translationItem)
        {
            _context.TranslationItems.Add(translationItem);
            await _context.SaveChangesAsync();

            //return CreatedAtAction("GetTranslationItem", new { id = translationItem.Id }, translationItem);
            return(CreatedAtAction(nameof(GetTranslationItem), new { id = translationItem.Id }, translationItem));
        }
コード例 #11
0
 public Task <int> GetRating(TranslationItem item, string fromLang, string toLang)
 {
     return
         (Task.Run(async() =>
     {
         return 1;
     }));
 }
コード例 #12
0
 public static TranslationItemDto Construct(TranslationItem translationItem)
 {
     return(new TranslationItemDto
     {
         Key = translationItem.Key,
         Value = translationItem.Value
     });
 }
コード例 #13
0
 public TranslationItem(TranslationItem copyItem)
 {
     Header = copyItem.Header;
     Text = copyItem.Text;
     OriginalText = copyItem.OriginalText;
     TranslationSource = copyItem.TranslationSource;
     RequestSourceLanguage = copyItem.RequestSourceLanguage;
     DestinationLanguage = copyItem.DestinationLanguage;
     _textWithOverflow = null;
 }
コード例 #14
0
 public TranslationItem(TranslationItem copyItem)
 {
     Header                = copyItem.Header;
     Text                  = copyItem.Text;
     OriginalText          = copyItem.OriginalText;
     TranslationSource     = copyItem.TranslationSource;
     RequestSourceLanguage = copyItem.RequestSourceLanguage;
     DestinationLanguage   = copyItem.DestinationLanguage;
     _textWithOverflow     = null;
 }
コード例 #15
0
 public ObservableTranslationItem(TranslationItem item)
 {
     this.Id         = item.Id;
     this.Name       = item.Name;
     this.Translator = item.Translator;
     this.Exists     = item.Exists;
     this.LocalPath  = Path.Combine(FileUtils.GetQuranDatabaseDirectory(), item.Filename);
     _isCompressed   = item.Compressed;
     _serverUrl      = item.Url;
 }
コード例 #16
0
        protected static TranslationItem AddLanguageVersionToTranslationItem([NotNull] ContentReference contentLink, [NotNull] string translation, [NotNull] LanguageSelector languageSelector)
        {
            // Create the base language version
            TranslationItem translationItem = CmsContext.CreateLanguageVersionOfContent <TranslationItem>(
                contentLink, languageSelector);

            // Change the properties that need changing for this version.
            translationItem.Translation = translation;

            return(translationItem);
        }
コード例 #17
0
        public Dictionary <String, TranslationItem> Extract()
        {
            String currLang = "";

            foreach (String f in otherFiles)
            {
                if (f.Contains(".es."))
                {
                    currLang = "Spanish";
                }
                else if (f.Contains(".pt."))
                {
                    currLang = "Portuguese";
                }
                else if (f.Contains(".fr."))
                {
                    currLang = "French";
                }
                else if (f.Contains(".de."))
                {
                    currLang = "German";
                }
                else if (f.Contains(".nl."))
                {
                    currLang = "Dutch";
                }
                else
                {
                    currLang = "English";
                }

                XmlDocument document = new XmlDocument();
                document.Load(f);
                //XmlNode root = document.GetElementsByTagName("resources")[0];
                XmlNodeList elemList = document.GetElementsByTagName("string");
                //XmlNodeList elemList = document.GetElementsByTagName("resources").;
                for (int i = 0; i < elemList.Count; i++)
                {
                    if (translationItems.ContainsKey(elemList[i].Attributes[0].Value))
                    {
                        TranslationItem item = translationItems[elemList[i].Attributes[0].Value];
                        item.GetType().GetProperty(currLang).SetValue(item, elemList[i].ChildNodes[1].InnerText, null);
                    }
                    else
                    {
                        TranslationItem item = new TranslationItem(elemList[i].Attributes[0].Value);
                        item.key = elemList[i].Attributes[0].Value;
                        item.GetType().GetProperty(currLang).SetValue(item, elemList[i].InnerText);
                        translationItems.Add(elemList[i].Attributes[0].Value, item);
                    }
                }
            }
            return(translationItems);
        }
コード例 #18
0
        public async Task <ActionResult> EditAsync([Bind("Id,Key,Language")] TranslationItem item)
        {
            if (ModelState.IsValid)
            {
                await _cosmosDbService.UpdateItemAsync(item.Id, item);

                return(RedirectToAction("Index"));
            }

            return(View(item));
        }
コード例 #19
0
        public async Task <ActionResult> CreateAsync([Bind("Id,Key,Language")] TranslationItem item)
        {
            if (ModelState.IsValid)
            {
                item.Id = Guid.NewGuid().ToString();
                await _cosmosDbService.AddItemAsync(item);

                return(RedirectToAction("Index"));
            }

            return(View(item));
        }
コード例 #20
0
                public TranslationItemExists()
                {
                    context.Database.EnsureDeleted();

                    _translationItem          = fixture.Create <TranslationItem>();
                    _translationItem.Language = currentLanguage;

                    context.TranslationItems.Add(_translationItem);
                    context.SaveChanges();

                    _translationItem = context.TranslationItems.FirstOrDefault();
                }
コード例 #21
0
 public Task <int> GetRating(TranslationItem item, string fromLang, string toLang)
 {
     return
         (Task.Run(async() =>
     {
         int index;
         ObservableCollection <TranslationItem> translItems = await GetTranslations(item.Translation, fromLang, toLang);
         var zzz = translItems.FirstOrDefault(z => z.Translation == item.OriginalWord && z.LangPart == item.LangPart);
         index = zzz == null ? -1 : (100 - translItems.IndexOf(zzz));
         return index;
     }));
 }
コード例 #22
0
        protected static TranslationItem CreateTranslationItem([NotNull] string originalText, [NotNull] string translation, [NotNull] ContentReference parentLink, [NotNull] LanguageSelector languageSelector)
        {
            // Create the base item
            TranslationItem translationItem = CmsContext.CreateContent <TranslationItem>(
                originalText, parentLink);

            // Set the additional properties for this type.
            translationItem.OriginalText = originalText;
            translationItem.Translation  = translation;

            return(translationItem);
        }
コード例 #23
0
        private void SaveAs()
        {
            var foreignTranslation = new Translation {
                LanguageCode = GetSelectedLanguageCode()
            };

            foreach (TranslateItem translateItem in translate)
            {
                string          value = translateItem.TranslatedValue ?? String.Empty;
                TranslationItem ti    = new TranslationItem(translateItem.Name, translateItem.Property,
                                                            translateItem.NeutralValue, value);
                ti.Status = translateItem.Status;
                if (ti.Status == TranslationType.Obsolete &&
                    (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(translateItem.NeutralValue)))
                {
                    continue;
                }
                if (string.IsNullOrEmpty(value))
                {
                    if (ti.Status == TranslationType.Translated || ti.Status == TranslationType.New)
                    {
                        ti.Status = TranslationType.Unfinished;
                    }
                }
                else
                {
                    // TODO: Support in form
                    if (ti.Status == TranslationType.Unfinished)
                    {
                        ti.Status = TranslationType.Translated;
                    }
                }
                foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).AddTranslationItem(ti);
            }

            using (var fileDialog =
                       new SaveFileDialog
            {
                Title = saveAsText.Text,
                FileName = translations.Text + ".xml",
                Filter = saveAsTextFilter.Text + "|*.xml",
                DefaultExt = ".xml",
                AddExtension = true
            })
            {
                if (fileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    TranslationSerializer.Serialize(foreignTranslation, fileDialog.FileName);
                    changesMade = false;
                }
            }
        }
コード例 #24
0
        public static void SaveTranslation(string languageCode, IEnumerable <TranslationItemWithCategory> items, string filename)
        {
            var foreignTranslation = new Translation(GitCommands.AppSettings.GitExtensionsVersionString, languageCode);

            foreach (TranslationItemWithCategory translateItem in items)
            {
                var item = translateItem.GetTranslationItem();

                var ti = new TranslationItem(item.Name, item.Property, item.Source, item.Value);
                ti.Value = ti.Value ?? String.Empty;
                foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).Body.AddTranslationItem(ti);
            }
            TranslationSerializer.Serialize(foreignTranslation, filename);
        }
コード例 #25
0
        private async Task <TranslationItem> DoTranslation(string text, string lang)
        {
            if (string.IsNullOrWhiteSpace(text) || string.IsNullOrWhiteSpace(lang))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            string[] parts = lang.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(s => s.Trim().ToLower())
                             .ToArray();

            var             newText = text;
            TranslationItem item    = null;

            for (int i = 0; i < parts.Length - 1; ++i)
            {
                string     part    = $"{parts[i]}-{parts[i + 1]}";
                UriBuilder builder = new UriBuilder("https://translate.yandex.net/api/v1.5/tr.json/translate");
                builder.Query = $"key=trnsl.1.1.20161115T000752Z.e4ef69f185b49000.8af2c89b99ea6cf6063ad452099e5f3e999e4487&text={newText}&lang={part}";

                HttpResponseMessage response = await client.GetAsync(builder.Uri);

                if (response.IsSuccessStatusCode)
                {
                    item = await response.Content.ReadAsAsync <TranslationItem>();

                    newText = item.Text[0];

                    // adjust the language returned since right now it holds just the last translation
                    item.Language = lang;
                }
            }

            var uri  = Request.GetOwinContext().Request.Uri;
            var host = Request.GetOwinContext().Request.RemoteIpAddress;

            Console.WriteLine($" Translated uri: {uri}");
            Console.WriteLine($"Translated from: {host}");
            Console.WriteLine($"Translated lang: {lang}");
            Console.WriteLine($"Translated from: {text}");
            Console.WriteLine($"  Translated to: {item.Text[0]}");
            Console.WriteLine();

            return(item);
        }
コード例 #26
0
        private static void HandleXmlFileModify(TranslationItem tItem)
        {
            if (mViewModel.file != null)
            {
                IEnumerable <XElement> fileElemets = mViewModel.file.Elements();
                foreach (var file in fileElemets)
                {
                    IEnumerable <XElement> thBody = file.Elements().Elements();

                    foreach (var itm in thBody) // <trans-unit>
                    {
                        //If it finds the item you want to modify
                        if (int.Parse(itm.FirstAttribute.Value) == tItem.Id)
                        {
                            List <XElement> transUnit = itm.Elements().ToList();

                            //Checks if it is intended for translation
                            if (itm.Attributes().ToList().Count < 3 ? true : itm.Attributes().ToList()[2].Value != "no")
                            {
                                //If the item isnt translated fills in the original text
                                if (!string.IsNullOrWhiteSpace(tItem.Translated))
                                {
                                    transUnit[1].SetValue(tItem.Translated);
                                }
                                else
                                {
                                    transUnit[1].SetValue(tItem.Original);
                                }

                                //Updates the 'translated' attribute to the saved items value
                                if (tItem.IsTranslated)
                                {
                                    transUnit[1].FirstAttribute.SetValue("translated");
                                }
                                else
                                {
                                    transUnit[1].FirstAttribute.SetValue("needs-translation");
                                }
                            }
                            break;
                        }
                    }
                }
            }
            else
            {
                DialogManager.Show("You havent selected a file", "Warning");
            }
        }
コード例 #27
0
        public async Task <ActionResult> DeleteAsync(string id)
        {
            if (id == null)
            {
                return(BadRequest());
            }

            TranslationItem item = await _cosmosDbService.GetItemAsync(id);

            if (item == null)
            {
                return(NotFound());
            }

            return(View(item));
        }
コード例 #28
0
        private void SaveAs()
        {
            var foreignTranslation = new Translation {
                LanguageCode = GetSelectedLanguageCode()
            };

            if (foreignTranslation.LanguageCode != null)
            {
                foreach (TranslateItem translateItem in translate)
                {
                    //Item is not translated (yet), skip it
                    if (string.IsNullOrEmpty(translateItem.TranslatedValue))
                    {
                        continue;
                    }

                    TranslationItem ti = new TranslationItem(translateItem.Name, translateItem.Property, translateItem.TranslatedValue);
                    foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).AddTranslationItem(ti);
                }
            }
            else
            {
                // English language
                foreach (TranslateItem translateItem in translate)
                {
                    TranslationItem ti = new TranslationItem(translateItem.Name, translateItem.Property, translateItem.NeutralValue);
                    foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).AddTranslationItem(ti);
                }
            }

            var fileDialog =
                new SaveFileDialog
            {
                Title        = saveAsText.Text,
                FileName     = translations.Text + ".xml",
                Filter       = saveAsTextFilter.Text + "|*.xml",
                DefaultExt   = ".xml",
                AddExtension = true
            };

            if (fileDialog.ShowDialog(this) == DialogResult.OK)
            {
                TranslationSerializer.Serialize(foreignTranslation, fileDialog.FileName);
                changesMade = false;
            }
        }
コード例 #29
0
        public TranslationMultipleChoices CreateCardMultipleChoices(TranslationItem word, int wrongAnswerCount)
        {
            var wrongAnswers =
                Translations
                .Where(w => w.From != word.From)
                .OrderBy(ob => _random.Next())
                .Select(s => s.To)
                .Take(wrongAnswerCount)
                .ToList();

            wrongAnswers.Add(word.To);
            var allAnswers = wrongAnswers
                             .OrderBy(ob => _random.Next())
                             .ToList();

            return(new TranslationMultipleChoices {
                Choices = allAnswers, Answer = word.To, Translation = word.From
            });
        }
コード例 #30
0
        public async Task <TranslationDictionary> ReadKindleMateExportedDictionaryAsync(string kindleMateFile)
        {
            var dict = new TranslationDictionary
            {
                Translations = new List <TranslationItem>()
            };
            var             content         = File.ReadAllLines(kindleMateFile);
            bool            isWord          = true;
            var             word            = "";
            int             emptyLineNum    = 0;
            TranslationItem translationItem = new TranslationItem();

            foreach (var line in content)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    isWord = true;
                    emptyLineNum++;
                    word = "";
                    if (emptyLineNum % 2 == 0)
                    {
                        var index = ExistsTranslationItem(dict, translationItem.Word.Text);
                        if (index == -1)
                        {
                            dict.Translations.Add(translationItem);
                        }
                        else
                        {
                            if (dict.Translations[index].Sentence.Text != translationItem.Sentence.Text)
                            {
                                dict.Translations[index].Sentence.Text += translationItem.Sentence.Text;
                            }
                        }

                        isWord = true;
                    }
                    continue;
                }
                if (isWord)
                {
                    var startWord = line.IndexOf("(") + 1;
                    var endWord   = line.IndexOf(")");
                    word            = line[startWord..endWord];
コード例 #31
0
        public void AddTranslationItemIfNotExist(TranslationItem translationItem)
        {
            if (string.IsNullOrEmpty(translationItem.Name))
                throw new InvalidOperationException("Cannot add translationitem without name");

            TranslationItem ti = GetTranslationItem(translationItem.Name, translationItem.Property);
            if (ti == null)
            {
                if (translationItem.Property == "ToolTipText")
                {
                    ti = GetTranslationItem(translationItem.Name, "Text");
                    if (ti == null || translationItem.Value != ti.Value)
                        TranslationItems.Add(translationItem);
                }
                else
                    TranslationItems.Add(translationItem);
            }
            else
                Debug.Assert(ti.Value == translationItem.Value);
        }
コード例 #32
0
        /// <summary>
        /// The add element.
        /// </summary>
        /// <param name="xw">
        /// The xmlWriter.
        /// </param>
        /// <param name="container">
        /// The container.
        /// </param>
        /// <param name="cultureInfo">
        /// The culture info.
        /// </param>
        private void AddElement(XmlWriter xw, ContentReference container, CultureInfo cultureInfo)
        {
            List <PageData> children =
                this.ContentRepository.GetChildren <PageData>(container, new LanguageSelector(cultureInfo.Name)).ToList();

            foreach (PageData child in children)
            {
                TranslationContainer translationContainer = child as TranslationContainer;

                if (translationContainer != null)
                {
                    string key = Regex.Replace(
                        translationContainer.Name.ToLowerInvariant(), @"[^A-Za-z0-9]+", string.Empty);
                    xw.WriteStartElement(key);

                    this.AddElement(xw, child.PageLink, cultureInfo);

                    xw.WriteEndElement();
                }

                CategoryTranslationContainer categoryTranslationContainer = child as CategoryTranslationContainer;

                if (categoryTranslationContainer != null)
                {
                    xw.WriteStartElement("categories");

                    this.AddCategoryElement(xw, child.PageLink, cultureInfo);

                    xw.WriteEndElement();
                }

                TranslationItem translationItem = child as TranslationItem;

                if (translationItem != null)
                {
                    string key = Regex.Replace(
                        translationItem.OriginalText.ToLowerInvariant(), @"[^A-Za-z0-9]+", string.Empty);
                    xw.WriteElementString(key, translationItem.Translation);
                }
            }
        }
コード例 #33
0
        public static void SaveTranslation(string targetLanguageCode,
                                           IDictionary <string, List <TranslationItemWithCategory> > items, string filename)
        {
            var ext = Path.GetExtension(filename);

            foreach (var pair in items)
            {
                var foreignTranslation = new TranslationFile(GitCommands.AppSettings.ProductVersion, "en", targetLanguageCode);
                foreach (var translateItem in pair.Value)
                {
                    var item = translateItem.GetTranslationItem();

                    var ti = new TranslationItem(item.Name, item.Property, item.Source, item.Value);
                    ti.Value = ti.Value ?? String.Empty;
                    foreignTranslation.FindOrAddTranslationCategory(translateItem.Category)
                    .Body.AddTranslationItem(ti);
                }
                var newfilename = Path.ChangeExtension(filename, pair.Key + ext);
                TranslationSerializer.Serialize(foreignTranslation, newfilename);
            }
        }
コード例 #34
0
 private static int CompareSort(TranslationItem[] x, TranslationItem[] y)
 {
     return string.Compare(x[0].StringName, y[0].StringName);
 }
コード例 #35
0
 public TranslationItemWithCategory(string category, TranslationItem item)
 {
     Category = category;
     _item = item;
 }
コード例 #36
0
 public TranslationItemWithCategory()
 {
     _item = new TranslationItem();
 }
コード例 #37
0
        public static void SaveTranslation(string languageCode, IEnumerable<TranslationItemWithCategory> items, string filename)
        {
            var foreignTranslation = new Translation(GitCommands.AppSettings.ProductVersion, languageCode);
            foreach (TranslationItemWithCategory translateItem in items)
            {
                var item = translateItem.GetTranslationItem();

                var ti = new TranslationItem(item.Name, item.Property, item.Source, item.Value);
                ti.Value = ti.Value ?? String.Empty;
                foreignTranslation.FindOrAddTranslationCategory(translateItem.Category).Body.AddTranslationItem(ti);
            }
            TranslationSerializer.Serialize(foreignTranslation, filename);
        }
コード例 #38
0
        public bool CheckConflictingResource(string language, TranslationItem ti, ref TranslationItem conflict)
        {
            Dictionary<string, TranslationItem> langResources = _resources[language];
            string cmp = (language == "en") ? ti.BaseString : ti.TranslatedString;

            foreach (KeyValuePair<string, TranslationItem> kvp in langResources)
            {
                string s1 = kvp.Key.Trim().ToLowerInvariant();
                string s2 = cmp.Trim().ToLowerInvariant();

                if ((s1 == s2) || (s1 == s2 + ":") || (s1 + ":" == s2))
                {
                    conflict = kvp.Value;
                    return true;
                }
            }

            langResources.Add(cmp, ti);

            return false;
        }
コード例 #39
0
        void ResourceValidationDialog_Load(object sender, EventArgs e)
        {
            Dictionary<string, List<TranslationItem[]>> duplicateTranslations =
                new Dictionary<string, List<TranslationItem[]>>();

            foreach (string file in _scanAssemblies)
            {
                if (!duplicateTranslations.ContainsKey("en"))
                {
                    duplicateTranslations["en"] = new List<TranslationItem[]>();
                }

                TranslationFile tf = new TranslationFile(file, "ro");

                foreach (TranslationItem ti in tf.Items.Values)
                {
                    try
                    {
                        TranslationItem conflict = null;
                        if (CheckConflictingResource("en", ti, ref conflict))
                        {
                            List<TranslationItem[]> lst = duplicateTranslations["en"];
                            TranslationItem[] pair = new TranslationItem[2] { ti, conflict };

                            lst.Add(pair);
                        }
                    }
                    catch
                    {
                    }
                }


                foreach (string lang in TranslationFile.SupportedLanguages)
                {
                    if (!duplicateTranslations.ContainsKey(lang))
                    {
                        duplicateTranslations[lang] = new List<TranslationItem[]>();
                    }
                    
                    tf = new TranslationFile(file, lang);

                    foreach (TranslationItem ti in tf.Items.Values)
                    {
                        try
                        {
                            TranslationItem conflict = null;
                            if (CheckConflictingResource(lang, ti, ref conflict))
                            {
                                List<TranslationItem[]> lst = duplicateTranslations[lang];
                                TranslationItem[] pair = new TranslationItem[2] { ti, conflict };

                                lst.Add(pair);
                            }
                        }
                        catch 
                        {
                        }
                    }
                }
            }

            tvResults.Nodes.Clear();

            foreach (KeyValuePair<string, List<TranslationItem[]>> kvp in duplicateTranslations)
            {
                TreeNode langNode = tvResults.Nodes.Add(string.Format("{0} - {1} conflict(s) found", kvp.Key, kvp.Value.Count));

                List<TranslationItem[]> lst = null;

                try
                {
                    lst = kvp.Value.ToList();
                    lst.Sort(CompareSort);
                }
                catch
                {
                }

                foreach (TranslationItem[] cds in lst)
                {
                    TreeNode conflictNode = langNode.Nodes.Add(cds[0].StringName);

                    conflictNode.Nodes.Add(cds[0].ToString());
                    conflictNode.Nodes.Add(cds[1].ToString());
                }
            }

            //tvResults.ExpandAll();
        }
コード例 #40
0
ファイル: MainForm.cs プロジェクト: rraguso/protone-suite
        private void OnNewEntry(object sender, EventArgs e)
        {
            EntryNameDialog dlg = new EntryNameDialog("TXT_ENTRY_NAME", "", "", chkReadOnly.Checked, cmbLanguage.Text);
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                TranslationItem ti = new TranslationItem(string.Empty);
                ti.StringName = dlg.EntryName;
                ti.BaseString = dlg.EnglishString;
                ti.TranslatedString = dlg.TranslatedString;

                _tf.Items.Add(ti.StringName, ti);

                ListViewItem item = new ListViewItem(new string[]
                {
                    ti.StringName, ti.BaseString, ti.TranslatedString
                });

                item.Tag = ti;
                lvTranslations.Items.Add(item);

                lvTranslations.SelectedItems.Clear();
                item.Selected = true;

                lvTranslations.EnsureVisible(item.Index);
            }
        }