Add /locale list and /locale all

This commit is contained in:
Basique Evangelist 2019-02-06 20:17:57 +03:00
parent 89a0408ae5
commit a7df153b8a
4 changed files with 61 additions and 17 deletions

View File

@ -4,6 +4,7 @@ using Telegram.Bot.Args;
using Perfusion; using Perfusion;
using JetKarmaBot.Services; using JetKarmaBot.Services;
using NLog; using NLog;
using System.Linq;
namespace JetKarmaBot.Commands namespace JetKarmaBot.Commands
{ {
@ -26,6 +27,23 @@ namespace JetKarmaBot.Commands
replyToMessageId: args.Message.MessageId); replyToMessageId: args.Message.MessageId);
return true; return true;
} }
else if (cmd.Parameters[0] == "list")
{
Client.SendTextMessageAsync(
args.Message.Chat.Id,
currentLocale["jetkarmabot.changelocale.listalltext"] + "\n"
+ string.Join("\n", Locale.Select(a => a.Key)),
replyToMessageId: args.Message.MessageId);
return true;
}
else if (cmd.Parameters[0] == "all")
{
Client.SendTextMessageAsync(
args.Message.Chat.Id,
currentLocale["jetkarmabot.changelocale.errorall"],
replyToMessageId: args.Message.MessageId);
return true;
}
string localeId; string localeId;
if (Locale.ContainsLocale(cmd.Parameters[0])) if (Locale.ContainsLocale(cmd.Parameters[0]))
localeId = cmd.Parameters[0]; localeId = cmd.Parameters[0];

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -8,7 +9,7 @@ using Perfusion;
namespace JetKarmaBot namespace JetKarmaBot
{ {
public class Localization public class Localization : IReadOnlyDictionary<string, Locale>
{ {
private Dictionary<string, Locale> locales = new Dictionary<string, Locale>(); private Dictionary<string, Locale> locales = new Dictionary<string, Locale>();
@ -77,6 +78,28 @@ namespace JetKarmaBot
void Log(Exception e) => Console.WriteLine(e); void Log(Exception e) => Console.WriteLine(e);
public IEnumerable<string> Keys => locales.Keys;
public IEnumerable<Locale> Values => locales.Values;
public int Count => locales.Count;
public bool ContainsKey(string key) => locales.ContainsKey(key.ToLower());
public bool TryGetValue(string key, out Locale value)
{
return locales.TryGetValue(key.ToLower(), out value);
}
public IEnumerator<KeyValuePair<string, Locale>> GetEnumerator()
{
return locales.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
public class Locale public class Locale
{ {
private Dictionary<string, string> locale; private Dictionary<string, string> locale;
@ -93,5 +116,4 @@ namespace JetKarmaBot
public string Name => localeName; public string Name => localeName;
public string this[string name] => locale.ContainsKey(name) ? locale[name] : "unknown"; public string this[string name] => locale.ContainsKey(name) ? locale[name] : "unknown";
} }
}
} }

View File

@ -14,6 +14,8 @@
"jetkarmabot.status.listspecifictext": "You are at {0}{1} now.", "jetkarmabot.status.listspecifictext": "You are at {0}{1} now.",
"jetkarmabot.status.havenothing": "You don't have anything yet.", "jetkarmabot.status.havenothing": "You don't have anything yet.",
"jetkarmabot.changelocale.justchanged": "Roger that.", "jetkarmabot.changelocale.justchanged": "Roger that.",
"jetkarmabot.changelocale.getlocale": "I'm currently speaking English." "jetkarmabot.changelocale.getlocale": "I'm currently speaking English.",
"jetkarmabot.changelocale.listalltext": "I know:",
"jetkarmabot.changelocale.errorall": "I would like to speak all languages at once, but because of the rules of the universe, I am not allowed to do that."
} }
} }

View File

@ -15,6 +15,8 @@
"jetkarmabot.status.listspecifictext": "У вас сейчас {0}{1}.", "jetkarmabot.status.listspecifictext": "У вас сейчас {0}{1}.",
"jetkarmabot.status.havenothing": "У вас пока ничего нет.", "jetkarmabot.status.havenothing": "У вас пока ничего нет.",
"jetkarmabot.changelocale.justchanged": "Так точно.", "jetkarmabot.changelocale.justchanged": "Так точно.",
"jetkarmabot.changelocale.getlocale": "Я сейчас говорю по-русски." "jetkarmabot.changelocale.getlocale": "Я сейчас говорю по-русски.",
"jetkarmabot.changelocale.listalltext": "Я знаю:",
"jetkarmabot.changelocale.errorall": "Мне бы хотелось говорить на всех языках в то же самое время, но из-за ограничений вселенной, мне это не позволяется."
} }
} }