vfsoraki
I’m searching for a way to have html in my translations. I’m using Gettext in Phoenix, and I’m translating ids , like the following example:
<%= gettext("score.current", score: @score) %>
Where score.current is translated in different languages, like in English: Your score is %{score} points.
Now I want the translated text to look like You score is <b>%{score}</b> points. What is a nice way of doing it. My own thoughts:
-
Explode translation into fragments:
<%= gettext("score.current") %><b><%= @score %></b><%= gettext("points") %> -
Inject score as html into translation:
<%= gettext("score.current", score: make_bold(@score)) %>
Please don’t tell me that I can remove points from end of sentence, this is just an example.
Thanks in advance!
PS. This thread is seeking the same thing as me, but he is using the sentence itself as message id. I don’t event know what is best practice. Should I switch to full sentence as translation id?
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #performance










First 8 of 8 Posts
NobbZ
Have you tried using
Phoenix.HTML.raw/1?egze
I suggest you try to keep html out of translations.
How about something like this:
The GetText key would be:
You score is %{score_html} points.Maybe you’ll need to combine it with
HTML.raw.vfsoraki
What do you mean by that? Use it where?
I didn’t ask how to escape HTML in EEx. I wanted to know what is the best practice.
vfsoraki
Thanks. That’s what I thought is a good way too. Clean.
However I will wait for other replies too, before choosing a solution.
hauleth
BTW Gettext approach is that the text to be matched is the in English that should be shown, so in this case it should be:
egze
That’s true, this is much better than
score.current. I’d still keep the html out though.vfsoraki
So best practice is to use full sentence in English. Good to know, since Gettext docs don’t mention this (in a way it shouldn’t).
I am still confused as to whether put html in text, or inject it to text, like
Score: %{score}wherescoreis like<b>10</b>or
Score: <b>%{score}</b>wherescoreis10egze
scoreis like<b>10</b>