gettextを使って.vueファイルの特定の文字列からpoファイル,jsonファイルを書き出す

.vue ファイル内において__()でくくられた文字列を po,json ファイルに書き出す手順をメモ。
例えば hello world を書き出したい場合は __(“hello world”) と宣言します。 なお、gettext はインストールしているものとします。

vue/po/messages.po を作成

$ find . -iname "*.vue" | xargs xgettext --keyword=__ --from-code=utf-8 --output-dir='vue/po'

messages.po をもとに日本語の vue/po/ja.po ,英語の vue/po/en.po ファイルを作成

msginit --locale=ja  --no-translator --input=vue/po/messages.po --o vue/po/ja.po;
msginit  --locale=en --no-translator --input=vue/po/messages.po --o vue/po/en.po;
en.po,ja.po ファイルがすでに存在している場合は msginit ではなく msgmerge を呼んでください。
msgmerge  --output=vue/po/en.po  vue/po/en.po vue/po/messages.po --sort-by-file;
msgmerge  --output=vue/po/ja.po  vue/po/ja.po vue/po/messages.po --sort-by-file;

en.po,ja.po ファイルを json形式でエクスポートする

pojsonをインストールします。
sudo npm install pojson -g 
あとは以下のコマンドを実行してください。
pojson -e utf-8 vue/po/en.po > vue/json/en.json
pojson -e utf-8 vue/po/ja.po > vue/json/ja.json

以上で.vue ファイルの特定の文字列から po,json ファイルを書き出す作業は完了です。

.poファイルのマージコンフリクトを解決

.poファイルのマージコンフリクトに苦しめられていたけど、git-po-mergeを使うと解決できたのでメモしておきます。

git-po-mergeをインストール

$ sudo npm install -g git-po-merge

~/.gitattributesを編集

    *.po   merge=pofile
    *.pot  merge=pofile

~/.gitconfigを編集

  [core]
    attributesfile = ~/.gitattributes
  [merge "pofile"]
    name = Gettext merge driver
    driver = git merge-po %O %A %B

以上でセットアップは完了です。これでpoファイルでマージコンフリクトが起きても自動で解決してくれるようになります。