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

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
itzmidinesh
Hi all, I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
pragdave
How do I tell Hologram not to escape HTML when substituting into templates? {Textile.render(@product.long_description)} escapes the HTM...
New
rlipscombe
I’d like to create a file with 600 permissions (rw-------), but there’s a race condition if I create it and then change the permissions. ...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
rlipscombe
When I use Mix.install with a git dependency, using git@github.com:... how do I change the SSH identity used? I’ve got two Github accoun...
New
adr
Hello all. I have a question as to best practices for code organization when implementing a liveview with a lot of responsibilities. Sup...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
raa-ziq
Hi everyone :waving_hand: I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
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
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
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
kip
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews