默认情况下如何使用西班牙语完全支持生成Yocto图像

时间:2018-02-16 12:40:25

标签: keyboard settings locale yocto

我在尝试设置完全支持的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记忆棒中,我希望生成的图像具有西班牙语支持。

这是可能的吗?应如何管理?

提前感谢您的时间! : - )

2 个答案:

答案 0 :(得分:1)

创建一个配方(.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}/*"

答案 1 :(得分:1)

这是我解决问题的方法。首先,创建这个文件:

$ 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}/*"

希望这个答案对未来的其他人有所帮助! : - )