POファイルをJSONファイルへ変換

概要

Convert PO file to JSON file

WordPressで使用している翻訳ファイル・POファイルをJSONファイルへ変換する方法を紹介します。内容はWindows環境ですが、他のOSでも可能です。

ここではWordPressプラグイン「Search Regex」を使って説明します。

Node.js、npm、po2json等は一切使いません。PC環境に数Gバイトものファイルのインストールは不要です。
当ページの変換方法後は、「Node.js、npm、po2jsonの環境」を全てアンインストールしました。(不要!

 

Search Regex プラグイン

このWordPressプラグインは以下のファイル構成になっています。

今回、search-regex-ja.poを使って、search-regex-ja.jsonファイルを作り直しします。

Source file
\WORDPRESS1\WP-CONTENT\PLUGINS\SEARCH-REGEX
│  license.txt
│  README.md
│  readme.txt
│  search-regex-admin.php
│  search-regex-capabilities.php
│  search-regex-cli.php
│  search-regex-settings.php
│  search-regex-strings.php
│  search-regex-version.php
│  search-regex.css
│  search-regex.js
│  search-regex.php
│
├─api
│      api-base.php
│      api-plugin.php
│      api-preset.php
│      api-replace.php
│      api-search.php
│      api-settings.php
│      api-source.php
│      api.php
│
├─images
│      donate.gif
│      GitHub-Mark-64px.png
│
├─locale
│  │  search-regex-it_IT.mo
│  │  search-regex-it_IT.po
│  │  search-regex-ja.mo
│  │  search-regex-ja.po <-★
│  │  search-regex-nl_BE.mo
│  │  search-regex-nl_BE.po
│  │  search-regex-nl_NL.mo
│  │  search-regex-nl_NL.po
│  │  search-regex.pot
│  │
│  └─json
│          search-regex-it_IT.json
│          search-regex-ja.json <-★
│          search-regex-nl_BE.json
│          search-regex-nl_NL.json
│
├─models
│      match-column.php
│      match-context.php
│      match.php
│      preset.php
│      replace.php
│      result.php
│      search-flags.php
│      search.php
│      source-flags.php
│      source-manager.php
│      source.php
│      totals.php
│
└─source
    ├─core
    │      comment-meta.php
    │      comment.php
    │      meta.php
    │      options.php
    │      post-meta.php
    │      post.php
    │      user-meta.php
    │      user.php
    │
    └─plugin
            redirection.php






 

手順1:POファイルをPoeditで修正

Poedit

POファイルの修正が必要な場合は無料版のPoeditで修正がします。使い方はネット上に多数有るのでココでは省略します。修正が不要な場合は、次へ。

 

手順2:Webサイト上でPOファイルをJSONファイルへ変換

1.ココをクリックして、以下のWebサイト「Convert Gettext PO files」を開きます。

Convert Gettext PO files

2.「Choose source file:」の「ファイルを選択」をクリックして、POファイルを選択します。

Convert Gettext PO files

※「Source language:」と「Translation language:」は変更不要です。未入力でも結構です。

3.「To:」の「JSON」->「Angular Gettext」を選択します。

Convert Gettext PO files

4.最後に「Convert」をクリックします。

Convert Gettext PO files

5.数秒するとサイト中央に以下の画面が表示されます。「Download」をクリックします。

Convert Gettext PO files

6.ダウンロードが完了したら、上記のWebサイトは閉じます。

7.ダウンロードしたJSONファイルをテキストエディタで開きます。以下の文字列の検索をします。

  • “one”:
  • “other”:
例:JSONの変換ミス

上記の文字列がある場合は、変換ミスが出ています。原因は不明ですが、何らかの操作ミスと思われます。一旦、Webサイト「Convert Gettext PO files」を開き直して、最初から操作し作り直して下さい。

 

手順3:JSONファイルのフォーマット変換

Webサイトで変換したJSONファイルではWordPressのプラグイン「Search Regex」で認識はしません。まだフォーマットが違うからです。

以下がWebサイトで変換した後の新JSONファイルです。

次がSearch Regex プラグインで既に使っている旧JSONファイルです。

日本語の翻訳部分を [ ] で囲む必要が有ることが分かります。

Source file
{
    "English1": "日本語1",
    "English2": "日本語2"
}


上記を以下の様に変更します。

Source file
{"English1":["日本語1"],"English2":["日本語2"]}


1つ1つの手作業でも変更できますが、かなり大変です。ミスも出ます。今回は次の手順で一括変更をしました。

1.フリーのMery テキストエディタを用意します。無い方はコチラからZIP版をダウンロードします。最新版を使いましょう。

Mery テキストエディタ(2020/7/21時点)

※NotePad++でも良いですが、置換とマクロの扱いはMeryの方が親切です。

2.フォーマットを変換するマクロを用意します。以下からダウンロードできるので、そのZIPファイルから「json-convert-20200721.txt」ファイルを取り出します。

ダウンロード  JSON Mery用の変換マクロ(R1)  (402 バイト, 作成 2020年7月21日)

Source file
/* JSONファイルをWordPress用に変換するマクロ */
/* JSON(Angular-Gettext) */
document.selection.Replace("\",\\n", "\"],\\n", meFindNext | meFindReplaceRegExp | meReplaceAll);
document.selection.Replace("\": \"", "\":[\"", meFindNext | meReplaceAll);
document.selection.Replace("\\n", "", meFindNext | meFindReplaceRegExp | meReplaceAll);
document.selection.Replace("\"],    \"", "\"],\"", meFindNext | meReplaceAll);
document.selection.Replace("{    \"", "{\"", meFindNext | meReplaceAll);
document.selection.EndOfDocument(false);
document.selection.CharLeft(true, 1);
document.selection.CharLeft(true, 1);
document.selection.Replace("\"}", "\"]}", meFindNext);

3.Meryを起動して、「json-convert-20200721.txt」ファイルをマクロとして取り込みます。[マクロ(M)] -> [選択(L)]を選択します。

4.「json-convert-20200721.txt」ファイルを開きます。これでマクロが有効になります。

5.次にMeryテキストエディタでダウンロードした新JSONファイルを開きます。

6.Meryテキストエディタのマクロを実行します。[マクロ(M)] -> [実行(R)・・・・] を選択します。

7.一瞬で終了します。変更された新JSONファイルを上書き保存します。

 

手順4:JSONファイルをアップロード

FTPを使います。プラグイン「Search Regex」のjsonフォルダの旧JSONファイルを一旦バックアップします。その後で新JSONファイルを上書きコピーします。

以上で完了です。

 

注意:Search Regexプラグインの設定画面が全て英語表示になっている場合はJSONファイルの変換が失敗しています。バックアップファイルの旧JSONファイルを一旦戻し、最初から作り直しします。

 

備考

  • PO -> JSON変換サイト(英語)は1つだけで、他に見つけることが出来ませんでした。
  • JSONファイルのフォーマット変換を扱うWebサイトは多数有りますが、今回の変換に最適なサイトを見つけることは出来ませんでした。
  • po2json(+npm)環境は不要なソフトが多数インストールされ、しかも関連ソフトのインストールも難しいです。不可解なエラーも多発し、凡人には扱えません。
  • POファイルを一発で目的のJSONファイルに変換するソフトを作るのは難しくはないです。しかし、現時点で変換が必要と思われるファイルはWordPress プラグイン「Search Regex」のみです。数が増えたら、検討します。

 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


コメントを
頂けると
嬉しいです。♡



↑ この部分は自作のプラグインでテキスト表示しています。
WordPress公式プラグインとしても登録されています。

日本語化ファイルのダウンロード時はポチッとコメントを入れて頂けるとうれしいです。
リンクはもっとうれしい! (^.^)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください