从 Unity 设置 SublimeText 的 LANG

从 Unity 设置 SublimeText 的 LANG

我正在尝试使用包控制插件运行 SublimeText,每次使用 Unity 启动器打开它时都会收到此错误。

在此处输入图片描述

到目前为止,我已经尝试按照以下说明进行操作Ubuntu 社区帮助,在所有提到的位置进行设置然后重新启动也未能解决问题。

我也按照找到的步骤在 github 上的包控制页面无济于事。

当我从命令行启动 SublimeText 时,这确实有效,所以我猜测这是一个 Unity 特有的问题,有人知道在从 Unity 启动 SublimeText 时如何正确设置 LANG 吗?

编辑:添加安装详细信息,我使用此处找到的 64 位 SublimeText3 .deb 进行安装,http://c758482.r82.cf2.rackcdn.com/sublime-text_build-3059_amd64.deb

使用此处的简单方法安装了 Package Control,https://sublime.wbond.net/installation

答案1

sublimetext使用 ppa 方法安装,并Package control按照“简单方法”中描述的方法进行安装这里,它可以与 Ubuntu 13.10(Unity)一起开箱即用。

为了重现您的问题,我尝试通过修改 .desktop 文件来强制 LANG-C 启动 sublimetext。我认为您可以尝试同样的调整来启动它,这次强制LANG=en_US.UTF-8

sudo gedit /usr/share/applications/sublime-text.desktop

并将以下行复制到文件中:

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text %F"
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;Utility;
StartupNotify=true
Actions=Window;Document;

X-Desktop-File-Install-Version=0.21

[Desktop Action Window]
Name=New Window
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text -n"
OnlyShowIn=Unity;

[Desktop Action Document]
Name=New File
Exec=bash -c "LANG=en_US.UTF-8 /opt/sublime_text/sublime_text --command new_file"
OnlyShowIn=Unity; 

答案2

我刚刚在 Ubuntu 14.04 LTS 下遇到了这个问题。我的 LANG 已设置到系统范围,但 sublimetext 3 包管理器没有接收它。

我只是采取了解决方法,并在其图标启动器中的应用程序路径之前放置了 LANG=en_US.UTF-8。

答案3

我在使用 sublimeT3 时遇到了完全相同的问题。首先在终端上,我运行了下一个命令:

$echo $LOCAL

输出是一个空行。

接下来我运行:

$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

我尝试使用给出的一些答案重置语言环境这里,但一切都失败了,每次“locale”命令都给出相同的输出。甚至我的/etc/默认/区域设置似乎是正确的:

$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_环境文件似乎是正确的:

$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

因此我运行了下一个命令,它给了我发生了什么事情的线索:

$cat .bashrc | grep LANG

这里是输出:

unset LANG

我不知道何时或如何,但最终我的 .bashrc 中有两行覆盖了“locale”变量的值。我没有粘贴整个 bash 文件,但关键的两行是:

unset LANG
export LC_ALL=POSIX

通过在 bash 文件上注释它们并重新启动,瞧!我的语言环境已按预期设置,sublimeT3 也不再抱怨。这个已经制定一年多了,但也许它可以帮助别人!

相关内容