Pagination: page button aria-labels are not translated on small screens
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- react, typescript
調査の方向性
packages/ra-ui-materialui/src/list/pagination/Pagination.tsx を開き、すでに getItemAriaLabel={labelItem} を渡しているデスクトップ分岐と、isSmall 分岐(コンパクトな TablePagination をレンダーする)を比較してください。small 分岐に同じ prop を追加し、そのフォルダーでページネーションのテスト(例: Pagination.spec.tsx)を実行して、小さい画面でのレンダリングに関する既存のアサーションが引き続き通ることを確認してください。狭い幅で矢印ボタンがデスクトップと同様に翻訳済みの ra.navigation.* ラベルを備えていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
What you were expecting:
On every screen size, the pagination buttons ("first", "previous", "next", "last") use the translated ra.navigation.* labels, as they do on desktop.
What happened instead:
Below the md breakpoint, <Pagination> renders the compact TablePagination without getItemAriaLabel, so MUI's English defaults are used ("Go to next page", "Go to previous page") whatever the locale. Screen reader users get English labels in a French or Spanish app.
Steps to reproduce:
- Open the demo https://marmelab.com/react-admin-demo/ and sign in (demo / demo).
- Switch the language to French with the app bar menu.
- Open the Reviews list on a wide screen and inspect the "next page" arrow button:
aria-label="Aller à la prochaine page". - Switch to a phone width (e.g. 360 px, device toolbar) and reload, then inspect the "next page" arrow next to "1-25 sur 320":
aria-label="Go to next page". The visible "1-25 sur 320" text is translated; only the arrow buttons' aria-labels (read by screen readers) are not.
Related code:
packages/ra-ui-materialui/src/list/pagination/Pagination.tsx: the desktop branch passes getItemAriaLabel={labelItem}, the isSmall branch does not. Adding the same prop to the small TablePagination fixes it:
<TablePagination
...
labelDisplayedRows={labelDisplayedRows}
getItemAriaLabel={labelItem}
slotProps={slotProps}
{...sanitizeListRestProps(rest)}
/>
Other information:
Workaround: add MUI's locale (frFR, esES… from @mui/material/locale) to the theme.
Environment
- React-admin version: 5.15.5 (still the same on master)
- React version: 18.3.1
- Browser: Chrome and Safari (WebKit)
- 主要言語
- TypeScript
- スター
- 27k
- フォーク
- 5.5k
- 平均マージ
- 1日 3分
- マージ済み PR(30日)
- 32
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
marmelab/react-admin のほかの issue
-
Blank page after logout when the app re-renders `<Admin>` during `authProvider.logout()`対応中かも @uchiha-suraj が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
marmelab/react-admin#11431 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Add emptyText property to SelectArrayInput対応中かも @kwitykwity が 61 日前に担当しました。 オープンenhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
marmelab/react-admin#10454 · コメント 7 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 1週間以上 初心者へのやさしさ 38/100
marmelab/react-admin#11426 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
ra-data-graphql-simple: outdated graphql-ast-types-browser dependency causes npm peer warnings再び着手できるかも @bipul724 が 14 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
marmelab/react-admin#11395 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Fix decode-uri-component DoS (CVE-2026-45822) by dropping query-string再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
marmelab/react-admin#11380 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
marmelab/react-admin の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
components-web-app/docs#311 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
NEARBuilders/everything-dev#678 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
formbricks/formbricks#9881 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信