| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using Abp.Dependency;
- using Abp.Localization;
- using Abp.Web.Localization;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Web;
- using Abp.Json;
- namespace ShwasherSys.ScriptManager
- {
- public class IwbLocalizationScriptManager : ILocalizationScriptManager, ISingletonDependency
- {
- private readonly ILocalizationManager _localizationManager;
- private readonly ILanguageManager _languageManager;
- public IwbLocalizationScriptManager(
- ILocalizationManager localizationManager,
- ILanguageManager languageManager)
- {
- _localizationManager = localizationManager;
- _languageManager = languageManager;
- }
- /// <inheritdoc/>
- public string GetScript()
- {
- return GetScript(CultureInfo.CurrentUICulture);
- }
- /// <inheritdoc/>
- public string GetScript(CultureInfo cultureInfo)
- {
- //NOTE: Disabled caching since it's not true (localization script is changed per user, per tenant, per culture...)
- return BuildAll(cultureInfo);
- //return _cacheManager.GetCache(AbpCacheNames.LocalizationScripts).Get(cultureInfo.Name, () => BuildAll(cultureInfo));
- }
- private string BuildAll(CultureInfo cultureInfo)
- {
- var script = new StringBuilder();
- script.AppendLine("(function(){");
- script.AppendLine();
- script.AppendLine(" abp.localization = abp.localization || {};");
- script.AppendLine();
- script.AppendLine(" abp.localization.currentCulture = {");
- script.AppendLine(" name: '" + cultureInfo.Name + "',");
- script.AppendLine(" displayName: '" + cultureInfo.DisplayName + "'");
- script.AppendLine(" };");
- script.AppendLine();
- script.Append(" abp.localization.languages = [");
- var languages = _languageManager.GetLanguages();
- for (var i = 0; i < languages.Count; i++)
- {
- var language = languages[i];
- script.AppendLine("{");
- script.AppendLine(" name: '" + language.Name + "',");
- script.AppendLine(" displayName: '" + language.DisplayName + "',");
- script.AppendLine(" icon: '" + language.Icon + "',");
- script.AppendLine(" isDisabled: " + language.IsDisabled.ToString().ToLowerInvariant() + ",");
- script.AppendLine(" isDefault: " + language.IsDefault.ToString().ToLowerInvariant());
- script.Append(" }");
- if (i < languages.Count - 1)
- {
- script.Append(" , ");
- }
- }
- script.AppendLine("];");
- script.AppendLine();
- if (languages.Count > 0)
- {
- var currentLanguage = _languageManager.CurrentLanguage;
- script.AppendLine(" abp.localization.currentLanguage = {");
- script.AppendLine(" name: '" + currentLanguage.Name + "',");
- script.AppendLine(" displayName: '" + currentLanguage.DisplayName + "',");
- script.AppendLine(" icon: '" + currentLanguage.Icon + "',");
- script.AppendLine(" isDisabled: " + currentLanguage.IsDisabled.ToString().ToLowerInvariant() + ",");
- script.AppendLine(" isDefault: " + currentLanguage.IsDefault.ToString().ToLowerInvariant());
- script.AppendLine(" };");
- }
- var sources = _localizationManager.GetAllSources().OrderBy(s => s.Name).ToArray();
- script.AppendLine();
- script.AppendLine(" abp.localization.sources = [");
- for (int i = 0; i < sources.Length; i++)
- {
- var source = sources[i];
- script.AppendLine(" {");
- script.AppendLine(" name: '" + source.Name + "',");
- script.AppendLine(" type: '" + source.GetType().Name + "'");
- script.AppendLine(" }" + (i < (sources.Length - 1) ? "," : ""));
- }
- script.AppendLine(" ];");
- script.AppendLine();
- script.AppendLine(" abp.localization.values = abp.localization.values || {};");
- script.AppendLine();
- foreach (var source in sources)
- {
- script.Append(" abp.localization.values['" + source.Name + "'] = ");
- var stringValues = source.GetAllStrings(cultureInfo).OrderBy(s => s.Name).ToList();
- var stringJson = stringValues
- .ToDictionary(_ => _.Name, _ => _.Value)
- .ToJsonString(indented: true);
- script.Append(stringJson);
- script.AppendLine(";");
- script.AppendLine();
- }
- script.AppendLine();
- script.Append("})();");
- return script.ToString();
- }
- }
- }
|