yasudacloudの日記

札幌に住むソフトウェアエンジニア

Strapiの多言語問題について

※一部記事を追記しています(2022年9月16日)

以前の記事でStrapiは翻訳のキーが一部当たっていないものがあり、多言語化できないキーワードがいくつかあります。GitHubのコミット履歴を見るとこれらはマイナーアップバージョンで少しずつ修正されていますが、実はこの問題はStrapi本体よりプラグインの方が深刻なのでは?と思っています。

 

yasudacloud.hatenablog.com

 

プラグインが多言語化を行う場合、当該文言は通常であれば他のプラグインやStrapi本体の文言と競合しないようにJSONファイルに記述します。そして画面ではreact-intlを使って各言語のJSONファイルを読み込みを行う必要があります。

プラグイン開発者がこれを行なっていない場合(コンポーネントに直接文言を書いている場合)、対処方法はおそらくこの2パターンしかありません。

 

①プラグインの多言語化を行い、開発元にPRを投げる

②プロジェクト(src/plugins)にcloneし、キーワードを翻訳していく

③src/admin/app.js に翻訳したいキーワードを追記していく

 

プラグインの多言語化を行い、開発元にPRを投げる

プラグインもオープンソースなので「機能が足りない」、「不具合がある」といったことがあれば自分で修正してPRを送れば解決するかもしれません。時間に余裕があればIssueを書いておくことも有効だと思います。

 

プロジェクト(src/plugins)にcloneし、キーワードを翻訳していく

これはプラグイン開発を行う際にも有効な方法ですが、node_modulesではなくプロジェクト内にプラグインを持っていくことで自身で手を加えることが容易になります。

ただし、自身のGit管理に含めることで開発元のアップデートに追随するのは困難になる可能性があります。加えて、npmのバージョンアップデートより大変になるため、プラグイン内に脆弱性が発覚があると辛いです。

 

src/admin/app.js に翻訳したいキーワードを追記していく

翻訳したいキーワードが少ない場合、このやり方が最もスマートです。言語が複数ある場合は別ファイルのJSONに分けるなど工夫すると良さそうです。

Admin panel customization - Strapi Developer Docs

 

マーケットプレイスについて

先日、Strapiのプラグインマーケットプレイスが公開されています。

プラグインの公開を行うために開発者向けにガイドラインがあるのですが、こちらには翻訳に関する制約は特にないのです。READMEは英語で書く必要がある、というのはありますが。

今後、プラグインがどんどん増えていくことを想定すると、ガイドラインで多言語化できるように実装しなさいっていう記載があると違ってくるような気がしますね。

https://strapi.io/marketplace/guidelines

 

 

おまけ

直近でstrapi-plugin-sitemapというプラグインを使う予定がありました。

しかし、日本語のJSONがなかったためPRを送ってみたところmasterにマージしてもらえました。こういうの嬉しい。

github.com

 

※2022年9月16日)”③src/admin/app.js に翻訳したいキーワードを追記していく”を追記させて頂きました。