More Localizations (#12021)

This commit is contained in:
Hans Muller 2017-09-12 13:15:33 -07:00 committed by GitHub
parent 3e21c07087
commit 96a70e89b6
21 changed files with 469 additions and 33 deletions

View file

@ -17,7 +17,14 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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 @@ const Map<String, Map<String, String>> localizations = const <String, Map<String
"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"ПРОДОЛЖАТЬ",

View file

@ -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": "استمر",

View file

@ -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",

View file

@ -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.",

View file

@ -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",

View file

@ -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": "ادامه دهید",

View file

@ -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",

View file

@ -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": "לְהַמשִׁיך",

View file

@ -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",

View file

@ -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": "次へ",

View file

@ -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": "منځپانګې",

View file

@ -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",

View file

@ -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": "ПРОДОЛЖАТЬ",

View file

@ -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": "جاري رکو",

View file

@ -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": "جاری رکھیں",

View file

@ -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": "关闭",

View file

@ -6,6 +6,7 @@ import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'i18n/localizations.dart';
@ -16,7 +17,7 @@ import 'i18n/localizations.dart';
/// * [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 @@ abstract class MaterialLocalizations {
/// 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 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
/// 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 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
/// 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.

View file

@ -16,6 +16,7 @@ import 'data_table_source.dart';
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 @@ class PaginatedDataTableState extends State<PaginatedDataTable> {
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 @@ class PaginatedDataTableState extends State<PaginatedDataTable> {
// 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 @@ class PaginatedDataTableState extends State<PaginatedDataTable> {
})
.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 @@ class PaginatedDataTableState extends State<PaginatedDataTable> {
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),

View file

@ -14,6 +14,7 @@ import 'icons.dart';
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 @@ class PopupMenuButton<T> extends StatefulWidget {
@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 @@ class _PopupMenuButtonState<T> extends State<PopupMenuButton<T>> {
: 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,
);
}

View file

@ -299,6 +299,21 @@ class _WidgetsAppState extends State<WidgetsApp> implements WidgetsBindingObserv
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)

View file

@ -8,14 +8,15 @@ import 'package:flutter_test/flutter_test.dart';
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 @@ void main() {
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 @@ void main() {
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');
});
}