Добавляет локализацию (#4)
Reviewed-on: #4 Co-authored-by: Sergey Nazarov <insight.appdev@gmail.com> Co-committed-by: Sergey Nazarov <insight.appdev@gmail.com>
This commit is contained in:
parent
25e095ed82
commit
ba8c94d962
@ -1,35 +1,38 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<MicrosoftVersion>8.0.0</MicrosoftVersion>
|
||||
<InsightTelegramBotVersion>0.16.0</InsightTelegramBotVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="Nocr">
|
||||
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" Version="0.4.25" />
|
||||
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" Version="0.4.25" />
|
||||
<PackageVersion Include="Nocr.Users.Api.Contracts" Version="0.4.23" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Rebus">
|
||||
<PackageVersion Include="Rebus" Version="8.2.2" />
|
||||
<PackageVersion Include="Rebus.ServiceProvider" Version="10.1.0" />
|
||||
<PackageVersion Include="Rebus.RabbitMq" Version="9.0.1" />
|
||||
<PackageVersion Include="Rebus.Serilog" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Insight.TelegramBot">
|
||||
<PackageVersion Include="Insight.TelegramBot" Version="$(InsightTelegramBotVersion)" />
|
||||
<PackageVersion Include="Insight.TelegramBot.Hosting.DependencyInjection" Version="$(InsightTelegramBotVersion)" />
|
||||
<PackageVersion Include="Insight.TelegramBot.Handling" Version="$(InsightTelegramBotVersion)" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Serilog">
|
||||
<PackageVersion Include="Serilog" Version="3.1.1" />
|
||||
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1" />
|
||||
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Microsoft">
|
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(MicrosoftVersion)" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftVersion)" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<MicrosoftVersion>8.0.0</MicrosoftVersion>
|
||||
<InsightTelegramBotVersion>0.16.0</InsightTelegramBotVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageVersion Include="Insight.Localizer" Version="1.1.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Nocr">
|
||||
<PackageVersion Include="Nocr.TextMatcher.Api.Contracts" Version="0.4.25"/>
|
||||
<PackageVersion Include="Nocr.TextMatcher.Async.Api.Contracts" Version="0.4.25"/>
|
||||
<PackageVersion Include="Nocr.Users.Api.Contracts" Version="0.4.23"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Rebus">
|
||||
<PackageVersion Include="Rebus" Version="8.2.2"/>
|
||||
<PackageVersion Include="Rebus.ServiceProvider" Version="10.1.0"/>
|
||||
<PackageVersion Include="Rebus.RabbitMq" Version="9.0.1"/>
|
||||
<PackageVersion Include="Rebus.Serilog" Version="8.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Insight.TelegramBot">
|
||||
<PackageVersion Include="Insight.TelegramBot" Version="$(InsightTelegramBotVersion)"/>
|
||||
<PackageVersion Include="Insight.TelegramBot.Hosting.DependencyInjection" Version="$(InsightTelegramBotVersion)"/>
|
||||
<PackageVersion Include="Insight.TelegramBot.Handling" Version="$(InsightTelegramBotVersion)"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Serilog">
|
||||
<PackageVersion Include="Serilog" Version="3.1.1"/>
|
||||
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1"/>
|
||||
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Microsoft">
|
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftVersion)"/>
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(MicrosoftVersion)"/>
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftVersion)"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -1,3 +1,4 @@
|
||||
using Insight.Localizer;
|
||||
using Insight.TelegramBot;
|
||||
using Insight.TelegramBot.Handling.Handlers;
|
||||
using Insight.TelegramBot.Models;
|
||||
@ -9,10 +10,12 @@ namespace Nocr.TelegramClient.AppServices.Handlers.Messages.StartMessage;
|
||||
|
||||
public class StartMessageHandler : IMatchingUpdateHandler<StartMessageMatcher>
|
||||
{
|
||||
private readonly ILocalizer _localizer;
|
||||
private readonly IMessageDispatcherQueue _messageQueue;
|
||||
|
||||
public StartMessageHandler(IMessageDispatcherQueue messageQueue)
|
||||
public StartMessageHandler(ILocalizer localizer, IMessageDispatcherQueue messageQueue)
|
||||
{
|
||||
_localizer = localizer ?? throw new ArgumentNullException(nameof(localizer));
|
||||
_messageQueue = messageQueue ?? throw new ArgumentNullException(nameof(messageQueue));
|
||||
}
|
||||
|
||||
@ -21,7 +24,7 @@ public class StartMessageHandler : IMatchingUpdateHandler<StartMessageMatcher>
|
||||
var telegramId = update.Message.From.Id;
|
||||
var message = new TextMessage(telegramId)
|
||||
{
|
||||
Text = "Привет! Я _bot_name_",
|
||||
Text = _localizer.Get("messages", "StartMessage"),
|
||||
ParseMode = ParseMode.Html
|
||||
};
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ public class SubscribeMessageHandler : IMatchingUpdateHandler<SubscribeMessageMa
|
||||
{
|
||||
_messageQueue.Enqueue(new TextMessage(telegramId)
|
||||
{
|
||||
// TODO: Add localizer
|
||||
Text = "Команда не удовлетворяет формату"
|
||||
});
|
||||
return;
|
||||
@ -54,6 +55,7 @@ public class SubscribeMessageHandler : IMatchingUpdateHandler<SubscribeMessageMa
|
||||
{
|
||||
_messageQueue.Enqueue(new TextMessage(telegramId)
|
||||
{
|
||||
// TODO: Add localizer
|
||||
Text = "Не удалось извлечь тип подписки"
|
||||
});
|
||||
return;
|
||||
@ -72,6 +74,7 @@ public class SubscribeMessageHandler : IMatchingUpdateHandler<SubscribeMessageMa
|
||||
|
||||
_messageQueue.Enqueue(new TextMessage(telegramId)
|
||||
{
|
||||
// TODO: Add localizer
|
||||
Text = $"Подписка создана: {subscriptionId}"
|
||||
});
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@ public class SubscriptionsMessageHandler : IMatchingUpdateHandler<SubscriptionsM
|
||||
{
|
||||
var textMessage = new TextMessage(telegramId)
|
||||
{
|
||||
// TODO: Add localizer
|
||||
Text = subscription.TextView(),
|
||||
ParseMode = ParseMode.Html
|
||||
};
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Insight.Localizer" />
|
||||
<PackageReference Include="Insight.TelegramBot" />
|
||||
<PackageReference Include="Insight.TelegramBot.Handling" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" />
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
using Insight.Localizer;
|
||||
using Insight.TelegramBot.Handling.Infrastructure;
|
||||
using Insight.TelegramBot.Hosting.DependencyInjection.Infrastructure;
|
||||
using Insight.TelegramBot.Hosting.Polling.ExceptionHandlers;
|
||||
@ -24,6 +25,19 @@ public class Startup
|
||||
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
var localizerConfiguration = Configuration
|
||||
.GetSection(nameof(LocalizerConfiguration))
|
||||
.Get<LocalizerConfiguration>();
|
||||
Localizer.Initialize(localizerConfiguration);
|
||||
|
||||
services.AddSingleton(new Localizer());
|
||||
// Хак, чтобы постоянно использовать русскую локализацию. В идеале CurrentCulture должен выставляться на основании контекста пользователя в месте инжекта.
|
||||
services.AddScoped<ILocalizer>(ctx =>
|
||||
{
|
||||
Localizer.CurrentCulture = "ru-ru";
|
||||
return ctx.GetRequiredService<Localizer>();
|
||||
});
|
||||
|
||||
services.AddSingleton<ICurrentDateProvider, DefaultCurrentDateProvider>();
|
||||
services.AddTelegramBot(bot =>
|
||||
bot.WithBot<BotClient>(ServiceLifetime.Transient)
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
<Content Include="..\..\.dockerignore">
|
||||
<Link>.dockerignore</Link>
|
||||
</Content>
|
||||
<Content Include="Resources" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"Delete": "Delete 🧹",
|
||||
"PreviousPage": "<<",
|
||||
"NextPage": ">>",
|
||||
"Back": "<< Back"
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"Delete": "Удалить 🧹",
|
||||
"PreviousPage": "<<",
|
||||
"NextPage": ">>",
|
||||
"Back": "<< Назад"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"InvalidTimeFormat": "Time <b>{ReceivedTime}</b> does not correspond to the acceptable formats!",
|
||||
"InvalidDateFormat": "Date <b>{ReceivedDate}</b> does not correspond to the acceptable formats!"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"InvalidTimeFormat": "Время <b>{ReceivedTime}</b> не соответствует допустимым форматам!",
|
||||
"InvalidDateFormat": "Дата <b>{ReceivedDate}</b> не соответствует допустимым форматам!"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"en-us": "🇬🇧",
|
||||
"ru-ru": "🇷🇺"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"English": "English 🇬🇧",
|
||||
"Russian": "Русский 🇷🇺"
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"English": "English 🇬🇧",
|
||||
"Russian": "Русский 🇷🇺"
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
{
|
||||
"StartMessage": "Привет! Я, Nocr 🤖!"
|
||||
}
|
||||
@ -17,5 +17,10 @@
|
||||
"MessageDispatcherOptions": {
|
||||
"Interval": "00:00:00.050",
|
||||
"ExceptionInterval": "00:00:30"
|
||||
},
|
||||
"LocalizerConfiguration": {
|
||||
"Path": "Resources",
|
||||
"Pattern": "",
|
||||
"ReadNestedFolders": "true"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user