r7: remove language selector

This commit is contained in:
Sergey Linnik 2019-02-14 12:13:56 +03:00
parent 9f48774af3
commit 07e76a4fef
8 changed files with 8 additions and 336 deletions

View File

@ -17,18 +17,6 @@ using System.Text;
/// </summary>
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 object lockObj = new object();
@ -63,7 +51,7 @@ public class BasePage : Page
public string GetContentFileName(string contentName, bool isVirtualPath)
{
string cultureKey = TeamLabUICulture.TwoLetterISOLanguageName;
string cultureKey = "ru";
string result;
bool exists = (String.Compare(
ConfigurationManager.AppSettings["cache-loc-content-filenames"],

View File

@ -1,12 +1,11 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using HtmlAgilityPack;
using System.Net;
using System.IO;
using System.Configuration;
using System.Web.UI;
public static class DocHelpParcing
{
@ -149,32 +148,6 @@ public static class DocHelpParcing
private static String GetLanguage()
{
var lng = LanguageProvider.GetCurrentCulture().ToString();
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;
return "ru";
}
}

View File

@ -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('&');
}
}

View File

@ -1,6 +1,5 @@
<%@ Control Language="C#" %>
<%@ Register Src="~/Controls/Common/LanguageSelector.ascx" TagName="LangSelector" TagPrefix="uc" %>
<%@ Register Namespace="TeamLab.Controls" Assembly="__Code" TagPrefix="cc" %>
<header>
<div class="narrowheader">
<div class="logo push">

View File

@ -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>

View File

@ -8,35 +8,9 @@
<!DOCTYPE html>
<script runat="server">
public System.Globalization.CultureInfo TeamLabUICulture;
protected override void OnLoad(EventArgs e)
{
TeamLabUICulture = LanguageProvider.GetCurrentCulture();
base.OnLoad(e);
}
private string RenderСео()
{
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;
if (basePage != null)
@ -57,7 +31,7 @@
return sb.ToString();
}
</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">
<title></title>
<meta charset="utf-8" />

View File

@ -10,18 +10,6 @@
<script runat="server">
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;
StringBuilder helpcstext = new StringBuilder();

View File

@ -64,7 +64,7 @@
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.key"],
LanguageProvider.GetCurrentCulture().TwoLetterISOLanguageName,
"ru",
query);
using (var webClient = new WebClient())