示例#1
0
        private void refillLanguagesToTranslate()
        {
            languagesToExportCheckListBox.Items.Clear();

            var forbidden =
                referenceLanguageGroupBox.SelectedIndex >= 0 &&
                referenceLanguageGroupBox.SelectedIndex <
                referenceLanguageGroupBox.Properties.Items.Count
                    ? ((MyTuple <string, string>)referenceLanguageGroupBox.SelectedItem).Item2
                    : string.Empty;

            foreach (var languageCode in languageCodes)
            {
                if (!string.IsNullOrEmpty(languageCode) &&
                    languageCode.ToLowerInvariant() != forbidden.ToLowerInvariant())
                {
                    var index = languagesToExportCheckListBox.Items.Add(
                        new MyTuple <string, string>(
                            $@"{LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName} ({languageCode})",
                            languageCode));

                    languagesToExportCheckListBox.SetItemChecked(index, true);
                }
            }
        }
        public override void InitiallyFillLists()
        {
            foreach (var languageCode in languageCodes)
            {
                if (!string.IsNullOrEmpty(languageCode.First))
                {
                    referenceLanguageComboBox.Properties.Items.Add(
                        new Pair <string, Pair <string, string> >(
                            string.Format(
                                @"{0} ({1})",
                                LanguageCodeDetection.MakeValidCulture(languageCode.First).DisplayName,
                                languageCode),
                            languageCode));
                }
            }

            var items = new List <Pair <string, CultureInfo> >();

            foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
            {
                items.Add(new Pair <string, CultureInfo>(culture.DisplayName, culture));
            }

            items.Sort((x, y) => string.CompareOrdinal(x.First, y.First));

            foreach (var item in items)
            {
                newLanguageComboBox.Properties.Items.Add(item);
            }

            // --

            fillTranslationEngine();
        }
        private void refillLanguagesToTranslate()
        {
            languagesToDisplayCheckListBox.Items.Clear();

            var pairs = new List <MyTuple <string, string> >();

            // ReSharper disable LoopCanBeConvertedToQuery
            foreach (var languageCode in languageCodes)
            // ReSharper restore LoopCanBeConvertedToQuery
            {
                if (!string.IsNullOrEmpty(languageCode))
                {
                    pairs.Add(
                        new MyTuple <string, string>(
                            $@"{LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName} ({languageCode})",
                            languageCode));
                }
            }

            pairs.Sort((x, y) => string.Compare(x.Item1, y.Item1, StringComparison.Ordinal));

            foreach (var pair in pairs)
            {
                var index = languagesToDisplayCheckListBox.Items.Add(pair);

                languagesToDisplayCheckListBox.SetItemChecked(index, false);
            }
        }
        protected override void InitiallyFillLists()
        {
            foreach (var languageCode in languageCodes)
            {
                if (!string.IsNullOrEmpty(languageCode.Item1))
                {
                    referenceLanguageComboBox.Properties.Items.Add(
                        new MyTuple <string, MyTuple <string, string> >(
                            $@"{
                                    LanguageCodeDetection.MakeValidCulture(languageCode.Item1).DisplayName
                                } ({languageCode})",
                            languageCode));
                }
            }

            var items = new List <MyTuple <string, CultureInfo> >();

            foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
            {
                items.Add(new MyTuple <string, CultureInfo>(culture.DisplayName, culture));
            }

            items.Sort((x, y) => string.CompareOrdinal(x.Item1, y.Item1));

            foreach (var item in items)
            {
                newLanguageComboBox.Properties.Items.Add(item);
            }

            // --

            fillTranslationEngine();
        }
        private void refillLanguagesToTranslate()
        {
            languagesToDisplayCheckListBox.Items.Clear();

            var pairs = new List <Pair <string, string> >();

            // ReSharper disable LoopCanBeConvertedToQuery
            foreach (var languageCode in languageCodes)
            // ReSharper restore LoopCanBeConvertedToQuery
            {
                if (!string.IsNullOrEmpty(languageCode))
                {
                    pairs.Add(
                        new Pair <string, string>(
                            string.Format(
                                @"{0} ({1})",
                                LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName,
                                languageCode),
                            languageCode));
                }
            }

            pairs.Sort((x, y) => x.First.CompareTo(y.First));

            foreach (var pair in pairs)
            {
                var index = languagesToDisplayCheckListBox.Items.Add(pair);

                languagesToDisplayCheckListBox.SetItemChecked(index, false);
            }
        }
