More Localizations (#12021)

diff --git a/packages/flutter/lib/src/material/i18n/localizations.dart b/packages/flutter/lib/src/material/i18n/localizations.dart
index 454d9e2..144f29a 100644
--- a/packages/flutter/lib/src/material/i18n/localizations.dart
+++ b/packages/flutter/lib/src/material/i18n/localizations.dart
@@ -17,7 +17,14 @@
     "closeButtonTooltip": r"بند ڪريو",
     "nextMonthTooltip": r"ايندڙ مهيني",
     "previousMonthTooltip": r"پويون مهينو",
+    "nextPageTooltip": r"اڳيون پيج",
+    "previousPageTooltip": r"پويون صفحو",
+    "showMenuTooltip": r"ڏيکاريو",
     "licensesPageTitle": r"لائسنس",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow جي $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow کان $rowCount تقريبن",
+    "rowsPerPageTitle": r"رني پاسي وارو صفحو",
+    "selectedRowCountTitleOther": r"$selectedRowCount شيون چونڊيل",
     "cancelButtonLabel": r"منسوخ ڪيو",
     "closeButtonLabel": r"بند ڪريو",
     "continueButtonLabel": r"جاري رکو",
@@ -34,7 +41,14 @@
     "closeButtonTooltip": r"بستن",
     "nextMonthTooltip": r"ماه بعد",
     "previousMonthTooltip": r"ماه گذشته",
+    "nextPageTooltip": r"صفحه بعد",
+    "previousPageTooltip": r"صفحه قبلی",
+    "showMenuTooltip": r"نمایش منو",
     "licensesPageTitle": r"مجوز",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow از $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow از حدود $rowCount",
+    "rowsPerPageTitle": r"ردیف در صفحه:",
+    "selectedRowCountTitleOther": r"$selectedRowCount آیتم های انتخاب شده",
     "cancelButtonLabel": r"لغو",
     "closeButtonLabel": r"بستن",
     "continueButtonLabel": r"ادامه دهید",
@@ -51,7 +65,14 @@
     "closeButtonTooltip": r"بند کریں",
     "nextMonthTooltip": r"اگلا مھینہ",
     "previousMonthTooltip": r"پچھلا مھینہ",
+    "nextPageTooltip": r"اگلا صفحہ",
+    "previousPageTooltip": r"سابقہ ​​صفحہ",
+    "showMenuTooltip": r"مینو دکھائیں",
     "licensesPageTitle": r"لائسنس",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow کے $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow میں سے $rowCount تقریبا",
+    "rowsPerPageTitle": r"رویوں فی صفحہ:",
+    "selectedRowCountTitleOther": r"$selectedRowCount منتخب کردہ اشیاء",
     "cancelButtonLabel": r"منسوخ کریں",
     "closeButtonLabel": r"بند کریں",
     "continueButtonLabel": r"جاری رکھیں",
@@ -68,7 +89,14 @@
     "closeButtonTooltip": r"بنده",
     "nextMonthTooltip": r"بله میاشت",
     "previousMonthTooltip": r"تیره میاشت",
+    "nextPageTooltip": r"بله پاڼه",
+    "previousPageTooltip": r"مخکینی مخ",
+    "showMenuTooltip": r"غورنۍ ښودل",
     "licensesPageTitle": r"جوازونه",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow د $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow څخه $rowCount د",
+    "rowsPerPageTitle": r"د هرې پاڼې پاڼې:",
+    "selectedRowCountTitleOther": r"$selectedRowCount توکي غوره شوي",
     "cancelButtonLabel": r"لغوه کول",
     "closeButtonLabel": r"تړل",
     "continueButtonLabel": r"منځپانګې",
@@ -85,7 +113,14 @@
     "closeButtonTooltip": r"סגור",
     "nextMonthTooltip": r"חודש הבא",
     "previousMonthTooltip": r"חודש שעבר",
+    "nextPageTooltip": r"עמוד הבא",
+    "previousPageTooltip": r"עמוד קודם",
+    "showMenuTooltip": r"הצג תפריט",
     "licensesPageTitle": r"רישיונות",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow מתוך $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow מתוך כ $rowCount",
+    "rowsPerPageTitle": r"שורות לעמוד:",
+    "selectedRowCountTitleOther": r"$selectedRowCount פריטים שנבחרו",
     "cancelButtonLabel": r"ביטול",
     "closeButtonLabel": r"סגור",
     "continueButtonLabel": r"לְהַמשִׁיך",
@@ -102,7 +137,14 @@
     "closeButtonTooltip": r"إغلا",
     "nextMonthTooltip": r"الشهر القادم",
     "previousMonthTooltip": r"الشهر الماضى",
+    "nextPageTooltip": r"الصفحة التالية",
+    "previousPageTooltip": r"الصفحة السابقة",
+    "showMenuTooltip": r"قائمة العرض",
     "licensesPageTitle": r"التّراخيص",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow أو $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow من حوالي $rowCount",
+    "rowsPerPageTitle": r"الصفوف في الصفحة:",
+    "selectedRowCountTitleOther": r"$selectedRowCount العناصر المحددة",
     "cancelButtonLabel": r"إلغاء",
     "closeButtonLabel": r"أغلاق",
     "continueButtonLabel": r"استمر",
@@ -119,7 +161,14 @@
     "closeButtonTooltip": r"Chiudi",
     "nextMonthTooltip": r"Il prossimo mese",
     "previousMonthTooltip": r"Il mese scorso",
+    "nextPageTooltip": r"Pagina successiva",
+    "previousPageTooltip": r"Pagina precedente",
+    "showMenuTooltip": r"Mostra il menu",
     "licensesPageTitle": r"Licenze",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow di $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow di circa $rowCount",
+    "rowsPerPageTitle": r"Righe per pagina:",
+    "selectedRowCountTitleOther": r"$selectedRowCount selezionati",
     "cancelButtonLabel": r"ANNULLA",
     "closeButtonLabel": r"CHIUDI",
     "continueButtonLabel": r"CONTINUA",
@@ -136,7 +185,14 @@
     "closeButtonTooltip": r"Fechar",
     "nextMonthTooltip": r"Próximo mês",
     "previousMonthTooltip": r"Mês anterior",
+    "nextPageTooltip": r"Próxima página",
+    "previousPageTooltip": r"Página anterior",
+    "showMenuTooltip": r"Mostrar menu",
     "licensesPageTitle": r"Licenças",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow de $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow de cerca de $rowCount",
+    "rowsPerPageTitle": r"Linhas por página:",
+    "selectedRowCountTitleOther": r"$selectedRowCount selecionados",
     "cancelButtonLabel": r"CANCELAR",
     "closeButtonLabel": r"FECHAR",
     "continueButtonLabel": r"CONTINUAR",
@@ -153,7 +209,16 @@
     "closeButtonTooltip": r"Cerrar",
     "nextMonthTooltip": r"Próximo mes",
     "previousMonthTooltip": r"Mes anterior",
+    "nextPageTooltip": r"Siguiente página",
+    "previousPageTooltip": r"Pagina anterior",
+    "showMenuTooltip": r"Muestrame el menu",
     "licensesPageTitle": r"Licencias",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow de $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow de aproximadamente $rowCount",
+    "rowsPerPageTitle": r"Filas por página:",
+    "selectedRowCountTitleZero": r"No se han seleccionado elementos",
+    "selectedRowCountTitleOne": r"1 artículo seleccionado",
+    "selectedRowCountTitleOther": r"$selectedRowCount artículos seleccionados",
     "cancelButtonLabel": r"CANCELAR",
     "closeButtonLabel": r"CERRAR",
     "continueButtonLabel": r"CONTINUAR",
@@ -170,7 +235,16 @@
     "closeButtonTooltip": r"Fermer",
     "nextMonthTooltip": r"Mois Suivant",
     "previousMonthTooltip": r"Mois précédent",
+    "nextPageTooltip": r"Page suivante",
+    "previousPageTooltip": r"Page précédente",
+    "showMenuTooltip": r"Afficher le menu",
     "licensesPageTitle": r"Licences",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow de $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow d'environ $rowCount",
+    "rowsPerPageTitle": r"Lignes par page:",
+    "selectedRowCountTitleZero": r"Aucun élément sélectionné",
+    "selectedRowCountTitleOne": r"1 élément sélectionné",
+    "selectedRowCountTitleOther": r"$selectedRowCount éléments sélectionnés",
     "cancelButtonLabel": r"ANNULER",
     "closeButtonLabel": r"FERMER",
     "continueButtonLabel": r"CONTINUER",
@@ -187,7 +261,14 @@
     "closeButtonTooltip": r"关闭",
     "nextMonthTooltip": r"下一个月",
     "previousMonthTooltip": r"上一个月",
+    "nextPageTooltip": r"下一页",
+    "previousPageTooltip": r"上一页",
+    "showMenuTooltip": r"显示菜单",
     "licensesPageTitle": r"许可证",
+    "pageRowsInfoTitle": r"$rowCount中的$firstRow-$lastRow",
+    "pageRowsInfoTitleApproximate": r"约$rowCount中的$firstRow-$lastRow",
+    "rowsPerPageTitle": r"每页行数:",
+    "selectedRowCountTitleOther": r"$selectedRowCount行所选",
     "cancelButtonLabel": r"取消",
     "continueButtonLabel": r"继续",
     "closeButtonLabel": r"关闭",
@@ -204,7 +285,16 @@
     "closeButtonTooltip": r"Close",
     "nextMonthTooltip": r"Next month",
     "previousMonthTooltip": r"Previous month",
+    "nextPageTooltip": r"Next page",
+    "previousPageTooltip": r"Previous page",
+    "showMenuTooltip": r"Show menu",
     "licensesPageTitle": r"Licenses",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow of $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow of about $rowCount",
+    "rowsPerPageTitle": r"Rows per page:",
+    "selectedRowCountTitleZero": r"No items selected",
+    "selectedRowCountTitleOne": r"1 item selected",
+    "selectedRowCountTitleOther": r"$selectedRowCount items selected",
     "cancelButtonLabel": r"CANCEL",
     "closeButtonLabel": r"CLOSE",
     "continueButtonLabel": r"CONTINUE",
@@ -221,7 +311,16 @@
     "closeButtonTooltip": r"Schließen",
     "nextMonthTooltip": r"Nächster Monat",
     "previousMonthTooltip": r"Vorheriger Monat",
+    "nextPageTooltip": r"Nächste Seite",
+    "previousPageTooltip": r"Vorherige Seite",
+    "showMenuTooltip": r"Menü anzeigen",
     "licensesPageTitle": r"Lizenzen",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow von $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow von etwa $rowCount",
+    "rowsPerPageTitle": r"Zeilen pro Seite:",
+    "selectedRowCountTitleZero": r"Keine Objekte ausgewählt",
+    "selectedRowCountTitleOne": r"1 Objekt ausgewählt",
+    "selectedRowCountTitleOther": r"$selectedRowCount Objekte ausgewählt",
     "cancelButtonLabel": r"ABBRECHEN",
     "closeButtonLabel": r"SCHLIESSEN",
     "continueButtonLabel": r"FORTSETZEN",
@@ -238,7 +337,14 @@
     "closeButtonTooltip": r"閉じる",
     "nextMonthTooltip": r"前の月へ",
     "previousMonthTooltip": r"前の月へ",
+    "nextPageTooltip": r"次のページ",
+    "previousPageTooltip": r"前のページ",
+    "showMenuTooltip": r"メニューを表示",
     "licensesPageTitle": r"ライセンス",
+    "pageRowsInfoTitle": r"$rowCount行中の$firstRow–$lastRow",
+    "pageRowsInfoTitleApproximate": r"約$rowCount行中の$firstRow–$lastRow",
+    "rowsPerPageTitle": r"1ページあたりの行数:",
+    "selectedRowCountTitleOther": r"$selectedRowCount個のアイテムが選択されています",
     "cancelButtonLabel": r"キャンセル",
     "closeButtonLabel": r"閉じる",
     "continueButtonLabel": r"次へ",
@@ -255,7 +361,14 @@
     "closeButtonTooltip": r"Закрыть",
     "nextMonthTooltip": r"В следующем месяце",
     "previousMonthTooltip": r"Предыдущий месяц",
+    "nextPageTooltip": r"Следущая страница",
+    "previousPageTooltip": r"Предыдущая страница",
+    "showMenuTooltip": r"Показать меню",
+    "pageRowsInfoTitle": r"$firstRow–$lastRow из $rowCount",
+    "pageRowsInfoTitleApproximate": r"$firstRow–$lastRow около $rowCount",
+    "rowsPerPageTitle": r"Строки на страницу:",
     "licensesPageTitle": r"Лицензии",
+    "selectedRowCountTitleOther": r"$selectedRowCount выбранные предметы",
     "cancelButtonLabel": r"ОТМЕНА",
     "closeButtonLabel": r"ЗАКРЫТЬ",
     "continueButtonLabel": r"ПРОДОЛЖАТЬ",
diff --git a/packages/flutter/lib/src/material/i18n/material_ar.arb b/packages/flutter/lib/src/material/i18n/material_ar.arb
index 3eb1bd8..0131a4f 100644
--- a/packages/flutter/lib/src/material/i18n/material_ar.arb
+++ b/packages/flutter/lib/src/material/i18n/material_ar.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "إغلا",
   "nextMonthTooltip": "الشهر القادم",
   "previousMonthTooltip": "الشهر الماضى",
+  "nextPageTooltip": "الصفحة التالية",
+  "previousPageTooltip": "الصفحة السابقة",
+  "showMenuTooltip": "قائمة العرض",
   "licensesPageTitle": "التّراخيص",
+  "pageRowsInfoTitle": "$firstRow–$lastRow أو $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow من حوالي $rowCount",
+  "rowsPerPageTitle": "الصفوف في الصفحة:",
+  "selectedRowCountTitleOther": "$selectedRowCount العناصر المحددة",
   "cancelButtonLabel": "إلغاء",
   "closeButtonLabel": "أغلاق",
   "continueButtonLabel": "استمر",
diff --git a/packages/flutter/lib/src/material/i18n/material_de.arb b/packages/flutter/lib/src/material/i18n/material_de.arb
index 0786a2e..0effd07 100644
--- a/packages/flutter/lib/src/material/i18n/material_de.arb
+++ b/packages/flutter/lib/src/material/i18n/material_de.arb
@@ -4,7 +4,17 @@
   "closeButtonTooltip": "Schließen",
   "nextMonthTooltip": "Nächster Monat",
   "previousMonthTooltip": "Vorheriger Monat",
+  "nextPageTooltip": "Nächste Seite",
+  "previousPageTooltip": "Vorherige Seite",
+  "showMenuTooltip": "Menü anzeigen",
   "licensesPageTitle": "Lizenzen",
+  "pageRowsInfoTitle": "$firstRow–$lastRow von $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow von etwa $rowCount",
+  "rowsPerPageTitle": "Zeilen pro Seite:",
+
+  "selectedRowCountTitleZero": "Keine Objekte ausgewählt",
+  "selectedRowCountTitleOne": "1 Objekt ausgewählt",
+  "selectedRowCountTitleOther": "$selectedRowCount Objekte ausgewählt",
   "cancelButtonLabel": "ABBRECHEN",
   "closeButtonLabel": "SCHLIESSEN",
   "continueButtonLabel": "FORTSETZEN",
diff --git a/packages/flutter/lib/src/material/i18n/material_en.arb b/packages/flutter/lib/src/material/i18n/material_en.arb
index 4d2b59c..b70b5a4 100644
--- a/packages/flutter/lib/src/material/i18n/material_en.arb
+++ b/packages/flutter/lib/src/material/i18n/material_en.arb
@@ -29,12 +29,51 @@
     "type": "text"
   },
 
