#!/usr/bin/env bash

SYSTEM_LANG=$1

[[ -z $SYSTEM_LANG || $(printf "%.1f" 0) != "0.0" ]] &&
	SYSTEM_LANG=en_US.UTF-8

# Silently skip empty set
if [[ -z $SYSTEM_LANG || $SYSTEM_LANG == "--help" ]]; then
	echo "Please give some locale like de_DE.utf8" &&
	exit 1
fi

[[ $(LC_ALL=$SYSTEM_LANG printf "%.1f" 0 2>/dev/null) != "0.0" ]] &&
	echo "This locale has incompatible decimal point" &&
	exit 2

locale -a | grep -q "^${SYSTEM_LANG//UTF-8/utf8}$"
if [[ $? != 0 ]]; then
	echo "> Generating $SYSTEM_LANG locale"
	locale-gen --keep-existing $SYSTEM_LANG || SYSTEM_LANG=en_US.UTF-8
fi

# Already set
[[ $SYSTEM_LANG == $LANG ]] && exit 1

echo "> Setting system default locale to $SYSTEM_LANG"
update-locale LANG="$SYSTEM_LANG"
localectl set-locale LANG="$SYSTEM_LANG"
