Snow Monkey オンラインコミュニティの問題解決能力に感動した話と、公式掲載プラグインの翻訳がめんどくさいなーと思って対応した話など / Snow Monkey 開発日誌【2018年10月9日】

Snow Monkey v4.3 ベータ2

昨日 Snow Monkey v4.3 ベータ1をリリースしたのですが、画面が表示されなくなる、詳細ページのビューが読み込まれない、などの不具合があったためすぐに公開を停止しました。外出中だったのですぐに調査や対応が難しい状況だったのですが、オンラインコミュニティのメンバーの方々が調査してくれたり協力してくれたりして、かなり短時間で原因究明と修正ができたのでした。ありがたいと思うのと同時に、すごく良いなーと思ったんですよね。仕事でもないのに率先して協力してくれて、なんかこう、理想的な形なんじゃないかなーと。

やはり1人で完璧なものをつくるのはなかなか難しいので、みんなの力で解決するというのはすごく良い形だと思うのです。それが仕事でもなくて、会ったこともない人同士でもできているっていうのが、今までいくつもオープンソースでプロダクトを公開してきていますが、なかなかこんなにスピーディーに複数人の方が動いてくれるというのは経験がなかったので、Snow Monkey がプロダクトとしてじゃなくて、コミュニティとしても成長してるんだなぁというのを実感してすごくうれしかったです。

クリティカルなバグはこれで落ち着いたんじゃないかなと思っていますが、今週いっぱいくらい様子を見て何事もなければ正式版として v4.3 をリリースしたいと思います!

Snow Monkey Blocks v1.0.9

  • snow-monkey-blocks/section-has-bgimage ブロックを snow-monkey-blocks/section-with-bgimage に変更
  • snow-monkey-blocks/section-has-image ブロックを snow-monkey-blocks/section-with-image に変更
  • snow-monkey-blocks/section-has-items ブロックを snow-monkey-blocks/section-with-items に変更
  • プラグイン内に翻訳ファイルがある場合は GlotPress の翻訳ファイルではなく、そちらを使用するように変更

いくつかのブロック名を変更しました。すでに記事内で使っている方は、Gutenberg をテキストモードに切り替えてから、-has--with- に置換してください。

翻訳問題

Snow Monkey Blocks をリリースしてから、管理画面が英語になってますよと報告いただいていて、公式は翻訳が GlotPress というサービス経由になって、僕はこの翻訳の承認権限がなく、まだ翻訳が承認されてないので英語なんだろうなーと気長に待っていました。でも、なんとなく GlotPress の画面を見てみるとそもそも翻訳語句としてマークされてるのがめちゃくちゃ少ないということに気づきまして。

で、Twitter で @mayukojpn さんに教えてもらったのですが、GlotPress は PHP ファイルからしか翻訳語句を読み取らないそうで、Gutenberg のブロックはほとんど JavaScript で記述するため翻訳国が全然読み取られていない、ということが原因だったようです。

npm にある @wordpress/i18n というライブラリに、pot ファイル(or po ファイル)から翻訳語句を抜き出して PHP ファイルに書き出す、という機能(pot-to-php)があるのでそれを使ってみまして、GlotPress に翻訳語句がちゃんと追加されることを確認できたのですが、そもそも、日本語については僕が手元で翻訳しているし、わざわざ語句の反映が遅い GlotPress に毎度翻訳をインポートさせるより、プラグイン内の翻訳ファイル読ませたほうが良くね?ということで、翻訳ファイル読み込みまわりのコードを修正しました。こんな感じ。

/**
 * load_plugin_textdomain() より前に記述が必要
 */
add_filter( 'load_textdomain_mofile', function( $mofile, $domain ) {
	if ( 'snow-monkey-blocks' === $domain ) {
		$mofilename   = basename( $mofile );
		$local_mofile = SNOW_MONKEY_BLOCKS_DIR_PATH . '/languages/' . $mofilename;
		if ( file_exists( $local_mofile ) ) {
			return $local_mofile;
		}
	}
	return $mofile;
}, 10, 2 );

以前はプラグイン内の翻訳ファイルがあればそれを優先的に読んでいたような気がするのですが、いまは GlotPress の翻訳ファイルを優先しちゃうようなので上記のようなコードの追加が必要です。

Snow Monkey Blocks を Snow Monkey 以外のテーマで試してくれた方のブログ記事

Snow Monkey Blocks は Snow Monkey 以外でも使用可能なのですが、Snow Monkey を開発している僕としては他のテーマでの検証や調整用コードの提示はなかなか面倒…とか思っていたら、お二人の方が記事を書いてくださいました!ありがとうございます!

想定通り多少調整は必要みたいですが、おおよそ問題なく使えるっぽい気がする!

Snow Monkey な日常

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。