If an LC_xxx variable it sets and LC_ALL is unset, the value of LC_xxx applies to this category.

If neither LC_ALL nor the relevant LC_xxx is set, $LANG applies.

If none of the above applies, the locale is C (that's the most basic, no-frills locale).

As a user, you can define LANG and override a particular setting with LC_xxx. For example, to work in a Portuguese locale except with British dates:

export LANG=pt_PT.UTF-8 LC_TIME=en_UK.UTF-8

(Put that in your ~/.profile.)

Instead of setting LANG, you might set just the categories you're interested in. For example, to get messages in Portuguese and use the UTF-8 character set but leave other formats to their default value:

unset LANG
export LC_MESSAGES=pt_PT.UTF-8 LC_CTYPE=pt_PT.UTF-8

If you need to run a program that can't cope with locale variations, run it in the C locale.