示例#6
0
        protected override void InitiallyFillLists()
        {
            base.InitiallyFillLists();

            // --

            _groups.Sort(
                (x, y) => string.CompareOrdinal(
                    x.GetNameIntelligent(_project),
                    y.GetNameIntelligent(_project)));

            fileGroupsListBox.Items.Clear();

            foreach (var group in _groups)
            {
                if (!group.IgnoreDuringExportAndImport &&
                    (group.ParentSettings == null || !group.ParentSettings.EffectiveIgnoreDuringExportAndImport))
                {
                    var index = fileGroupsListBox.Items.Add(
                        new MyTuple <string, FileGroup>(
                            group.GetNameIntelligent(_project),
                            group));

                    fileGroupsListBox.SetItemChecked(index, true);
                }
            }

            if (_groups.Count == 1)
            {
                // Select one, if only one present.
                selectAllFileGroupsButton_Click(null, null);
            }

            // --

            foreach (var languageCode in languageCodes)
            {
                referenceLanguageGroupBox.Properties.Items.Add(
                    new MyTuple <string, string>(
                        $@"{LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName} ({languageCode})",
                        languageCode));
            }

            if (languageCodes.Length == 1)
            {
                // Select one, if only one present.
                selectAllLanguagesToExportButton_Click(null, null);
            }

            // --
            // Select defaults.

            if (referenceLanguageGroupBox.SelectedIndex < 0 &&
                referenceLanguageGroupBox.Properties.Items.Count > 0)
            {
                referenceLanguageGroupBox.SelectedIndex = 0;
            }
        }
 public static void ApplySpellCheckerCulture(
     SpellChecker spellChecker,
     string languageCode)
 {
     if (spellChecker != null)
     {
         spellChecker.Culture = LanguageCodeDetection.MakeValidCulture(languageCode);
     }
 }
        private void refillLanguagesToTranslate()
        {
            var ti = TranslationHelper.GetTranslationEngine(_project);

            languagesToTranslateCheckListBox.Items.Clear();

            string appID;
            string appID2;

            TranslationHelper.GetTranslationAppID(
                MainForm.Current.ProjectFilesControl.Project ?? Project.Empty,
                out appID,
                out appID2);

            var forbidden =
                referenceLanguageGroupBox.SelectedIndex >= 0 &&
                referenceLanguageGroupBox.SelectedIndex <
                referenceLanguageGroupBox.Properties.Items.Count
                    ? ((TranslationLanguageInfo)referenceLanguageGroupBox.SelectedItem).LanguageCode
                    : string.Empty;

            var lcs =
                ti.AreAppIDsSyntacticallyValid(appID, appID2)
                    ? ti.GetDestinationLanguages(appID, appID2)
                    : new TranslationLanguageInfo[] { };

            foreach (var languageCode in languageCodes)
            {
                if (!string.IsNullOrEmpty(languageCode) &&
                    languageCode != forbidden)
                {
                    // Only add those that are supported.
                    if (TranslationHelper.IsSupportedLanguage(
                            languageCode, lcs))
                    {
                        var index = languagesToTranslateCheckListBox.Items.Add(
                            new TranslationLanguageInfo
                        {
                            UserReadableName =
                                $@"{
                                        LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName
                                    } ({languageCode})",
                            LanguageCode = languageCode
                        });

                        languagesToTranslateCheckListBox.SetItemChecked(index, true);
                    }
                }
            }
        }
        protected override void InitiallyFillLists()
        {
            var plc  = projectLanguageCodes;
            var plcl = new List <string>(plc);

            foreach (var languageCode in languageCodes)
            {
                if (!string.IsNullOrEmpty(languageCode.Item1))
                {
                    referenceLanguageComboBox.Properties.Items.Add(
                        new MyTuple <string, MyTuple <string, string> >(
                            string.Format(
                                @"{0}{1} ({2})",
                                plcl.Contains(languageCode.Item1) ? @"* " : string.Empty,
                                LanguageCodeDetection.MakeValidCulture(languageCode.Item1).DisplayName,
                                languageCode),
                            languageCode));
                }
            }

            var items = new List <MyTuple <string, CultureInfo> >();

            // ReSharper disable LoopCanBeConvertedToQuery
            foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
            // ReSharper restore LoopCanBeConvertedToQuery
            {
                items.Add(
                    new MyTuple <string, CultureInfo>(
                        string.Format(
                            @"{0}{1} [{2}]",
                            plcl.Contains(culture.Name.ToLowerInvariant()) ? @"* " : string.Empty,
                            culture.DisplayName,
                            culture.Name
                            ),
                        culture));
            }

            items.Sort((x, y) => string.CompareOrdinal(x.Item1, y.Item1));

            foreach (var item in items)
            {
                destinationLanguagesListBox.Items.Add(item);
            }

            // --

            fillTranslationEngine();
        }
        private void parseLanguageCode()
        {
            var languageCodes =
                ExcelImportController.DetectLanguagesFromExcelFile(
                    sourceFileTextEdit.Text.Trim());

            languagesToImportCheckListBox.Items.Clear();

            if (languageCodes != null)
            {
                foreach (var languageCode in languageCodes)
                {
                    if (!string.IsNullOrEmpty(languageCode) &&
                        LanguageCodeDetection.IsValidCultureName(languageCode))
                    {
                        var index = languagesToImportCheckListBox.Items.Add(
                            new MyTuple <string, string>(
                                string.Format(
                                    @"{0} ({1})",
                                    LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName,
                                    languageCode),
                                languageCode));

                        languagesToImportCheckListBox.SetItemChecked(index, true);
                    }
                }

                if (languageCodes.Length == 1)
                {
                    // Select one, if only one present.
                    selectAllLanguagesToExportButton_Click(null, null);
                }
            }

            // --
            // Try to restore.

            DevExpressExtensionMethods.RestoreSettings(
                languagesToImportCheckListBox,
                _project.DynamicSettingsGlobalHierarchical,
                @"receiveFileFromTranslator.languagesToImportCheckListBox");
        }
        /// <summary>
        /// Store the changes in the data table back to the .RESX files
        /// </summary>
        private void saveTable(
            Project project,
            DataTable table,
            bool wantBackupFiles,
            bool omitEmptyStrings)
        {
            var index = 0;
            var languageCodeDetection = new LanguageCodeDetection(_gridEditableData.Project);

            foreach (var resxFile in _resxFiles)
            {
                try
                {
                    var checksum = resxFile.FileInformation.FileGroup.GetChecksum(project);
                    var document = resxFile.Document;
                    var fileName = resxFile.FilePath.Name;

                    //Member 802361: access value by culture and not by filename
                    var culture =
                        languageCodeDetection.DetectLanguageCodeFromFileName(
                            _gridEditableData.Project,
                            fileName);

                    // 2011-04-09, Uwe Keim: "nb" => "nb-NO".
                    var cultureLong = LanguageCodeDetection.MakeValidCulture(culture).Name;

                    foreach (DataRow row in table.Rows)
                    {
                        if (row.RowState != DataRowState.Deleted)
                        {
                            if (!FileGroup.IsInternalRow(row))
                            {
                                var fileGroupCheckSum = ConvertHelper.ToInt64(row[@"FileGroup"]);

                                // 2010-10-23, Uwe Keim: Only save if same file group.
                                if (fileGroupCheckSum == checksum)
                                {
                                    var tagName = (string)row[@"Name"];

                                    var xpathQuery = $@"child::data[attribute::name='{escapeXsltChars(tagName)}']";

                                    if (document.DocumentElement != null)
                                    {
                                        var node  = document.DocumentElement.SelectSingleNode(xpathQuery);
                                        var found = node != null;

                                        var content   = row[cultureLong] as string;
                                        var textToSet = content ?? string.Empty;

                                        var commentsAreVisible =
                                            CommentsAreVisible(project, row, CommentVisibilityScope.InMemory);

                                        // AJ CHANGE
                                        var commentToSet =
                                            commentsAreVisible
                                                ? row[@"Comment"] == DBNull.Value
                                                    ? string.Empty
                                                    : (string)row[@"Comment"]
                                                : null;

                                        if (found)
                                        {
                                            var n = node.SelectSingleNode(@"value");

                                            //CHANGED:  Member 802361 if content is null remove this entry
                                            if (content != null &&
                                                (!string.IsNullOrEmpty(textToSet) || !omitEmptyStrings))
                                            {
                                                // If not present (for whatever reason, e.g.
                                                // manually edited and therefore misformed).
                                                if (n == null)
                                                {
                                                    n = document.CreateElement(@"value");
                                                    node.AppendChild(n);
                                                }

                                                n.InnerText = textToSet;

                                                // AJ CHANGE
                                                // Only write the comment to the main resx file
                                                if (commentsAreVisible)
                                                {
                                                    if (resxFile == _resxFiles[0])
                                                    {
                                                        n = node.SelectSingleNode(@"comment");
                                                        // If not present (for whatever reason, e.g.
                                                        // manually edited and therefore misformed).
                                                        if (n == null)
                                                        {
                                                            n = document.CreateElement(@"comment");
                                                            node.AppendChild(n);
                                                        }

                                                        n.InnerText = commentToSet ?? string.Empty;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                if (n != null)
                                                {
                                                    node.RemoveChild(n);
                                                }

                                                node.ParentNode?.RemoveChild(node);
                                            }
                                        }
                                        else // Resource doesn't exist in XML.
                                        {
                                            if (content != null &&
                                                (!string.IsNullOrEmpty(textToSet) || !omitEmptyStrings))
                                            {
                                                // Member 802361: only do it if editing single fileGroup.
                                                // If no we don't know where to add the new entry.
                                                // TODO: may be add to default file in the list?
                                                if (_gridEditableData.FileGroup == null)
                                                {
                                                    //look if base file has same tagName
                                                    //if base file skip it
                                                    if (string.Compare(
                                                            _gridEditableData.Project.NeutralLanguageCode,
                                                            culture,
                                                            StringComparison.OrdinalIgnoreCase) == 0 ||
                                                        string.Compare(
                                                            _gridEditableData.Project.NeutralLanguageCode,
                                                            cultureLong,
                                                            StringComparison.OrdinalIgnoreCase) == 0)
                                                    {
                                                        continue;
                                                    }

                                                    // 2011-01-26, Uwe Keim:
                                                    var pattern =
                                                        resxFile.FileInformation.FileGroup.ParentSettings
                                                        .EffectiveNeutralLanguageFileNamePattern;
                                                    pattern =
                                                        pattern.Replace(@"[basename]",
                                                                        resxFile.FileInformation.FileGroup.BaseName);
                                                    pattern =
                                                        pattern.Replace(@"[languagecode]", project.NeutralLanguageCode);
                                                    pattern =
                                                        pattern.Replace(@"[extension]",
                                                                        resxFile.FileInformation.FileGroup.BaseExtension);
                                                    pattern = pattern.Replace(@"[optionaldefaulttypes]",
                                                                              resxFile.FileInformation.FileGroup.BaseOptionalDefaultType);

                                                    //has base culture value?
                                                    var baseName = pattern;

                                                    // 2011-01-26, Uwe Keim:
                                                    var file         = resxFile;
                                                    var baseResxFile =
                                                        _resxFiles.Find(
                                                            resx =>
                                                            resx.FilePath.Name == baseName &&
                                                            resx.FileInformation.FileGroup.UniqueID ==
                                                            file.FileInformation.FileGroup.UniqueID);

                                                    var baseNode =
                                                        baseResxFile?.Document?.DocumentElement
                                                        ?.SelectSingleNode(xpathQuery);
                                                    if (baseNode == null)
                                                    {
                                                        continue;
                                                    }
                                                    //ok we can add it.
                                                }
                                                //TODO: use default instead

                                                //Create the new Node
                                                XmlNode newData  = document.CreateElement(@"data");
                                                var     newName  = document.CreateAttribute(@"name");
                                                var     newSpace = document.CreateAttribute(@"xml:space");
                                                XmlNode newValue = document.CreateElement(@"value");

                                                // Set the Values
                                                newName.Value      = (string)row[@"Name"];
                                                newSpace.Value     = @"preserve";
                                                newValue.InnerText = textToSet;

                                                // Get them together
                                                if (newData.Attributes != null)
                                                {
                                                    newData.Attributes.Append(newName);
                                                    newData.Attributes.Append(newSpace);
                                                }
                                                newData.AppendChild(newValue);

                                                // AJ CHANGE
                                                // Only write the comment to the main resx file
                                                if (commentsAreVisible && index == 0)
                                                {
                                                    XmlNode newComment = document.CreateElement(@"comment");
                                                    newComment.InnerText = commentToSet ?? string.Empty;
                                                    newData.AppendChild(newComment);
                                                }

                                                XmlNode root = document.DocumentElement;
                                                root?.InsertAfter(newData, root.LastChild);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                finally
                {
                    index++;
                }
            }

            if (wantBackupFiles)
            {
                backupFiles();
            }

            // Store files back to filesystem
            storeFiles(project);
        }
        protected override void InitiallyFillLists()
        {
            base.InitiallyFillLists();

            var infos = new List <TranslationLanguageInfo>();

            TranslationHelper.GetTranslationAppID(
                MainForm.Current.ProjectFilesControl.Project ?? Project.Empty,
                out var appID);

            var ti = TranslationHelper.GetTranslationEngine(_project);

            TranslationLanguageInfo[] lcs;

            //try
            //{
            lcs = ti.AreAppIDsSyntacticallyValid(appID)
                ? ti.GetSourceLanguages(appID)
                : new TranslationLanguageInfo[] { };
            //}
            //catch (Exception e) when (e is WebException || e is HttpException)
            //{
            //    // Hier Exception nicht durchlassen,
            //    // Damit der Dialog nicht undefiniert gefüllt ist.

            //    LogCentral.Current.Warn(e);

            //    lcs = new TranslationLanguageInfo[] { };

            //    Host.NotifyAboutException(e);
            //}

            foreach (var languageCode in languageCodes)
            {
                // Only translate those that are supported.
                if (TranslationHelper.IsSupportedLanguage(languageCode, lcs))
                {
                    if (string.IsNullOrEmpty(languageCode))
                    {
                        infos.Add(
                            new TranslationLanguageInfo
                        {
                            UserReadableName = Resources.SR_TranslationHelper_GetSourceLanguages_AutoDetect,
                            LanguageCode     = string.Empty
                        });
                    }
                    else
                    {
                        infos.Add(
                            new TranslationLanguageInfo
                        {
                            UserReadableName =
                                $@"{
                                            LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName
                                        } ({languageCode})",
                            LanguageCode = languageCode
                        });
                    }
                }
            }

            infos.Sort((x, y) => string.CompareOrdinal(x.UserReadableName, y.UserReadableName));

            referenceLanguageGroupBox.Properties.Items.Clear();
            foreach (var info in infos)
            {
                referenceLanguageGroupBox.Properties.Items.Add(info);
            }

            // --
            // Select defaults.

            _ignore = true;
            if (referenceLanguageGroupBox.SelectedIndex < 0 &&
                referenceLanguageGroupBox.Properties.Items.Count > 0)
            {
                referenceLanguageGroupBox.SelectedIndex = 0;
            }

            _ignore = false;
        }
        protected override void InitiallyFillLists()
        {
            base.InitiallyFillLists();

            var infos = new List <TranslationLanguageInfo>();

            string appID;
            string appID2;

            TranslationHelper.GetTranslationAppID(
                MainForm.Current.ProjectFilesControl.Project ?? Project.Empty,
                out appID,
                out appID2);

            var ti = TranslationHelper.GetTranslationEngine(_project);

            var lcs =
                ti.AreAppIDsSyntacticallyValid(appID, appID2)
                    ? ti.GetSourceLanguages(appID, appID2)
                    : new TranslationLanguageInfo[] { };

            foreach (var languageCode in languageCodes)
            {
                // Only translate those that are supported.
                if (TranslationHelper.IsSupportedLanguage(languageCode, lcs))
                {
                    if (string.IsNullOrEmpty(languageCode))
                    {
                        infos.Add(
                            new TranslationLanguageInfo
                        {
                            UserReadableName = Resources.SR_TranslationHelper_GetSourceLanguages_AutoDetect,
                            LanguageCode     = string.Empty
                        });
                    }
                    else
                    {
                        infos.Add(
                            new TranslationLanguageInfo
                        {
                            UserReadableName =
                                $@"{
                                        LanguageCodeDetection.MakeValidCulture(languageCode).DisplayName
                                    } ({languageCode})",
                            LanguageCode = languageCode
                        });
                    }
                }
            }

            infos.Sort((x, y) => string.CompareOrdinal(x.UserReadableName, y.UserReadableName));

            referenceLanguageGroupBox.Properties.Items.Clear();
            foreach (var info in infos)
            {
                referenceLanguageGroupBox.Properties.Items.Add(info);
            }

            // --
            // Select defaults.

            _ignore = true;
            if (referenceLanguageGroupBox.SelectedIndex < 0 &&
                referenceLanguageGroupBox.Properties.Items.Count > 0)
            {
                referenceLanguageGroupBox.SelectedIndex = 0;
            }
            _ignore = false;
        }