From f79929b0e9eb6930ce3a0418536fc6afc3cdd700 Mon Sep 17 00:00:00 2001 From: Wayne Wei Date: Fri, 2 Feb 2024 16:01:36 +0800 Subject: [PATCH] Use culture options in appsetting. --- .../Modules/MutiLanguage/Localize.cs | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/EasyFrameWork/Modules/MutiLanguage/Localize.cs b/src/EasyFrameWork/Modules/MutiLanguage/Localize.cs index 1318dcfc..563559f7 100644 --- a/src/EasyFrameWork/Modules/MutiLanguage/Localize.cs +++ b/src/EasyFrameWork/Modules/MutiLanguage/Localize.cs @@ -10,26 +10,31 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Microsoft.Extensions.DependencyInjection; namespace Easy.Modules.MutiLanguage { public class Localize : ILocalize { - private ILanguageService _languageService; - List cultureCodes = new List(); - public Localize(ILanguageService languageService, IOptions options, IHttpContextAccessor httpContextAccessor) + private readonly IServiceProvider _serviceProvider; + public Localize(IServiceProvider serviceProvider) { - _languageService = languageService; - - var userLan = httpContextAccessor.HttpContext.Request.GetUserLanguages().FirstOrDefault(); - - if (userLan.IsNotNullAndWhiteSpace()) + _serviceProvider = serviceProvider; + } + private string cultureCode; + public string CultureCode + { + get { - cultureCodes.Add(userLan); + return cultureCode ?? (cultureCode = _serviceProvider.GetService>().Value.Code); } - if (userLan != options.Value.Code) + } + private ILanguageService languageService; + private ILanguageService LanguageService + { + get { - cultureCodes.Add(options.Value.Code); + return languageService ?? (languageService = _serviceProvider.GetService()); } } public string Get(string content) @@ -44,20 +49,12 @@ public string Get(string content, string culture) public string GetOrNull(string content) { - foreach (var item in cultureCodes) - { - string lanValue = GetOrNull(content, item); - if (lanValue.IsNotNullAndWhiteSpace()) - { - return lanValue; - } - } - return null; + return GetOrNull(content, CultureCode); } public string GetOrNull(string content, string culture) { - var lanContent = _languageService.Get(content, culture); + var lanContent = LanguageService.Get(content, culture); if (lanContent != null && lanContent.LanValue.IsNotNullAndWhiteSpace()) { return lanContent.LanValue;