public static void AutoTranslate(ResourceHolder resourceHolder, string languageCode) { string appID = Settings.Default.BingAppId; var toTranslate = new List<string>(); foreach (DataRow row in resourceHolder.StringsTable.Rows) { if (!String.IsNullOrEmpty(row["NoLanguageValue"].ToString()) && (row[languageCode.ToLower()].ToString() == row["NoLanguageValue"].ToString() || String.IsNullOrEmpty(row[languageCode.ToLower()].ToString()))) { toTranslate.Add(row["NoLanguageValue"].ToString()); } } if (string.IsNullOrEmpty(appID)) { return; } var svc = new LanguageServiceClient(); TranslateArrayResponse[] translatedTexts = svc.TranslateArray(appID , toTranslate.ToArray() , Settings.Default.NeutralLanguageCode , languageCode.ToLower().Substring(0, 2) , new TranslateOptions()); int i = 0; foreach (DataRow row in resourceHolder.StringsTable.Rows) { if (!String.IsNullOrEmpty(row["NoLanguageValue"].ToString()) && (row[languageCode.ToLower()].ToString() == row["NoLanguageValue"].ToString() || String.IsNullOrEmpty(row[languageCode.ToLower()].ToString()))) { if (String.IsNullOrEmpty(translatedTexts[i].Error)) { row[languageCode.ToLower()] = translatedTexts[i].TranslatedText; } ++i; } } }
public static string GetDefaultLanguage(ResourceHolder resourceHolder) { string appID = Settings.Default.BingAppId; if (string.IsNullOrEmpty(appID)) { return ""; } var toTranslate = new List<string>(); int cnt = 0; foreach (DataRow row in resourceHolder.StringsTable.Rows) { if (!String.IsNullOrEmpty(row["NoLanguageValue"].ToString()) && (row["NoLanguageValue"].ToString().Length > 10 || resourceHolder.StringsTable.Rows.Count < 10)) { toTranslate.Add(row["NoLanguageValue"].ToString()); cnt++; } if (cnt > 10) { break; } } if (cnt == 0) { return ""; } var svc = new LanguageServiceClient(); TranslateArrayResponse[] translatedTexts = svc.TranslateArray(appID, toTranslate.ToArray(), Settings.Default.NeutralLanguageCode, "en", new TranslateOptions()); // find most frequent language var maxArr = translatedTexts .GroupBy(t => t.From) .Select(grp => new { Language = grp.Key, Count = grp.Count() }) .OrderByDescending(y => y.Count); return maxArr.First().Language; }
private void FindResx(string folder) { string displayFolder = ""; if (folder.StartsWith(this.RootPath, StringComparison.InvariantCultureIgnoreCase)) { displayFolder = folder.Substring(this.RootPath.Length); } if (displayFolder.StartsWith("\\")) { displayFolder = displayFolder.Remove(0, 1); } string[] files = Directory.GetFiles(folder, "*.resx"); foreach (string file in files) { string filenameNoExt = "" + Path.GetFileNameWithoutExtension(file); string[] fileParts = filenameNoExt.Split('.'); if (fileParts.Length == 0) { continue; } string language = ""; if (fileParts[fileParts.Length - 1].Length == 5 && fileParts[fileParts.Length - 1][2] == '-') { language = fileParts[fileParts.Length - 1]; } else if (fileParts[fileParts.Length - 1].Length == 2) { language = fileParts[fileParts.Length - 1]; } if (!string.IsNullOrEmpty(language)) { filenameNoExt = Path.GetFileNameWithoutExtension(filenameNoExt); } ResourceHolder resourceHolder; string key = (displayFolder + "\\" + filenameNoExt).ToLower(); if (!this.Resources.TryGetValue(key, out resourceHolder)) { resourceHolder = new ResourceHolder(); resourceHolder.DisplayFolder = displayFolder; if (string.IsNullOrEmpty(language)) { resourceHolder.Filename = file; } resourceHolder.Id = filenameNoExt; this.Resources.Add(key, resourceHolder); } if (!string.IsNullOrEmpty(language)) { if (!this.LanguagesInUse.ContainsKey(language)) { this.LanguagesInUse[language] = 0; } this.LanguagesInUse[language] += 1; if (!resourceHolder.Languages.ContainsKey(language.ToLower())) { var languageHolder = new LanguageHolder(); languageHolder.Filename = file; languageHolder.Id = language; resourceHolder.Languages.Add(language.ToLower(), languageHolder); } } else { resourceHolder.Filename = file; } } string[] subfolders = Directory.GetDirectories(folder); foreach (string subfolder in subfolders) { this.FindResx(subfolder); } }
public AddKey(ResourceHolder resourceHolder) { InitializeComponent(); this.resourceHolder = resourceHolder; }
private void closeToolStripMenuItem_Click(object sender, EventArgs e) { if (!this.CanClose()) { return; } this.treeViewResx.Nodes.Clear(); this.checkedListBoxLanguages.Items.Clear(); this.labelTitle.Visible = false; this.CurrentResource = null; Settings.Default.Save(); }
private string CreateTranslationKey(DataRow dr, ResourceHolder resource) { return dr["Key"] + "_" + resource.Id; }
private void BuildTreeView(ResourceHolder resource) { TreeNode parentNode = null; string[] topFolders = resource.DisplayFolder.Split('\\'); foreach (string subFolder in topFolders) { TreeNodeCollection searchNodes = parentNode == null ? this.treeViewResx.Nodes : parentNode.Nodes; bool found = false; foreach (TreeNode treeNode in searchNodes) { if (treeNode.Tag is PathHolder && (treeNode.Tag as PathHolder).Id.Equals(subFolder, StringComparison.InvariantCultureIgnoreCase)) { found = true; parentNode = treeNode; break; } } if (!found) { var pathTreeNode = new TreeNode("[" + subFolder + "]"); var pathHolder = new PathHolder(); pathHolder.Id = subFolder; pathTreeNode.Tag = pathHolder; searchNodes.Add(pathTreeNode); parentNode = pathTreeNode; } } var leafNode = new TreeNode(resource.Id); leafNode.Tag = resource; resource.DirtyChanged += delegate { this.SetTreeNodeDirty(leafNode, resource); }; this.SetTreeNodeTitle(leafNode, resource); resource.LanguageChange += delegate { this.SetTreeNodeTitle(leafNode, resource); }; if (parentNode != null) { parentNode.Nodes.Add(leafNode); } }
private static void SaveResourceHolder(ResourceHolder resource) { try { if (!resource.IsDirty) { return; } resource.Save(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Exception while saving: " + resource.Id); } }
public void SetTreeNodeTitle(TreeNode node, ResourceHolder res) { this.InvokeIfRequired(c => { node.Text = res.Caption; }); }
public void SetTreeNodeDirty(TreeNode node, ResourceHolder res) { this.InvokeIfRequired(c => { node.ForeColor = res.IsDirty ? Color.Blue : Color.Black; }); }
private void ShowResourceInGrid(ResourceHolder resource) { this.CurrentResource = resource; this.labelTitle.Text = resource.Id; this.labelTitle.Visible = true; this.dataGridView1.DataSource = resource.StringsTable; this.checkedListBoxLanguages.Items.Clear(); foreach (LanguageHolder languageHolder in resource.Languages.Values) { this.checkedListBoxLanguages.Items.Add(languageHolder, true); this.dataGridView1.Columns[languageHolder.Id].DefaultCellStyle.WrapMode = DataGridViewTriState.True; } this.dataGridView1.Columns["NoLanguageValue"].DefaultCellStyle.WrapMode = DataGridViewTriState.True; this.dataGridView1.Columns["Comment"].DisplayIndex = this.dataGridView1.Columns.Count - 1; this.dataGridView1.Columns["Translated"].Visible = false; this.dataGridView1.Columns["Error"].Visible = false; this.ApplyFilterCondition(); this.dataGridView1.Columns["Key"].ReadOnly = true; this.ApplyConditionalFormatting(); }