pedromvieira

pedromvieira

Umbrella Apps and Gettext

We are migrating our app to umbrella / distributed app.
The new architecture will have several Phoenix Web & API smaller apps.
To avoid extra work, is there a way to centralize all our gettext translations?

current (multiple apps)

From umbrella root.

==> myapp_admin
Wrote priv/gettext/en/LC_MESSAGES/errors.po
Wrote priv/gettext/en/LC_MESSAGES/default.po
==> myapp_api
Wrote priv/gettext/en/LC_MESSAGES/errors.po
==> myapp_my
Wrote priv/gettext/en/LC_MESSAGES/default.po
Wrote priv/gettext/en/LC_MESSAGES/errors.po
==> myapp_services
Wrote priv/gettext/it/LC_MESSAGES/errors.po
Wrote priv/gettext/it/LC_MESSAGES/default.po
Wrote priv/gettext/pt/LC_MESSAGES/errors.po
...
==> myapp_portal
Wrote priv/gettext/en/LC_MESSAGES/default.po
Wrote priv/gettext/en/LC_MESSAGES/errors.po
...

Most Liked

jstlroot

jstlroot

Hi @pedromvieira!

Thank you for your answer. I finally found what I was looking for! Here are the solutions, should anyone looking to achieve similar results need them:

Based on this issue: Running mix gettext.extract in umbrella updates wrong app · Issue #126 · elixir-gettext/gettext · GitHub, I was able to find this working exemple umbrella app from wojtekmach: https://github.com/wojtekmach/gettext_umbrella_bug.

I then ran into this issue: Translations are dissapearing in umbrella · Issue #178 · elixir-gettext/gettext · GitHub, which I was able to solve thank’s to amatalai’s idea: Workaround for gettext.extract issue with umbrella app · GitHub

I now have an umbrella app containing a Translator app, which is responsible for handling the translations for all the other apps (some of them being phoenix apps). The only app depending on Gettext is the Translator app, which is an :in_umbrella dependency to any app in need of translations. Using a Mix task inspired from amatalai’s, every app extracts its translations into the Translator app.

May these solutions save some headaches in the future! :purple_heart:

Cheers! :beers:

pedromvieira

pedromvieira

The problem to have multiple gettext spread across multiple apps is when you extract the files via “mix gettext.extract”, each app create their own translations files.
In my experience, is better to maintain everything in one file to translate (and reuse).

Where Next?

Popular in Questions Top

_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

Other popular topics Top

marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement