code: def decompose_locale(locale, strict=True):
          
          if locale is None:
              return ('eng', None)
  
          match = REGEX_LOCALE.match(locale)
          if match is None:
              if strict == True:
                  raise Locale.MalformedLocaleException()
              match = REGEX_JAVA_LOCALE.match(locale)
              if match is None:
                  raise Locale.MalformedLocaleException()
  
          (_, locale_language_code, locale_country_code, language_code) =  match.groups()
          return (locale_language_code, locale_country_code) if language_code is None \
              else (language_code, None)
docs: Return the decomposition of the specified locale into a language code
          and a country code.
  
  
          @param locale: a string representation of a locale, i.e., a ISO 639-3
              alpha-3 code (or alpha-2 code), optionally followed by a dash
              character ``-`` and a ISO 3166-1 alpha-2 code.  If ``None`` passed,
              the function returns the default locale, i.e., standard English
              ``('eng', None)``.
  
          @param strict: indicate whether the string representation of a locale
              has to be strictly compliant with RFC 4646, or whether a Java-
              style locale (character ``_`` instead of ``-``) is accepted.
  
  
          @return: a tuple ``(language_code, country_code)``, where the first
                   code represents a ISO 639-3 alpha-3 code (or alpha-2 code),
                   and the second code a ISO 3166-1 alpha-2 code.