TranslationManager.hxx 758 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #ifndef SNAKE_TRANSLATIONMANAGER_HXX
  3. #define SNAKE_TRANSLATIONMANAGER_HXX
  4. #include <array>
  5. #include <filesystem>
  6. #include <string>
  7. #include <unordered_map>
  8. enum class SupportedLanguage {
  9. English = 0,
  10. German,
  11. NUM_SUPPORTED_LANGUAGES,
  12. };
  13. class TranslationManager final {
  14. public:
  15. static TranslationManager& instance();
  16. void load(std::filesystem::path const& filename);
  17. [[nodiscard]] std::string get_translation(std::string const& key) const;
  18. private:
  19. TranslationManager() noexcept;
  20. SupportedLanguage current_language_;
  21. std::unordered_map<
  22. std::string,
  23. std::array<std::string, static_cast<std::size_t>(SupportedLanguage::NUM_SUPPORTED_LANGUAGES)>
  24. > translations_;
  25. };
  26. #endif // SNAKE_TRANSLATIONMANAGER_HXX