コード例 #1
0
        /// <summary>
        ///     Add the specified language to this object
        /// </summary>
        public void AddLanguage(string languageCode)
        {
            if (!this.Languages.ContainsKey(languageCode.ToLower()))
            {
                this.Dirty = true;
                var mainfile = new FileInfo(this.Filename);
                string newFile = mainfile.Name.Substring(0, mainfile.Name.Length - mainfile.Extension.Length) + "." + languageCode + mainfile.Extension;
                newFile = mainfile.Directory.FullName + "\\" + newFile;
                mainfile.CopyTo(newFile);
                var languageHolder = new LanguageHolder();
                languageHolder.Filename = newFile;
                languageHolder.Id = languageCode;
                this.Languages.Add(languageCode.ToLower(), languageHolder);

                this._stringsTable.Columns.Add(languageCode.ToLower());

                this.ReadResourceFile(languageHolder.Filename, this._stringsTable, languageHolder.Id, true);

                if (this.Languages.Count > 0)
                {
                    foreach (DataRow row in this._stringsTable.Rows)
                    {
                        this.EvaluateRow(row);
                    }
                }
                this.OnLanguageChange();
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: Mcafee123/ResxTranslator
        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);
            }
        }