Elixir 手动添加gettext翻译键
我正在使用phoenixframework创建一个项目,并使用gettext添加一些翻译。命令mix gettext.extract-merge从控制器和模板中获取所有我的翻译密钥,并将其存储在.pot和.po文件中 但是我在配置文件中有一些翻译键,我在表单选择框中将其用作选择选项。现在我有一个键列表:[:键1,:键2,键3,…,键n] 现在我需要一个关键字列表来显示翻译,并使用选择框选择关键字。我的结果是:[{translation 1:key1},{translation 2:key2},{translation 3:key3},{translation N:keyN}] 问题: 我不应该触摸我的.pot文件,也不能将翻译密钥写入.po文件,因为在运行上述命令后,这些密钥将丢失。这些文件将被覆盖Elixir 手动添加gettext翻译键,elixir,phoenix-framework,gettext,Elixir,Phoenix Framework,Gettext,我正在使用phoenixframework创建一个项目,并使用gettext添加一些翻译。命令mix gettext.extract-merge从控制器和模板中获取所有我的翻译密钥,并将其存储在.pot和.po文件中 但是我在配置文件中有一些翻译键,我在表单选择框中将其用作选择选项。现在我有一个键列表:[:键1,:键2,键3,…,键n] 现在我需要一个关键字列表来显示翻译,并使用选择框选择关键字。我的结果是:[{translation 1:key1},{translation 2:key2},{
有没有一种方法可以手动添加翻译,这样我就可以运行命令从项目中获取新的翻译,而不会丢失手动添加的翻译?有一种解决方案,它与elixir get text实现一起工作 关键字是:域 首先,我用我所有的翻译密钥创建了一个新的pot文件:
msgid ""
msgstr ""
"Language: en\n"
msgid "key1"
msgstr ""
msgid "key2"
msgstr ""
# ... and so on ...
我的文件名为additionals.pot。然后运行mix gettext.extract-merge。现在,我在每个语言目录中都有一个additionals.po文件,我现在可以在其中添加翻译
在我的项目中,我现在使用Gettext模块的dgettext方法,而不是Gettext。dgettext允许我指定一个域,该域是新additionals.po文件的基本名称
就这样,一切都按预期进行
这是一篇关于Gettext的好文章。搜索域以查找如何使用dgettext的其他说明
Gettext.dgettext(<MyProjectName>.Gettext, "additionals", "key1")
# => "translation 1"