En el caso del teclado, con
setxkbmap(1) podés setear el idioma .... necesitás el idioma y la variante (en el caso de FreeBSD estos están en /usr/local/share/X11/xkb/symbols, en GNU/Linux supongo que en /usr/share/X11/xkb/symbols )
En mi caso es español con la variante "deadtilde"
setxkbmap es -variant deadtilde
esto lo podés agregar al archivo .xinitrc que está en tu home con tu editor favorito (~/.xinitrc) y la próxima vez que inicies vas a tener dicho "layout"
en el caso del idioma es similar ... y depende si lo querés por usuario o global para el sistema ...
primero, fijate si el idioma que querés está (el código de idioma se enumera) :
locale -a
si es así, en el caso por usuario tenés que definir una variable con el lenguaje que querés (de lo que te dió locale -a) en el .profile o .bashrc (la diferencia está en que profile se ejecuta una vez por login, y bashrc por cada sesión de shell que se ejecute ... en términos prácticos es lo mismo, ya que las variables de entorno se heredan) de la carpeta de tu usuario (estos archivos se usan cuando estos usuarios inician sesión para hacer ajustes, como exportar variables o correr determinados programas)
deberías agregar algo así a este fichero :
export LANG="es_ES"
y en el caso de algo "global", deberías agregarlo a /etc/profile
Saludos