Version 2.16.0-66.0.dev

Merge commit 'ae5def7b0d96043cd29115762afade0aba942f3c' into 'dev'
diff --git a/sdk/lib/io/platform.dart b/sdk/lib/io/platform.dart
index 06dd98f..296456f 100644
--- a/sdk/lib/io/platform.dart
+++ b/sdk/lib/io/platform.dart
@@ -75,9 +75,12 @@
 
   /// Get the name of the current locale.
   ///
-  /// The result should include a language and country code
-  /// (e.g. "en_US", "de_AT") and may include a character set
-  /// (e.g. "en_US.UTF-8").
+  /// The result usually consists of
+  ///  - a language (e.g., "en"), or
+  ///  - a language and country code (e.g. "en_US", "de_AT"), or
+  ///  - a language, country code and character set (e.g. "en_US.UTF-8").
+  ///
+  /// On macOS and iOS, the locale is taken from CFLocaleGetIdentifier.
   ///
   /// On Linux and Fushia, the locale is taken from the "LANG" environment
   /// variable, which may be set to any value. For example:
diff --git a/tests/standalone/io/platform_locale_name_test.dart b/tests/standalone/io/platform_locale_name_test.dart
index 611623d..aa5c2b9 100644
--- a/tests/standalone/io/platform_locale_name_test.dart
+++ b/tests/standalone/io/platform_locale_name_test.dart
@@ -8,11 +8,12 @@
 
 main() {
   // Match patterns like:
-  //    "en-US"                 (Android, iOS, MacOS, Windows)
+  //    "en"                    (MacOS)
+  //    "en-US"                 (Android, iOS, Windows)
   //    "en_US", "en_US.UTF-8"  (Linux)
   //    "ESP-USA"               (theoretically possible)
   // Assumes that the platform has a reasonably configured locale.
-  var localePattern = RegExp(r"[A-Za-z]{2,4}[_-][A-Za-z]{2}");
+  var localePattern = RegExp(r"[A-Za-z]{2,4}([_-][A-Za-z]{2})?");
   var localeName = Platform.localeName;
   Expect.isNotNull(
       localePattern.matchAsPrefix(localeName),
diff --git a/tests/standalone_2/io/platform_locale_name_test.dart b/tests/standalone_2/io/platform_locale_name_test.dart
index 5ad27ed..b615930 100644
--- a/tests/standalone_2/io/platform_locale_name_test.dart
+++ b/tests/standalone_2/io/platform_locale_name_test.dart
@@ -10,11 +10,12 @@
 
 main() {
   // Match patterns like:
-  //    "en-US"                 (Android, iOS, MacOS, Windows)
+  //    "en"                    (MacOS)
+  //    "en-US"                 (Android, iOS, Windows)
   //    "en_US", "en_US.UTF-8"  (Linux)
   //    "ESP-USA"               (theoretically possible)
   // Assumes that the platform has a reasonably configured locale.
-  var localePattern = RegExp(r"[A-Za-z]{2,4}[_-][A-Za-z]{2}");
+  var localePattern = RegExp(r"[A-Za-z]{2,4}([_-][A-Za-z]{2})?");
   var localeName = Platform.localeName;
   Expect.isNotNull(
       localePattern.matchAsPrefix(localeName),
diff --git a/tools/VERSION b/tools/VERSION
index d0ff84a..7f0dce2 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 65
+PRERELEASE 66
 PRERELEASE_PATCH 0
\ No newline at end of file