Example #1
0
        public static string TranslateText(string input, object obj)
        {
            if (DynamicTranslator.IsPastingToClipboard.Value)
            {
                GUIUtility.systemCopyBuffer = input;
            }

            if (string.IsNullOrEmpty(input))
            {
                return(input);
            }

            // Consider changing this! You have a dictionary, but you iterate instead of making a lookup. Why do you not use the WeakKeyDictionary, you have instead?
            if (OriginalTranslations.All(x => x.Key.Target != obj)
                ) //check if we don't have the object in the dictionary
            {
                OriginalTranslations.Add(new WeakReference(obj), input);
            }

            if (Translations.TryGetValue(input.Trim(), out CompiledLine translation))
            {
                return(translation.TranslatedLine);
            }

            if (TryGetRegex(input, out translation, out Match match))
            {
                return(translation.TranslatedLine);
            }

            if (obj is UnityEngine.UI.Text)
            {
                var immediatelyTranslated = DynamicTranslator.OnOnUnableToTranslateUgui(obj, input);
                if (immediatelyTranslated != null)
                {
                    return(immediatelyTranslated);
                }
            }
            else if (obj is TMP_Text)
            {
                var immediatelyTranslated = DynamicTranslator.OnOnUnableToTranslateTextMeshPro(obj, input);
                if (immediatelyTranslated != null)
                {
                    return(immediatelyTranslated);
                }
            }

            if (!Untranslated.Contains(input))
            {
                Untranslated.Add(input);
            }

            return(input);
        }
Example #2
0
        public static string TranslateText(string input, object obj)
        {
            if (DynamicTranslator.IsPastingToClipboard.Value)
            {
                GUIUtility.systemCopyBuffer = input;
            }

            if (string.IsNullOrEmpty(input))
            {
                return(input);
            }

            if (obj != null && !OriginalTranslations.Contains(obj))
            {
                OriginalTranslations.Set(obj, input);
            }

            if (Translations.TryGetValue(input.Trim(), out CompiledLine translation))
            {
                return(translation.TranslatedLine);
            }

            if (TryGetRegex(input, out string regexTranslation))
            {
                return(regexTranslation);
            }

            if (obj is UnityEngine.UI.Text)
            {
                var immediatelyTranslated = DynamicTranslator.OnOnUnableToTranslateUgui(obj, input);
                if (immediatelyTranslated != null)
                {
                    return(immediatelyTranslated);
                }
            }
            else if (obj is TMP_Text)
            {
                var immediatelyTranslated = DynamicTranslator.OnOnUnableToTranslateTextMeshPro(obj, input);
                if (immediatelyTranslated != null)
                {
                    return(immediatelyTranslated);
                }
            }

            if (!Untranslated.Contains(input))
            {
                Untranslated.Add(input);
            }

            return(input);
        }