+  "nextPageTooltip": "Next page",
+  "@nextMonthTooltip": {
+    "description": "The tooltip for the [PaginatedDataTables]'s 'next page' button.",
+    "type": "text"
+  },
+
+  "previousPageTooltip": "Previous page",
+  "@previousMonthTooltip": {
+    "description": "The tooltip for the PaginatedDataTables's 'previous page' button.",
+    "type": "text"
+  },
+
+  "showMenuTooltip": "Show menu",
+  "@showMenuTooltip": {
+    "description": "The default PopupMenuButton tooltip",
+    "type": "text"
+  },
+
   "licensesPageTitle": "Licenses",
   "@licensesPageTitle": {
     "description": "The title for the Flutter licenses page.",
     "type": "text"
   },
 
+  "pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
+  "@pageRowInfoTitle": {
+    "description": "Title for the [PaginatedDataTable]'s row info footer",
+    "type": "text"
+  },
+
+  "rowsPerPageTitle": "Rows per page:",
+  "@rowsPerPageTitle": {
+    "description": "Title for the [PaginatedDataTable]'s 'rows per page' footer.",
+    "type": "text"
+  },
+
+  "selectedRowCountTitleZero": "No items selected",
+  "selectedRowCountTitleOne": "1 item selected",
+  "selectedRowCountTitleOther": "$selectedRowCount items selected",
+  "@selectedRowCountTitle": {
+    "description": "Title for the PaginatedDataTable's selected row count header",
+    "type": "text"
+  },
+
   "cancelButtonLabel": "CANCEL",
   "@cancelButtonLabel": {
     "description": "The label for cancel buttons and menu items.",
diff --git a/packages/flutter/lib/src/material/i18n/material_es.arb b/packages/flutter/lib/src/material/i18n/material_es.arb
index 1f82f9a..3e0bcf4 100644
--- a/packages/flutter/lib/src/material/i18n/material_es.arb
+++ b/packages/flutter/lib/src/material/i18n/material_es.arb
@@ -4,7 +4,16 @@
   "closeButtonTooltip": "Cerrar",
   "nextMonthTooltip": "Próximo mes",
   "previousMonthTooltip": "Mes anterior",
+  "nextPageTooltip": "Siguiente página",
+  "previousPageTooltip": "Pagina anterior",
+  "showMenuTooltip": "Muestrame el menu",
   "licensesPageTitle": "Licencias",
+  "pageRowsInfoTitle": "$firstRow–$lastRow de $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow de aproximadamente $rowCount",
+  "rowsPerPageTitle": "Filas por página:",
+  "selectedRowCountTitleZero": "No se han seleccionado elementos",
+  "selectedRowCountTitleOne": "1 artículo seleccionado",
+  "selectedRowCountTitleOther": "$selectedRowCount artículos seleccionados",
   "cancelButtonLabel": "CANCELAR",
   "closeButtonLabel": "CERRAR",
   "continueButtonLabel": "CONTINUAR",
diff --git a/packages/flutter/lib/src/material/i18n/material_fa.arb b/packages/flutter/lib/src/material/i18n/material_fa.arb
index 3755368..3667470 100644
--- a/packages/flutter/lib/src/material/i18n/material_fa.arb
+++ b/packages/flutter/lib/src/material/i18n/material_fa.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "بستن",
   "nextMonthTooltip": "ماه بعد",
   "previousMonthTooltip": "ماه گذشته",
+  "nextPageTooltip": "صفحه بعد",
+  "previousPageTooltip": "صفحه قبلی",
+  "showMenuTooltip": "نمایش منو",
   "licensesPageTitle": "مجوز",
+  "pageRowsInfoTitle": "$firstRow–$lastRow از $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow از حدود $rowCount",
+  "rowsPerPageTitle": "ردیف در صفحه:",
+  "selectedRowCountTitleOther": "$selectedRowCount آیتم های انتخاب شده",
   "cancelButtonLabel": "لغو",
   "closeButtonLabel": "بستن",
   "continueButtonLabel": "ادامه دهید",
diff --git a/packages/flutter/lib/src/material/i18n/material_fr.arb b/packages/flutter/lib/src/material/i18n/material_fr.arb
index 0482f39..6d86a3b 100644
--- a/packages/flutter/lib/src/material/i18n/material_fr.arb
+++ b/packages/flutter/lib/src/material/i18n/material_fr.arb
@@ -4,7 +4,16 @@
   "closeButtonTooltip": "Fermer",
   "nextMonthTooltip": "Mois Suivant",
   "previousMonthTooltip": "Mois précédent",
+  "nextPageTooltip": "Page suivante",
+  "previousPageTooltip": "Page précédente",
+  "showMenuTooltip": "Afficher le menu",
   "licensesPageTitle": "Licences",
+  "pageRowsInfoTitle": "$firstRow–$lastRow de $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow d'environ $rowCount",
+  "rowsPerPageTitle": "Lignes par page:",
+  "selectedRowCountTitleZero": "Aucun élément sélectionné",
+  "selectedRowCountTitleOne": "1 élément sélectionné",
+  "selectedRowCountTitleOther": "$selectedRowCount éléments sélectionnés",
   "cancelButtonLabel": "ANNULER",
   "closeButtonLabel": "FERMER",
   "continueButtonLabel": "CONTINUER",
diff --git a/packages/flutter/lib/src/material/i18n/material_he.arb b/packages/flutter/lib/src/material/i18n/material_he.arb
index 4b7f988..81217c2 100644
--- a/packages/flutter/lib/src/material/i18n/material_he.arb
+++ b/packages/flutter/lib/src/material/i18n/material_he.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "סגור",
   "nextMonthTooltip": "חודש הבא",
   "previousMonthTooltip": "חודש שעבר",
+  "nextPageTooltip": "עמוד הבא",
+  "previousPageTooltip": "עמוד קודם",
+  "showMenuTooltip": "הצג תפריט",
   "licensesPageTitle": "רישיונות",
+  "pageRowsInfoTitle": "$firstRow–$lastRow מתוך $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow מתוך כ $rowCount",
+  "rowsPerPageTitle": "שורות לעמוד:",
+  "selectedRowCountTitleOther": "$selectedRowCount פריטים שנבחרו",
   "cancelButtonLabel": "ביטול",
   "closeButtonLabel": "סגור",
   "continueButtonLabel": "לְהַמשִׁיך",
diff --git a/packages/flutter/lib/src/material/i18n/material_it.arb b/packages/flutter/lib/src/material/i18n/material_it.arb
index a3b3429..921331c 100644
--- a/packages/flutter/lib/src/material/i18n/material_it.arb
+++ b/packages/flutter/lib/src/material/i18n/material_it.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "Chiudi",
   "nextMonthTooltip": "Il prossimo mese",
   "previousMonthTooltip": "Il mese scorso",
+  "nextPageTooltip": "Pagina successiva",
+  "previousPageTooltip": "Pagina precedente",
+  "showMenuTooltip": "Mostra il menu",
   "licensesPageTitle": "Licenze",
+  "pageRowsInfoTitle": "$firstRow–$lastRow di $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow di circa $rowCount",
+  "rowsPerPageTitle": "Righe per pagina:",
+  "selectedRowCountTitleOther": "$selectedRowCount selezionati",
   "cancelButtonLabel": "ANNULLA",
   "closeButtonLabel": "CHIUDI",
   "continueButtonLabel": "CONTINUA",
diff --git a/packages/flutter/lib/src/material/i18n/material_ja.arb b/packages/flutter/lib/src/material/i18n/material_ja.arb
index f00368c..e459a9b 100644
--- a/packages/flutter/lib/src/material/i18n/material_ja.arb
+++ b/packages/flutter/lib/src/material/i18n/material_ja.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "閉じる",
   "nextMonthTooltip": "前の月へ",
   "previousMonthTooltip": "前の月へ",
+  "nextPageTooltip": "次のページ",
+  "previousPageTooltip": "前のページ",
+  "showMenuTooltip": "メニューを表示",
   "licensesPageTitle": "ライセンス",
+  "pageRowsInfoTitle": "$rowCount行中の$firstRow–$lastRow",
+  "pageRowsInfoTitleApproximate": "約$rowCount行中の$firstRow–$lastRow",
+  "rowsPerPageTitle": "1ページあたりの行数:",
+  "selectedRowCountTitleOther": "$selectedRowCount個のアイテムが選択されています",
   "cancelButtonLabel": "キャンセル",
   "closeButtonLabel": "閉じる",
   "continueButtonLabel": "次へ",
diff --git a/packages/flutter/lib/src/material/i18n/material_ps.arb b/packages/flutter/lib/src/material/i18n/material_ps.arb
index 0202074..3e5bd34 100644
--- a/packages/flutter/lib/src/material/i18n/material_ps.arb
+++ b/packages/flutter/lib/src/material/i18n/material_ps.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "بنده",
   "nextMonthTooltip": "بله میاشت",
   "previousMonthTooltip": "تیره میاشت",
+  "nextPageTooltip": "بله پاڼه",
+  "previousPageTooltip": "مخکینی مخ",
+  "showMenuTooltip": "غورنۍ ښودل",
   "licensesPageTitle": "جوازونه",
+  "pageRowsInfoTitle": "$firstRow–$lastRow د $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow څخه $rowCount د",
+  "rowsPerPageTitle": "د هرې پاڼې پاڼې:",
+  "selectedRowCountTitleOther": "$selectedRowCount توکي غوره شوي",
   "cancelButtonLabel": "لغوه کول",
   "closeButtonLabel": "تړل",
   "continueButtonLabel": "منځپانګې",
@@ -14,4 +21,4 @@
   "pasteButtonLabel": "پیټ کړئ",
   "selectAllButtonLabel": "غوره کړئ",
   "viewLicensesButtonLabel": "لیدلس وګورئ"
-}
\ No newline at end of file
+}
diff --git a/packages/flutter/lib/src/material/i18n/material_pt.arb b/packages/flutter/lib/src/material/i18n/material_pt.arb
index cc50b28..3ba5fbe 100644
--- a/packages/flutter/lib/src/material/i18n/material_pt.arb
+++ b/packages/flutter/lib/src/material/i18n/material_pt.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "Fechar",
   "nextMonthTooltip": "Próximo mês",
   "previousMonthTooltip": "Mês anterior",
