public override void RenderControl(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript"); writer.RenderBeginTag(HtmlTextWriterTag.Script); if (ObjectName.Contains(".")) { //generate function check writer.Write("if (typeof " + ObjectName + " != 'function') {"); } else { //generate object check writer.Write("if (typeof " + ObjectName + " == 'undefined') {"); } writer.Write("document.write('<script src=\"" + FileName + "\" type=\"text/javascript\"></' + 'script>');"); writer.Write("}"); writer.RenderEndTag(); }
public bool Translate(Scene?scene, object source, TextTranslationEventArgs e, string original, out string translate) { if (Type.Count > 0) { if (!Type.Contains(e.Type)) { translate = null; return(false); } } if (Source.Count > 0) { if (!Source.Contains(e.Source)) { translate = null; return(false); } } if (Scene.Count > 0) { if (!Scene.Contains(scene?.name)) { translate = null; return(false); } } if (Scene.Count > 0) { if (!Scene.Contains(scene?.name)) { translate = null; return(false); } } if (Level.Count > 0) { if (!Level.Contains(scene?.buildIndex ?? -1)) { translate = null; return(false); } } var objectName = (source as UnityEngine.Object)?.name; if (ObjectName.Count > 0) { if (!ObjectName.Contains(objectName)) { translate = null; return(false); } } var objectId = (source as UnityEngine.Object)?.GetInstanceID(); if (ObjectId.Count > 0) { if (!ObjectId.Contains(objectId?.ToString())) { translate = null; return(false); } } if ((Flag & TextTranslationFlag.TextPart) > TextTranslationFlag.None) { if ((Flag & TextTranslationFlag.Regex) > TextTranslationFlag.None) { if (!Regex.IsMatch(original)) { translate = null; return(false); } translate = Regex.Replace(original, Translation); if (e.Debug) { Logger.Log(LogLevel.Info, $"TextPart {original} >> {translate}"); } return(true); } else { if (original != Original) { translate = null; return(false); } translate = Translation; if (e.Debug) { Logger.Log(LogLevel.Info, $"TextPart {original} >> {translate}"); } return(true); } } else { if ((Flag & TextTranslationFlag.Regex) > TextTranslationFlag.None) { var matches = Regex.Matches(original); if (matches.Count == 0) { translate = null; return(false); } var originalTemp = new StringBuilder(original, 32); foreach (Match match in matches) { var raw = match.Value; var translateTemp = new StringBuilder(Translation, 32); for (var i = match.Groups.Count - 1; i >= 0; i--) { var group = match.Groups[i]; if (!NamePool.Translate(scene, source, e, group.Value, out var groupValue)) { groupValue = group.Value; } translateTemp = translateTemp.Replace($"${i}", groupValue); translateTemp = translateTemp.Replace($"${{{i}}}", groupValue); } foreach (var name in Regex.GetGroupNames()) { var group = match.Groups[name]; if (!NamePool.Translate(scene, source, e, group.Value, out var groupValue)) { groupValue = group.Value; } translateTemp = translateTemp.Replace($"${{{name}}}", groupValue); } originalTemp = originalTemp.Replace(raw, translateTemp.ToString(), match.Index, match.Length); } translate = originalTemp.ToString(); if (e.Debug) { Logger.Log(LogLevel.Info, $"{original} >> {translate}"); } return(true); } else { if (original != Original) { translate = null; return(false); } translate = Translation; if (e.Debug) { Logger.Log(LogLevel.Info, $"{original} >> {translate}"); } return(true); } } }