First Commit

This commit is contained in:
Jorge Luis caudillo esparza
2026-05-09 16:36:57 -07:00
parent 96ad4c0d3e
commit d0c284d9c0
131 changed files with 4009 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\ADS.Helpers.Base\ADS.Helpers.Base.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,6 @@
namespace ADS.Helpers.Localization.Abstractions;
public interface IMessageCatalog
{
string Get(string source,string code, string culture);
}

View File

@@ -0,0 +1,6 @@
namespace ADS.Helpers.Localization;
public class Class1
{
}

View File

@@ -0,0 +1,14 @@
using ADS.Helpers.Localization.Abstractions;
using Microsoft.Extensions.DependencyInjection;
namespace ADS.Helpers.Localization.Extensions;
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddAdsLocalization(this IServiceCollection services)
{
services.AddSingleton<InMemoryMessageCatalog>();
services.AddSingleton<IMessageCatalog>(sp => sp.GetRequiredService<InMemoryMessageCatalog>());
return services;
}
}

View File

@@ -0,0 +1,28 @@
using System.Collections.Concurrent;
using ADS.Helpers.Localization.Abstractions;
namespace ADS.Helpers.Localization;
public sealed class InMemoryMessageCatalog : IMessageCatalog
{
private readonly ConcurrentDictionary<(string source, string code, string culture), string> _messages = new();
public InMemoryMessageCatalog Seed(string source, string culture, IReadOnlyDictionary<string, string> messages)
{
foreach (var kv in messages)
_messages[(source, kv.Key, culture)] = kv.Value;
return this;
}
public string Get(string source, string code, string culture)
{
if (_messages.TryGetValue((source, code, culture), out var msg))
return msg;
if (_messages.TryGetValue((source, code, "en-US"), out var en))
return en;
return code;
}
}