创建 <my_app>.Gettext 模块, 如果是通过 mix phoenix.new 创建的项目, 默认已经创建好了, 位于 web/gettext.ex

defmodule ExampleApp.Gettext do
  use Gettext, otp_app: :example_app
end

如果你使用Phoenix框架开发Web项目, 那么 gettext.ex 文件已经自动创建, 位置在 web/gettext.ex

提取国际化字符串并合并到多个Locale目录

#!/bin/bash

mix gettext.extract --merge

下面是目录结构

├── gettext
│   ├── default.pot
│   ├── en
│   │   └── LC_MESSAGES
│   │       ├── default.po
│   │       └── errors.po
│   ├── errors.pot
│   └── zh_CN
│       └── LC_MESSAGES
│           ├── default.po
│           └── errors.po

创建新的语言, 指定 --locale pt_BR 参数, 创建一个葡萄牙语的Locale

mix gettext.merge priv/gettext --locale pt_BR
├── default.pot
├── en
│   └── LC_MESSAGES
│       ├── default.po
│       └── errors.po
├── errors.pot
├── pt_BR
│   └── LC_MESSAGES
│       ├── default.po
│       └── errors.po
└── zh_CN
    └── LC_MESSAGES
        ├── default.po
        └── errors.po

mix gettext.merge 命令自动复制了 default.pot, 和 errors.potpt_BR*.po 文件.

默认用mix phoenix.new创建的项目, 在 web/web.ex 模块中的控制器, 视图, 和通道中已经import进来了Gettext模块, 因此在这些对应的组件中可以直接使用 gettext


developerworks
1.7k 声望266 粉丝