Skip to content

Commit 20e22eb

Browse files
committed
feat(I18n): Support I18N
1 parent 8f3fbaa commit 20e22eb

File tree

44 files changed

+423
-97
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+423
-97
lines changed

src/BuildingBlocks/Data/Masa.BuildingBlocks.Data/Constants/ErrorCode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ static ErrorCode()
236236
{
237237
var errorMessage = AttributeUtils.GetDescriptionByField(field);
238238

239-
_errorCodeMessageDictionary.Add(field.GetRawConstantValue()!.ToString(), errorMessage);
239+
_errorCodeMessageDictionary.Add(field.GetRawConstantValue()!.ToString()!, errorMessage);
240240
}
241241
}
242242

src/BuildingBlocks/Globalization/Masa.BuildingBlocks.Globalization.I18N/CultureModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ public class CultureModel
77
{
88
public string Culture { get; set; }
99

10-
public string DisplayName { get; set; }
10+
public string? DisplayName { get; set; }
1111

1212
public string Icon { get; set; }
1313

14-
public CultureModel(string culture, string displayName, string? icon = null)
14+
public CultureModel(string culture, string? displayName = null, string? icon = null)
1515
{
1616
Culture = culture;
1717
DisplayName = displayName;

src/BuildingBlocks/Globalization/Masa.BuildingBlocks.Globalization.I18N/DefaultLanguageProvider.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ public class DefaultLanguageProvider : ILanguageProvider
88
private readonly II18N<MasaLanguageResource> _i18N;
99
private readonly IOptions<CultureSettings> _options;
1010

11+
private static Dictionary<string, string> _languages = new()
12+
{
13+
{ "en-US", "English (United States)" },
14+
{ "zh-CN", "中文 (简体)" }
15+
};
16+
1117
public DefaultLanguageProvider(II18N<MasaLanguageResource> i18N, IOptions<CultureSettings> options)
1218
{
1319
_i18N = i18N;
@@ -24,7 +30,7 @@ public IReadOnlyList<LanguageInfo> GetLanguages()
2430
nameof(LanguageInfo.UIDisplayName) :
2531
$"{culture.Culture}\\.{nameof(LanguageInfo.UIDisplayName)}";
2632
var uiDisplayName = _i18N.T(key);
27-
var languageInfo = new LanguageInfo(culture.Culture, culture.DisplayName, culture.Icon)
33+
var languageInfo = new LanguageInfo(culture.Culture, culture.DisplayName ?? GetDisplayName(cultureName), culture.Icon)
2834
{
2935
UIDisplayName = uiDisplayName
3036
};
@@ -33,4 +39,12 @@ public IReadOnlyList<LanguageInfo> GetLanguages()
3339
});
3440
return list;
3541
}
42+
43+
private static string GetDisplayName(string cultureName)
44+
{
45+
if (_languages.TryGetValue(cultureName, out string? displayName))
46+
return displayName;
47+
48+
return string.Empty;
49+
}
3650
}

src/BuildingBlocks/Globalization/Masa.BuildingBlocks.Globalization.I18N/I18N.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ public static class I18N
77
{
88
private static readonly IServiceProvider _serviceProvider = MasaApp.RootServiceProvider;
99
private static readonly II18N _i18N = InitI18N();
10+
private static readonly ILanguageProvider _languageProvider = InitLanguage();
1011

1112
static II18N InitI18N() => _serviceProvider.GetRequiredService<II18N>();
1213

14+
static ILanguageProvider InitLanguage() => _serviceProvider.GetRequiredService<ILanguageProvider>();
15+
1316
/// <summary>
1417
/// Gets the string resource with the given name.
1518
/// </summary>
@@ -77,4 +80,6 @@ public static class I18N
7780
/// </summary>
7881
/// <param name="culture"></param>
7982
public static void SetUiCulture(CultureInfo culture) => _i18N.SetUiCulture(culture);
83+
84+
public static IReadOnlyList<LanguageInfo> GetLanguages() => _languageProvider.GetLanguages();
8085
}

src/BuildingBlocks/Globalization/Masa.BuildingBlocks.Globalization.I18N/I18NResource.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ public class I18NResource
99

1010
public Type ResourceType { get; }
1111

12-
public IEnumerable<Type> BaseResourceTypes { get; }
12+
public List<Type> BaseResourceTypes { get; private set; }
1313

1414
public IEnumerable<Assembly> Assemblies { get; set; } = new List<Assembly>();
1515

1616
public I18NResource(Type resourceType, IEnumerable<Type> baseResourceTypes)
1717
{
1818
_dictionary = new(StringComparer.OrdinalIgnoreCase);
1919
ResourceType = resourceType;
20-
BaseResourceTypes = baseResourceTypes;
20+
BaseResourceTypes = baseResourceTypes.ToList();
2121
}
2222

2323
public void AddContributor(string cultureName, II18NResourceContributor localizationResourceContributor)
@@ -37,4 +37,16 @@ public void AddContributor(string cultureName, II18NResourceContributor localiza
3737

3838
return null;
3939
}
40+
41+
public void TryAddBaseResourceTypes<TBaseResourceType>() where TBaseResourceType : class
42+
=> TryAddBaseResourceTypes(typeof(TBaseResourceType));
43+
44+
public void TryAddBaseResourceTypes(params Type[] resourceTypes)
45+
{
46+
foreach (var type in resourceTypes)
47+
{
48+
if (!BaseResourceTypes.Contains(type))
49+
BaseResourceTypes.Add(type);
50+
}
51+
}
4052
}

src/Contrib/Exception/Masa.Contrib.Exceptions/Extensions/ApplicationBuilderExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace Microsoft.AspNetCore.Builder;
77

8+
[ExcludeFromCodeCoverage]
89
public static class ApplicationBuilderExtensions
910
{
1011
/// <summary>

src/Contrib/Exception/Masa.Contrib.Exceptions/Extensions/MvcBuilderExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace Microsoft.Extensions.DependencyInjection;
77

8+
[ExcludeFromCodeCoverage]
89
public static class MvcBuilderExtensions
910
{
1011
public static IMvcBuilder AddMasaExceptionHandler(this IMvcBuilder builder)

src/Contrib/Exception/Masa.Contrib.Exceptions/Handlers/ExceptionHandlerMiddleware.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace Microsoft.AspNetCore.Builder;
77

8+
[ExcludeFromCodeCoverage]
89
public class ExceptionHandlerMiddleware
910
{
1011
private readonly RequestDelegate _next;

src/Contrib/Exception/Masa.Contrib.Exceptions/Handlers/MvcGlobalExceptionFilter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters;
88
/// <summary>
99
/// Mvc pipeline exception filter to catch global exception
1010
/// </summary>
11+
[ExcludeFromCodeCoverage]
1112
public class MvcGlobalExceptionFilter : IExceptionFilter
1213
{
1314
private readonly IServiceProvider _serviceProvider;

src/Contrib/Exception/Masa.Contrib.Exceptions/Internal/Constant.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,4 @@ namespace Masa.Contrib.Exceptions.Internal;
66
internal static class Constant
77
{
88
public const string DEFAULT_HTTP_CONTENT_TYPE = "text/plain; charset=utf-8";
9-
10-
// public const string DEFAULT_EXCEPTION_MESSAGE = "An error occur in masa framework.";
119
}

0 commit comments

Comments
 (0)