Comments (4)
As a followup, I have been using this form for the last year:
<p> {{ T "userUnauthorized" . | safeHTML }} </p>
from go-i18n.
@nicksnyder, thanks for your help, and your hard work on this excellent package.
In case anyone else runs into similar issues, I found a workaround: a variant of the T
translation function which returns the i18n template wrapped in html/template
.HTML, to prevent html/template
from escaping.
T, _ := i18n.Tfunc(lang, settings.DefaultLocale)
template.Funcs(map[string]interface{}{
"T": T,
// wrap the translate function so that it may return HTML markup
"HT": func(translationID string, args ...interface{}) htmltemplate.HTML {
return htmltemplate.HTML(T(translationID, args...))
},
})
err := template.ExecuteTemplate(rw, "base", data)
My example above now uses {{HT "userUnauthorized" .}}
which passes through the html/template
expansion unescaped.
NOTE that this introduces a serious risk of code injection and should never be used with user-editable translation strings. The standard TFunc should be used in all cases except when it's necessary to preserve HTML unescaped.
from go-i18n.
Calling {{T "userUnauthorized" .}} results in escaped HTML.
Are you sure? I don't think this should be the case.
go-i18n uses test/template, not html/template, so nothing should get escaped afaik.
It looks like you are calling the T func inside of a template that is probably getting executed in a html/template
, and that is what is doing the escaping.
from go-i18n.
yes, I'm definitely trying to use translations in templates--that's where most of my user-visible strings are. I'll look and see if I can find a workaround at that level, thanks.
from go-i18n.
Related Issues (20)
- How to write a library module designed to be consumed by clients requiring i18n support?
- go get -u "github.com/nicksnyder/go-i18n/v2/i18n" # cd /root/go/GOCODE/src/github.com/nicksnyder/go-i18n; git pull --ff-only HOT 2
- Please explain how the user's current language is selected at runtime
- Is there are way to properly handle translation based on gender HOT 1
- Error handling is faulty HOT 3
- Setting the delimiters globally? HOT 2
- How to generate translations for the toml files HOT 3
- Upgrade golang.org/x/text v0.3.8 HOT 1
- `goi18n extract` doesn't seem to work for source file that use generics HOT 3
- Cound you export this function or when translation has error get the original value HOT 7
- Hook to commonly catch errors HOT 4
- Just a review
- Easy wrapper around this library HOT 1
- List fitting problem HOT 3
- merging new translation into existing translations omits the hashes
- [Question] Is there any way for reverse lookup in bundle? HOT 1
- Upgrade golang.org/x/text HOT 1
- Breaks on key description HOT 1
- Expose fields (or add access methods) of MessageNotFoundErr HOT 4
- Support template.Options for setting up missing key behavior HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-i18n.