Add support for the Malay (ms) locale (#17121)

diff --git a/packages/flutter_localizations/lib/src/l10n/localizations.dart b/packages/flutter_localizations/lib/src/l10n/localizations.dart
index b1a6aa1..1c4d57d 100644
--- a/packages/flutter_localizations/lib/src/l10n/localizations.dart
+++ b/packages/flutter_localizations/lib/src/l10n/localizations.dart
@@ -617,6 +617,52 @@
 }
 
 // ignore: camel_case_types
+class _Bundle_ms extends TranslationBundle {
+  const _Bundle_ms() : super(null);
+  @override String get scriptCategory => r'English-like';
+  @override String get timeOfDayFormat => r'h:mm a';
+  @override String get openAppDrawerTooltip => r'Buka menu navigasi';
+  @override String get backButtonTooltip => r'Kembali';
+  @override String get closeButtonTooltip => r'Tutup';
+  @override String get deleteButtonTooltip => r'Buang';
+  @override String get nextMonthTooltip => r'Bulan seterusnya';
+  @override String get previousMonthTooltip => r'Bulan sebelumnya';
+  @override String get nextPageTooltip => r'Halaman seterusnya';
+  @override String get previousPageTooltip => r'Halaman sebelumnya';
+  @override String get showMenuTooltip => r'Tunjuk menu';
+  @override String get aboutListTileTitle => r'Tentang $applicationName';
+  @override String get licensesPageTitle => r'Lesen';
+  @override String get pageRowsInfoTitle => r'$firstRow–$lastRow dari $rowCount';
+  @override String get pageRowsInfoTitleApproximate => r'$firstRow–$lastRow dari lebih kurang $rowCount';
+  @override String get rowsPerPageTitle => r'Baris setiap halaman:';
+  @override String get tabLabel => r'Tab $tabIndex dari $tabCount';
+  @override String get selectedRowCountTitleZero => r'Tiada item dipilih';
+  @override String get selectedRowCountTitleOne => r'1 item dipilih';
+  @override String get selectedRowCountTitleOther => r'$selectedRowCount item dipilih';
+  @override String get cancelButtonLabel => r'BATAL';
+  @override String get closeButtonLabel => r'TUTUP';
+  @override String get continueButtonLabel => r'TERUSKAN';
+  @override String get copyButtonLabel => r'SALIN';
+  @override String get cutButtonLabel => r'POTONG';
+  @override String get okButtonLabel => r'OK';
+  @override String get pasteButtonLabel => r'TAMPAL';
+  @override String get selectAllButtonLabel => r'PILIH SEMUA';
+  @override String get viewLicensesButtonLabel => r'LIHAT LESEN';
+  @override String get anteMeridiemAbbreviation => r'PG';
+  @override String get postMeridiemAbbreviation => r'PTG';
+  @override String get timePickerHourModeAnnouncement => r'Pilih jam';
+  @override String get timePickerMinuteModeAnnouncement => r'Pilih minit';
+  @override String get modalBarrierDismissLabel => r'Abai';
+  @override String get signedInLabel => r'Telah daftar masuk';
+  @override String get hideAccountsLabel => r'Sembunyi akaun';
+  @override String get showAccountsLabel => r'Tunjuk akaun';
+  @override String get drawerLabel => r'Menu navigasi';
+  @override String get popupMenuLabel => r'Menu pop timbul';
+  @override String get dialogLabel => r'Dialog';
+  @override String get alertDialogLabel => r'Amaran';
+}
+
+// ignore: camel_case_types
 class _Bundle_nl extends TranslationBundle {
   const _Bundle_nl() : super(null);
   @override String get scriptCategory => r'English-like';
@@ -1812,6 +1858,8 @@
       return const _Bundle_ja();
     case 'ko':
       return const _Bundle_ko();
+    case 'ms':
+      return const _Bundle_ms();
     case 'nl':
       return const _Bundle_nl();
     case 'no':
diff --git a/packages/flutter_localizations/lib/src/l10n/material_ms.arb b/packages/flutter_localizations/lib/src/l10n/material_ms.arb
new file mode 100644
index 0000000..e669f9a
--- /dev/null
+++ b/packages/flutter_localizations/lib/src/l10n/material_ms.arb
@@ -0,0 +1,43 @@
+{
+  "scriptCategory": "English-like",
+  "timeOfDayFormat": "h:mm a",
+  "openAppDrawerTooltip": "Buka menu navigasi",
+  "backButtonTooltip": "Kembali",
+  "closeButtonTooltip": "Tutup",
+  "deleteButtonTooltip": "Buang",
+  "nextMonthTooltip": "Bulan seterusnya",
+  "previousMonthTooltip": "Bulan sebelumnya",
+  "nextPageTooltip": "Halaman seterusnya",
+  "previousPageTooltip": "Halaman sebelumnya",
+  "showMenuTooltip": "Tunjuk menu",
+  "aboutListTileTitle": "Tentang $applicationName",
+  "licensesPageTitle": "Lesen",
+  "pageRowsInfoTitle": "$firstRow–$lastRow dari $rowCount",
+  "pageRowsInfoTitleApproximate": "$firstRow–$lastRow dari lebih kurang $rowCount",
+  "rowsPerPageTitle": "Baris setiap halaman:",
+  "tabLabel": "Tab $tabIndex dari $tabCount",
+  "selectedRowCountTitleZero": "Tiada item dipilih",
+  "selectedRowCountTitleOne": "1 item dipilih",
+  "selectedRowCountTitleOther": "$selectedRowCount item dipilih",
+  "cancelButtonLabel": "BATAL",
+  "closeButtonLabel": "TUTUP",
+  "continueButtonLabel": "TERUSKAN",
+  "copyButtonLabel": "SALIN",
+  "cutButtonLabel": "POTONG",
+  "okButtonLabel": "OK",
+  "pasteButtonLabel": "TAMPAL",
+  "selectAllButtonLabel": "PILIH SEMUA",
+  "viewLicensesButtonLabel": "LIHAT LESEN",
+  "anteMeridiemAbbreviation": "PG",
+  "postMeridiemAbbreviation": "PTG",
+  "timePickerHourModeAnnouncement": "Pilih jam",
+  "timePickerMinuteModeAnnouncement": "Pilih minit",
+  "modalBarrierDismissLabel": "Abai",
+  "signedInLabel": "Telah daftar masuk",
+  "hideAccountsLabel": "Sembunyi akaun",
+  "showAccountsLabel": "Tunjuk akaun",
+  "drawerLabel": "Menu navigasi",
+  "popupMenuLabel": "Menu pop timbul",
+  "dialogLabel": "Dialog",
+  "alertDialogLabel": "Amaran"
+}
diff --git a/packages/flutter_localizations/lib/src/material_localizations.dart b/packages/flutter_localizations/lib/src/material_localizations.dart
index a5b5164..2072fe8 100644
--- a/packages/flutter_localizations/lib/src/material_localizations.dart
+++ b/packages/flutter_localizations/lib/src/material_localizations.dart
@@ -50,6 +50,7 @@
 ///   * it - Italian
 ///   * ja - Japanese
 ///   * ko - Korean
+///   * ms - Malay
 ///   * nl - Dutch
 ///   * no - Norwegian
 ///   * pl - Polish
@@ -525,6 +526,7 @@
     'it', // Italian
     'ja', // Japanese
     'ko', // Korean
+    'ms', // Malay
     'nl', // Dutch
     'no', // Norwegian
     'pl', // Polish
diff --git a/packages/flutter_localizations/test/translations_test.dart b/packages/flutter_localizations/test/translations_test.dart
index 660a3d9..6d131bc 100644
--- a/packages/flutter_localizations/test/translations_test.dart
+++ b/packages/flutter_localizations/test/translations_test.dart
@@ -21,6 +21,7 @@
     'it', // Italian
     'ja', // Japanese
     'ko', // Korean
+    'ms', // Malay
     'nl', // Dutch
     'no', // Norwegian
     'pl', // Polish