- Drupal needs to handle a concept of language even before locale module is enabled. Many of the language_*() functions are in bootstrap, language.inc, etc. and are used on all Drupal sites. The most prominent is language_default(), since we need a concept of language on all Drupal sites.
- Once you enable locale module, the language list however is managed by locale and is in the database. Functions become duplicated like language_list() and locale_language_list(). Saving a language is in the locale namespace: locale_language_save() - since it requires/uses database, when the default language is language_default(). Meh.
- Locale module does too much: manages list of languages, the selection from them in bootstrap/context, a UI translation feature and mass-import/export for that. We want to expand this in D8 with localization update module functionality (think automated feeding of the mass-import with up-to-date files from localize.drupal.org).
- Locale is a bad name. Locale module in fact does not handle any of the things that the industry calls locale, like timezones, currency formatting, first day of week, etc. Drupal handles these at other places and those are not language/culture dependent.
- We might or might not add (more) actual locale functionality in D8 core, so we might or might not going to have functionality in core that we can rightly call locale in terms of general industry naming conventions.
Figure out (a) if it makes sense to just rename locale module (b) split locale module into pieces (c) the name for the pieces.
Related issues, discussions
#1216094: We call too many things 'language', clean that up
#1272862: Clean up default language handling
#1266318: Make English a first class language
Language, langcode, locale, how do I name you? Plans for locale.module in Drupal 8.