diff --git a/Directory.Packages.props b/Directory.Packages.props index ca21be6..fd48c26 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,35 +1,38 @@ - - net8.0 - enable - enable - 8.0.0 - 0.16.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - + + net8.0 + enable + enable + 8.0.0 + 0.16.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Nocr.TelegramClient.AppServices/Handlers/Messages/StartMessage/StartMessageHandler.cs b/src/Nocr.TelegramClient.AppServices/Handlers/Messages/StartMessage/StartMessageHandler.cs index ac74e33..5cefa2a 100644 --- a/src/Nocr.TelegramClient.AppServices/Handlers/Messages/StartMessage/StartMessageHandler.cs +++ b/src/Nocr.TelegramClient.AppServices/Handlers/Messages/StartMessage/StartMessageHandler.cs @@ -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 { + 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 var telegramId = update.Message.From.Id; var message = new TextMessage(telegramId) { - Text = "Привет! Я _bot_name_", + Text = _localizer.Get("messages", "StartMessage"), ParseMode = ParseMode.Html }; diff --git a/src/Nocr.TelegramClient.AppServices/Handlers/Messages/SubscribeMessage/SubscribeMessageHandler.cs b/src/Nocr.TelegramClient.AppServices/Handlers/Messages/SubscribeMessage/SubscribeMessageHandler.cs index 195db9f..cbfb4a6 100644 --- a/src/Nocr.TelegramClient.AppServices/Handlers/Messages/SubscribeMessage/SubscribeMessageHandler.cs +++ b/src/Nocr.TelegramClient.AppServices/Handlers/Messages/SubscribeMessage/SubscribeMessageHandler.cs @@ -44,6 +44,7 @@ public class SubscribeMessageHandler : IMatchingUpdateHandlerfalse + diff --git a/src/Nocr.TelegramClient.Host/Infrastructure/Startup.cs b/src/Nocr.TelegramClient.Host/Infrastructure/Startup.cs index 082b048..86298b5 100644 --- a/src/Nocr.TelegramClient.Host/Infrastructure/Startup.cs +++ b/src/Nocr.TelegramClient.Host/Infrastructure/Startup.cs @@ -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(); + Localizer.Initialize(localizerConfiguration); + + services.AddSingleton(new Localizer()); + // Хак, чтобы постоянно использовать русскую локализацию. В идеале CurrentCulture должен выставляться на основании контекста пользователя в месте инжекта. + services.AddScoped(ctx => + { + Localizer.CurrentCulture = "ru-ru"; + return ctx.GetRequiredService(); + }); + services.AddSingleton(); services.AddTelegramBot(bot => bot.WithBot(ServiceLifetime.Transient) diff --git a/src/Nocr.TelegramClient.Host/Nocr.TelegramClient.Host.csproj b/src/Nocr.TelegramClient.Host/Nocr.TelegramClient.Host.csproj index 65deee9..6ac1caf 100644 --- a/src/Nocr.TelegramClient.Host/Nocr.TelegramClient.Host.csproj +++ b/src/Nocr.TelegramClient.Host/Nocr.TelegramClient.Host.csproj @@ -22,6 +22,7 @@ .dockerignore + diff --git a/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.en-us.json b/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.en-us.json new file mode 100644 index 0000000..62f693a --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.en-us.json @@ -0,0 +1,6 @@ +{ + "Delete": "Delete 🧹", + "PreviousPage": "<<", + "NextPage": ">>", + "Back": "<< Back" +} diff --git a/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.ru-ru.json b/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.ru-ru.json new file mode 100644 index 0000000..90b8c8d --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Buttons/buttons.ru-ru.json @@ -0,0 +1,6 @@ +{ + "Delete": "Удалить 🧹", + "PreviousPage": "<<", + "NextPage": ">>", + "Back": "<< Назад" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.en-us.json b/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.en-us.json new file mode 100644 index 0000000..b98d6f3 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.en-us.json @@ -0,0 +1,4 @@ +{ + "InvalidTimeFormat": "Time {ReceivedTime} does not correspond to the acceptable formats!", + "InvalidDateFormat": "Date {ReceivedDate} does not correspond to the acceptable formats!" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.ru-ru.json b/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.ru-ru.json new file mode 100644 index 0000000..49c7074 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/ErrorMessages/errorMessages.ru-ru.json @@ -0,0 +1,4 @@ +{ + "InvalidTimeFormat": "Время {ReceivedTime} не соответствует допустимым форматам!", + "InvalidDateFormat": "Дата {ReceivedDate} не соответствует допустимым форматам!" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/Extra/Flags/flags.any.json b/src/Nocr.TelegramClient.Host/Resources/Extra/Flags/flags.any.json new file mode 100644 index 0000000..761f252 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Extra/Flags/flags.any.json @@ -0,0 +1,4 @@ +{ + "en-us": "🇬🇧", + "ru-ru": "🇷🇺" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.en-us.json b/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.en-us.json new file mode 100644 index 0000000..6677937 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.en-us.json @@ -0,0 +1,4 @@ +{ + "English": "English 🇬🇧", + "Russian": "Русский 🇷🇺" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.ru-ru.json b/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.ru-ru.json new file mode 100644 index 0000000..6677937 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Extra/Languages/languages.ru-ru.json @@ -0,0 +1,4 @@ +{ + "English": "English 🇬🇧", + "Russian": "Русский 🇷🇺" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/Messages/messages.en-us.json b/src/Nocr.TelegramClient.Host/Resources/Messages/messages.en-us.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Messages/messages.en-us.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/Resources/Messages/messages.ru-ru.json b/src/Nocr.TelegramClient.Host/Resources/Messages/messages.ru-ru.json new file mode 100644 index 0000000..6ead8fe --- /dev/null +++ b/src/Nocr.TelegramClient.Host/Resources/Messages/messages.ru-ru.json @@ -0,0 +1,3 @@ +{ + "StartMessage": "Привет! Я, Nocr 🤖!" +} \ No newline at end of file diff --git a/src/Nocr.TelegramClient.Host/appsettings.json b/src/Nocr.TelegramClient.Host/appsettings.json index 979a5d0..1947392 100644 --- a/src/Nocr.TelegramClient.Host/appsettings.json +++ b/src/Nocr.TelegramClient.Host/appsettings.json @@ -17,5 +17,10 @@ "MessageDispatcherOptions": { "Interval": "00:00:00.050", "ExceptionInterval": "00:00:30" + }, + "LocalizerConfiguration": { + "Path": "Resources", + "Pattern": "", + "ReadNestedFolders": "true" } }