vfsoraki

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?

Showing Posts 1 to 8

NobbZ

NobbZ

Have you tried using Phoenix.HTML.raw/1?

egze

egze

I suggest you try to keep html out of translations.

How about something like this:

<%= gettext("score.current", score_html: "<b>#{score}</b>") %>

The GetText key would be: You score is %{score_html} points.

Maybe you’ll need to combine it with HTML.raw.

vfsoraki

vfsoraki OP

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

vfsoraki OP

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

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:

<%= raw gettext("Your score is <b>%{score}</b> points", score: @score) %>
egze

egze

That’s true, this is much better than score.current. I’d still keep the html out though.

vfsoraki

vfsoraki OP

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} where score is like <b>10</b>
    or
  • Score: <b>%{score}</b> where score is 10
egze

egze

score is like <b>10</b>

  1. You are more flexible to change markup as you wish.
  2. Translators are not going to be confused by HTML.
— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews