diff --git a/CHANGELOG.md b/CHANGELOG.md
index 750d93d..5fcade6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,8 +2,6 @@
  * Add an analysis_options.yaml and fix or suppress all the complaints from it.
  * Add unit tests using dart:ffi to compare formatting output to ICU.
  * Bump SDK requirements up to 2.5.0 for dart:ffi availability.
- * Canonicalize the locale in the Intl.defaultLocale setter, so e.g. 'en-US'
-   will get turned into the correct 'en_US'
  * Attempt to compensate for erratic errors in DateTime creation better, and add
    tests for the compensation.
  * Add a MessageFormat class. It can prepares strings for display to users,
diff --git a/analysis_options.yaml b/analysis_options.yaml
index e98bb02..76203fd 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,3 +1,89 @@
 analyzer:
   exclude:
-     - test/number_format_compact_icu_test.dart # broken due to ffi instability
+     - test/number_format_compact_icu_test.dart # TODO(240): Update for FFI changes
+
+errors:
+    dead_code: error
+    override_on_non_overriding_method: error
+    unused_element: error
+    unused_import: error
+    unused_local_variable: error
+linter:
+  rules:
+    - always_declare_return_types
+    - avoid_classes_with_only_static_members
+    - avoid_empty_else
+    - avoid_function_literals_in_foreach_calls
+    - avoid_init_to_null
+    - avoid_null_checks_in_equality_operators
+    - avoid_relative_lib_imports
+    - avoid_renaming_method_parameters
+    - avoid_return_types_on_setters
+    - avoid_returning_null_for_void
+    - avoid_shadowing_type_parameters
+    - avoid_single_cascade_in_expression_statements
+    - avoid_types_as_parameter_names
+    - avoid_unused_constructor_parameters
+    - await_only_futures
+    - camel_case_types
+    - cancel_subscriptions
+    - constant_identifier_names
+    - control_flow_in_finally
+    - curly_braces_in_flow_control_structures
+    - directives_ordering
+    - empty_catches
+    - empty_constructor_bodies
+    - empty_statements
+    - file_names
+    - hash_and_equals
+    - implementation_imports
+    - iterable_contains_unrelated_type
+    - library_names
+    - library_prefixes
+    - list_remove_unrelated_type
+    - literal_only_boolean_expressions
+    - no_duplicate_case_values
+    - non_constant_identifier_names
+    - null_closures
+    - omit_local_variable_types
+    - only_throw_errors
+    - overridden_fields
+    - package_api_docs
+    - package_names
+    - package_prefixed_library_names
+    - prefer_adjacent_string_concatenation
+    - prefer_conditional_assignment
+    - prefer_const_constructors
+    - prefer_contains
+    - prefer_equal_for_default_values
+    - prefer_final_fields
+    - prefer_generic_function_type_aliases
+    - prefer_initializing_formals
+    - prefer_interpolation_to_compose_strings
+    - prefer_iterable_whereType
+    - prefer_is_empty
+    - prefer_is_not_empty
+    - prefer_null_aware_operators
+    - prefer_single_quotes
+    - prefer_typing_uninitialized_variables
+    - recursive_getters
+    - slash_for_doc_comments
+    - test_types_in_equals
+    - throw_in_finally
+    - type_init_formals
+    - unawaited_futures
+    - unnecessary_brace_in_string_interps
+    - unnecessary_const
+    - unnecessary_getters_setters
+    - unnecessary_lambdas
+    - unnecessary_new
+    - unnecessary_null_aware_assignments
+    - unnecessary_null_in_if_null_operators
+    - unnecessary_parenthesis
+    - unnecessary_statements
+    - unnecessary_this
+    - unrelated_type_equality_checks
+    - use_function_type_syntax_for_parameters
+    - use_rethrow_when_possible
+    - valid_regexps
+    - void_checks
diff --git a/lib/intl.dart b/lib/intl.dart
index 7dc6f30..f4120c7 100644
--- a/lib/intl.dart
+++ b/lib/intl.dart
@@ -99,7 +99,7 @@
   }
 
   static set defaultLocale(String newLocale) {
-    _defaultLocale = newLocale == null ? null : canonicalizedLocale(newLocale);
+    _defaultLocale = newLocale;
   }
 
   static String _defaultLocale;
diff --git a/lib/src/intl_helpers.dart b/lib/src/intl_helpers.dart
index 57edee8..a807d97 100644
--- a/lib/src/intl_helpers.dart
+++ b/lib/src/intl_helpers.dart
@@ -22,8 +22,10 @@
   final F fallbackData;
   UninitializedLocaleData(this.message, this.fallbackData);
 
+  bool _isFallback(String key) => Intl.canonicalizedLocale(key) == 'en_US';
+
   F operator [](String key) =>
-      (key == 'en_US') ? fallbackData : _throwException();
+      _isFallback(key) ? fallbackData : _throwException();
 
   /// If a message is looked up before any locale initialization, record it,
   /// and throw an exception with that information once the locale is
@@ -66,7 +68,7 @@
 
   List<String> get keys => _throwException() as List<String>;
 
-  bool containsKey(String key) => (key == 'en_US') ? true : _throwException();
+  bool containsKey(String key) => _isFallback(key) ? true : _throwException();
 
   F _throwException() {
     throw LocaleDataException('Locale data has not been initialized'
