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);
        }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }