diff --git a/docs/README.md b/docs/README.md
index 78a08aa4c57411..3be20c0de354da 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -311,6 +311,9 @@ Everything you need to know to [start contributing to the block editor](/docs/co
### 主な変更
+2023/11/21
+- [削除ボタンの追加](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/5-adding-a-delete-button/) - 翻訳
+
2023/11/11
- 多数 - JSXを使用しないサンプルの削除
- 多数 - サンプルリポジトリを変更 [block-development-examples](https://github.com/WordPress/block-development-examples)
diff --git a/docs/how-to-guides/block-tutorial/creating-dynamic-blocks.md b/docs/how-to-guides/block-tutorial/creating-dynamic-blocks.md
index 713dc504646ffb..0c1279942b8af9 100644
--- a/docs/how-to-guides/block-tutorial/creating-dynamic-blocks.md
+++ b/docs/how-to-guides/block-tutorial/creating-dynamic-blocks.md
@@ -184,8 +184,6 @@ registerBlockType( 'gutenberg-examples/example-dynamic', {
```
diff --git a/docs/how-to-guides/data-basics/1-data-basics-setup.md b/docs/how-to-guides/data-basics/1-data-basics-setup.md
index 8b8cea055dc854..c844f4f7ce5074 100644
--- a/docs/how-to-guides/data-basics/1-data-basics-setup.md
+++ b/docs/how-to-guides/data-basics/1-data-basics-setup.md
@@ -256,15 +256,15 @@ Congratulations! You are now ready to start building the app!
-## 次のステップ
+## 次は ?
-- 前のステップ: [はじめに](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/)
-- 次のステップ: [簡単なページリストの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/2-building-a-list-of-pages)
-- (オプション) gutenberg-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
+- 前のパート: [はじめに](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/)
+- 次のパート: [簡単なページリストの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/2-building-a-list-of-pages)
+- (オプション) block-development-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
[原文](https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/data-basics/1-data-basics-setup.md)
diff --git a/docs/how-to-guides/data-basics/2-building-a-list-of-pages.md b/docs/how-to-guides/data-basics/2-building-a-list-of-pages.md
index 24fba902257503..c9a84ee915d167 100644
--- a/docs/how-to-guides/data-basics/2-building-a-list-of-pages.md
+++ b/docs/how-to-guides/data-basics/2-building-a-list-of-pages.md
@@ -18,7 +18,7 @@ Let’s see how we can get there step by step.
-## ステップ 1: PagesList コンポーネントの構築
+## ステップ1: PagesList コンポーネントの構築
-## ステップ 2: データの取得
+## ステップ2: データの取得
-## ステップ 3: テーブルの中へ
+## ステップ3: テーブルの中へ
```js
function PagesList( { pages } ) {
@@ -211,7 +211,7 @@ function PagesList( { pages } ) {
-## ステップ 4: 検索ボックスの追加
+## ステップ4: 検索ボックスの追加
-## ステップ 5: インジケータのロード
+## ステップ5: インジケータのロード
-## 次のステップ
+## 次は ?
-* **前のステップ:** [セットアップ](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/1-data-basics-setup)
-* **次のステップ:** [編集フォームの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/3-building-an-edit-form)
-* (オプション) gutenberg-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
+* **前のパート:** [セットアップ](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/1-data-basics-setup)
+* **次のパート:** [編集フォームの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/3-building-an-edit-form)
+* (オプション) block-development-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
[原文](https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/data-basics/2-building-a-list-of-pages.md)
diff --git a/docs/how-to-guides/data-basics/3-building-an-edit-form.md b/docs/how-to-guides/data-basics/3-building-an-edit-form.md
index 969a874b448085..4e752a0abf8a8b 100644
--- a/docs/how-to-guides/data-basics/3-building-an-edit-form.md
+++ b/docs/how-to-guides/data-basics/3-building-an-edit-form.md
@@ -13,7 +13,7 @@ This part is about adding an *Edit* feature to our app. Here's a glimpse of what
-### ステップ 1: 「編集」ボタンの追加
+### ステップ1: 「編集」ボタンの追加
-### ステップ 2: 「編集」フォームの表示
+### ステップ2: 「編集」フォームの表示
-### ステップ 3: フォームへのページの詳細の挿入
+### ステップ3: フォームへのページの詳細の挿入
-### ステップ 4: ページのタイトルフィールドを編集可能に
+### ステップ4: ページのタイトルフィールドを編集可能に
-### ステップ 5: フォームデータの保存
+### ステップ5: フォームデータの保存
-### ステップ 6: エラー処理
+### ステップ6: エラー処理
-### ステップ 7: ステータスインジケータ
+### ステップ7: ステータスインジケータ
-## 次のステップ
+## 次は ?
-* **前のステップ:** [ページリストの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/2-building-a-list-of-pages)
-* **次のステップ:** 新規ページフォームの構築 (近日公開)
-* (オプション) gutenberg-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
+* **前のパート:** [ページリストの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/2-building-a-list-of-pages)
+* **次のパート:** 新規ページフォームの構築 (近日公開)
+* (オプション) block-development-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
[原文](https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/data-basics/3-building-an-edit-form.md)
diff --git a/docs/how-to-guides/data-basics/4-building-a-create-page-form.md b/docs/how-to-guides/data-basics/4-building-a-create-page-form.md
index 1ccef1a9f8a753..cf6f6cedd368cb 100644
--- a/docs/how-to-guides/data-basics/4-building-a-create-page-form.md
+++ b/docs/how-to-guides/data-basics/4-building-a-create-page-form.md
@@ -473,15 +473,15 @@ All that’s left is to refresh the page and enjoy the form:
-## 次のステップ
+## 次は ?
-* **次のステップ:** [削除ボタンの追加](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/5-adding-a-delete-button)
-* **前のステップ:** [編集フォームの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/3-building-an-edit-form/)
-* (オプション) gutenberg-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
+* **次のパート:** [削除ボタンの追加](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/5-adding-a-delete-button)
+* **前のパート:** [編集フォームの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/3-building-an-edit-form/)
+* (オプション) block-development-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
[原文](https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/data-basics/3-building-an-edit-form.md)
diff --git a/docs/how-to-guides/data-basics/5-adding-a-delete-button.md b/docs/how-to-guides/data-basics/5-adding-a-delete-button.md
index e0a0b0d1e93370..4176bb4e247311 100644
--- a/docs/how-to-guides/data-basics/5-adding-a-delete-button.md
+++ b/docs/how-to-guides/data-basics/5-adding-a-delete-button.md
@@ -1,16 +1,32 @@
+
+# 削除ボタンの追加
+
+[前のパート](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/4-building-a-create-page-form/)では、新しいページの作成機能を追加しました。このパートではアプリケーションに「削除」機能を追加します。
+
+これから構築する機能は以下のようになります。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/delete-button.png)
+
+### ステップ1: 「削除」ボタンの追加
+
+まず `DeletePageButton` コンポーネントを作成し、`PagesList` コンポーネントのユーザーインターフェースを更新します。
+
+```js
+import { Button } from '@wordpress/components';
+import { decodeEntities } from '@wordpress/html-entities';
+
+const DeletePageButton = () => (
+
+)
+
+function PagesList( { hasResolved, pages } ) {
+ if ( ! hasResolved ) {
+ return ;
+ }
+ if ( ! pages?.length ) {
+ return
No results
;
+ }
+
+ return (
+
+
+
+ Title |
+ Actions |
+
+
+
+ { pages?.map( ( page ) => (
+
+ { decodeEntities( page.title.rendered ) } |
+
+
+
+ {/* ↓ 以下が PagesList コンポーネント内で唯一の変更 */}
+
+
+ |
+
+ ) ) }
+
+
+ );
+}
+```
+
+
+これで PagesList は以下のようになります。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/delete-button.png)
+
+### ステップ2: ボタンと削除アクションの接続
+
+Gutenberg のデータでは、WordPress REST APIから `deleteEntityRecord` アクションを使用してエンティティレコードを削除します。アクションはリクエストを送信し、結果を処理し、Redux ステート内にキャッシュされたデータを更新します。
+
+以下はブラウザの開発ツール内でエンティティレコードの削除を試す方法です。
+
+
+```js
+// deleteEntityRecord を呼び出すには有効なページ ID が必要。getEntityRecords を使用して最初の利用可能なページ ID を取得する。
+const pageId = wp.data.select( 'core' ).getEntityRecords( 'postType', 'page' )[0].id;
+
+// そのページを削除する。
+const promise = wp.data.dispatch( 'core' ).deleteEntityRecord( 'postType', 'page', pageId );
+
+// API リクエストの成功または失敗により、promise は resolved または rejected を取得する。
```
+
+REST API リクエストが終了すると、ページの一つがリストから消えていることが分かります。これは、そのリストが `useSelect()` フックと `select( coreDataStore ).getEntityRecords( 'postType', 'page' )` セレクタによって生成されているためです。ベースとなるデータが変更されるたびに、リストは新しいデータで再レンダーされます。これはかなり便利です !
+
+`DeletePageButton` がクリックされたときに、アクションをディスパッチします。
```js
const DeletePageButton = ({ pageId }) => {
@@ -92,11 +184,20 @@ const DeletePageButton = ({ pageId }) => {
}
```
+
+### ステップ3: 視覚的なフィードバックの追加
+
+「Delete」ボタンをクリックした後、REST API リクエストが終了するまで少し時間がかかるかもしれません。このチュートリアルの以前のパートで実行したのと同様に、`` コンポーネントでそれを伝えます。
+
+これには `isDeletingEntityRecord` セレクタが必要です。このセレクタは[パート3](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/3-building-an-edit-form/)で紹介した `isSavingEntityRecord` セレクタに似ています。`true` または `false` を返しますが、決して HTTP リクエストは発行しません。
```js
const DeletePageButton = ({ pageId }) => {
@@ -119,28 +220,54 @@ const DeletePageButton = ({ pageId }) => {
);
}
```
-
+
+実際の動作の様子です。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/deleting-in-progress.png)
+
+### ステップ4: エラー処理
+
+ここまでは楽観的に「削除」操作は常に成功すると仮定しました。しかし、残念ながら実際には REST API リクエストは、さまざまな理由で失敗します。
+
+* ウェブサイトはダウンする可能性がある。
+* 削除リクエストは正しくないかもしれない。
+* ページは処理中に誰かに削除されるかもしれない。
+
+こうしたエラーが発生した際にユーザーに伝えるには、`getLastEntityDeleteError` セレクタを使用して、エラー情報を取り出す必要があります。
+
+```js
+// 「9」を実際のページ ID で置換すること
+wp.data.select( 'core' ).getLastEntityDeleteError( 'postType', 'page', 9 )
```
+
+これを以下のように `DeletePageButton` に適用します。
+
+```js
+import { useEffect } from 'react';
+const DeletePageButton = ({ pageId }) => {
+ // ...
+ const { error, /* ... */ } = useSelect(
+ select => ( {
+ error: select( coreDataStore ).getLastEntityDeleteError( 'postType', 'page', pageId ),
+ // ...
+ } ),
+ [pageId]
+ );
+ useEffect( () => {
+ if ( error ) {
+ // エラーの表示
+ }
+ }, [error] )
+ // ...
+}
+```
+
+
+`error` オブジェクトは `@wordpress/api-fetch` から来たもので、エラーに関する情報を含みます。以下のプロパティを持ちます。
+
+* `message` - `Invalid post ID` のような人間が読めるエラーメッセージ。
+* `code` - `rest_post_invalid_id` のような文字列ベースのエラーコード。すべてのエラーコードを調べるには、[`/v2/pages` エンドポイントのソースコード](https://github.com/WordPress/wordpress-develop/blob/2648a5f984b8abf06872151898e3a61d3458a628/src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php#L226-L230) を参照する必要があります。
+* `data` (オプション) - エラーの詳細。失敗したリクエストの HTTP レスポンスコードを含む `code` プロパティを含む。
+
+このオブジェクトをエラーメッセージに変換する多くの方法がありますが、このチュートリアルでは `error.message` を表示します。
+
+WordPress ではステータス情報を表示するパターンが確立されており、`Snackbar` コンポーネントを使用します。たとえば **ウィジェットエディター**では、以下のようになります。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/snackbar-example.png)
+
+同じタイプの通知をプラグインで使用しましょう。これには2つのパートがあります。
+
+1. 通知の表示
+2. 通知のディスパッチ
+
+#### 通知の表示
+
+アプリケーションはページを表示する方法のみを知っていて、通知を表示する方法は知りません。それを教えてあげましょう !
+
+便利なことに WordPress では、通知のレンダーに必要なすべての React コンポーネントが提供されています。[`Snackbar` コンポーネント](https://wordpress.github.io/gutenberg/?path=/story/components-snackbar--default)は、単一の通知を表現します。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/snackbar.png)
+
+しかし、`Snackbar` は直接使わず、`SnackbarList` コンポーネントを使用します。`SnackbarList` コンポーネントはスムーズなアニメーションで複数の通知を表示し、数秒後に自動的に消えます。実際、WordPress ではウィジェットエディターやその他の管理画面のページで同じコンポーネントを使用しています。
+
+それでは独自の `Notifications` コンポーネントを作成します。
+
+```js
+import { SnackbarList } from '@wordpress/components';
+import { store as noticesStore } from '@wordpress/notices';
+
+function Notifications() {
+ const notices = []; // すぐにここに戻ってきます !
+
+ return (
+
+ );
+}
```
+
+基本的な構造はできていますが、レンダーする通知のリストが空です。どうすればいいのでしょうか ? WordPressと同じパッケージ [`@wordpress/notices`](https://github.com/WordPress/gutenberg/blob/895ca1f6a7d7e492974ea55f693aecbeb1d5bbe3/docs/reference-guides/data/data-core-notices.md) に頼ってみましょう。
+
+以下がその方法です。
```js
import { SnackbarList } from '@wordpress/components';
@@ -243,14 +450,27 @@ function MyFirstApp() {
}
```
+
+このチュートリアルはページの管理に重点を置いているため、上のスニペットについては詳しく説明しません。もし `@wordpress/notices` の詳細に興味があれば、[ハンドブックページ](https://developer.wordpress.org/block-editor/reference-guides/data/data-core-notices/) から始めると良いでしょう。
+
+これで、発生した可能性のあるエラーをユーザーに伝える準備ができました。
+
+#### 通知のディスパッチ
+
+SnackbarNotices コンポーネントを配置し、いくつかの通知をディスパッチする準備が整いました。以下がその方法です。
+
+```js
+import { useEffect } from 'react';
+import { store as noticesStore } from '@wordpress/notices';
+function DeletePageButton( { pageId } ) {
+ const { createSuccessNotice, createErrorNotice } = useDispatch( noticesStore );
+ // コールバックの代わりにストアハンドルを渡すと、useSelect はセレクタのリストを返す:
+ const { getLastEntityDeleteError } = useSelect( coreDataStore )
+ const handleDelete = async () => {
+ const success = await deleteEntityRecord( 'postType', 'page', pageId);
+ if ( success ) {
+ // 操作が成功したことをユーザーに伝える:
+ createSuccessNotice( "The page was deleted!", {
+ type: 'snackbar',
+ } );
+ } else {
+ // deleteEntityRecord が失敗した*後で*、直接セレクタを使用して新しいエラーを取得する。
+ const lastError = getLastEntityDeleteError( 'postType', 'page', pageId );
+ const message = ( lastError?.message || 'There was an error.' ) + ' Please refresh the page and try again.'
+ // 具体的にどのように操作に失敗したかをユーザーに伝える:
+ createErrorNotice( message, {
+ type: 'snackbar',
+ } );
+ }
+ }
+ // ...
+}
+```
+
+素晴らしい ! これで `DeletePageButton` は、完全にエラーを認識するようになりました。エラーメッセージを実際に見てみましょう。無効な削除をトリガーして失敗させます。これを行う1つの方法として、`pageId` に大きな数を掛けます。
```js
function DeletePageButton( { pageId, onCancel, onSaveFinished } ) {
@@ -290,22 +540,41 @@ function DeletePageButton( { pageId, onCancel, onSaveFinished } ) {
}
```
+
+ページを更新し、「Delete」ボタンをクリックすると、次のようなエラーメッセージが表示されるはずです。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/snackbar-error.png)
+
+最高です ! では、`pageId = pageId * 1000;` の行を削除しましょう。
+
+そして、実際にページを削除してみます。ブラウザをリフレッシュして「Delete」ボタンをクリックすると、以下のように表示されます。
![](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/how-to-guides/data-basics/media/delete-button/snackbar-success.png)
+
+以上です。
+
+### すべてをひとつに
+
+これですべてのピースがそろいました。この章で行ったすべての変更が以下になります。
+
+```js
+import { useState, useEffect } from 'react';
+import { useSelect, useDispatch } from '@wordpress/data';
+import { Button, Modal, TextControl } from '@wordpress/components';
+
+function MyFirstApp() {
+ const [searchTerm, setSearchTerm] = useState( '' );
+ const { pages, hasResolved } = useSelect(
+ ( select ) => {
+ const query = {};
+ if ( searchTerm ) {
+ query.search = searchTerm;
+ }
+ const selectorArgs = ['postType', 'page', query];
+ const pages = select( coreDataStore ).getEntityRecords( ...selectorArgs );
+ return {
+ pages,
+ hasResolved: select( coreDataStore ).hasFinishedResolution(
+ 'getEntityRecords',
+ selectorArgs,
+ ),
+ };
+ },
+ [searchTerm],
+ );
+
+ return (
+
+ );
+}
+
+function SnackbarNotices() {
+ const notices = useSelect(
+ ( select ) => select( noticesStore ).getNotices(),
+ []
+ );
+ const { removeNotice } = useDispatch( noticesStore );
+ const snackbarNotices = notices.filter( ( { type } ) => type === 'snackbar' );
+
+ return (
+
+ );
+}
+
+function PagesList( { hasResolved, pages } ) {
+ if ( !hasResolved ) {
+ return ;
+ }
+ if ( !pages?.length ) {
+ return No results
;
+ }
+
+ return (
+
+
+
+ Title |
+ Actions |
+
+
+
+ { pages?.map( ( page ) => (
+
+ { page.title.rendered } |
+
+
+ |
+
+ ) ) }
+
+
+ );
+}
+
+function DeletePageButton( { pageId } ) {
+ const { createSuccessNotice, createErrorNotice } = useDispatch( noticesStore );
+ // コールバックの代わりにストアハンドルを渡すと、useSelect はセレクタのリストを返す:
+ const { getLastEntityDeleteError } = useSelect( coreDataStore )
+ const handleDelete = async () => {
+ const success = await deleteEntityRecord( 'postType', 'page', pageId);
+ if ( success ) {
+ // 操作が成功したことをユーザーに伝える:
+ createSuccessNotice( "The page was deleted!", {
+ type: 'snackbar',
+ } );
+ } else {
+ // この時点で、直接セレクタを使用してエラーを取得する。
+ // 仮に、以下のようにエラーをフェッチしたとする。
+ // const { lastError } = useSelect( function() { /* ... */ } );
+ // このとき lastError は handleDelete 内部で null になる。
+ // 何故か ? それは handleDelete の呼び出しまえに計算されたバージョンを参照するため。
+ const lastError = getLastEntityDeleteError( 'postType', 'page', pageId );
+ const message = ( lastError?.message || 'There was an error.' ) + ' Please refresh the page and try again.'
+ // 具体的にどのように操作に失敗したかをユーザーに伝える:
+ createErrorNotice( message, {
+ type: 'snackbar',
+ } );
+ }
+ }
+
+ const { deleteEntityRecord } = useDispatch( coreDataStore );
+ const { isDeleting } = useSelect(
+ select => ( {
+ isDeleting: select( coreDataStore ).isDeletingEntityRecord( 'postType', 'page', pageId ),
+ } ),
+ [ pageId ]
+ );
+
+ return (
+
+ );
+}
+```
+
+
+## 次は ?
+
+* **前のパート:** [ページ作成フォームの構築](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/4-building-a-create-page-form/)
+* (オプション) block-development-examples リポジトリ内の [完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8) を参照
+
+[原文](https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/data-basics/5-adding-a-delete-button.md)
\ No newline at end of file
diff --git a/docs/how-to-guides/data-basics/README.md b/docs/how-to-guides/data-basics/README.md
index 5d23fca7e10b44..d8b2bdefa3db2c 100644
--- a/docs/how-to-guides/data-basics/README.md
+++ b/docs/how-to-guides/data-basics/README.md
@@ -13,7 +13,7 @@ This tutorial aims to get you comfortable with the Gutenberg data layer. It guid
-gutenberg-examplesリポジトリで、[完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8)を確認できます。
+block-development-examples リポジトリで、[完成したアプリ](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/data-basics-59c8f8)を確認できます。
セットアップのリファレンスとして、[完全な書式 API サンプル](https://github.com/WordPress/block-development-examples/tree/trunk/plugins/format-api-f14b86) を参照してください。
diff --git a/docs/how-to-guides/javascript/js-build-setup.md b/docs/how-to-guides/javascript/js-build-setup.md
index 3e39a96d62dd82..c523cab8e96ca3 100644
--- a/docs/how-to-guides/javascript/js-build-setup.md
+++ b/docs/how-to-guides/javascript/js-build-setup.md
@@ -51,13 +51,11 @@ ESNext を使用し、さらに追加の変換手順を実行するのにはい
## クイックスタート
-すぐに始めたいという方は以下の手順を省略し、[Block Development Examples リポジトリー](https://github.com/wordpress/block-development-examples/) のサンプルを使用してください。Examples リポジトリーのそれぞれのサンプルの `-esnext` ディレクトリ下に ESNext や JSX の動作に必要なファイルが含まれています。
+すぐに始めたいという方は以下の手順を省略し、[Block Development Examples リポジトリ](https://github.com/wordpress/block-development-examples/) のサンプルを使用してください。Examples リポジトリーのそれぞれのサンプルの `-esnext` ディレクトリ下に ESNext や JSX の動作に必要なファイルが含まれています。
-完全なサンプルについては [blocks in the block-development-examples リポジトリ](https://github.com/WordPress/block-development-examples) を参照してください。
+完全なサンプルについては [block-development-examples リポジトリ内のブロック](https://github.com/WordPress/block-development-examples) を参照してください。
これで `npm run build` と実行すると、構成済みのすべてのデフォルトの webpack 、たとえばフォーマットや lint を実行してプロジェクトをビルドします。`start` コマンドは開発モードで使用します。完全なドキュメントについては [`@wordpress/scripts` パッケージ](https://github.com/WordPress/gutenberg/blob/trunk/packages/scripts/README.md)を参照してください。
diff --git a/docs/japanese-changelog.md b/docs/japanese-changelog.md
index 210573a23fad73..1beb9efc008b95 100644
--- a/docs/japanese-changelog.md
+++ b/docs/japanese-changelog.md
@@ -2,6 +2,9 @@
翻訳の進捗や、最新の英語版で同期した際に気づいた箇所をメモしています。
+2023/11/21
+- [削除ボタンの追加](https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/data-basics/5-adding-a-delete-button/) - 翻訳
+
2023/11/11
- 多数 - JSXを使用しないサンプルの削除
- 多数 - サンプルリポジトリを変更 [block-development-examples](https://github.com/WordPress/block-development-examples)