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
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security











Marked As Solved- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
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.Also Liked
NobbZ
Have you tried using
Phoenix.HTML.raw/1?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
scoreis like<b>10</b>