当前位置: 首页>>技术教程>>正文


区域设置不正确。我该如何重置它们?

,

问题描述

我有一个语言环境问题。 nautilus和其他程序中的整理顺序已更改。当我启动GUI应用程序时,我在终端中出现了语言环境错误。

    Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

locale命令会生成错误消息

    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_AU
    LANGUAGE=en_AU:en
    LC_CTYPE="en_AU"
    LC_NUMERIC="en_AU"
    LC_TIME="en_AU"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU"
    LC_NAME="en_AU"
    LC_ADDRESS="en_AU"
    LC_TELEPHONE="en_AU"
    LC_MEASUREMENT="en_AU"
    LC_IDENTIFICATION="en_AU"
    LC_ALL=

正如askubuntu question中所建议的那样,我运行了以下命令,但没有任何变化。

    sudo apt-get install language-pack-en-base
    sudo dpkg-reconfigure locales

我也尝试了askubuntu question中的建议……也没有变化。

    apt-get install --reinstall locales

我认为它是从我通过IBus暂时安装和卸载乌尔都语语言输入法编辑器开始的..它当然发生在同一天。

也许它与IBus有关,但在此之前我没有任何问题。

  • 操作系统是10.04

最佳解决办法

我已经设法再次运行”normally”。

在尝试了很多包re-installs等之后,包括完全删除IBus(一切都没有效果),我开始认为它可能是由re-installing不修改的配置设置引起的。

我注意到locale的输出相当没有UTF-8分配,所以我在最近安装的VM中检查了这一点…… LC_ *的所有条目(LC_ALL除外,它覆盖了所有其他条目)都是用.UTF-8设置的后缀。所以我手动设置LC_ *值,如下所示。

我可能刚刚使用过LC_ALL="en_AU.UTF-8",但在阅读此内容时,我发现了如何自定义system date and time format,而LC_ALL将覆盖我的自定义设置。

我不知道我是否使用过最合适的方法,但它有效!

修改后的文件是:/etc/default/locale

  • 这显示了mod之前的内容:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • 这显示了mod之后的内容:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_CTYPE="en_AU.UTF-8"
    LC_NUMERIC="en_AU.UTF-8"
    LC_TIME="en_AU.UTF-8"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU.UTF-8"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU.UTF-8"
    LC_NAME="en_AU.UTF-8"
    LC_ADDRESS="en_AU.UTF-8"
    LC_TELEPHONE="en_AU.UTF-8"
    LC_MEASUREMENT="en_AU.UTF-8"
    LC_IDENTIFICATION="en_AU.UTF-8"
    

VM中的同一文件只包含这一行:

    LANG="en_AU.UTF-8" 

次佳解决办法

重新定义区域设置和重新配置可能足以解决问题:

sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales

运行sudo dpkg-reconfigure locales时,您可以通过单击spacebar选择所需的区域设置,然后在点击Enter之前使用移动。

第三种解决办法

我也遇到了这个问题,如你所见,你的LC_ALL是空的。我做了如下,它有助于:

$ sudo vim /etc/environment

并将LC_ALL设置为en_US.UTF-8,我的是:

LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"

然后重新启动,并运行locale,它应该是这样的:

LANG=zh_CN.utf8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

第四种办法

如果您通过ssh远程连接到机器(例如从macosx设备),则需要在要连接的机器上设置这些变量

将以下内容添加到〜/.bash_profile中

#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"

第五种办法

我只想补充一点,我也需要编辑我的家庭档案:

gedit ~/.profile

所以在你的情况下,它看起来像:

...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"

注销+登录。一切都如预期。

第六种办法

几个月来我遇到了同样的问题,很多软件工具都警告说区域设置有问题,有些甚至拒绝运行。我想使用英语,但瑞典货币和数字设置。

最终对我有用的是编辑/etc/default/locale,我删除了该文件中的所有内容。然后我开始使用Unity语言设置(Settings -> Language Support),设置一切(Ubuntu想要安装一些缺少的组件)并在完成后按下"Apply System-wide"

我的/etc/default/locale现在看起来像这样。


LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LANGUAGE="en"
LANG="en_US.UTF-8"

这和我原来的文件之间的最大区别是LANGUAGE="en"

第七种办法

自发布以来已经有一段时间了,但最近我遇到了”locale”变量的问题,没有回答给我任何结果。也许我自己的经历可以帮助别人。

我的LANG变量是空的,这给了我一些问题。

$locale

输出:

LANG=
LANGUAGE=en_US
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=POSIX

我尝试了一些命令,如:

sudo locale-gen
sudo dpkg-reconfigure locales

没有成功。我尝试编辑/etc /default /locale并发现它已经是O.K:

$cat /etc/default/locale

输出:

LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"

我的.pam_environment文件似乎也是正确的:

$cat .pam_environment

输出:

LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter

我不想在配置文件或bash文件中添加额外的东西,主要是因为虽然它可以解决问题但我不知道原因,这让我生气。

最后我想知道是否有什么东西已经覆盖了”locale”变量并运行了下一个命令:

$cat .bashrc | grep LANG

输出:

unset LANG

所以我在我的.bashrc文件中找到了两行原因(我没有粘贴整个文件):

unset LANG
export LC_ALL=POSIX

我不知道这些行是怎么或什么时候出现在我的bash文件上的,但是我完全确定我没有写它们,也许我的.bashrc在我使用一些web-development的东西时被替换了,我真的不知道知道,但是因为我知道这是无意的,并且有人不知道是什么导致了”locale”的不良行为,也许这可以帮助他们。无论如何评论这些线和重新启动解决了我的问题。 Here我回答了同样的问题,主要关注关于LANG变量的sublimeT3投诉。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1853.html,未经允许,请勿转载。