mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 09:06:09 +03:00
Make localization not use config
This commit is contained in:
parent
efb1a532bd
commit
12b90d010f
@ -16,7 +16,7 @@ namespace JetKarmaBot.Commands
|
|||||||
{
|
{
|
||||||
if (args.Message.ReplyToMessage == null)
|
if (args.Message.ReplyToMessage == null)
|
||||||
{
|
{
|
||||||
Client.SendTextMessageAsync(args.Message.Chat.Id, Locale["jetkarmabot.award.errawardnoreply"]);
|
Client.SendTextMessageAsync(args.Message.Chat.Id, Locale["jetkarmabot.award.errawardnoreply", "en-US"]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ namespace JetKarmaBot.Commands
|
|||||||
{
|
{
|
||||||
Client.SendTextMessageAsync(
|
Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
Locale["jetkarmabot.award.errawardself"],
|
Locale["jetkarmabot.award.errawardself", "en-US"],
|
||||||
replyToMessageId: args.Message.MessageId);
|
replyToMessageId: args.Message.MessageId);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -39,8 +39,8 @@ namespace JetKarmaBot.Commands
|
|||||||
Client.SendTextMessageAsync(
|
Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
awarding
|
awarding
|
||||||
? Locale["jetkarmabot.award.errawardbot"]
|
? Locale["jetkarmabot.award.errawardbot", "en-US"]
|
||||||
: Locale["jetkarmabot.award.errrevokebot"],
|
: Locale["jetkarmabot.award.errrevokebot", "en-US"],
|
||||||
replyToMessageId: args.Message.MessageId);
|
replyToMessageId: args.Message.MessageId);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -52,10 +52,10 @@ namespace JetKarmaBot.Commands
|
|||||||
Db.AddAward(awardTypeId, awarder.Id, recipient.Id, args.Message.Chat.Id, awarding ? 1 : -1);
|
Db.AddAward(awardTypeId, awarder.Id, recipient.Id, args.Message.Chat.Id, awarding ? 1 : -1);
|
||||||
|
|
||||||
string message = awarding
|
string message = awarding
|
||||||
? string.Format(Locale["jetkarmabot.award.awardmessage"], awardType.Name, "@" + recipient.Username)
|
? string.Format(Locale["jetkarmabot.award.awardmessage", "en-US"], awardType.Name, "@" + recipient.Username)
|
||||||
: string.Format(Locale["jetkarmabot.award.revokemessage"], awardType.Name, "@" + recipient.Username);
|
: string.Format(Locale["jetkarmabot.award.revokemessage", "en-US"], awardType.Name, "@" + recipient.Username);
|
||||||
|
|
||||||
var response = message + "\n" + String.Format(Locale["jetkarmabot.award.statustext"], "@" + recipient.Username, Db.CountUserAwards(recipient.Id, awardTypeId), awardType.Symbol);
|
var response = message + "\n" + String.Format(Locale["jetkarmabot.award.statustext", "en-US"], "@" + recipient.Username, Db.CountUserAwards(recipient.Id, awardTypeId), awardType.Symbol);
|
||||||
|
|
||||||
Client.SendTextMessageAsync(
|
Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
|
|||||||
@ -24,7 +24,7 @@ namespace JetKarmaBot.Commands
|
|||||||
{
|
{
|
||||||
var awards = Db.CountAllUserAwards(asker.Id);
|
var awards = Db.CountAllUserAwards(asker.Id);
|
||||||
|
|
||||||
response = Locale["jetkarmabot.status.listalltext"] + "\n"
|
response = Locale["jetkarmabot.status.listalltext", "en-US"] + "\n"
|
||||||
+ string.Join("\n", awards.Select(a => $" - {Db.AwardTypes[a.AwardTypeId].Symbol} {a.Amount}"));
|
+ string.Join("\n", awards.Select(a => $" - {Db.AwardTypes[a.AwardTypeId].Symbol} {a.Amount}"));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -33,7 +33,7 @@ namespace JetKarmaBot.Commands
|
|||||||
var awardTypeId = Db.GetAwardTypeId(cmd.Parameters.FirstOrDefault());
|
var awardTypeId = Db.GetAwardTypeId(cmd.Parameters.FirstOrDefault());
|
||||||
var awardType = Db.AwardTypes[awardTypeId];
|
var awardType = Db.AwardTypes[awardTypeId];
|
||||||
|
|
||||||
response = string.Format(Locale["jetkarmabot.status.listspecifictext"], Db.CountUserAwards(asker.Id, awardTypeId), awardType.Symbol);
|
response = string.Format(Locale["jetkarmabot.status.listspecifictext", "en-US"], Db.CountUserAwards(asker.Id, awardTypeId), awardType.Symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
Client.SendTextMessageAsync(
|
Client.SendTextMessageAsync(
|
||||||
|
|||||||
@ -11,7 +11,6 @@ namespace JetKarmaBot
|
|||||||
|
|
||||||
public string ApiKey { get; private set; }
|
public string ApiKey { get; private set; }
|
||||||
public string ConnectionString { get; private set; }
|
public string ConnectionString { get; private set; }
|
||||||
public string Language { get; private set; }
|
|
||||||
|
|
||||||
public class ProxySettings
|
public class ProxySettings
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,53 +13,40 @@ namespace JetKarmaBot
|
|||||||
{
|
{
|
||||||
public class Localization
|
public class Localization
|
||||||
{
|
{
|
||||||
private string currentFile;
|
private Dictionary<string, Dictionary<string, string>> locales = new Dictionary<string, Dictionary<string, string>>();
|
||||||
private Dictionary<string, string> currentLocalization;
|
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
public Localization(Config cfg)
|
public Localization(Config cfg)
|
||||||
{
|
{
|
||||||
Log("Initializing...");
|
Log("Initializing...");
|
||||||
currentFile = cfg.Language;
|
|
||||||
if (string.IsNullOrEmpty(currentFile)) currentFile = "en-US";
|
|
||||||
Log("Language is " + currentFile);
|
|
||||||
if (!Directory.Exists("lang"))
|
if (!Directory.Exists("lang"))
|
||||||
Directory.CreateDirectory("lang");
|
Directory.CreateDirectory("lang");
|
||||||
|
|
||||||
if (!File.Exists("lang/" + currentFile + ".json") && currentFile != "en-US")
|
foreach (string lang in Directory.EnumerateFiles("lang"))
|
||||||
{
|
{
|
||||||
Log("Language " + currentFile + " not found, falling back to en-US");
|
string langname = Path.GetFileName(lang).Split(".")[0];
|
||||||
currentFile = "en-US";
|
Log("Found " + langname);
|
||||||
}
|
locales[langname] = JObject.Parse(File.ReadAllText(lang)).ToObject<Dictionary<string, string>>();
|
||||||
if (!File.Exists("lang/" + currentFile + ".json"))
|
|
||||||
{
|
|
||||||
Log("Language en-US doesn't exist! Making empty localization");
|
|
||||||
currentLocalization = new Dictionary<string, string>();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
currentLocalization = JObject.Parse(File.ReadAllText("lang/" + currentFile + ".json")).ToObject<Dictionary<string, string>>();
|
|
||||||
Log("Loaded " + currentFile);
|
|
||||||
}
|
}
|
||||||
Log("Initialized!");
|
Log("Initialized!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public string this[string name]
|
public string this[string name, string locale]
|
||||||
{
|
{
|
||||||
get => GetString(name);
|
get => GetString(name, locale);
|
||||||
}
|
}
|
||||||
public string GetString(string name)
|
public string GetString(string name, string locale)
|
||||||
{
|
{
|
||||||
if (!currentLocalization.ContainsKey(name))
|
if (!locales[locale].ContainsKey(name))
|
||||||
{
|
{
|
||||||
Log(name + " doesn't exist in this localization");
|
Log(name + " doesn't exist in this localization");
|
||||||
currentLocalization[name] = "unknown";
|
locales[locale][name] = "unknown";
|
||||||
File.WriteAllText("lang/" + currentFile + ".json", JObject.FromObject(currentLocalization).ToString());
|
File.WriteAllText("lang/" + locale + ".json", JObject.FromObject(locales[locale]).ToString());
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return currentLocalization[name];
|
return locales[locale][name];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Log(string Message) => Console.WriteLine($"[{nameof(Localization)}]: {Message}");
|
void Log(string Message) => Console.WriteLine($"[{nameof(Localization)}]: {Message}");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user