From f48120504eb5911274aa07321acecb44e68265ea Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Thu, 3 Oct 2024 15:02:38 +0300 Subject: [PATCH 1/4] refactor(i18n): Move localizations into languages scope --- Dockerfile | 2 +- build-aux/list-distfiles.sh.in | 2 +- core/languages.lua | 2 +- i18n/af.ftl => languages/af/messages.ftl | 0 i18n/am.ftl => languages/am/messages.ftl | 0 i18n/ar.ftl => languages/ar/messages.ftl | 0 i18n/as.ftl => languages/as/messages.ftl | 0 i18n/bg.ftl => languages/bg/messages.ftl | 0 i18n/bn.ftl => languages/bn/messages.ftl | 0 i18n/bo.ftl => languages/bo/messages.ftl | 0 i18n/ca.ftl => languages/ca/messages.ftl | 0 i18n/cs.ftl => languages/cs/messages.ftl | 0 i18n/cy.ftl => languages/cy/messages.ftl | 0 i18n/da.ftl => languages/da/messages.ftl | 0 i18n/de.ftl => languages/de/messages.ftl | 0 i18n/el-monoton.ftl => languages/el-monoton/messages.ftl | 0 i18n/el-polyton.ftl => languages/el-polyton/messages.ftl | 0 i18n/el.ftl => languages/el/messages.ftl | 0 i18n/en.ftl => languages/en/messages.ftl | 0 i18n/eo.ftl => languages/eo/messages.ftl | 0 i18n/es.ftl => languages/es/messages.ftl | 0 i18n/et.ftl => languages/et/messages.ftl | 0 i18n/eu.ftl => languages/eu/messages.ftl | 0 i18n/fi.ftl => languages/fi/messages.ftl | 0 i18n/fr.ftl => languages/fr/messages.ftl | 0 i18n/ga.ftl => languages/ga/messages.ftl | 0 i18n/gu.ftl => languages/gu/messages.ftl | 0 i18n/hi.ftl => languages/hi/messages.ftl | 0 i18n/hr.ftl => languages/hr/messages.ftl | 0 i18n/hu.ftl => languages/hu/messages.ftl | 0 i18n/hy.ftl => languages/hy/messages.ftl | 0 i18n/id.ftl => languages/id/messages.ftl | 0 i18n/is.ftl => languages/is/messages.ftl | 0 i18n/it.ftl => languages/it/messages.ftl | 0 i18n/ja.ftl => languages/ja/messages.ftl | 0 i18n/jv.ftl => languages/jv/messages.ftl | 0 i18n/ka.ftl => languages/ka/messages.ftl | 0 i18n/kn.ftl => languages/kn/messages.ftl | 0 i18n/la.ftl => languages/la/messages.ftl | 0 i18n/lt.ftl => languages/lt/messages.ftl | 0 i18n/lv.ftl => languages/lv/messages.ftl | 0 i18n/ml.ftl => languages/ml/messages.ftl | 0 i18n/mr.ftl => languages/mr/messages.ftl | 0 i18n/my.ftl => languages/my/messages.ftl | 0 i18n/nb.ftl => languages/nb/messages.ftl | 0 i18n/nl.ftl => languages/nl/messages.ftl | 0 i18n/nn.ftl => languages/nn/messages.ftl | 0 i18n/no.ftl => languages/no/messages.ftl | 0 i18n/or.ftl => languages/or/messages.ftl | 0 i18n/pa.ftl => languages/pa/messages.ftl | 0 i18n/pl.ftl => languages/pl/messages.ftl | 0 i18n/pt.ftl => languages/pt/messages.ftl | 0 i18n/rm.ftl => languages/rm/messages.ftl | 0 i18n/ro.ftl => languages/ro/messages.ftl | 0 i18n/ru.ftl => languages/ru/messages.ftl | 0 i18n/sa.ftl => languages/sa/messages.ftl | 0 i18n/sk.ftl => languages/sk/messages.ftl | 0 i18n/sl.ftl => languages/sl/messages.ftl | 0 i18n/sr.ftl => languages/sr/messages.ftl | 0 i18n/sv.ftl => languages/sv/messages.ftl | 0 i18n/ta.ftl => languages/ta/messages.ftl | 0 i18n/th.ftl => languages/th/messages.ftl | 0 i18n/tk.ftl => languages/tk/messages.ftl | 0 i18n/tr.ftl => languages/tr/messages.ftl | 0 i18n/ug.ftl => languages/ug/messages.ftl | 0 i18n/uk.ftl => languages/uk/messages.ftl | 0 i18n/und.ftl => languages/und/messages.ftl | 0 i18n/ur.ftl => languages/ur/messages.ftl | 0 i18n/yue.ftl => languages/yue/messages.ftl | 0 i18n/zh-hans.ftl => languages/zh-hans/messages.ftl | 0 i18n/zh-hant.ftl => languages/zh-hant/messages.ftl | 0 71 files changed, 3 insertions(+), 3 deletions(-) rename i18n/af.ftl => languages/af/messages.ftl (100%) rename i18n/am.ftl => languages/am/messages.ftl (100%) rename i18n/ar.ftl => languages/ar/messages.ftl (100%) rename i18n/as.ftl => languages/as/messages.ftl (100%) rename i18n/bg.ftl => languages/bg/messages.ftl (100%) rename i18n/bn.ftl => languages/bn/messages.ftl (100%) rename i18n/bo.ftl => languages/bo/messages.ftl (100%) rename i18n/ca.ftl => languages/ca/messages.ftl (100%) rename i18n/cs.ftl => languages/cs/messages.ftl (100%) rename i18n/cy.ftl => languages/cy/messages.ftl (100%) rename i18n/da.ftl => languages/da/messages.ftl (100%) rename i18n/de.ftl => languages/de/messages.ftl (100%) rename i18n/el-monoton.ftl => languages/el-monoton/messages.ftl (100%) rename i18n/el-polyton.ftl => languages/el-polyton/messages.ftl (100%) rename i18n/el.ftl => languages/el/messages.ftl (100%) rename i18n/en.ftl => languages/en/messages.ftl (100%) rename i18n/eo.ftl => languages/eo/messages.ftl (100%) rename i18n/es.ftl => languages/es/messages.ftl (100%) rename i18n/et.ftl => languages/et/messages.ftl (100%) rename i18n/eu.ftl => languages/eu/messages.ftl (100%) rename i18n/fi.ftl => languages/fi/messages.ftl (100%) rename i18n/fr.ftl => languages/fr/messages.ftl (100%) rename i18n/ga.ftl => languages/ga/messages.ftl (100%) rename i18n/gu.ftl => languages/gu/messages.ftl (100%) rename i18n/hi.ftl => languages/hi/messages.ftl (100%) rename i18n/hr.ftl => languages/hr/messages.ftl (100%) rename i18n/hu.ftl => languages/hu/messages.ftl (100%) rename i18n/hy.ftl => languages/hy/messages.ftl (100%) rename i18n/id.ftl => languages/id/messages.ftl (100%) rename i18n/is.ftl => languages/is/messages.ftl (100%) rename i18n/it.ftl => languages/it/messages.ftl (100%) rename i18n/ja.ftl => languages/ja/messages.ftl (100%) rename i18n/jv.ftl => languages/jv/messages.ftl (100%) rename i18n/ka.ftl => languages/ka/messages.ftl (100%) rename i18n/kn.ftl => languages/kn/messages.ftl (100%) rename i18n/la.ftl => languages/la/messages.ftl (100%) rename i18n/lt.ftl => languages/lt/messages.ftl (100%) rename i18n/lv.ftl => languages/lv/messages.ftl (100%) rename i18n/ml.ftl => languages/ml/messages.ftl (100%) rename i18n/mr.ftl => languages/mr/messages.ftl (100%) rename i18n/my.ftl => languages/my/messages.ftl (100%) rename i18n/nb.ftl => languages/nb/messages.ftl (100%) rename i18n/nl.ftl => languages/nl/messages.ftl (100%) rename i18n/nn.ftl => languages/nn/messages.ftl (100%) rename i18n/no.ftl => languages/no/messages.ftl (100%) rename i18n/or.ftl => languages/or/messages.ftl (100%) rename i18n/pa.ftl => languages/pa/messages.ftl (100%) rename i18n/pl.ftl => languages/pl/messages.ftl (100%) rename i18n/pt.ftl => languages/pt/messages.ftl (100%) rename i18n/rm.ftl => languages/rm/messages.ftl (100%) rename i18n/ro.ftl => languages/ro/messages.ftl (100%) rename i18n/ru.ftl => languages/ru/messages.ftl (100%) rename i18n/sa.ftl => languages/sa/messages.ftl (100%) rename i18n/sk.ftl => languages/sk/messages.ftl (100%) rename i18n/sl.ftl => languages/sl/messages.ftl (100%) rename i18n/sr.ftl => languages/sr/messages.ftl (100%) rename i18n/sv.ftl => languages/sv/messages.ftl (100%) rename i18n/ta.ftl => languages/ta/messages.ftl (100%) rename i18n/th.ftl => languages/th/messages.ftl (100%) rename i18n/tk.ftl => languages/tk/messages.ftl (100%) rename i18n/tr.ftl => languages/tr/messages.ftl (100%) rename i18n/ug.ftl => languages/ug/messages.ftl (100%) rename i18n/uk.ftl => languages/uk/messages.ftl (100%) rename i18n/und.ftl => languages/und/messages.ftl (100%) rename i18n/ur.ftl => languages/ur/messages.ftl (100%) rename i18n/yue.ftl => languages/yue/messages.ftl (100%) rename i18n/zh-hans.ftl => languages/zh-hans/messages.ftl (100%) rename i18n/zh-hant.ftl => languages/zh-hant/messages.ftl (100%) diff --git a/Dockerfile b/Dockerfile index 9e012712d..bf67cba99 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,7 +54,7 @@ COPY ./ /src WORKDIR /src # Take note of SILE's supported locales so the final system can build localized messages -RUN ls i18n/ | sed 's/[.-].*$/_/;s/^/^/' | sort -u | grep -Ef - /usr/share/i18n/SUPPORTED > /etc/locale.gen +RUN ls -d languages/*/ | sed -e 's!/$!_!;s!.*/!^!' | sort -u | grep -Ef - /usr/share/i18n/SUPPORTED > /etc/locale.gen # GitHub Actions builder stopped providing git history :( # See feature request at https://github.com/actions/runner/issues/767 diff --git a/build-aux/list-distfiles.sh.in b/build-aux/list-distfiles.sh.in index 91a3758c6..451dece6c 100755 --- a/build-aux/list-distfiles.sh.in +++ b/build-aux/list-distfiles.sh.in @@ -19,7 +19,7 @@ am_list () { printf '%s =' SILEDATA finder core -name '*.lua' -not -name '*_spec.lua' -not -name 'version.lua' -not -name 'features.lua' -not -name 'pathsetup.lua' finder classes inputters languages outputters packages shapers types typesetters pagebuilders -name '*.lua' -not -name '*_spec.lua' -finder classes i18n packages -name '*.ftl' +finder classes languages packages -name '*.ftl' finder packages -name '*.svg' printf '\n\n%s =' LUALIBRARIES diff --git a/core/languages.lua b/core/languages.lua index c2b262176..f793c0c82 100644 --- a/core/languages.lua +++ b/core/languages.lua @@ -31,7 +31,7 @@ SILE.languageSupport = { ) ) end - local ftlresource = string.format("i18n.%s", language) + local ftlresource = string.format("languages.%s.messages", language) SU.debug("fluent", "Loading FTL resource", ftlresource, "into locale", language) -- This needs to be set so that we load localizations into the right bundle, -- but this breaks the sync enabled by the hook in the document.language diff --git a/i18n/af.ftl b/languages/af/messages.ftl similarity index 100% rename from i18n/af.ftl rename to languages/af/messages.ftl diff --git a/i18n/am.ftl b/languages/am/messages.ftl similarity index 100% rename from i18n/am.ftl rename to languages/am/messages.ftl diff --git a/i18n/ar.ftl b/languages/ar/messages.ftl similarity index 100% rename from i18n/ar.ftl rename to languages/ar/messages.ftl diff --git a/i18n/as.ftl b/languages/as/messages.ftl similarity index 100% rename from i18n/as.ftl rename to languages/as/messages.ftl diff --git a/i18n/bg.ftl b/languages/bg/messages.ftl similarity index 100% rename from i18n/bg.ftl rename to languages/bg/messages.ftl diff --git a/i18n/bn.ftl b/languages/bn/messages.ftl similarity index 100% rename from i18n/bn.ftl rename to languages/bn/messages.ftl diff --git a/i18n/bo.ftl b/languages/bo/messages.ftl similarity index 100% rename from i18n/bo.ftl rename to languages/bo/messages.ftl diff --git a/i18n/ca.ftl b/languages/ca/messages.ftl similarity index 100% rename from i18n/ca.ftl rename to languages/ca/messages.ftl diff --git a/i18n/cs.ftl b/languages/cs/messages.ftl similarity index 100% rename from i18n/cs.ftl rename to languages/cs/messages.ftl diff --git a/i18n/cy.ftl b/languages/cy/messages.ftl similarity index 100% rename from i18n/cy.ftl rename to languages/cy/messages.ftl diff --git a/i18n/da.ftl b/languages/da/messages.ftl similarity index 100% rename from i18n/da.ftl rename to languages/da/messages.ftl diff --git a/i18n/de.ftl b/languages/de/messages.ftl similarity index 100% rename from i18n/de.ftl rename to languages/de/messages.ftl diff --git a/i18n/el-monoton.ftl b/languages/el-monoton/messages.ftl similarity index 100% rename from i18n/el-monoton.ftl rename to languages/el-monoton/messages.ftl diff --git a/i18n/el-polyton.ftl b/languages/el-polyton/messages.ftl similarity index 100% rename from i18n/el-polyton.ftl rename to languages/el-polyton/messages.ftl diff --git a/i18n/el.ftl b/languages/el/messages.ftl similarity index 100% rename from i18n/el.ftl rename to languages/el/messages.ftl diff --git a/i18n/en.ftl b/languages/en/messages.ftl similarity index 100% rename from i18n/en.ftl rename to languages/en/messages.ftl diff --git a/i18n/eo.ftl b/languages/eo/messages.ftl similarity index 100% rename from i18n/eo.ftl rename to languages/eo/messages.ftl diff --git a/i18n/es.ftl b/languages/es/messages.ftl similarity index 100% rename from i18n/es.ftl rename to languages/es/messages.ftl diff --git a/i18n/et.ftl b/languages/et/messages.ftl similarity index 100% rename from i18n/et.ftl rename to languages/et/messages.ftl diff --git a/i18n/eu.ftl b/languages/eu/messages.ftl similarity index 100% rename from i18n/eu.ftl rename to languages/eu/messages.ftl diff --git a/i18n/fi.ftl b/languages/fi/messages.ftl similarity index 100% rename from i18n/fi.ftl rename to languages/fi/messages.ftl diff --git a/i18n/fr.ftl b/languages/fr/messages.ftl similarity index 100% rename from i18n/fr.ftl rename to languages/fr/messages.ftl diff --git a/i18n/ga.ftl b/languages/ga/messages.ftl similarity index 100% rename from i18n/ga.ftl rename to languages/ga/messages.ftl diff --git a/i18n/gu.ftl b/languages/gu/messages.ftl similarity index 100% rename from i18n/gu.ftl rename to languages/gu/messages.ftl diff --git a/i18n/hi.ftl b/languages/hi/messages.ftl similarity index 100% rename from i18n/hi.ftl rename to languages/hi/messages.ftl diff --git a/i18n/hr.ftl b/languages/hr/messages.ftl similarity index 100% rename from i18n/hr.ftl rename to languages/hr/messages.ftl diff --git a/i18n/hu.ftl b/languages/hu/messages.ftl similarity index 100% rename from i18n/hu.ftl rename to languages/hu/messages.ftl diff --git a/i18n/hy.ftl b/languages/hy/messages.ftl similarity index 100% rename from i18n/hy.ftl rename to languages/hy/messages.ftl diff --git a/i18n/id.ftl b/languages/id/messages.ftl similarity index 100% rename from i18n/id.ftl rename to languages/id/messages.ftl diff --git a/i18n/is.ftl b/languages/is/messages.ftl similarity index 100% rename from i18n/is.ftl rename to languages/is/messages.ftl diff --git a/i18n/it.ftl b/languages/it/messages.ftl similarity index 100% rename from i18n/it.ftl rename to languages/it/messages.ftl diff --git a/i18n/ja.ftl b/languages/ja/messages.ftl similarity index 100% rename from i18n/ja.ftl rename to languages/ja/messages.ftl diff --git a/i18n/jv.ftl b/languages/jv/messages.ftl similarity index 100% rename from i18n/jv.ftl rename to languages/jv/messages.ftl diff --git a/i18n/ka.ftl b/languages/ka/messages.ftl similarity index 100% rename from i18n/ka.ftl rename to languages/ka/messages.ftl diff --git a/i18n/kn.ftl b/languages/kn/messages.ftl similarity index 100% rename from i18n/kn.ftl rename to languages/kn/messages.ftl diff --git a/i18n/la.ftl b/languages/la/messages.ftl similarity index 100% rename from i18n/la.ftl rename to languages/la/messages.ftl diff --git a/i18n/lt.ftl b/languages/lt/messages.ftl similarity index 100% rename from i18n/lt.ftl rename to languages/lt/messages.ftl diff --git a/i18n/lv.ftl b/languages/lv/messages.ftl similarity index 100% rename from i18n/lv.ftl rename to languages/lv/messages.ftl diff --git a/i18n/ml.ftl b/languages/ml/messages.ftl similarity index 100% rename from i18n/ml.ftl rename to languages/ml/messages.ftl diff --git a/i18n/mr.ftl b/languages/mr/messages.ftl similarity index 100% rename from i18n/mr.ftl rename to languages/mr/messages.ftl diff --git a/i18n/my.ftl b/languages/my/messages.ftl similarity index 100% rename from i18n/my.ftl rename to languages/my/messages.ftl diff --git a/i18n/nb.ftl b/languages/nb/messages.ftl similarity index 100% rename from i18n/nb.ftl rename to languages/nb/messages.ftl diff --git a/i18n/nl.ftl b/languages/nl/messages.ftl similarity index 100% rename from i18n/nl.ftl rename to languages/nl/messages.ftl diff --git a/i18n/nn.ftl b/languages/nn/messages.ftl similarity index 100% rename from i18n/nn.ftl rename to languages/nn/messages.ftl diff --git a/i18n/no.ftl b/languages/no/messages.ftl similarity index 100% rename from i18n/no.ftl rename to languages/no/messages.ftl diff --git a/i18n/or.ftl b/languages/or/messages.ftl similarity index 100% rename from i18n/or.ftl rename to languages/or/messages.ftl diff --git a/i18n/pa.ftl b/languages/pa/messages.ftl similarity index 100% rename from i18n/pa.ftl rename to languages/pa/messages.ftl diff --git a/i18n/pl.ftl b/languages/pl/messages.ftl similarity index 100% rename from i18n/pl.ftl rename to languages/pl/messages.ftl diff --git a/i18n/pt.ftl b/languages/pt/messages.ftl similarity index 100% rename from i18n/pt.ftl rename to languages/pt/messages.ftl diff --git a/i18n/rm.ftl b/languages/rm/messages.ftl similarity index 100% rename from i18n/rm.ftl rename to languages/rm/messages.ftl diff --git a/i18n/ro.ftl b/languages/ro/messages.ftl similarity index 100% rename from i18n/ro.ftl rename to languages/ro/messages.ftl diff --git a/i18n/ru.ftl b/languages/ru/messages.ftl similarity index 100% rename from i18n/ru.ftl rename to languages/ru/messages.ftl diff --git a/i18n/sa.ftl b/languages/sa/messages.ftl similarity index 100% rename from i18n/sa.ftl rename to languages/sa/messages.ftl diff --git a/i18n/sk.ftl b/languages/sk/messages.ftl similarity index 100% rename from i18n/sk.ftl rename to languages/sk/messages.ftl diff --git a/i18n/sl.ftl b/languages/sl/messages.ftl similarity index 100% rename from i18n/sl.ftl rename to languages/sl/messages.ftl diff --git a/i18n/sr.ftl b/languages/sr/messages.ftl similarity index 100% rename from i18n/sr.ftl rename to languages/sr/messages.ftl diff --git a/i18n/sv.ftl b/languages/sv/messages.ftl similarity index 100% rename from i18n/sv.ftl rename to languages/sv/messages.ftl diff --git a/i18n/ta.ftl b/languages/ta/messages.ftl similarity index 100% rename from i18n/ta.ftl rename to languages/ta/messages.ftl diff --git a/i18n/th.ftl b/languages/th/messages.ftl similarity index 100% rename from i18n/th.ftl rename to languages/th/messages.ftl diff --git a/i18n/tk.ftl b/languages/tk/messages.ftl similarity index 100% rename from i18n/tk.ftl rename to languages/tk/messages.ftl diff --git a/i18n/tr.ftl b/languages/tr/messages.ftl similarity index 100% rename from i18n/tr.ftl rename to languages/tr/messages.ftl diff --git a/i18n/ug.ftl b/languages/ug/messages.ftl similarity index 100% rename from i18n/ug.ftl rename to languages/ug/messages.ftl diff --git a/i18n/uk.ftl b/languages/uk/messages.ftl similarity index 100% rename from i18n/uk.ftl rename to languages/uk/messages.ftl diff --git a/i18n/und.ftl b/languages/und/messages.ftl similarity index 100% rename from i18n/und.ftl rename to languages/und/messages.ftl diff --git a/i18n/ur.ftl b/languages/ur/messages.ftl similarity index 100% rename from i18n/ur.ftl rename to languages/ur/messages.ftl diff --git a/i18n/yue.ftl b/languages/yue/messages.ftl similarity index 100% rename from i18n/yue.ftl rename to languages/yue/messages.ftl diff --git a/i18n/zh-hans.ftl b/languages/zh-hans/messages.ftl similarity index 100% rename from i18n/zh-hans.ftl rename to languages/zh-hans/messages.ftl diff --git a/i18n/zh-hant.ftl b/languages/zh-hant/messages.ftl similarity index 100% rename from i18n/zh-hant.ftl rename to languages/zh-hant/messages.ftl From 1df85583a7020bfaeaf527f204a7cdaed364b899 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Thu, 3 Oct 2024 15:33:44 +0300 Subject: [PATCH 2/4] docs(languages): Comment on purpose of Fluent message files --- languages/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/languages/README.md b/languages/README.md index 06e4787aa..9b529d84b 100644 --- a/languages/README.md +++ b/languages/README.md @@ -6,6 +6,10 @@ Supporting a language in SILE involves some combination of: * A hyphenation patterns module * Localization strings +## Localization strings + +Each locale may have a `messages.ftl` file that provides translations of strings that may be output into documents. + ## Hyphenation patterns Hyphenation rules are typically handled via patterns for the Knuth-Liang hyphenation algorithm. From 84f15e936a7768c72b0688ce0dc3de78af64b743 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Thu, 3 Oct 2024 15:42:40 +0300 Subject: [PATCH 3/4] feat(languages): Add bibliography localizations for Turkish --- languages/tr/messages.ftl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/languages/tr/messages.ftl b/languages/tr/messages.ftl index 596de94a6..2dae95d1c 100644 --- a/languages/tr/messages.ftl +++ b/languages/tr/messages.ftl @@ -1,5 +1,15 @@ +bibliography-and = ve + +bibliography-edited-by = { $name } tarafından düzenlendi + +bibliography-et-al = ve ark. + +bibliography-translated-by = { $name } tarafından tercüme edildi + book-chapter-title = Bölüm { $number } hello = Merhaba { $name }! +tableofcontents-not-generated = İçindekiler tablosunu işlemek için SİLE'yi yeniden çalıştırın! + tableofcontents-title = İçindekiler From 7a205d80390bc15ad76e003642356cda2adafa82 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Thu, 3 Oct 2024 15:54:31 +0300 Subject: [PATCH 4/4] chore(languages): Use generic Latin for 'et al' in undefined language --- languages/und/messages.ftl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/languages/und/messages.ftl b/languages/und/messages.ftl index 84e366897..8fd94eddd 100644 --- a/languages/und/messages.ftl +++ b/languages/und/messages.ftl @@ -1,3 +1,5 @@ +bibliography-et-al = et al. + hello = Namárië { $name }! tableofcontents-not-generated = Rerun SILE to process the table of contents!