private string HandleText(object sender, StringTranslationEventArgs e) { var txt = e.Text; Logger.Log($"Text in '{txt}'", Level.Verbose); if (!TranslatePlugin.ShouldTranslateText(txt)) { Logger.Log("Doesn't need translating, ignoring it!", Level.Verbose); return(txt); } var ft = CallOriginalTranslator(sender, e); if ( ft != null && ft.Trim().Length > 0 && AutoTranslatePlugin.IsAsciiText(ft)) { Logger.Log("Already translated by TP", Level.Verbose); return(ft); } var trans = TranslatePlugin.BuildTranslationData(txt, sender as MonoBehaviour); if (trans.State == TranslationState.Finished) { return(trans.Translation); } TranslatePlugin.StartTranslation(trans); return(null); }
private void OnGetOppositePair(object sender, StringTranslationEventArgs e) { string text = e.Text; if (string.IsNullOrEmpty(text)) return; e.Translation = Memory.TryGetOriginal(text, out string original) ? original : Memory.GetTextTranslation(text).Text; }
private void OnTranslateString(object sender, StringTranslationEventArgs e) { string inputText = e.Text; if (string.IsNullOrEmpty(inputText)) { return; } if (inputText.StartsWith(TEMPLATE_STRING_PREFIX)) { if (!isRetranslating) { e.Translation = inputText; return; } inputText = inputText.Substring(1); } bool isAudioClipName = inputText.StartsWith(Subtitles.AUDIOCLIP_PREFIX); if (isAudioClipName) { inputText = inputText.Substring(Subtitles.AUDIOCLIP_PREFIX.Length); } TextTranslation translation = Memory.GetTextTranslation(inputText); if (translation.Result == TranslationResult.Ok || isRetranslating && translation.Result == TranslationResult.NotFound) { e.Translation = translation.Text; } if (e.Type == StringType.Template && e.Translation != null) { e.Translation = TEMPLATE_STRING_PREFIX + e.Translation; return; } if (translation.Result == TranslationResult.Ok || translation.Result == TranslationResult.Translated) { return; } if (!isAudioClipName) { if (e.Type != StringType.Template) // Don't put templates to clipboard -- let the game replace the values first { Clipboard.AddText(inputText, CurrentLevel); } // Still going to dump, since templates are useful to translators, but not all translateable strings are templates Logger.DumpLine(inputText, CurrentLevel); } else { e.Translation = inputText; Logger.DumpLine(inputText, CurrentLevel, DumpType.Voices); } }
private void OnGetOriginalText(object sender, StringTranslationEventArgs e) { if (string.IsNullOrEmpty(e.Text)) return; if (Memory.TryGetOriginal(e.Text, out string original)) e.Translation = original; }
private string CallOriginalTranslator(object sender, StringTranslationEventArgs e) { var type = typeof(Translation.Plugin.TranslationPlugin); var str = (string) type.GetMethod( "OnTranslateString", BindingFlags.Instance | BindingFlags.NonPublic ).Invoke( _unifiedTranslationLoader, new object[] { sender, e } ); return(str); }
private void OnYotogiSubtitleCapture(object sender, StringTranslationEventArgs e) { if (string.IsNullOrEmpty(e.Text)) { return; } string voiceFile = DisplayForLast(e.Text); if (voiceFile == null) { return; } Logger.WriteLine(ResourceType.Strings, "Strings::Captured yotogi subtitle from script"); Logger.DumpLine($"{AUDIOCLIP_PREFIX}{voiceFile} {e.Text}", CurrentLevel); }
private void HandleText(object sender, StringTranslationEventArgs args) { var text = args.Text; Logger.Log($"Text in {text}", Level.Verbose); if (args.Translation != null && args.Translation != text) { if (!TranslatePlugin.ShouldTranslateText(args.Translation)) { Logger.Log($"Already translated '{args.Translation}'", Level.Verbose); return; } text = args.Translation; } if (args.TextContainer == null) { Logger.Log("No container"); return; } if (!TranslatePlugin.ShouldTranslateText(text)) { Logger.Log("Text doesn't need translating", Level.Verbose); return; } var translation = TranslatePlugin.BuildTranslationData(text, args.TextContainer); if (translation.State == TranslationState.Finished) { args.Translation = translation.Translation; return; } TranslatePlugin.StartTranslation(translation); }