【问题标题】:Add gettext translation keys manually手动添加 gettext 翻译键
【发布时间】:2016-05-24 11:07:56
【问题描述】:

我正在使用 phoenixframework 创建一个项目,并使用 gettext 添加一些翻译。命令mix gettext.extract --merge 从控制器和模板中获取我所有的翻译键,并将其存储在.pot.po 文件中。

但我在配置文件中有一些翻译键,我将其用作表单选择框中的选择选项。目前我有一个键列表:[:key1, :key2, key3, ..., keyN]

现在我需要一个关键字列表来显示翻译并使用选择框选择键。我的结果是这样的:[{"translation 1": key1}, {"translation 2": key2}, {"translation 3": key3}, ..., {"translation N": keyN}]

问题:

我不应该触摸我的.pot 文件,也不能将我的翻译密钥写入我的.po 文件,因为运行上述命令后它们会丢失。文件将被覆盖。

有没有办法手动添加翻译,这样我就可以运行命令从我的项目中获取新的翻译,而不会丢失我手动添加的翻译?

【问题讨论】:

    标签: elixir phoenix-framework gettext


    【解决方案1】:

    有一个解决方案,它适用于开箱即用的 elixir 获取文本实现。

    关键字是:

    起初我用我所有的翻译键创建了一个新的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 方法而不是 gettextdgettext 让我指定一个域,它是新 additionals.po 文件的基本名称。

    Gettext.dgettext(<MyProjectName>.Gettext, "additionals", "key1")
    # => "translation 1"
    

    就是这样,一切都按预期工作。

    Here 是一篇关于 Gettext 的好文章。搜索 Domains 以查找如何使用 dgettext 的其他说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      相关资源
      最近更新 更多