`cal` does try to use the expected first day of the week based on the locale. It seems to at least use LC_TIME from some quick local testing:
bratch@serenity ~ $ LC_TIME=en_GB cal | head -n2
May 2017
Mo Tu We Th Fr Sa Su
bratch@serenity ~ $ LC_TIME=en_US cal | head -n2
May 2017
Su Mo Tu We Th Fr Sa