L.cs
2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using NCC.Dependency;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace NCC.Localization
{
/// <summary>
/// 全局多语言静态类
/// </summary>
[SuppressSniffer]
public static class L
{
/// <summary>
/// String 多语言
/// </summary>
public static IStringLocalizer @Text => App.GetService<IStringLocalizerFactory>(App.RootServices)?.Create();
/// <summary>
/// Html 多语言
/// </summary>
public static IHtmlLocalizer @Html => App.GetService<IHtmlLocalizerFactory>(App.RootServices)?.Create();
/// <summary>
/// 设置多语言区域
/// </summary>
/// <param name="culture"></param>
public static void SetCulture(string culture)
{
var httpContext = App.HttpContext;
if (httpContext == null) return;
httpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
}
/// <summary>
/// 获取当前选择的语言
/// </summary>
/// <returns></returns>
public static RequestCulture GetSelectCulture()
{
var httpContext = App.HttpContext;
if (httpContext == null) return default;
// 获取请求特性
var requestCulture = httpContext.Features.Get<IRequestCultureFeature>();
return requestCulture.RequestCulture;
}
/// <summary>
/// 获取系统提供的语言列表
/// </summary>
/// <returns></returns>
public static Dictionary<string, string> GetCultures()
{
var httpContext = App.HttpContext;
if (httpContext == null) return new Dictionary<string, string>();
// 获取请求本地特性选项
var locOptions = httpContext.RequestServices.GetService<IOptions<RequestLocalizationOptions>>().Value;
// 获取语言符号和名称
var cultureItems = locOptions.SupportedUICultures
.ToDictionary(u => u.Name, u => u.DisplayName);
return cultureItems;
}
}
}