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); }
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); }