#pragma once #ifndef SNAKE_TRANSLATIONMANAGER_HXX #define SNAKE_TRANSLATIONMANAGER_HXX #include <array> #include <filesystem> #include <string> #include <unordered_map> enum class SupportedLanguage { English = 0, German, NUM_SUPPORTED_LANGUAGES, }; class TranslationManager final { public: static TranslationManager& instance(); void load(std::filesystem::path const& filename); [[nodiscard]] std::string get_translation(std::string const& key) const; private: TranslationManager() noexcept; SupportedLanguage current_language_; std::unordered_map< std::string, std::array<std::string, static_cast<std::size_t>(SupportedLanguage::NUM_SUPPORTED_LANGUAGES)> > translations_; }; #endif // SNAKE_TRANSLATIONMANAGER_HXX