Language & Country Switcher

Multilingual System (website, application, software)

If the system supports more than one language not country-based, the best practice is to use a text label.
The text label could be the two-letters code (ISO 639-1) or the complete language name in its native language.
You can find them on Wikipedia columns 639-1 and Native name (endomyn).

Multi-country System (website, application, software)

If the system changes its behaviour basing on the user’s country, the best practice is to use country flags with a text label or at least an alternative text.
The text should be the country name.

Examples of use