Adding localization selection step to BotBaseBuilder

- Adding localization step
- Updating test project
This commit is contained in:
FlorianDahn 2021-12-25 16:10:32 +01:00
parent 4bd43de0fe
commit 2c58f86524
4 changed files with 73 additions and 13 deletions

View File

@ -9,11 +9,12 @@ using TelegramBotBase.Builder.Interfaces;
using TelegramBotBase.Commands; using TelegramBotBase.Commands;
using TelegramBotBase.Form; using TelegramBotBase.Form;
using TelegramBotBase.Interfaces; using TelegramBotBase.Interfaces;
using TelegramBotBase.Localizations;
using TelegramBotBase.States; using TelegramBotBase.States;
namespace TelegramBotBase.Builder namespace TelegramBotBase.Builder
{ {
public class BotBaseBuilder : IAPIKeySelectionStage, IMessageLoopSelectionStage, IStartFormSelectionStage, IBuildingStage, INetworkingSelectionStage, IBotCommandsStage, ISessionSerializationStage public class BotBaseBuilder : IAPIKeySelectionStage, IMessageLoopSelectionStage, IStartFormSelectionStage, IBuildingStage, INetworkingSelectionStage, IBotCommandsStage, ISessionSerializationStage, ILanguageSelectionStage
{ {
String _apiKey = null; String _apiKey = null;
@ -156,36 +157,59 @@ namespace TelegramBotBase.Builder
} }
public IBuildingStage NoSerialization() public ILanguageSelectionStage NoSerialization()
{ {
return this; return this;
} }
public IBuildingStage UseSerialization(IStateMachine machine) public ILanguageSelectionStage UseSerialization(IStateMachine machine)
{ {
this._statemachine = machine; this._statemachine = machine;
return this; return this;
} }
public IBuildingStage UseJSON(string path) public ILanguageSelectionStage UseJSON(string path)
{ {
this._statemachine = new JSONStateMachine(path); this._statemachine = new JSONStateMachine(path);
return this; return this;
} }
public IBuildingStage UseSimpleJSON(string path) public ILanguageSelectionStage UseSimpleJSON(string path)
{ {
this._statemachine = new SimpleJSONStateMachine(path); this._statemachine = new SimpleJSONStateMachine(path);
return this; return this;
} }
public IBuildingStage UseXML(string path) public ILanguageSelectionStage UseXML(string path)
{ {
this._statemachine = new XMLStateMachine(path); this._statemachine = new XMLStateMachine(path);
return this; return this;
} }
public IBuildingStage DefaultLanguage()
{
return this;
}
public IBuildingStage UseEnglish()
{
Localizations.Default.Language = new Localizations.English();
return this;
}
public IBuildingStage UseGerman()
{
Localizations.Default.Language = new Localizations.German();
return this;
}
public IBuildingStage Custom(Localization language)
{
Localizations.Default.Language = language;
return this;
}
public BotBase Build() public BotBase Build()
{ {
var bb = new BotBase(); var bb = new BotBase();
@ -208,5 +232,6 @@ namespace TelegramBotBase.Builder
return bb; return bb;
} }
} }
} }

View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Text;
using TelegramBotBase.Localizations;
namespace TelegramBotBase.Builder.Interfaces
{
public interface ILanguageSelectionStage
{
/// <summary>
/// Selects the default language for control usage. (English)
/// </summary>
/// <returns></returns>
IBuildingStage DefaultLanguage();
/// <summary>
/// Selects english as the default language for control labels.
/// </summary>
/// <returns></returns>
IBuildingStage UseEnglish();
/// <summary>
/// Selects german as the default language for control labels.
/// </summary>
/// <returns></returns>
IBuildingStage UseGerman();
/// <summary>
/// Selects a custom language as the default language for control labels.
/// </summary>
/// <returns></returns>
IBuildingStage Custom(Localization language);
}
}

View File

@ -11,7 +11,7 @@ namespace TelegramBotBase.Builder.Interfaces
/// Do not uses serialization. /// Do not uses serialization.
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
IBuildingStage NoSerialization(); ILanguageSelectionStage NoSerialization();
/// <summary> /// <summary>
@ -19,7 +19,7 @@ namespace TelegramBotBase.Builder.Interfaces
/// </summary> /// </summary>
/// <param name="machine"></param> /// <param name="machine"></param>
/// <returns></returns> /// <returns></returns>
IBuildingStage UseSerialization(IStateMachine machine); ILanguageSelectionStage UseSerialization(IStateMachine machine);
/// <summary> /// <summary>
@ -27,7 +27,7 @@ namespace TelegramBotBase.Builder.Interfaces
/// </summary> /// </summary>
/// <param name="path"></param> /// <param name="path"></param>
/// <returns></returns> /// <returns></returns>
IBuildingStage UseJSON(String path); ILanguageSelectionStage UseJSON(String path);
/// <summary> /// <summary>
@ -35,7 +35,7 @@ namespace TelegramBotBase.Builder.Interfaces
/// </summary> /// </summary>
/// <param name="path"></param> /// <param name="path"></param>
/// <returns></returns> /// <returns></returns>
IBuildingStage UseSimpleJSON(String path); ILanguageSelectionStage UseSimpleJSON(String path);
/// <summary> /// <summary>
@ -43,7 +43,7 @@ namespace TelegramBotBase.Builder.Interfaces
/// </summary> /// </summary>
/// <param name="path"></param> /// <param name="path"></param>
/// <returns></returns> /// <returns></returns>
IBuildingStage UseXML(String path); ILanguageSelectionStage UseXML(String path);
} }
} }

View File

@ -34,11 +34,10 @@ namespace TelegramBotBaseTest
a.Add(new BotCommand() { Command = "params", Description = "Returns all send parameters as a message." }); a.Add(new BotCommand() { Command = "params", Description = "Returns all send parameters as a message." });
}) })
.NoSerialization() .NoSerialization()
.UseEnglish()
.Build(); .Build();
bb.BotCommand += async (s, en) => bb.BotCommand += async (s, en) =>
{ {
switch (en.Command) switch (en.Command)