Für eine korrekte Zeichenkodierung und korrekte Zahlenkodierung ist eine Festlegung der korrekten Sprache unerlässlich. Die Festlegung der korrekten Sprache ist essenziell für die korrekte Zeichenkodierung und Formate von Datums- und Währungsangaben. Zunächst sind die Sprachdateien beim Erstellen des Images zu erzeugen, wofür die Konfiguration des Images anzupassen ist. Die folgenden Zeilen müssen in der Datei meta-raspilab/recipe-core/images/raspilab-iumage.bb eingefügt werden.
meta-raspilab/recipe-core/images/raspilab-iumage.bb
...
GLIBC_GENERATE_LOCALES="de_DE.UTF-8 en_US.UTF-8"
IMAGE_LINGUAS = "de-de"
ENABLE_BINARY_LOCALE_GENERATION = "1"
...
Als Nächstes müssen wir dafür sorgen, dass beim Anmelden eines Benutzers auch die korrekten Spracheinstellungen übernommen werden. Dafür erstellen wir am besten ein eigenes Rezept und eine Script-Datei, die dann mit in das Image kopiert wird.
meta-raspilab/recipes-core/l18n/raspilab-locales_0.1.bb
SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Copy scripts to profile.d"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://locale.sh"
do_install () {
install -d ${D}/etc/profile.d
install -m755 ${WORKDIR}/locale.sh ${D}/etc/profile.d
}
Im Unterverzeichnis files, das sich im selben Verzeichnis wie das Rezept befindet, wird eine Datei mit der Bezeichnung locale.sh erstellt.
meta-raspilab/recipes-core/l18n/files/locale.sh
#!/bin/sh
export LC_ALL=de_DE.utf8
export LANG=de_DE.utf8
Im nächsten Schritt ist eine Erweiterung der Konfiguration des Images um die folgenden Pakete erforderlich.
meta-raspilab/recipe-core/images/raspilab-iumage.bb
...
CORE_OS = "\
...
glibc-utils \
localedef \
raspilab-locales \
"
...
Das Image kann nun neu erstellt und auf eine SD-Karte geschrieben werden.
Nach dem Booten und der Anmeldung am System kann mit der Anweisung locale -a überprüft werden, welche Sprachen zur Verfügung stehen und mit locale, welche Sprache gerade aktiv ist.
root@raspberrypi4-64:~# locale -a
C
C.utf8
de_DE
de_DE.utf8
POSIX
root@raspberrypi4-64:~# locale
LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=de_DE.utf8