+  "nextPageTooltip": "Próxima página",
+  "previousPageTooltip": "Página anterior",
+  "showMenuTooltip": "Mostrar menu",
   "licensesPageTitle": "Licenças",
+  "pageRowsInfoTitle": "$firstRow–$lastRow de $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow de cerca de $rowCount",
+  "rowsPerPageTitle": "Linhas por página:",
+  "selectedRowCountTitleOther": "$selectedRowCount selecionados",
   "cancelButtonLabel": "CANCELAR",
   "closeButtonLabel": "FECHAR",
   "continueButtonLabel": "CONTINUAR",
diff --git a/packages/flutter/lib/src/material/i18n/material_ru.arb b/packages/flutter/lib/src/material/i18n/material_ru.arb
index 14da322..9d04160 100644
--- a/packages/flutter/lib/src/material/i18n/material_ru.arb
+++ b/packages/flutter/lib/src/material/i18n/material_ru.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "Закрыть",
   "nextMonthTooltip": "В следующем месяце",
   "previousMonthTooltip": "Предыдущий месяц",
+  "nextPageTooltip": "Следущая страница",
+  "previousPageTooltip": "Предыдущая страница",
+  "showMenuTooltip": "Показать меню",
+  "pageRowsInfoTitle": "$firstRow–$lastRow из $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow около $rowCount",
+  "rowsPerPageTitle": "Строки на страницу:",
   "licensesPageTitle": "Лицензии",
