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"
}
}