public MultiLanguageFilterStream(Stream baseStream, CoreLanguageClass currentLanguage, CoreLanguageClass currentLanguagePure, string basicHostName, List <KeyValuePair <string, string> > replaceList) { this.baseStream = baseStream; this.currentLanguage = currentLanguage; this.currentLanguagePure = currentLanguagePure; this.basicHostName = basicHostName; this.ReplaceList = replaceList; }
public string GetFullUrlForLanguage(CoreLanguageClass lang) { string url = (IsSSL ? "https://" : "http://") + Host + GetPathForLanguage(lang); if (Str.IsEmptyStr(Args) == false) { url += "?" + Args; } return(url); }
public string ConvertPath(string url, CoreLanguageClass lang) { string ja = CoreLanguageList.Japanese.Name; if (url.StartsWith("/" + ja, StringComparison.InvariantCultureIgnoreCase)) { url = "/" + lang.Name + url.Substring(ja.Length + 1); } return(url); }
bool isLang(CoreLanguageClass lang) { CoreLanguageClass[] langList = stack.ToArray(); foreach (CoreLanguageClass c in langList) { if (c != lang) { return(false); } } return(true); }
public MailUser(CsvEntry e) { this.MailAddress = e[0]; this.Company = e[1]; this.FullName = e[2]; this.Language = CoreLanguageList.GetLanguageClassByName(e[3]); if (e.Count >= 5) { string pStr = e[4]; this.ParamList = MailUtil.StrToParamList(pStr); } normalize(); }
public static string ProcStr(string str, CoreLanguageClass lang, List <KeyValuePair <string, string> > paramList) { foreach (KeyValuePair <string, string> p in paramList) { string tag = "<$" + p.Key.Trim() + "$>"; string value = p.Value.Trim(); str = Str.ReplaceStr(str, tag, value); } StringBuilder sb = new StringBuilder(); bool b = false; int i; for (i = 0; i < str.Length; i++) { char c = str[i]; bool ok = true; if (b == false) { if (c == '<' && str[i + 1] == '$') { i++; b = true; ok = false; } } else { if (c == '$' && str[i + 1] == '>') { i++; b = false; ok = false; } } if (b == false && ok == true) { sb.Append(c); } } return(sb.ToString()); }
public MailUser(string mail, string name, string company, string language, List <KeyValuePair <string, string> > paramList) { this.MailAddress = mail; this.Company = company; this.FullName = name; this.Language = CoreLanguageList.GetLanguageClassByName(language); if (paramList == null) { this.ParamList = new List <KeyValuePair <string, string> >(); } else { this.ParamList = paramList; } normalize(); }
public static string GetStr(string srcStr, CoreLanguageClass lang) { return(MultiLang.ProcStr(srcStr, lang)); }
public static string ProcStr(string str, CoreLanguageClass lang, CoreLanguageClass langPure) { MultiLanguageFilterStream st = new MultiLanguageFilterStream(null, lang, langPure, null, null); return(st.FilterString(str)); }
public static string ProcStr(string str, CoreLanguageClass lang) { return(ProcStr(str, lang, lang)); }
public MultiLang(Page currentPage, bool fast, string basicHostName, List<KeyValuePair<string, string>> replaceList) { this.Page = currentPage; this.Request = Page.Request; this.Response = Page.Response; this.BasicHostName = basicHostName; string tmp = Page.Request.ServerVariables["HTTPS"]; string hostRaw = Page.Request.Headers["Host"]; this.ReplaceList = replaceList; bool isSsl = false; string[] tokens; string host = ""; tokens = hostRaw.Split(':'); if (tokens.Length >= 1) { host = tokens[0]; } host = host.ToLower(); if (tmp != null) { if (tmp.Equals("on", StringComparison.InvariantCultureIgnoreCase)) { isSsl = true; } } this.IsSSL = isSsl; this.Host = host; this.IsUrlModefied = Str.StrToBool((string)Request.Headers["SEISAPI_MODIFIED_URL"]); this.OriginalUrl = (string)Request.Headers["SEISAPI_ORIGINAL_URL"]; int i; i = this.OriginalUrl.IndexOf("?"); if (i != -1) { this.OriginalUrl = this.OriginalUrl.Substring(0, i); } if (Str.IsEmptyStr(this.OriginalUrl) || this.IsUrlModefied == false) { this.OriginalUrl = AspUtil.RemoveDefaultHtml(AspUtil.GetCurrentRequestUrl(Page)); } string s = (string)Request.Headers["SEISAPI_ORIGINAL_FILENAME"]; if (Str.IsEmptyStr(s) == false) { this.IsFilenameModified = true; this.OriginalFileName = s; this.OriginalFilePath = (string)Request.Headers["SEISAPI_ORIGINAL_FILEPATH"]; } string langCode = GetCurrentLangCodeFromPath(this.OriginalUrl); this.CurrentLanguage = CoreLanguageList.GetLanguageClassByName(langCode); this.CurrentLanguageCode = CurrentLanguage.Name; try { HtmlFileName = AspUtil.WebPathToFilePath(currentPage, AspUtil.GetCurrentRequestUrl(currentPage)); } catch { } if (this.IsFilenameModified) { HtmlFileName = Path.Combine(Path.GetDirectoryName(HtmlFileName), Path.GetFileName(OriginalFilePath)); } try { if (fast == false) { HtmlBody = File.ReadAllText(HtmlFileName, Str.Utf8Encoding); } } catch { } PhysicalUrl = AspUtil.RemoveDefaultHtml(AspUtil.GetCurrentRequestUrl((currentPage))); Args = currentPage.Request.ServerVariables["QUERY_STRING"]; if (CurrentLanguage == CoreLanguageList.Japanese) { IsCurrentLanguageSupported = true; } else { IsCurrentLanguageSupported = Str.SearchStr(HtmlBody, string.Format("<!-- ml:{0} -->", CurrentLanguage.Name), 0, false) != -1; } GoogleTranslateUrl = string.Format("http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&sl=ja&tl={1}&u={0}", HttpUtility.UrlEncode((isSsl ? "https://" : "http://") + host + this.OriginalUrl, Str.Utf8Encoding), this.CurrentLanguageCode); OriginalFullUrl = (isSsl ? "https://" : "http://") + host + this.OriginalUrl; ContentsPrintLanguage = this.CurrentLanguage; if (IsCurrentLanguageSupported == false) { ContentsPrintLanguage = CoreLanguageList.Japanese; } if (fast == false) { mfs = new MultiLanguageFilterStream(Response.Filter, ContentsPrintLanguage, this.CurrentLanguage, this.BasicHostName, this.ReplaceList); mfs.Page = Page; Response.Filter = mfs; } }
public string GetPathForLanguage(CoreLanguageClass lang) { string url = PhysicalUrl; return(ConvertPath(url, lang)); }
public string GetFullUrlForLanguage(CoreLanguageClass lang) { string url = (IsSSL ? "https://" : "http://") + Host + GetPathForLanguage(lang); if (Str.IsEmptyStr(Args) == false) { url += "?" + Args; } return url; }
public MultiLang(Page currentPage, bool fast, string basicHostName, List <KeyValuePair <string, string> > replaceList) { this.Page = currentPage; this.Request = Page.Request; this.Response = Page.Response; this.BasicHostName = basicHostName; string tmp = Page.Request.ServerVariables["HTTPS"]; string hostRaw = Page.Request.Headers["Host"]; this.ReplaceList = replaceList; bool isSsl = false; string[] tokens; string host = ""; tokens = hostRaw.Split(':'); if (tokens.Length >= 1) { host = tokens[0]; } host = host.ToLower(); if (tmp != null) { if (tmp.Equals("on", StringComparison.InvariantCultureIgnoreCase)) { isSsl = true; } } this.IsSSL = isSsl; this.Host = host; this.IsUrlModified = Str.StrToBool((string)Request.Headers["SEISAPI_MODIFIED_URL"]); this.OriginalUrl = (string)Request.Headers["SEISAPI_ORIGINAL_URL"]; int i; i = this.OriginalUrl.IndexOf("?"); if (i != -1) { this.OriginalUrl = this.OriginalUrl.Substring(0, i); } if (Str.IsEmptyStr(this.OriginalUrl) || this.IsUrlModified == false) { this.OriginalUrl = AspUtil.RemoveDefaultHtml(AspUtil.GetCurrentRequestUrl(Page)); } string s = (string)Request.Headers["SEISAPI_ORIGINAL_FILENAME"]; if (Str.IsEmptyStr(s) == false) { this.IsFilenameModified = true; this.OriginalFileName = s; this.OriginalFilePath = (string)Request.Headers["SEISAPI_ORIGINAL_FILEPATH"]; } string langCode = GetCurrentLangCodeFromPath(this.OriginalUrl); this.CurrentLanguage = CoreLanguageList.GetLanguageClassByName(langCode); this.CurrentLanguageCode = CurrentLanguage.Name; try { HtmlFileName = AspUtil.WebPathToFilePath(currentPage, AspUtil.GetCurrentRequestUrl(currentPage)); } catch { } if (this.IsFilenameModified) { HtmlFileName = Path.Combine(Path.GetDirectoryName(HtmlFileName), Path.GetFileName(OriginalFilePath)); } try { if (fast == false) { HtmlBody = File.ReadAllText(HtmlFileName, Str.Utf8Encoding); } } catch { } PhysicalUrl = AspUtil.RemoveDefaultHtml(AspUtil.GetCurrentRequestUrl((currentPage))); Args = currentPage.Request.ServerVariables["QUERY_STRING"]; if (CurrentLanguage == CoreLanguageList.Japanese) { IsCurrentLanguageSupported = true; } else { IsCurrentLanguageSupported = Str.SearchStr(HtmlBody, string.Format("<!-- ml:{0} -->", CurrentLanguage.Name), 0, false) != -1; } GoogleTranslateUrl = string.Format("http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&sl=ja&tl={1}&u={0}", HttpUtility.UrlEncode((isSsl ? "https://" : "http://") + host + this.OriginalUrl, Str.Utf8Encoding), this.CurrentLanguageCode); OriginalFullUrl = (isSsl ? "https://" : "http://") + host + this.OriginalUrl; ContentsPrintLanguage = this.CurrentLanguage; if (IsCurrentLanguageSupported == false) { ContentsPrintLanguage = CoreLanguageList.Japanese; } if (fast == false) { mfs = new MultiLanguageFilterStream(Response.Filter, ContentsPrintLanguage, this.CurrentLanguage, this.BasicHostName, this.ReplaceList); mfs.Page = Page; Response.Filter = mfs; } }
public MultiLanguageFilterStream(Stream baseStream, CoreLanguageClass currentLanguage, CoreLanguageClass currentLanguagePure, string basicHostName, List<KeyValuePair<string, string>> replaceList) { this.baseStream = baseStream; this.currentLanguage = currentLanguage; this.currentLanguagePure = currentLanguagePure; this.basicHostName = basicHostName; this.ReplaceList = replaceList; }
bool isLang(CoreLanguageClass lang) { CoreLanguageClass[] langList = stack.ToArray(); foreach (CoreLanguageClass c in langList) { if (c != lang) { return false; } } return true; }
public static string GetStr(string srcStr, CoreLanguageClass lang) { return MultiLang.ProcStr(srcStr, lang); }
public static string ProcStr(string str, CoreLanguageClass lang, CoreLanguageClass langPure) { MultiLanguageFilterStream st = new MultiLanguageFilterStream(null, lang, langPure, null, null); return st.FilterString(str); }
public static string ProcStr(string str, CoreLanguageClass lang) { return ProcStr(str, lang, lang); }
string filterStringInner(string src, CoreLanguageClass useLang, CoreLanguageClass useLangPure) { int i; string ret = src; if (Str.IsEmptyStr(basicHostName) == false) { ret = Str.ReplaceStr(ret, "=\"/\"", "=\"http://" + basicHostName + "/\"", false); ret = Str.ReplaceStr(ret, "=\'/\'", "=\'http://" + basicHostName + "/\'", false); ret = Str.ReplaceStr(ret, "=\"/" + CoreLanguageList.Japanese.Name + "/\"", "=\"http://" + basicHostName + "/" + useLangPure.Name + "/\"", false); ret = Str.ReplaceStr(ret, "=\'/" + CoreLanguageList.Japanese.Name + "/\'", "=\'http://" + basicHostName + "/" + useLangPure.Name + "/\'", false); } ret = Str.ReplaceStr(ret, "=\"/" + CoreLanguageList.Japanese.Name + "/", "=\"/" + useLangPure.Name + "/", false); ret = Str.ReplaceStr(ret, "=\'/" + CoreLanguageList.Japanese.Name + "/", "=\'/" + useLangPure.Name + "/", false); ret = Str.ReplaceStr(ret, "_lm_" + CoreLanguageList.Japanese.Name, "_lm_" + useLang.Name, false); if (this.ReplaceList != null) { foreach (KeyValuePair <string, string> p in this.ReplaceList) { ret = Str.ReplaceStr(ret, p.Key, p.Value, false); } } StringBuilder ret2 = new StringBuilder(); int next = 0; while (true) { int min = int.MaxValue; int j = -1; for (i = 0; i < langKeys.Count; i++) { int r = Str.SearchStr(ret, langKeys[i].Key, next, false); if (r != -1) { if (r < min) { j = i; min = r; } } } if (j != -1) { KeyValuePair <string, CoreLanguageClass> v = langKeys[j]; if (currentBodyLanguage == null || isLang(useLang)) { ret2.Append(ret.Substring(next, min - next)); } if (v.Value != null) { if (lastBodyLanguage == null || v.Value.Id <= lastBodyLanguage.Id) { stack.Push(v.Value); } else { stack.Pop(); stack.Push(v.Value); } } else { stack.Pop(); } next = min + v.Key.Length; } else { if (currentBodyLanguage == null || isLang(useLang)) { ret2.Append(ret.Substring(next, ret.Length - next)); } break; } } ret = ret2.ToString(); string lang = useLangPure != CoreLanguageList.Japanese ? useLangPure.Name : "ja"; if (useLangPure != CoreLanguageList.Japanese) { ret = Str.ReplaceStr(ret, "<meta http-equiv=\"Content-Language\" content=\"ja\" />", string.Format("<meta http-equiv=\"Content-Language\" content=\"{0}\" />", lang), false); } ret = Str.ReplaceStr(ret, "<html>", string.Format("<html lang=\"{0}\">", lang), false); next = 0; while (true) { i = Str.SearchStr(ret, "<link rel=\"stylesheet\" href=\"", next, false); if (i == -1) { break; } next = i + 1; int j = Str.SearchStr(ret, "/>", next, false); if (j == -1) { break; } string linkStr = ret.Substring(i, j - i + 2 - 1); int k = Str.SearchStr(linkStr, "href=\"", 0, false); if (k != -1) { int m = Str.SearchStr(linkStr, "\"", k + 6, false); if (m != -1) { string fileName = linkStr.Substring(k + 6, m - k - 6); fileName = Str.ReplaceStr(fileName, ".css", "_" + lang + ".css", false); string linkStr2 = string.Format("<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\" />", fileName); ret = ret.Substring(0, j + 2) + linkStr2 + ret.Substring(j + 2); next = j + 2 + linkStr2.Length; } } } return(ret); }
public string ConvertPath(string url, CoreLanguageClass lang) { string ja = CoreLanguageList.Japanese.Name; if (url.StartsWith("/" + ja, StringComparison.InvariantCultureIgnoreCase)) { url = "/" + lang.Name + url.Substring(ja.Length + 1); } return url; }
string filterStringInner(string src, CoreLanguageClass useLang, CoreLanguageClass useLangPure) { int i; string ret = src; if (Str.IsEmptyStr(basicHostName) == false) { ret = Str.ReplaceStr(ret, "=\"/\"", "=\"http://" + basicHostName + "/\"", false); ret = Str.ReplaceStr(ret, "=\'/\'", "=\'http://" + basicHostName + "/\'", false); ret = Str.ReplaceStr(ret, "=\"/" + CoreLanguageList.Japanese.Name + "/\"", "=\"http://" + basicHostName + "/" + useLangPure.Name + "/\"", false); ret = Str.ReplaceStr(ret, "=\'/" + CoreLanguageList.Japanese.Name + "/\'", "=\'http://" + basicHostName + "/" + useLangPure.Name + "/\'", false); } ret = Str.ReplaceStr(ret, "=\"/" + CoreLanguageList.Japanese.Name + "/", "=\"/" + useLangPure.Name + "/", false); ret = Str.ReplaceStr(ret, "=\'/" + CoreLanguageList.Japanese.Name + "/", "=\'/" + useLangPure.Name + "/", false); ret = Str.ReplaceStr(ret, "_lm_" + CoreLanguageList.Japanese.Name, "_lm_" + useLang.Name, false); if (this.ReplaceList != null) { foreach (KeyValuePair<string, string> p in this.ReplaceList) { ret = Str.ReplaceStr(ret, p.Key, p.Value, false); } } StringBuilder ret2 = new StringBuilder(); int next = 0; while (true) { int min = int.MaxValue; int j = -1; for (i = 0; i < langKeys.Count; i++) { int r = Str.SearchStr(ret, langKeys[i].Key, next, false); if (r != -1) { if (r < min) { j = i; min = r; } } } if (j != -1) { KeyValuePair<string, CoreLanguageClass> v = langKeys[j]; if (currentBodyLanguage == null || isLang(useLang)) { ret2.Append(ret.Substring(next, min - next)); } if (v.Value != null) { if (lastBodyLanguage == null || v.Value.Id <= lastBodyLanguage.Id) { stack.Push(v.Value); } else { stack.Pop(); stack.Push(v.Value); } } else { stack.Pop(); } next = min + v.Key.Length; } else { if (currentBodyLanguage == null || isLang(useLang)) { ret2.Append(ret.Substring(next, ret.Length - next)); } break; } } ret = ret2.ToString(); string lang = useLangPure != CoreLanguageList.Japanese ? useLangPure.Name : "ja"; if (useLangPure != CoreLanguageList.Japanese) { ret = Str.ReplaceStr(ret, "<meta http-equiv=\"Content-Language\" content=\"ja\" />", string.Format("<meta http-equiv=\"Content-Language\" content=\"{0}\" />", lang), false); } ret = Str.ReplaceStr(ret, "<html>", string.Format("<html lang=\"{0}\">", lang), false); next = 0; while (true) { i = Str.SearchStr(ret, "<link rel=\"stylesheet\" href=\"", next, false); if (i == -1) { break; } next = i + 1; int j = Str.SearchStr(ret, "/>", next, false); if (j == -1) { break; } string linkStr = ret.Substring(i, j - i + 2 - 1); int k = Str.SearchStr(linkStr, "href=\"", 0, false); if (k != -1) { int m = Str.SearchStr(linkStr, "\"", k + 6, false); if (m != -1) { string fileName = linkStr.Substring(k + 6, m - k - 6); fileName = Str.ReplaceStr(fileName, ".css", "_" + lang + ".css", false); string linkStr2 = string.Format("<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\" />", fileName); ret = ret.Substring(0, j + 2) + linkStr2 + ret.Substring(j + 2); next = j + 2 + linkStr2.Length; } } } return ret; }
public string GetPathForLanguage(CoreLanguageClass lang) { string url = PhysicalUrl; return ConvertPath(url, lang); }