如何默认生成完全支持西班牙语的 Yocto 图像
Howto generate a Yocto image with spanish full-support by default
我在尝试设置完全支持的 Yocto 映像时遇到了问题
英语和西班牙语(默认为西班牙语)。我正在构建的映像基于 rocko 分支,我的发行版基于 "systemd"。
我当前的 distro.conf yocto 设置是这样的:
GLIBC_GENERATE_LOCALES ?= "es_ES.UTF-8 en_US.UTF-8"
IMAGE_LINGUAS ?= "es-es en-us"
通过此设置,我得到了具有以下语言环境设置的图像:
# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
# localectl
System Locale: n/a
VC Keymap: ES
X11 Layout: es
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
# locale -a
C
POSIX
en_US
es_ES
# locale -m
ES
# locale charmap
ANSI_X3.4-1968
# rpm -qa | grep charmap
glibc-charmap-es-2.26-r0.corei7_64
使用该设置构建的映像无法按预期工作。当我按下 Ñ
(enye) 键在 ssh 控制台上,我得到这个:
root at hostname:~#
(arg: 1)
如您所见,“ñ”字符未打印在控制台上。
经过大量测试,我已经能够通过创建这两个文件来解决此问题:
$ cat /etc/locale.conf
LANG=es_ES.UTF-8
LANGUAGE=es:en
$ cat /etc/profile.d/locale.sh
LC_ALL=es_ES
LANG=es_ES
LANGUAGE=es_ES
重启后,我得到这个 localectl 设置:
# localectl
System Locale: LANG=es_ES.UTF-8
LANGUAGE=es:en
VC Keymap: ES
X11 Layout: es
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
“Ñ”键按预期工作:
root at hostname:~# ñññññ
我不知道如何在不对生成的图像进行手动更改的情况下解决此问题。一旦将 .wic 图像刻录到我的 USB 记忆棒中,我希望生成的图像支持西班牙语。
这可能吗?应该如何管理?
提前感谢您的宝贵时间! :-)
创建一个 recipe(.bb) 文件并重新编译。
转到您的 meta-layer/recipes-core/
vi hello.bb
DESCRIPTION= "added language support"
FILESEXTRAPATHS_prepend := "${THISDIR}:"
LICENSED="CLOSED"
SRC_URI = "file://locale.conf \
file://locale.sh"
S="${WORKDIR}"
do_install(){
install -d ${D}${sysconfdir}/profile.d/
install -m 0777 ${S}/locale.conf ${D}${sysconfdir}
install -m 0777 ${S}/locale.sh ${D}${syscondif}/profile.d/
}
FILES_${PN} ="${sysconfdir}/*"
这就是我解决问题的方法。首先,创建这个文件:
$ cat locale.conf
LANG=es_ES.UTF-8
LANGUAGE=es
$ cat locale.sh
LANG=es_ES
$ cat vconsole.conf
KEYMAP=es
之后,创建这个食谱:
DESCRIPTION = "Add es language support"
FILESEXTRAPATHS_prepend := "${THISDIR}:"
LICENSE = "CLOSED"
SRC_URI = " \
file://locale.conf \
file://vconsole.conf \
file://locale.sh"
S = "${WORKDIR}"
do_install(){
install -d ${D}${sysconfdir}/profile.d/
install -m 0644 ${S}/locale.conf ${D}${sysconfdir}
install -m 0644 ${S}/vconsole.conf ${D}${sysconfdir}
install -m 0755 ${S}/locale.sh ${D}${sysconfdir}/profile.d/
}
FILES_${PN} ="${sysconfdir}/*"
希望这个回答对以后的其他人有所帮助! :-)
我在尝试设置完全支持的 Yocto 映像时遇到了问题 英语和西班牙语(默认为西班牙语)。我正在构建的映像基于 rocko 分支,我的发行版基于 "systemd"。
我当前的 distro.conf yocto 设置是这样的:
GLIBC_GENERATE_LOCALES ?= "es_ES.UTF-8 en_US.UTF-8"
IMAGE_LINGUAS ?= "es-es en-us"
通过此设置,我得到了具有以下语言环境设置的图像:
# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
# localectl
System Locale: n/a
VC Keymap: ES
X11 Layout: es
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
# locale -a
C
POSIX
en_US
es_ES
# locale -m
ES
# locale charmap
ANSI_X3.4-1968
# rpm -qa | grep charmap
glibc-charmap-es-2.26-r0.corei7_64
使用该设置构建的映像无法按预期工作。当我按下 Ñ (enye) 键在 ssh 控制台上,我得到这个:
root at hostname:~#
(arg: 1)
如您所见,“ñ”字符未打印在控制台上。
经过大量测试,我已经能够通过创建这两个文件来解决此问题:
$ cat /etc/locale.conf
LANG=es_ES.UTF-8
LANGUAGE=es:en
$ cat /etc/profile.d/locale.sh
LC_ALL=es_ES
LANG=es_ES
LANGUAGE=es_ES
重启后,我得到这个 localectl 设置:
# localectl
System Locale: LANG=es_ES.UTF-8
LANGUAGE=es:en
VC Keymap: ES
X11 Layout: es
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
“Ñ”键按预期工作:
root at hostname:~# ñññññ
我不知道如何在不对生成的图像进行手动更改的情况下解决此问题。一旦将 .wic 图像刻录到我的 USB 记忆棒中,我希望生成的图像支持西班牙语。
这可能吗?应该如何管理?
提前感谢您的宝贵时间! :-)
创建一个 recipe(.bb) 文件并重新编译。
转到您的 meta-layer/recipes-core/
vi hello.bb
DESCRIPTION= "added language support"
FILESEXTRAPATHS_prepend := "${THISDIR}:"
LICENSED="CLOSED"
SRC_URI = "file://locale.conf \
file://locale.sh"
S="${WORKDIR}"
do_install(){
install -d ${D}${sysconfdir}/profile.d/
install -m 0777 ${S}/locale.conf ${D}${sysconfdir}
install -m 0777 ${S}/locale.sh ${D}${syscondif}/profile.d/
}
FILES_${PN} ="${sysconfdir}/*"
这就是我解决问题的方法。首先,创建这个文件:
$ cat locale.conf
LANG=es_ES.UTF-8
LANGUAGE=es
$ cat locale.sh
LANG=es_ES
$ cat vconsole.conf
KEYMAP=es
之后,创建这个食谱:
DESCRIPTION = "Add es language support"
FILESEXTRAPATHS_prepend := "${THISDIR}:"
LICENSE = "CLOSED"
SRC_URI = " \
file://locale.conf \
file://vconsole.conf \
file://locale.sh"
S = "${WORKDIR}"
do_install(){
install -d ${D}${sysconfdir}/profile.d/
install -m 0644 ${S}/locale.conf ${D}${sysconfdir}
install -m 0644 ${S}/vconsole.conf ${D}${sysconfdir}
install -m 0755 ${S}/locale.sh ${D}${sysconfdir}/profile.d/
}
FILES_${PN} ="${sysconfdir}/*"
希望这个回答对以后的其他人有所帮助! :-)