+  "selectedRowCountTitleOther": "$selectedRowCount выбранные предметы",
   "cancelButtonLabel": "ОТМЕНА",
   "closeButtonLabel": "ЗАКРЫТЬ",
   "continueButtonLabel": "ПРОДОЛЖАТЬ",
diff --git a/packages/flutter/lib/src/material/i18n/material_sd.arb b/packages/flutter/lib/src/material/i18n/material_sd.arb
index 9904b98..e7e60ea 100644
--- a/packages/flutter/lib/src/material/i18n/material_sd.arb
+++ b/packages/flutter/lib/src/material/i18n/material_sd.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "بند ڪريو",
   "nextMonthTooltip": "ايندڙ مهيني",
   "previousMonthTooltip": "پويون مهينو",
+  "nextPageTooltip": "اڳيون پيج",
+  "previousPageTooltip": "پويون صفحو",
+  "showMenuTooltip": "ڏيکاريو",
   "licensesPageTitle": "لائسنس",
+  "pageRowsInfoTitle": "$firstRow–$lastRow جي $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow کان $rowCount تقريبن",
+  "rowsPerPageTitle": "رني پاسي وارو صفحو",
+  "selectedRowCountTitleOther": "$selectedRowCount شيون چونڊيل",
   "cancelButtonLabel": "منسوخ ڪيو",
   "closeButtonLabel": "بند ڪريو",
   "continueButtonLabel": "جاري رکو",
diff --git a/packages/flutter/lib/src/material/i18n/material_ur.arb b/packages/flutter/lib/src/material/i18n/material_ur.arb
index 8b22fb1..d30ae69 100644
--- a/packages/flutter/lib/src/material/i18n/material_ur.arb
+++ b/packages/flutter/lib/src/material/i18n/material_ur.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "بند کریں",
   "nextMonthTooltip": "اگلا مھینہ",
   "previousMonthTooltip": "پچھلا مھینہ",
+  "nextPageTooltip": "اگلا صفحہ",
+  "previousPageTooltip": "سابقہ ​​صفحہ",
+  "showMenuTooltip": "مینو دکھائیں",
   "licensesPageTitle": "لائسنس",
+  "pageRowsInfoTitle": "$firstRow–$lastRow کے $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow میں سے $rowCount تقریبا",
+  "rowsPerPageTitle": "رویوں فی صفحہ:",
+  "selectedRowCountTitleOther": "$selectedRowCount منتخب کردہ اشیاء",
   "cancelButtonLabel": "منسوخ کریں",
   "closeButtonLabel": "بند کریں",
   "continueButtonLabel": "جاری رکھیں",
diff --git a/packages/flutter/lib/src/material/i18n/material_zh.arb b/packages/flutter/lib/src/material/i18n/material_zh.arb
index 9f698a6..11fb38e 100644
--- a/packages/flutter/lib/src/material/i18n/material_zh.arb
+++ b/packages/flutter/lib/src/material/i18n/material_zh.arb
@@ -4,7 +4,14 @@
   "closeButtonTooltip": "关闭",
   "nextMonthTooltip": "下一个月",
   "previousMonthTooltip": "上一个月",
+  "nextPageTooltip": "下一页",
+  "previousPageTooltip": "上一页",
+  "showMenuTooltip": "显示菜单",
   "licensesPageTitle": "许可证",
+  "pageRowsInfoTitle": "$rowCount中的$firstRow-$lastRow",
+  "pageRowsInfoTitleApproximate": "约$rowCount中的$firstRow-$lastRow",
+  "rowsPerPageTitle": "每页行数:",
+  "selectedRowCountTitleOther": "$selectedRowCount行所选",
   "cancelButtonLabel": "取消",
   "continueButtonLabel": "继续",
   "closeButtonLabel": "关闭",
