use crate::language::Language;
use std::collections::BTreeMap;
use std::fmt::{Display, Formatter};
#[derive(Debug, Default)]
pub struct LuauLocaleDb {
db: BTreeMap<String, BTreeMap<String, String>>,
}
impl LuauLocaleDb {
pub fn insert_mapping(&mut self, lang: &Language, key: String, value: String) {
self.db
.entry(key)
.or_default()
.insert(lang.fb_code.to_string(), value);
}
}
impl Display for LuauLocaleDb {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
writeln!(f, "--!strict")?;
writeln!(
f,
"-- This file was generated by the weblate-luau tool. Do not edit by hand."
)?;
writeln!(f, "return {{")?;
for (string_id, language_map) in &self.db {
writeln!(f, "\t[\"{string_id}\"] = {{")?;
for (language, value) in language_map {
writeln!(f, "\t\t{language} = \"{value}\",")?;
}
writeln!(f, "\t}},")?;
}
writeln!(f, "}}")
}
}