Files
tultemplate2/template/lang.typ

43 lines
1.2 KiB
Typst

#import "utils.typ": assert_in_dict
#let lang_ids = (
cs: 0,
en: 1,
);
#let lang_id(lang_abbr) = {
assert_in_dict(lang_abbr, lang_ids, "language abbreviation");
return lang_ids.at(lang_abbr);
};
// Typst will usually cache this - so we don't have to re-read the file each time
#let fetch_lang_items() = {
return json("lang.json");
}
#let get_lang_item(lang_abbr, item_name) = {
assert_in_dict(lang_abbr, lang_ids, "language abbreviation");
let lang_items = fetch_lang_items();
return lang_items.at(lang_abbr).at(item_name);
}
#let disclaimer(language, document_type, author_gender) = {
let disclaimer = get_lang_item(language, "disclaimer_content");
let replacements = get_lang_item(language, "disclaimer_replace").at(document_type);
if language == "cs" {
let gender_transforms = (
male: "",
female: "a",
);
assert_in_dict(author_gender, gender_transforms, "author gender");
disclaimer = disclaimer.replace("{a}", gender_transforms.at(author_gender));
}
for (key, value) in replacements.pairs() {
disclaimer = disclaimer.replace("{" + key + "}", value);
}
if disclaimer.contains("{") or disclaimer.contains("}") {
panic("invalid language file");
}
disclaimer
}