Internationalize and localize the home template

Had to add an `unsafe` function to be able to translate text with HTML
fragments in it, although the fragments are added back with printf
because the login link is actually not translatable.
This commit is contained in:
jordi fita mas 2023-06-16 10:58:40 +02:00
parent 826741a381
commit 055e92fb23
4 changed files with 80 additions and 41 deletions

View File

@ -42,6 +42,9 @@ func mustRenderTemplate(wr io.Writer, r *http.Request, layout string, filename s
"formatDate": func(time time.Time) template.HTML { "formatDate": func(time time.Time) template.HTML {
return template.HTML(`<time datetime="` + time.Format("2006-01-02") + `">` + time.Format("02/01/2006") + "</time>") return template.HTML(`<time datetime="` + time.Format("2006-01-02") + `">` + time.Format("02/01/2006") + "</time>")
}, },
"unsafe": func(s string) template.HTML {
return template.HTML(s)
},
"formatPercent": func(value int) string { "formatPercent": func(value int) string {
return fmt.Sprintf("%d %%", value) return fmt.Sprintf("%d %%", value)
}, },

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: numerus\n" "Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n" "Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-06-11 22:23+0200\n" "POT-Creation-Date: 2023-06-16 10:55+0200\n"
"PO-Revision-Date: 2023-01-18 17:08+0100\n" "PO-Revision-Date: 2023-01-18 17:08+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n" "Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n" "Language-Team: Catalan <ca@dodds.net>\n"
@ -251,11 +251,25 @@ msgctxt "title"
msgid "Edit Invoice “%s”" msgid "Edit Invoice “%s”"
msgstr "Edició de la factura «%s»" msgstr "Edició de la factura «%s»"
#: web/template/home.gohtml:7 web/template/login.gohtml:2 #: web/template/home.gohtml:9
#: web/template/login.gohtml:15 msgid "If you want to sign in, just head to %sthe login page%s and enter your credentials in the form."
msgctxt "title" msgstr "Si vols accedir al teu usuari només has d'anar a %sla pàgina dentrada%s i apuntar les teves credencials al seu lloc."
msgid "Login"
msgstr "Entrada" #: web/template/home.gohtml:12
msgid "manager"
msgstr "gestor"
#: web/template/home.gohtml:16
msgid "Tool to simplify management for small business and freelancers"
msgstr "Eina per simplificar la gestió dautònoms i petites empreses."
#: web/template/home.gohtml:19
msgid "Reduce management time, take control of your balance."
msgstr "Redueix el temps de gestió, tingues controlats els teus números."
#: web/template/home.gohtml:20
msgid "application"
msgstr "aplicació"
#: web/template/form.gohtml:36 #: web/template/form.gohtml:36
msgctxt "input" msgctxt "input"
@ -454,6 +468,11 @@ msgctxt "title"
msgid "Edit Contact “%s”" msgid "Edit Contact “%s”"
msgstr "Edició del contacte «%s»" msgstr "Edició del contacte «%s»"
#: web/template/login.gohtml:2 web/template/login.gohtml:15
msgctxt "title"
msgid "Login"
msgstr "Entrada"
#: web/template/login.gohtml:19 #: web/template/login.gohtml:19
msgctxt "action" msgctxt "action"
msgid "Login" msgid "Login"
@ -625,29 +644,29 @@ msgctxt "title"
msgid "Edit Product “%s”" msgid "Edit Product “%s”"
msgstr "Edició del producte «%s»" msgstr "Edició del producte «%s»"
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:268 #: pkg/login.go:37 pkg/profile.go:40 pkg/contacts.go:268
msgctxt "input" msgctxt "input"
msgid "Email" msgid "Email"
msgstr "Correu-e" msgstr "Correu-e"
#: pkg/login.go:47 pkg/profile.go:49 #: pkg/login.go:48 pkg/profile.go:49
msgctxt "input" msgctxt "input"
msgid "Password" msgid "Password"
msgstr "Contrasenya" msgstr "Contrasenya"
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:365 #: pkg/login.go:70 pkg/profile.go:89 pkg/contacts.go:365
msgid "Email can not be empty." msgid "Email can not be empty."
msgstr "No podeu deixar el correu-e en blanc." msgstr "No podeu deixar el correu-e en blanc."
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:366 #: pkg/login.go:71 pkg/profile.go:90 pkg/contacts.go:366
msgid "This value is not a valid email. It should be like name@domain.com." msgid "This value is not a valid email. It should be like name@domain.com."
msgstr "Aquest valor no és un correu-e vàlid. Hauria de ser similar a nom@domini.cat." msgstr "Aquest valor no és un correu-e vàlid. Hauria de ser similar a nom@domini.cat."
#: pkg/login.go:72 #: pkg/login.go:73
msgid "Password can not be empty." msgid "Password can not be empty."
msgstr "No podeu deixar la contrasenya en blanc." msgstr "No podeu deixar la contrasenya en blanc."
#: pkg/login.go:108 #: pkg/login.go:109
msgid "Invalid user or password." msgid "Invalid user or password."
msgstr "Nom dusuari o contrasenya incorrectes." msgstr "Nom dusuari o contrasenya incorrectes."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: numerus\n" "Project-Id-Version: numerus\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n" "Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2023-06-11 22:23+0200\n" "POT-Creation-Date: 2023-06-16 10:55+0200\n"
"PO-Revision-Date: 2023-01-18 17:45+0100\n" "PO-Revision-Date: 2023-01-18 17:45+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n" "Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n" "Language-Team: Spanish <es@tp.org.es>\n"
@ -251,11 +251,25 @@ msgctxt "title"
msgid "Edit Invoice “%s”" msgid "Edit Invoice “%s”"
msgstr "Edición de la factura «%s»" msgstr "Edición de la factura «%s»"
#: web/template/home.gohtml:7 web/template/login.gohtml:2 #: web/template/home.gohtml:9
#: web/template/login.gohtml:15 msgid "If you want to sign in, just head to %sthe login page%s and enter your credentials in the form."
msgctxt "title" msgstr "Si quieres acceder a tu usuario solo tienes que ir a %sla página de entrada% y anotar tus credenciales a su sitio."
msgid "Login"
msgstr "Entrada" #: web/template/home.gohtml:12
msgid "manager"
msgstr "gestor"
#: web/template/home.gohtml:16
msgid "Tool to simplify management for small business and freelancers"
msgstr "Herramienta para simplificar la gestión de autónomos y pequeñas empresas."
#: web/template/home.gohtml:19
msgid "Reduce management time, take control of your balance."
msgstr "Reduce el tiempo de gestión, ten controlados tus números."
#: web/template/home.gohtml:20
msgid "application"
msgstr "aplicación"
#: web/template/form.gohtml:36 #: web/template/form.gohtml:36
msgctxt "input" msgctxt "input"
@ -454,6 +468,11 @@ msgctxt "title"
msgid "Edit Contact “%s”" msgid "Edit Contact “%s”"
msgstr "Edición del contacto «%s»" msgstr "Edición del contacto «%s»"
#: web/template/login.gohtml:2 web/template/login.gohtml:15
msgctxt "title"
msgid "Login"
msgstr "Entrada"
#: web/template/login.gohtml:19 #: web/template/login.gohtml:19
msgctxt "action" msgctxt "action"
msgid "Login" msgid "Login"
@ -625,29 +644,29 @@ msgctxt "title"
msgid "Edit Product “%s”" msgid "Edit Product “%s”"
msgstr "Edición del producto «%s»" msgstr "Edición del producto «%s»"
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:268 #: pkg/login.go:37 pkg/profile.go:40 pkg/contacts.go:268
msgctxt "input" msgctxt "input"
msgid "Email" msgid "Email"
msgstr "Correo-e" msgstr "Correo-e"
#: pkg/login.go:47 pkg/profile.go:49 #: pkg/login.go:48 pkg/profile.go:49
msgctxt "input" msgctxt "input"
msgid "Password" msgid "Password"
msgstr "Contraseña" msgstr "Contraseña"
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:365 #: pkg/login.go:70 pkg/profile.go:89 pkg/contacts.go:365
msgid "Email can not be empty." msgid "Email can not be empty."
msgstr "No podéis dejar el correo-e en blanco." msgstr "No podéis dejar el correo-e en blanco."
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:366 #: pkg/login.go:71 pkg/profile.go:90 pkg/contacts.go:366
msgid "This value is not a valid email. It should be like name@domain.com." msgid "This value is not a valid email. It should be like name@domain.com."
msgstr "Este valor no es un correo-e válido. Tiene que ser parecido a nombre@dominio.es." msgstr "Este valor no es un correo-e válido. Tiene que ser parecido a nombre@dominio.es."
#: pkg/login.go:72 #: pkg/login.go:73
msgid "Password can not be empty." msgid "Password can not be empty."
msgstr "No podéis dejar la contraseña en blanco." msgstr "No podéis dejar la contraseña en blanco."
#: pkg/login.go:108 #: pkg/login.go:109
msgid "Invalid user or password." msgid "Invalid user or password."
msgstr "Nombre de usuario o contraseña inválido." msgstr "Nombre de usuario o contraseña inválido."

View File

@ -4,21 +4,19 @@
{{ define "content" -}} {{ define "content" -}}
<h1><img src="/static/numerus.svg" alt="Numerus" width="261" height="33"></h1> <h1><img src="/static/numerus.svg" alt="Numerus" width="261" height="33"></h1>
<div class="contenidor"> <div class="contenidor">
<p>Si vols accedir al teu usuari només has d'anar a la pàgina d'<a href="/login">entrada</a> i apuntar les teves credencials al seu lloc.</p> <p>{{ printf (gettext "If you want to sign in, just head to %sthe login page%s and enter your credentials in the form.") "<a href=\"/login\">" "</a>" | unsafe }}</p>
</div> </div>
<div class="graella"> <div class="graella">
<div class="caixa caixa-1"><p>gestor</p></div> <div class="caixa caixa-1">{{( gettext "manager" )}}</div>
<div class="caixa caixa-2"></div> <div class="caixa caixa-2"></div>
<div class="caixa caixa-3"> </div> <div class="caixa caixa-3"></div>
<div class="caixa caixa-4"> </div> <div class="caixa caixa-4"></div>
<div class="caixa caixa-5"><p>Eina per simplificar la gestió d'autònoms i petites empreses.</p></div> <div class="caixa caixa-5">{{( gettext "Tool to simplify management for small business and freelancers" )}}</div>
<div class="caixa caixa-6"> </div> <div class="caixa caixa-6"></div>
<div class="caixa caixa-7"><p>79%</p></div> <div class="caixa caixa-7">79%</div>
<div class="caixa caixa-8">Redueix el temps de gestió, tingues controlats els teus números.</div> <div class="caixa caixa-8">{{( gettext "Reduce management time, take control of your balance." )}}</div>
<div class="caixa caixa-9"><p>aplicació</p></div> <div class="caixa caixa-9">{{( gettext "application" )}}</div>
</div> </div>
{{- end }} {{- end }}