From 442d2d75d71bbc057e667edc301a79fa1cc813be Mon Sep 17 00:00:00 2001 From: rtk0c Date: Sat, 27 Mar 2021 23:01:07 -0700 Subject: Initial setup --- core/src/Utils/I18n.hpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 core/src/Utils/I18n.hpp (limited to 'core/src/Utils/I18n.hpp') diff --git a/core/src/Utils/I18n.hpp b/core/src/Utils/I18n.hpp new file mode 100644 index 0000000..6b72d29 --- /dev/null +++ b/core/src/Utils/I18n.hpp @@ -0,0 +1,69 @@ +#pragma once + +#include "Utils/Sigslot.hpp" +#include "Utils/fwd.hpp" + +#include +#include +#include +#include +#include +#include +#include + +class I18n { +public: + static void Init(); + static void Shutdown(); + + static Signal<> reloadSignal; + static void ReloadLocales(); + + static std::string_view GetLanguage(); + static bool SetLanguage(std::string_view lang); + + static std::optional Lookup(std::string_view key); + static std::string_view LookupUnwrap(std::string_view key); + static std::string_view LookupLanguage(std::string_view lang); +}; + +struct StringArgument { + std::string Value; +}; + +struct IntArgument { + int Value; +}; + +struct FloatArgument { + double Value; +}; + +class BasicTranslation { +private: + std::string_view mContent; + +public: + BasicTranslation(std::string_view key); + std::string_view Get() const; +}; + +class FormattedTranslation { +public: + using Element = std::variant; + using Argument = std::string; + +private: + std::vector mParsedElements; + size_t mNumArguments; + size_t mMinimumResultLen; + +public: + FormattedTranslation(std::string_view key); + std::string Format(std::span args); +}; + +class NumericTranslation { +public: + // TODO +}; -- cgit v1.2.3-70-g09d2