Toast Engine
Loading...
Searching...
No Matches
localization.hpp
Go to the documentation of this file.
1
8
9#pragma once
10#include <cstdint>
11#include <optional>
12#include <string>
13#include <string_view>
15#include <toast/export.hpp>
16#include <unordered_map>
17#include <vector>
18
19namespace ui {
20class LocalizationTable;
21}
22
23namespace assets {
24
25class TOAST_API LocalizationBase : public Asset {
26public:
27 explicit LocalizationBase(std::vector<uint8_t> data);
28 void reload(std::vector<uint8_t> data);
29
30 [[nodiscard]]
31 auto languages() const noexcept -> const std::vector<std::string>& {
32 return m_languages;
33 }
34
35 [[nodiscard]]
36 auto ids() const noexcept -> const std::vector<std::string>& {
37 return m_ids;
38 }
39
40 [[nodiscard]]
41 auto has(std::string_view id) const -> bool;
42
43 [[nodiscard]]
44 auto cell(std::string_view id, std::string_view language) const -> std::optional<std::string>;
45
46protected:
47 std::vector<std::string> m_languages;
48 std::vector<std::string> m_ids;
49 std::unordered_map<std::string, std::vector<std::string>> m_rows;
50
51 [[nodiscard]]
52 auto languageIndex(std::string_view language) const -> int;
53};
54
55class TOAST_API Localization final : public LocalizationBase {
56public:
57 using LocalizationBase::LocalizationBase;
58
59 [[nodiscard]]
60 auto type() const -> std::string_view override {
61 return "localization";
62 }
63
64 [[nodiscard]]
65 auto text(std::string_view id, std::string_view language) const -> std::string;
66};
67
68class TOAST_API ImageLocalization final : public LocalizationBase {
69public:
70 using LocalizationBase::LocalizationBase;
71
72 [[nodiscard]]
73 auto type() const -> std::string_view override {
74 return "image_localization";
75 }
76
77 [[nodiscard]]
78 auto image(std::string_view id, std::string_view language) const -> std::string;
79};
80
81}
Definition localization.hpp:68
Definition localization.hpp:55
Base types for the asset system.