r7: remove language selector
This commit is contained in:
parent
9f48774af3
commit
07e76a4fef
@ -17,18 +17,6 @@ using System.Text;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class BasePage : Page
|
public class BasePage : Page
|
||||||
{
|
{
|
||||||
#region Teamlab UI Culture
|
|
||||||
|
|
||||||
public CultureInfo TeamLabUICulture
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return LanguageProvider.GetCurrentCulture();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private static Dictionary<string, Dictionary<string, bool?>> m_contentExists = new Dictionary<string, Dictionary<string, bool?>>();
|
private static Dictionary<string, Dictionary<string, bool?>> m_contentExists = new Dictionary<string, Dictionary<string, bool?>>();
|
||||||
|
|
||||||
private static object lockObj = new object();
|
private static object lockObj = new object();
|
||||||
@ -63,7 +51,7 @@ public class BasePage : Page
|
|||||||
|
|
||||||
public string GetContentFileName(string contentName, bool isVirtualPath)
|
public string GetContentFileName(string contentName, bool isVirtualPath)
|
||||||
{
|
{
|
||||||
string cultureKey = TeamLabUICulture.TwoLetterISOLanguageName;
|
string cultureKey = "ru";
|
||||||
string result;
|
string result;
|
||||||
bool exists = (String.Compare(
|
bool exists = (String.Compare(
|
||||||
ConfigurationManager.AppSettings["cache-loc-content-filenames"],
|
ConfigurationManager.AppSettings["cache-loc-content-filenames"],
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using HtmlAgilityPack;
|
using HtmlAgilityPack;
|
||||||
using System.Net;
|
|
||||||
using System.IO;
|
|
||||||
using System.Configuration;
|
|
||||||
using System.Web.UI;
|
|
||||||
|
|
||||||
public static class DocHelpParcing
|
public static class DocHelpParcing
|
||||||
{
|
{
|
||||||
@ -149,32 +148,6 @@ public static class DocHelpParcing
|
|||||||
|
|
||||||
private static String GetLanguage()
|
private static String GetLanguage()
|
||||||
{
|
{
|
||||||
var lng = LanguageProvider.GetCurrentCulture().ToString();
|
return "ru";
|
||||||
string language;
|
|
||||||
switch (lng)
|
|
||||||
{
|
|
||||||
case "fr-FR":
|
|
||||||
language = "fr";
|
|
||||||
break;
|
|
||||||
case "it-IT":
|
|
||||||
language = "it";
|
|
||||||
break;
|
|
||||||
case "de-DE":
|
|
||||||
language = "de";
|
|
||||||
break;
|
|
||||||
case "es-ES":
|
|
||||||
language = "es";
|
|
||||||
break;
|
|
||||||
case "ru-RU":
|
|
||||||
language = "ru";
|
|
||||||
break;
|
|
||||||
case "lv-LV":
|
|
||||||
language = "lv";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
language = "ru";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return language;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,233 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.Specialized;
|
|
||||||
using System.Configuration;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Web;
|
|
||||||
using ASC.TeamlabSite.MultiRegionHelper;
|
|
||||||
|
|
||||||
public static class LanguageProvider
|
|
||||||
{
|
|
||||||
private const string SELECTED = "culture.selected";
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, CultureInfo> cultureUiMap = new Dictionary<string, CultureInfo>()
|
|
||||||
{
|
|
||||||
{ "", CultureInfo.GetCultureInfo("en-US") },
|
|
||||||
{ "fr", CultureInfo.GetCultureInfo("fr-FR") },
|
|
||||||
{ "es", CultureInfo.GetCultureInfo("es-ES") },
|
|
||||||
{ "de", CultureInfo.GetCultureInfo("de-DE") },
|
|
||||||
{ "ru", CultureInfo.GetCultureInfo("ru-RU") },
|
|
||||||
{ "lv", CultureInfo.GetCultureInfo("lv-LV") },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, TimeZoneInfo> timeZones = new Dictionary<string, TimeZoneInfo>()
|
|
||||||
{
|
|
||||||
{ "", TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time") },
|
|
||||||
{ "fr", TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time") },
|
|
||||||
{ "es", TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time")},
|
|
||||||
{ "de", TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time") },
|
|
||||||
{ "ru", TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time") },
|
|
||||||
{ "lv", TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time") },
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static LanguageProvider()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var languages = ConfigurationManager.AppSettings["locale-enabled"];
|
|
||||||
if (!string.IsNullOrEmpty(languages))
|
|
||||||
{
|
|
||||||
cultureUiMap = new Dictionary<string, CultureInfo> { { "", CultureInfo.GetCultureInfo("en-US") } };
|
|
||||||
languages
|
|
||||||
.Split(',', ';')
|
|
||||||
.Select(x => x.Trim())
|
|
||||||
.ToList()
|
|
||||||
.ForEach(ln => cultureUiMap.Add(ln.Substring(0, 2), CultureInfo.GetCultureInfo(ln)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static IDictionary<string, CultureInfo> GetAvailibleLanguages()
|
|
||||||
{
|
|
||||||
return cultureUiMap.ToDictionary(key => MakeUrl(key.Key), value => value.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IDictionary<string, string> GetAvailibleLanguagesName()
|
|
||||||
{
|
|
||||||
var result = new Dictionary<string, string>();
|
|
||||||
cultureUiMap.ToList().ForEach(el => result.Add(el.Key, el.Value.DisplayName));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string GetLanguageName(CultureInfo culture)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//capitalize
|
|
||||||
return char.ToUpper(culture.NativeName[0]) + culture.NativeName.Substring(1);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CultureInfo GetCurrentCulture()
|
|
||||||
{
|
|
||||||
if (HttpContext.Current != null)
|
|
||||||
{
|
|
||||||
var _log = log4net.LogManager.GetLogger("ASC.LanguageProvider");
|
|
||||||
if (HttpContext.Current.Items[SELECTED] == null || !(HttpContext.Current.Items[SELECTED] is CultureInfo))
|
|
||||||
{
|
|
||||||
_log.Debug("HttpContext.Current.Items[SELECTED] == null || !(HttpContext.Current.Items[SELECTED] is CultureInfo = TRUE");
|
|
||||||
if (string.IsNullOrEmpty(GetCultureKey()))
|
|
||||||
{
|
|
||||||
_log.Debug("HttpContext.Current.Items[SELECTED] == null || !(HttpContext.Current.Items[SELECTED] is CultureInfo = TRUE");
|
|
||||||
if (HttpContext.Current.Session != null && HttpContext.Current.Session["redirected"] == null)
|
|
||||||
{
|
|
||||||
_log.Debug("HttpContext.Current.Session['redirected'] = null");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var currentIPGeo = MultiRegionHelper.Instance.GetIPGeolocationInfoFull();
|
|
||||||
var priorityLng = currentIPGeo.Lang;
|
|
||||||
if (!String.IsNullOrEmpty(priorityLng)) {
|
|
||||||
var acceptLng = HttpContext.Current.Request.Headers["Accept-Language"];
|
|
||||||
if (!string.IsNullOrEmpty(acceptLng))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var priorityLngs = acceptLng.Split(',')
|
|
||||||
.Select(x => x.Split(';').FirstOrDefault())
|
|
||||||
.Where(x => !string.IsNullOrEmpty(x)).Select(x => x.Split('-').FirstOrDefault())
|
|
||||||
.Select(x => "en".Equals(x, StringComparison.OrdinalIgnoreCase) ? string.Empty : x);
|
|
||||||
if (priorityLngs.Any())
|
|
||||||
{
|
|
||||||
priorityLng = priorityLngs.Where(x => x != null && cultureUiMap.ContainsKey(x)).FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_log.Error(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_log.Debug("priorityLng = " + priorityLng);
|
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(priorityLng) && cultureUiMap.ContainsKey(priorityLng))
|
|
||||||
{
|
|
||||||
if (HttpContext.Current.Session != null)
|
|
||||||
HttpContext.Current.Session["redirected"] = true;
|
|
||||||
var newUrl = MakeUrl(priorityLng);
|
|
||||||
_log.Debug("newUrl = " + newUrl);
|
|
||||||
|
|
||||||
HttpContext.Current.Response.Redirect(newUrl, false);
|
|
||||||
HttpContext.Current.Response.Clear();
|
|
||||||
HttpContext.Current.ApplicationInstance.CompleteRequest();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_log.Error(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string cultureKey = GetCultureKey() ?? string.Empty;
|
|
||||||
_log.Debug("130. cultureKey = " + cultureKey);
|
|
||||||
if (cultureUiMap.ContainsKey(cultureKey))
|
|
||||||
{
|
|
||||||
var culture = cultureUiMap[cultureKey];
|
|
||||||
HttpContext.Current.Items[SELECTED] = culture;
|
|
||||||
return culture;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return (CultureInfo)HttpContext.Current.Items[SELECTED];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return CultureInfo.CurrentUICulture;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetCultureKey()
|
|
||||||
{
|
|
||||||
var cultureKey = string.Empty;
|
|
||||||
if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["locale-mod"]))
|
|
||||||
{
|
|
||||||
cultureKey = HttpContext.Current.Request[ConfigurationManager.AppSettings["locale-mod"]];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Try select from request
|
|
||||||
if (HttpContext.Current.Request.ApplicationPath != null)
|
|
||||||
{
|
|
||||||
cultureKey = HttpContext.Current.Request.ApplicationPath.TrimStart('/');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cultureKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string MakeUrl(string lngKey)
|
|
||||||
{
|
|
||||||
if (HttpContext.Current != null && HttpContext.Current.Request != null)
|
|
||||||
{
|
|
||||||
//get request url
|
|
||||||
var request = HttpContext.Current.Request;
|
|
||||||
var url = request.Url;
|
|
||||||
if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["locale-mod"]))
|
|
||||||
{
|
|
||||||
var lngQueryKey = ConfigurationManager.AppSettings["locale-mod"];
|
|
||||||
url = new Uri(url, url.AbsolutePath + SetUrlParam(lngQueryKey, lngKey, request.QueryString));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Based on app path
|
|
||||||
if (request.ApplicationPath != null)
|
|
||||||
{
|
|
||||||
var urlApp = "/" + string.Format("/{0}/{1}", lngKey, request.Url.PathAndQuery.Substring(request.ApplicationPath.Length).TrimStart('/')).TrimStart('/');
|
|
||||||
url = new Uri(url, urlApp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return url.ToString();
|
|
||||||
}
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string SetUrlParam(string param, string value, NameValueCollection queryStringOriginal)
|
|
||||||
{
|
|
||||||
var queryString = new NameValueCollection(queryStringOriginal);
|
|
||||||
if (!string.IsNullOrEmpty(value))
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(queryString[param]))
|
|
||||||
{
|
|
||||||
queryString[param] = value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
queryString.Add(param, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Remove value
|
|
||||||
queryString.Remove(param);
|
|
||||||
}
|
|
||||||
var query = new StringBuilder();
|
|
||||||
if (queryString.Count > 0)
|
|
||||||
{
|
|
||||||
query.Append("?");
|
|
||||||
foreach (var key in queryString.AllKeys)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(queryString[key]))
|
|
||||||
{
|
|
||||||
query.AppendFormat("{0}={1}&", HttpUtility.UrlPathEncode(key), HttpUtility.UrlPathEncode(queryString[key]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return query.ToString().TrimEnd('&');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,5 @@
|
|||||||
<%@ Control Language="C#" %>
|
<%@ Control Language="C#" %>
|
||||||
<%@ Register Src="~/Controls/Common/LanguageSelector.ascx" TagName="LangSelector" TagPrefix="uc" %>
|
|
||||||
<%@ Register Namespace="TeamLab.Controls" Assembly="__Code" TagPrefix="cc" %>
|
|
||||||
<header>
|
<header>
|
||||||
<div class="narrowheader">
|
<div class="narrowheader">
|
||||||
<div class="logo push">
|
<div class="logo push">
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
<%@ Control Language="C#" AutoEventWireup="true" %>
|
|
||||||
<div id="LanguageSelector" class="custom-select">
|
|
||||||
<div class="selector"></div>
|
|
||||||
<div class="title <%=LanguageProvider.GetCurrentCulture().Name%>" onclick="LanguageSelectorManager.openLngSelector();">
|
|
||||||
<span class="underline"><%=LanguageProvider.GetLanguageName(LanguageProvider.GetCurrentCulture().Parent)%></span>
|
|
||||||
</div>
|
|
||||||
<ul class="options" style="display: none;">
|
|
||||||
<%foreach (var availibleLanguage in LanguageProvider.GetAvailibleLanguages())
|
|
||||||
{ %>
|
|
||||||
<li class="option <%=availibleLanguage.Value.Name%>">
|
|
||||||
<a href="<%=HttpUtility.HtmlEncode(availibleLanguage.Key)%>">
|
|
||||||
<%=LanguageProvider.GetLanguageName(availibleLanguage.Value.Parent)%>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<% } %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
@ -8,35 +8,9 @@
|
|||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<script runat="server">
|
<script runat="server">
|
||||||
public System.Globalization.CultureInfo TeamLabUICulture;
|
|
||||||
|
|
||||||
protected override void OnLoad(EventArgs e)
|
|
||||||
{
|
|
||||||
TeamLabUICulture = LanguageProvider.GetCurrentCulture();
|
|
||||||
|
|
||||||
base.OnLoad(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
private string RenderСео()
|
private string RenderСео()
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
|
|
||||||
var culture = TeamLabUICulture.Name;
|
|
||||||
|
|
||||||
if (culture == "en-GB")
|
|
||||||
culture = "en-US";
|
|
||||||
|
|
||||||
foreach (var availibleLanguage in LanguageProvider.GetAvailibleLanguages())
|
|
||||||
{
|
|
||||||
if (availibleLanguage.Value.Name == culture)
|
|
||||||
sb.Insert(0, string.Format(@"<link rel=""canonical"" href=""{0}"" />",
|
|
||||||
availibleLanguage.Key) + Environment.NewLine);
|
|
||||||
|
|
||||||
sb.AppendLine(string.Format(@"<link rel=""alternate"" href=""{0}"" hreflang=""{1}"" />",
|
|
||||||
HttpUtility.HtmlEncode(availibleLanguage.Key),
|
|
||||||
availibleLanguage.Value.Name));
|
|
||||||
}
|
|
||||||
|
|
||||||
var basePage = Page as BasePage;
|
var basePage = Page as BasePage;
|
||||||
|
|
||||||
if (basePage != null)
|
if (basePage != null)
|
||||||
@ -57,7 +31,7 @@
|
|||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= TeamLabUICulture.Name %>" lang="<%= TeamLabUICulture.Name %>" prefix="og: http://ogp.me/ns#">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-RU" lang="ru-RU" prefix="og: http://ogp.me/ns#">
|
||||||
<head runat="server">
|
<head runat="server">
|
||||||
<title></title>
|
<title></title>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
@ -10,18 +10,6 @@
|
|||||||
<script runat="server">
|
<script runat="server">
|
||||||
private void Page_Load(object sender, System.EventArgs e)
|
private void Page_Load(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
var lng = LanguageProvider.GetCurrentCulture().ToString();
|
|
||||||
string language;
|
|
||||||
switch (lng)
|
|
||||||
{
|
|
||||||
case "ru-RU":
|
|
||||||
language = "ru";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
language = "ru";
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
ClientScriptManager cs = Page.ClientScript;
|
ClientScriptManager cs = Page.ClientScript;
|
||||||
StringBuilder helpcstext = new StringBuilder();
|
StringBuilder helpcstext = new StringBuilder();
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
var url = String.Format(ConfigurationManager.AppSettings["google.search.url"] + "?cx={0}&key={1}&hl={2}&q={3}",
|
var url = String.Format(ConfigurationManager.AppSettings["google.search.url"] + "?cx={0}&key={1}&hl={2}&q={3}",
|
||||||
ConfigurationManager.AppSettings["google.search.cx"],
|
ConfigurationManager.AppSettings["google.search.cx"],
|
||||||
ConfigurationManager.AppSettings["google.search.key"],
|
ConfigurationManager.AppSettings["google.search.key"],
|
||||||
LanguageProvider.GetCurrentCulture().TwoLetterISOLanguageName,
|
"ru",
|
||||||
query);
|
query);
|
||||||
|
|
||||||
using (var webClient = new WebClient())
|
using (var webClient = new WebClient())
|
||||||
|
Loading…
Reference in New Issue
Block a user