There are so many little words all over the place! Drupal does not have one way of dealing with all those little things, but they fall into 3 categories.
1. The user interface
2. strings that were created by the admin
3. content submitted by users, usually nodes
Core: locale, content translation
Contrib: i18n, localization client
admin/settings/languages
Browser settings
Drupal user preferences
Path prefix: the language prefix appears in url
Domain name: you can use sub domains to switch