Language settings
Language selection priority
This figure shows Moodle priority when selecting languages and should help you understand the relationship of the various settings for Site, Course, and User.
User preference
A user can set their preferred language via Preferences in the user menu (top right).
This list will show all installed language packs unless the site administrator has limited these in Site administration > Languages > Language settings > Languages on language menu in which case it will show only that list.
Course administration settings
A manager or teacher can force the language of their course in Course administration > Edit settings > Force language.
This list will show all installed language packs unless the site administrator has limited these in Site administration > Languages > Language settings > Languages on language menu in which case it will show only that list.
The capability moodle/site:forcelanguage may be allowed by the admin for users who need to override this language (for example, when testing problems in a course in a language they do not know.)
Site administration settings
Default language settings for a site are in Site administration > Language > Language settings.
Note that some settings on this page will only operate on the language packs already installed in the site, so you may need to install languages packs first.
Language autodetect
By default, Moodle detects a user's language from their browser setting. However, language auto-detection may be disabled so that the default site language is used instead.
Default language
This sets the default language for the site. All newly created user accounts will inherit this language as their default, unless you explicitly assign a user another one during account creation.
Changing this default does not change the default language of already existing users. See the FAQ 'When I change to a new default language, users still have the old language.' in Language FAQ for suggestions of what to do about it.
This setting can be overridden by the user's preferred language or by using the language menu.
If a preferred language is set in your browser then this will override the default site language (unless language auto-detection is disabled).
You can enable localised error messages for database connection problems by add the following line to your config.php file:
$CFG->lang="yourlangcode";
This sets whether the language menu is displayed at the top of each page. If this is turned off, the only place where a user can change the language setting is via Preferences in the user menu.
Note: the location or even presence or absence of this language menu is theme dependent. In the default Clean theme, it appears in the top bar on the upper left of the screen, to the right of any theme custom menu items. In older themes, it may only display on the login page and the front page.
If you want to limit the number of languages students and teachers can select from, enter a reduced list here. This should be in the form of the language codes separated by commas, for instance, en_us,es_mx,fr,fr_ca.
This list controls the possible options that will be available both on the Course level with the Force language setting and in User Profiles with the Preferred language setting.
If your site uses a child language that relies in a parent language, you can edit 'Languages on language menu' in Site Administration > Language > Language settings, and remove the parent language; eg, if you are in Canada and you want your users to use Canadian French but not the original French language.
The cache is automatically refreshed when you install or delete a language pack via the in-built language packs management tool. If you install a new language pack manually, you have to use Purge all caches feature to refresh the cached list.
Cache all language strings
Caches all the language strings into compiled files in the data directory.
If you are translating Moodle or changing strings in the Moodle source code then you may want to switch this off. Otherwise always leave this enabled for normal, production sites. Turning it off will force the server to go to disk to read all the language strings for each user session, which will impact performance.
Sitewide locale
Choose a sitewide locale - this will override the format and language of dates for all language packs (though names of days in calendar are not affected). You need to have this locale data installed on your operating system (eg for linux en_US.UTF-8 or es_ES.UTF-8). See here for Linux locale info or here for Windows server locale info.
In most cases this field should be left blank unless you are sure what you are doing, as Moodle will use the locale of the server.
Excel encoding
Leave as default (Unicode) unless you have a particular reason for wanting Latin encoding.