Cześć,
piszę bota do Discorda pośredniczącego w wymianie waluty premium na standardową w grze (b. wczesna faza tworzenia tej apki), głównie dla wygody korzystania z kanału. Bota będzie można odpalić na urządzeniu z Win IoT i innych z platformy UWP i jako że z angielskim u mnie jako tako, to robię apkę z zasobami językowymi i standardowo pl i en. Bot jest mi zwyczajnie potrzebny, a i później wrzucę gdzieś w sklep, co by sobie każdy mógł go gdzieś tam we własnym zakresie odpalić. Nie wiem jednak jak wygodnie zarządzać w UWP zasobami językowymi z plików .resw.
Wymyśliłem sobie taką klasę z poniższym interfejsem:
using System;
using System.Collections.Generic;
namespace Discord_Bot
{
public enum DiscordBot
{
CancelErrorInfo,
DenyOffer,
DenyOrder,
FullOffer,
FullOrder,
NoResults,
NoRightRole,
Offer,
OfferAlreadyPlaced,
OfferConfirmed,
OfferFinalized,
Order,
OrderAlreadyPlaced,
OrderConfirmed,
OrderFeedback,
OrderFinalized,
SellersNotification
}
public enum Messages
{
LogOutWarning,
No,
Warning,
Yes
}
public enum Resources
{
About,
Home
}
public interface ILanguageResources
{
string GetString<T>(T resource, List<string> objectsForInterpolation = null, string key = null) where T : Enum;
string StringInterpolation(string input, List<string> stringsForInterpolation, string key);
}
}
Interfejs sobie wstrzykuję przez DI i korzystam w całym programie, ale zastanawia mnie czy to jest dobre rozwiązanie, czy nie lepiej wymyślić coś innego.
Niby to tylko bot, ale ciągle się uczę i każdy, nawet mały projekt chciałbym mieć przygotowany do rozwoju. Fajnie byłoby gdyby ktoś podpowiedział, czy jest jakieś lepsze i wygodniejsze rozwiązanie na zarządzanie takimi zasobami. Może pominąłem jakieś narzędzie w UWP, może coś innego. W tym wypadku każda wartość dodana do pliku .resw wymaga dopisania do enum nowych kluczy lub całego enum jeśli mówimy o nowym pliku. Ważna jest dla mnie interpolacja, bo wartości w .resw posiadają znaczniki podmieniane w kolejności za zmienne podane jako listę stringów i to pozwala mi jak na razie ograniczyć ilość zasobów w plikach .resw.