Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        public AddKey(ResourceHolder resourceHolder)
        {
            InitializeComponent();

            this.resourceHolder = resourceHolder;
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
 private string CreateTranslationKey(DataRow dr, ResourceHolder resource)
 {
     return dr["Key"] + "_" + resource.Id;
 }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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);
            }
        }
Esempio n. 9
0
 public void SetTreeNodeTitle(TreeNode node, ResourceHolder res)
 {
     this.InvokeIfRequired(c => { node.Text = res.Caption; });
 }
Esempio n. 10
0
 public void SetTreeNodeDirty(TreeNode node, ResourceHolder res)
 {
     this.InvokeIfRequired(c => { node.ForeColor = res.IsDirty ? Color.Blue : Color.Black; });
 }
Esempio n. 11
0
        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();
        }