-
POファイルをJSONファイルへ変換
概要
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で修正
POファイルの修正が必要な場合は無料版のPoeditで修正します。使い方はネット上に多数有るのでココでは省略します。修正が不要な場合は、次へ。
手順2:Webサイト上でPOファイルをJSONファイルへ変換
1.ココをクリックして、以下のWebサイト「Convert Gettext PO files」を開きます。
2.「Choose source file:」の「ファイルを選択」をクリックして、POファイルを選択します。
※「Source language:」と「Translation language:」は変更不要です。未入力でも結構です。
3.「To:」の「JSON」->「Angular Gettext」を選択します。
4.最後に「Convert」をクリックします。
5.数秒するとサイト中央に以下の画面が表示されます。「Download」をクリックします。
6.ダウンロードが完了したら、上記のWebサイトは閉じます。
7.ダウンロードしたJSONファイルをテキストエディタで開きます。以下の文字列の検索をします。
- “one”:
- “other”:
上記の文字列がある場合は、変換ミスが出ています。原因は不明ですが、何らかの操作ミスと思われます。一旦、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版をダウンロードします。最新版を使いましょう。
※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」のみです。数が増えたら、検討します。