17 using entry_type = std::pair<l10n::String, std::string_view>;
20 using map_type = std::array<std::optional<std::string_view>, kNumStrings>;
22 Language(std::string name, Language
const* fallback =
nullptr) : name_(std::move(name)) {
23 std::copy(fallback->map_.cbegin(), fallback->map_.cend(), this->map_.begin());
27 consteval Language(
char const* name, std::initializer_list<entry_type> stringmaps,
28 const Language* fallback =
nullptr)
29 : name_(name), fallback_(fallback) {
32 for (
auto [string_id, s] : stringmaps) {
33 map_.at(util::to_underlying(string_id)) = s;
37 [[nodiscard]]
constexpr map_type::value_type get(String entry)
const {
return map_.at(util::to_underlying(entry)); }
39 constexpr Language& add(
String entry, map_type::value_type value) {
40 size_t idx = util::to_underlying(entry);
45 [[nodiscard]]
constexpr std::string_view name()
const {
return name_; }
47 [[nodiscard]]
constexpr bool hasFallback()
const {
return fallback_ !=
nullptr; }
48 [[nodiscard]]
constexpr const Language& fallback()
const {
return *fallback_; }
53 const Language* fallback_ =
nullptr;
consteval Language(char const *name, std::initializer_list< entry_type > stringmaps, const Language *fallback=nullptr)
Builder-style constructor for creating localization language maps (compile-time only)
Definition language.h:27