예제 #1
0
        public static string GetQueryResult(string text, string LanguageCodeTo, TranslationDictionary dict)
        {
            if (!dict.ContainsKey(text))
            {
                return(null);
            }

            var query = dict[text];

            if (query.Results == null || query.Results.Length < 0)
            {
                return(null);
            }

            if (string.IsNullOrEmpty(LanguageCodeTo))
            {
                return(query.Results[0]);
            }

            int idx = System.Array.IndexOf(query.TargetLanguagesCode, LanguageCodeTo);

            if (idx < 0)
            {
                return(null);
            }

            return(query.Results[idx]);
        }
예제 #2
0
        public static void AddQuery(string text, string LanguageCodeFrom, string LanguageCodeTo, TranslationDictionary dict)
        {
            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            if (!dict.ContainsKey(text))
            {
                var query = new TranslationQuery()
                {
                    OrigText = text, LanguageCode = LanguageCodeFrom, TargetLanguagesCode = new string[] { LanguageCodeTo }
                };
                query.Text = text;
                ParseNonTranslatableElements(ref query);
                dict[text] = query;
            }
            else
            {
                var query = dict [text];
                if (System.Array.IndexOf(query.TargetLanguagesCode, LanguageCodeTo) < 0)
                {
                    query.TargetLanguagesCode = query.TargetLanguagesCode.Concat(new string[] { LanguageCodeTo }).Distinct().ToArray();
                }
                dict [text] = query;
            }
        }
예제 #3
0
        public TranslationDictionary CreateDictionary()
        {
            var dict = new TranslationDictionary();

            foreach (Translation translation in this)
            {
                if (!dict.ContainsKey(translation.Van))
                {
                    dict.Add(translation.Van, translation);
                }
                else
                {
                }
            }

            return(dict);
        }
        public static string ConvertToValidTypeIfKnown(string inval)
        {
            string[]      values    = inval.Split('|');
            List <string> retvalues = new List <string>(values.Length);

            foreach (string value in values)
            {
                if (IsBaseType(value))
                {
                    retvalues.Add(value);
                }
                else if (TranslationDictionary.ContainsKey(value))
                {
                    retvalues.Add(TranslationDictionary[value]);
                }
                else if (value.StartsWith("array("))
                {
                    retvalues.Add(ConvertToValidTypeIfKnown(Regex.Match(value, @"array\((?<type>.*)\)").Groups["type"].Value));
                }
                else
                {
                    if (UntouchedTypes.ContainsKey(value))
                    {
                        UntouchedTypes[value]++;
                    }
                    else
                    {
                        UntouchedTypes[value] = 1;
                    }
                    retvalues.Add(value);
                }
            }
            // Split to remove empty entries (if type should not be used in typedef
            try
            {
                return(retvalues.Distinct().Aggregate((a, b) => a + "|" + b).Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Aggregate((a, b) => a + "|" + b));
            }
            catch (Exception)
            {
                return(null);
            }
        }
예제 #5
0
        static string GetTranslation(string text, string LanguageCodeTo, TranslationDictionary dict)
        {
            if (!dict.ContainsKey(text))
            {
                return(null);
            }
            var query = dict [text];

            int langIdx = System.Array.IndexOf(query.TargetLanguagesCode, LanguageCodeTo);

            if (langIdx < 0)
            {
                return("");
            }

            if (query.Results == null)
            {
                return("");
            }
            return(query.Results [langIdx]);
        }