diff --git a/packages/flutter/lib/src/material/material_localizations.dart b/packages/flutter/lib/src/material/material_localizations.dart
index 54e393a..73273f8 100644
--- a/packages/flutter/lib/src/material/material_localizations.dart
+++ b/packages/flutter/lib/src/material/material_localizations.dart
@@ -6,6 +6,7 @@
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter/widgets.dart';
+import 'package:intl/intl.dart';
 
 import 'i18n/localizations.dart';
 
@@ -16,7 +17,7 @@
 ///  * [DefaultMaterialLocalizations], which implements this interface
 ///    and supports a variety of locales.
 abstract class MaterialLocalizations {
-  /// The tooltip for the leading [AppBar] menu (aka 'hamburger') button
+  /// The tooltip for the leading [AppBar] menu (aka 'hamburger') button.
   String get openAppDrawerTooltip;
 
   /// The [BackButton]'s tooltip.
@@ -31,9 +32,27 @@
   /// The tooltip for the [MonthPicker]'s "previous month" button.
   String get previousMonthTooltip;
 
+  /// The tooltip for the [PaginatedDataTables]'s "next page" button.
+  String get nextPageTooltip;
+
+  /// The tooltip for the [PaginatedDataTables]'s "previous page" button.
+  String get previousPageTooltip;
+
+  /// The default [PopupMenuButton] tooltip.
+  String get showMenuTooltip;
+
   /// Title for the [LicensePage] widget.
   String get licensesPageTitle;
 
+  /// Title for the [PaginatedDataTable]'s row info footer.
+  String pageRowsInfoTitle(int firstRow, int lastRow, int rowCount, bool rowCountIsApproximate);
+
+  /// Title for the [PaginatedDataTable]'s "rows per page" footer.
+  String get rowsPerPageTitle;
+
+  /// Title for the PaginatedDataTable's selected row count header.
+  String selectedRowCountTitle(int selectedRowCount);
+
   /// Label for "cancel" buttons and menu items.
   String get cancelButtonLabel;
 
@@ -87,7 +106,7 @@
   /// function, rather than constructing this class directly.
   DefaultMaterialLocalizations(this.locale) {
     assert(locale != null);
-    _nameToValue = localizations[locale.toString()]
+    _nameToValue = localizations[_localeName]
       ?? localizations[locale.languageCode]
       ?? localizations['en']
       ?? <String, String>{};
@@ -99,50 +118,111 @@
   /// have been translated.
   final Locale locale;
 
-  @override
-  String get openAppDrawerTooltip => _nameToValue["openAppDrawerTooltip"];
+  String get _localeName {
+    final String localeName = locale.countryCode.isEmpty ? locale.languageCode : locale.toString();
+    return Intl.canonicalizedLocale(localeName);
+  }
+
+  // TODO(hmuller): the rules for mapping from an integer value to
+  // "one" or "two" etc. are locale specific and an additional "few" category
+  // is needed. See http://cldr.unicode.org/index/cldr-spec/plural-rules
+  String _nameToPluralValue(int count, String key) {
+    String text;
+    if (count == 0)
+      text = _nameToValue['${key}Zero'];
+    else if (count == 1)
+      text = _nameToValue['${key}One'];
+    else if (count == 2)
+      text = _nameToValue['${key}Two'];
+    else if (count > 2)
+      text = _nameToValue['${key}Many'];
+    text ??= _nameToValue['${key}Other'];
+    assert(text != null);
+    return text;
+  }
+
+  String _formatInteger(int n) {
+    final String localeName = _localeName;
+    if (!NumberFormat.localeExists(localeName))
+      return n.toString();
+    return new NumberFormat.decimalPattern(localeName).format(n);
+
+  }
 
   @override
-  String get backButtonTooltip => _nameToValue["backButtonTooltip"];
+  String get openAppDrawerTooltip => _nameToValue['openAppDrawerTooltip'];
 
   @override
-  String get closeButtonTooltip => _nameToValue["closeButtonTooltip"];
+  String get backButtonTooltip => _nameToValue['backButtonTooltip'];
 
   @override
-  String get nextMonthTooltip => _nameToValue["nextMonthTooltip"];
+  String get closeButtonTooltip => _nameToValue['closeButtonTooltip'];
 
   @override
-  String get previousMonthTooltip => _nameToValue["previousMonthTooltip"];
+  String get nextMonthTooltip => _nameToValue['nextMonthTooltip'];
 
   @override
-  String get licensesPageTitle => _nameToValue["licensesPageTitle"];
+  String get previousMonthTooltip => _nameToValue['previousMonthTooltip'];
 
   @override
-  String get cancelButtonLabel => _nameToValue["cancelButtonLabel"];
+  String get nextPageTooltip => _nameToValue['nextPageTooltip'];
 
   @override
-  String get closeButtonLabel => _nameToValue["closeButtonLabel"];
+  String get previousPageTooltip => _nameToValue['previousPageTooltip'];
 
   @override
-  String get continueButtonLabel => _nameToValue["continueButtonLabel"];
+  String get showMenuTooltip => _nameToValue['showMenuTooltip'];
 
   @override
-  String get copyButtonLabel => _nameToValue["copyButtonLabel"];
+  String get licensesPageTitle => _nameToValue['licensesPageTitle'];
 
   @override
-  String get cutButtonLabel => _nameToValue["cutButtonLabel"];
+  String pageRowsInfoTitle(int firstRow, int lastRow, int rowCount, bool rowCountIsApproximate) {
+    String text = rowCountIsApproximate ? _nameToValue['pageRowsInfoTitleApproximate'] : null;
+    text ??= _nameToValue['pageRowsInfoTitle'];
+    assert(text != null, 'A $locale localization was not found for pageRowsInfoTitle or pageRowsInfoTitleApproximate');
+    // TODO(hansmuller): this could be more efficient.
+    return text
+      .replaceFirst(r'$firstRow', _formatInteger(firstRow))
+      .replaceFirst(r'$lastRow', _formatInteger(lastRow))
+      .replaceFirst(r'$rowCount', _formatInteger(rowCount));
+  }
 
   @override
-  String get okButtonLabel => _nameToValue["okButtonLabel"];
+  String get rowsPerPageTitle => _nameToValue['rowsPerPageTitle'];
 
   @override
-  String get pasteButtonLabel => _nameToValue["pasteButtonLabel"];
+  String selectedRowCountTitle(int selectedRowCount) {
+    return _nameToPluralValue(selectedRowCount, 'selectedRowCountTitle') // asserts on no match
+      .replaceFirst(r'$selectedRowCount', _formatInteger(selectedRowCount));
+  }
 
   @override
-  String get selectAllButtonLabel => _nameToValue["selectAllButtonLabel"];
+  String get cancelButtonLabel => _nameToValue['cancelButtonLabel'];
 
   @override
-  String get viewLicensesButtonLabel => _nameToValue["viewLicensesButtonLabel"];
+  String get closeButtonLabel => _nameToValue['closeButtonLabel'];
+
+  @override
+  String get continueButtonLabel => _nameToValue['continueButtonLabel'];
+
+  @override
+  String get copyButtonLabel => _nameToValue['copyButtonLabel'];
+
+  @override
+  String get cutButtonLabel => _nameToValue['cutButtonLabel'];
+
+  @override
+  String get okButtonLabel => _nameToValue['okButtonLabel'];
+
+  @override
+  String get pasteButtonLabel => _nameToValue['pasteButtonLabel'];
+
+  @override
+  String get selectAllButtonLabel => _nameToValue['selectAllButtonLabel'];
+
+  @override
+  String get viewLicensesButtonLabel => _nameToValue['viewLicensesButtonLabel'];
 
   /// Creates an object that provides localized resource values for the
   /// for the widgets of the material library.
diff --git a/packages/flutter/lib/src/material/paginated_data_table.dart b/packages/flutter/lib/src/material/paginated_data_table.dart
index 7fc7620..64fedfb 100644
--- a/packages/flutter/lib/src/material/paginated_data_table.dart
+++ b/packages/flutter/lib/src/material/paginated_data_table.dart
@@ -16,6 +16,7 @@
 import 'dropdown.dart';
 import 'icon_button.dart';
 import 'icons.dart';
+import 'material_localizations.dart';
 import 'progress_indicator.dart';
 import 'theme.dart';
 
@@ -286,6 +287,7 @@
   Widget build(BuildContext context) {
     // TODO(ianh): This whole build function doesn't handle RTL yet.
     final ThemeData themeData = Theme.of(context);
+    final MaterialLocalizations localizations = MaterialLocalizations.of(context);
     // HEADER
     final List<Widget> headerWidgets = <Widget>[];
     double startPadding = 24.0;
@@ -300,11 +302,10 @@
         // TODO(ianh): Better magic. See https://github.com/flutter/flutter/issues/4460
         startPadding = 12.0;
       }
-    } else if (_selectedRowCount == 1) {
-      // TODO(ianh): Real l10n.
-      headerWidgets.add(const Expanded(child: const Text('1 item selected')));
     } else {
-      headerWidgets.add(new Expanded(child: new Text('$_selectedRowCount items selected')));
+      headerWidgets.add(new Expanded(
+        child: new Text(localizations.selectedRowCountTitle(_selectedRowCount)),
+      ));
     }
     if (widget.actions != null) {
       headerWidgets.addAll(
@@ -332,7 +333,7 @@
         })
         .toList();
       footerWidgets.addAll(<Widget>[
-        const Text('Rows per page:'),
+        new Text(localizations.rowsPerPageTitle),
         new DropdownButtonHideUnderline(
           child: new DropdownButton<int>(
             items: availableRowsPerPage,
@@ -347,20 +348,25 @@
     footerWidgets.addAll(<Widget>[
       new Container(width: 32.0),
       new Text(
-        '${_firstRowIndex + 1}\u2013${_firstRowIndex + widget.rowsPerPage} ${ _rowCountApproximate ? "of about" : "of" } $_rowCount'
+        localizations.pageRowsInfoTitle(
+          _firstRowIndex + 1,
+          _firstRowIndex + widget.rowsPerPage,
+          _rowCount,
+          _rowCountApproximate
+        )
       ),
       new Container(width: 32.0),
       new IconButton(
         icon: const Icon(Icons.chevron_left),
         padding: EdgeInsets.zero,
-        tooltip: 'Previous page',
+        tooltip: localizations.previousPageTooltip,
         onPressed: _firstRowIndex <= 0 ? null : _handlePrevious
       ),
       new Container(width: 24.0),
       new IconButton(
         icon: const Icon(Icons.chevron_right),
         padding: EdgeInsets.zero,
-        tooltip: 'Next page',
+        tooltip: localizations.nextPageTooltip,
         onPressed: (!_rowCountApproximate && (_firstRowIndex + widget.rowsPerPage >= _rowCount)) ? null : _handleNext
       ),
       new Container(width: 14.0),
diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart
index 9c48e1a..df4d446 100644
--- a/packages/flutter/lib/src/material/popup_menu.dart
+++ b/packages/flutter/lib/src/material/popup_menu.dart
@@ -14,6 +14,7 @@
 import 'ink_well.dart';
 import 'list_tile.dart';
 import 'material.dart';
+import 'material_localizations.dart';
 import 'theme.dart';
 
 // Examples can assume:
@@ -674,7 +675,7 @@
     @required this.itemBuilder,
     this.initialValue,
     this.onSelected,
-    this.tooltip: 'Show menu',
+    this.tooltip,
     this.elevation: 8.0,
     this.padding: const EdgeInsets.all(8.0),
     this.child,
@@ -765,7 +766,7 @@
       : new IconButton(
           icon: widget.icon ?? _getIcon(Theme.of(context).platform),
           padding: widget.padding,
-          tooltip: widget.tooltip,
+          tooltip: widget.tooltip ?? MaterialLocalizations.of(context).showMenuTooltip,
           onPressed: showButtonMenu,
         );
   }
diff --git a/packages/flutter/lib/src/widgets/app.dart b/packages/flutter/lib/src/widgets/app.dart
index f5b3885..4f01802 100644
--- a/packages/flutter/lib/src/widgets/app.dart
+++ b/packages/flutter/lib/src/widgets/app.dart
@@ -299,6 +299,21 @@
   Locale _locale;
 
   Locale _resolveLocale(Locale newLocale, Iterable<Locale> supportedLocales) {
+    // Android devices (Java really) report 3 deprecated language codes, see
+    // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4140555
+    // and https://developer.android.com/reference/java/util/Locale.html
+    switch(newLocale.languageCode) {
+      case 'iw':
+        newLocale = new Locale('he', newLocale.countryCode); // Hebrew
+        break;
+      case 'ji':
+        newLocale = new Locale('yi', newLocale.countryCode); // Yiddish
+        break;
+      case 'in':
+        newLocale = new Locale('id', newLocale.countryCode); // Indonesian
+        break;
+    }
+
     if (widget.localeResolutionCallback != null) {
       final Locale locale = widget.localeResolutionCallback(newLocale, widget.supportedLocales);
       if (locale != null)
diff --git a/packages/flutter/test/material/localizations_test.dart b/packages/flutter/test/material/localizations_test.dart
index a5067f6..73e2ecb 100644
--- a/packages/flutter/test/material/localizations_test.dart
+++ b/packages/flutter/test/material/localizations_test.dart
@@ -8,14 +8,15 @@
 Widget buildFrame({
   Locale locale,
   WidgetBuilder buildContent,
+  Iterable<Locale> supportedLocales: const <Locale>[
+    const Locale('en', 'US'),
+    const Locale('es', 'es'),
+  ],
 }) {
   return new MaterialApp(
     color: const Color(0xFFFFFFFF),
     locale: locale,
-    supportedLocales: const <Locale>[
-      const Locale('en', 'US'),
-      const Locale('es', 'es'),
-    ],
+    supportedLocales: supportedLocales,
     onGenerateRoute: (RouteSettings settings) {
       return new MaterialPageRoute<Null>(
         builder: (BuildContext context) {
@@ -77,12 +78,17 @@
     for (String language in languages) {
       final Locale locale = new Locale(language, '');
       final MaterialLocalizations localizations = new DefaultMaterialLocalizations(locale);
+
       expect(localizations.openAppDrawerTooltip, isNotNull);
       expect(localizations.backButtonTooltip, isNotNull);
       expect(localizations.closeButtonTooltip, isNotNull);
       expect(localizations.nextMonthTooltip, isNotNull);
       expect(localizations.previousMonthTooltip, isNotNull);
+      expect(localizations.nextPageTooltip, isNotNull);
+      expect(localizations.previousPageTooltip, isNotNull);
+      expect(localizations.showMenuTooltip, isNotNull);
       expect(localizations.licensesPageTitle, isNotNull);
+      expect(localizations.rowsPerPageTitle, isNotNull);
       expect(localizations.cancelButtonLabel, isNotNull);
       expect(localizations.closeButtonLabel, isNotNull);
       expect(localizations.continueButtonLabel, isNotNull);
@@ -92,6 +98,77 @@
       expect(localizations.pasteButtonLabel, isNotNull);
       expect(localizations.selectAllButtonLabel, isNotNull);
       expect(localizations.viewLicensesButtonLabel, isNotNull);
+
+      expect(localizations.selectedRowCountTitle(0), isNotNull);
+      expect(localizations.selectedRowCountTitle(1), isNotNull);
+      expect(localizations.selectedRowCountTitle(2), isNotNull);
+      expect(localizations.selectedRowCountTitle(100), isNotNull);
+      expect(localizations.selectedRowCountTitle(0).contains(r'$selectedRowCount'), isFalse);
+      expect(localizations.selectedRowCountTitle(1).contains(r'$selectedRowCount'), isFalse);
+      expect(localizations.selectedRowCountTitle(2).contains(r'$selectedRowCount'), isFalse);
+      expect(localizations.selectedRowCountTitle(100).contains(r'$selectedRowCount'), isFalse);
+
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, true), isNotNull);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, false), isNotNull);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, true).contains(r'$firstRow'), isFalse);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, true).contains(r'$lastRow'), isFalse);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, true).contains(r'$rowCount'), isFalse);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$firstRow'), isFalse);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$lastRow'), isFalse);
+      expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$rowCount'), isFalse);
     }
   });
