概要
Drupalで翻訳がないノードの一覧を取得する機会がありましたので、備忘録です。
方法
色々とやり方があるかと思いますが、今回はjsonapiを使用します。
マスタ言語が日本語(ja)、追加したい翻訳言語を英語(en)とします。
jsonapiによって、例えばcollectionというタクソノミーであれば、以下で取得できます。
https://xxx/jsonapi/taxonomy_term/collection
また、以下のように/enを追加することで、翻訳ノードがある場合には、その情報が返却されます。
https://xxx/en/jsonapi/taxonomy_term/collection
この時、翻訳ノードがある場合には、attributes/langcodeがenになりますが、翻訳がないノードについては、jaのままとなりました。
この性質を利用して、指定した言語と異なる言語コードがlangcodeに含まれた場合、その言語に対する翻訳がないノードとして抽出できそうです。
なお、JSON:APIの仕様に基づき、以下のようなpageクエリを使用することで、ページネーションを行うことができます。これを使って、データの一括取得を行います。
https://xxx/en/jsonapi/taxonomy_term/collection?page[offset]=50&page[limit]=50
まとめ
他にも良い方法があるかと思いますが、参考になりましたら幸いです。