#pragma once

#include <cstdint>
#include <filesystem>
#include <string>
#include <string_view>
#include <vector>

namespace ta::presentation::localization
{
    [[nodiscard]] bool initialize(const std::filesystem::path& locale_directory,
                                  std::string system_locale_tag);
    void reset() noexcept;

    [[nodiscard]] bool set_locale(std::string_view locale_id);

    [[nodiscard]] std::vector<std::string> locale_option_labels();
    [[nodiscard]] int locale_index(std::string_view locale_id);
    [[nodiscard]] std::string locale_id_for_index(int index);
    [[nodiscard]] std::string current_locale_id();
    [[nodiscard]] std::uint64_t revision();
    [[nodiscard]] std::string tr(const std::string& key);
}
