在 phoenix 应用程序中将 gettext 与数据库中的内容一起使用?

Using gettext with content from database in phoenix app?

我正在尝试在 phoenix 应用程序中使用 Gettext and domains 来翻译 "materials"(木材、羊毛、棉花、木棉...)。 材料来自数据库。


这有效:

<%= MyApp.Gettext.dgettext "materials", "cotton" %>

但这不是:

<%= MyApp.Gettext.dgettext "materials", "#{material.name}" %>

我正在尝试将翻译添加到模板中

<%= for material <- @materials do %>
  <td><%= AmazingApp.Gettext.dgettext "materials", "#{material.name}" %></td>
<% end %>

在这种情况下如何进行翻译?

您可以为此使用 Gettext.dgettext/3

<%= Gettext.dgettext(MyApp.Gettext, "materials", material.name) %>

来自documentation

Dynamic translations should be avoided as they limit Gettext's ability to extract translations from your source code. If you are sure you need dynamic lookup, you can use the functions in the Gettext module:

string = "hello world"
Gettext.gettext(#{inspect(gettext_module)}, string)