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