+
+  testWidgets('spot check selectedRowCount translations', (WidgetTester tester) async {
+    MaterialLocalizations localizations = new DefaultMaterialLocalizations(const Locale('en', ''));
+    expect(localizations.selectedRowCountTitle(0), 'No items selected');
+    expect(localizations.selectedRowCountTitle(1), '1 item selected');
+    expect(localizations.selectedRowCountTitle(2), '2 items selected');
+    expect(localizations.selectedRowCountTitle(123456789), '123,456,789 items selected');
+
+    localizations = new DefaultMaterialLocalizations(const Locale('es', ''));
+    expect(localizations.selectedRowCountTitle(0), 'No se han seleccionado elementos');
+    expect(localizations.selectedRowCountTitle(1), '1 artículo seleccionado');
+    expect(localizations.selectedRowCountTitle(2), '2 artículos seleccionados');
+    expect(localizations.selectedRowCountTitle(123456789), '123.456.789 artículos seleccionados');
+  });
+
+  testWidgets('deprecated Android/Java locales are modernized', (WidgetTester tester) async {
+    final Key textKey = new UniqueKey();
+
+    await tester.pumpWidget(
+      buildFrame(
+        supportedLocales: <Locale>[
+          const Locale('en', 'US'),
+          const Locale('he', 'IL'),
+          const Locale('yi', 'IL'),
+          const Locale('id', 'JV'),
+        ],
+        buildContent: (BuildContext context) {
+          return new Text(
+            '${Localizations.localeOf(context)}',
+            key: textKey,
+          );
+        },
+      )
+    );
+
+    expect(tester.widget<Text>(find.byKey(textKey)).data, 'en_US');
+
+    // Hebrew was iw (ISO-639) is he (ISO-639-1)
+    await tester.binding.setLocale('iw', 'IL');
+    await tester.pump();
+    expect(tester.widget<Text>(find.byKey(textKey)).data, 'he_IL');
+
+    // Yiddish was ji (ISO-639) is yi (ISO-639-1)
+    await tester.binding.setLocale('ji', 'IL');
+    await tester.pump();
+    expect(tester.widget<Text>(find.byKey(textKey)).data, 'yi_IL');
+
+    // Indonesian was in (ISO-639) is id (ISO-639-1)
+    await tester.binding.setLocale('in', 'JV');
+    await tester.pump();
+    expect(tester.widget<Text>(find.byKey(textKey)).data, 'id_JV');
+  });
+
 }