Difference between revisions of "Input method related environment variables/zh-hans"

From Fcitx
Jump to navigation Jump to search
(Created page with "否则新的输入法模块将无法被识别。")
 
(10 intermediate revisions by the same user not shown)
Line 34: Line 34:
 
更新 gtk2 的文件,
 
更新 gtk2 的文件,
  
Or if your gtk2 version is newer than 2.24.20, you should use
+
或者如果你的 gtk2 版本新于 2.24.20,则应当使用
  
 
  gtk-query-immodules-2.0 --update-cache
 
  gtk-query-immodules-2.0 --update-cache
  
instead just like gtk3.
+
就像 gtk3 一样。
  
 
以及
 
以及
Line 48: Line 48:
 
否则新的输入法模块将无法被识别。
 
否则新的输入法模块将无法被识别。
  
If no im module specified by GTK_IM_MODULE is found, it will fallback to auto select method.
+
如果由 GTK_IM_MODULE 指定的输入法模块没有被找到,gtk 将会回退到自动选择的方法。
  
 
== QT_IM_MODULE ==
 
== QT_IM_MODULE ==
  
Qt's im module is similar with Gtk, but don't need extra file to recognize. If QT_IM_MODULE is not specified, qtconfig (Ubuntu/Debian/ArchLinux qtconfig-qt4) can be used to configure the default one.
+
Qt 的输入法模块和 Gtk 类似,但是它不用额外的文件来识别。如果 QT_IM_MODULE 没有指定,qtconfig (Ubuntu/Debian/Archlinux 上是 qtconfig-qt4) 可以被用于选择默认的输入法模块。
  
Otherwise it will be override by QT_IM_MODULE.
+
否则它将会被 QT_IM_MODULE 选项覆盖。
  
 
== LC_CTYPE ==
 
== LC_CTYPE ==
  
System locale should not be changed in all case. It might brings unpredictable effect.
+
系统语系设置在任何情况下都不应该被修改。它可能会带来无法预测的效果。
  
This should only be used in some case, including emacs and java. Emacs has a [http://lists.gnu.org/archive/html/bug-gnu-emacs/2012-02/msg00761.html historical bug], that under en_US.UTF-8 or similar locale, it will never use XIM (Though emacs is a gtk app, it use XIM). The only way to walkaround this is to use LC_CTYPE to fix this.
+
这个环境变量应该仅在少数情况下被使用,包括 emacs 和 java。Emacs 有一个[http://lists.gnu.org/archive/html/bug-gnu-emacs/2012-02/msg00761.html 历史悠久的Bug],在 en_US.UTF-8 或者其他类似的语系下,它不会使用 XIM (尽管emacs是gtk程序,但是它还是使用XIM)。唯一可以绕过这个问题的办法是通过设置 LC_CTYLE。
  
  
  
For example, to only set this with emacs, run emacs with
+
例如,为了只在 emacs 下修改这个环境变量,可以使用以下命令启动
  
 
  LC_CTYPE=zh_CN.UTF-8 emacs
 
  LC_CTYPE=zh_CN.UTF-8 emacs
  
It will not effect the display language of emacs.
+
它不会影响 emacs 的显示的语言。
  
Notice, even if you are not using Chinese, you should also try to set it so LC_CTYPE=zh_CN.UTF-8, due to some limitation of XIM.
+
注意,由于 XIM 的一些限制,即使你不用中文,你也应该尝试把 LC_CTYPE 设置为 zh_CN.UTF-8。

Latest revision as of 04:03, 4 October 2017

Other languages:
English • ‎中文(简体)‎

这个页面介绍了以下环境变量的含义。你不需要理解他们来使用Fcitx,但是以下内容可能会在你遇到问题是帮助你检查哪里出了问题。

XMODIFIERS

这个变量仅影响 XIM。格式为

XMODIFIERS=@im=<xim 服务器名称>

当 XIM 服务器启动时,他会注册一个应当在这里使用的名称。这个名称不能和其他 XIM 服务器相同,因此你无法在同一个 X 服务器下运行两个 Fcitx。通常情况下,Fcitx 的 XIM 服务器名称为 fcitx。

因此对于 Fcitx 来说这个设置应当为

XMODIFIERS=@im=fcitx

在非 CJK 语言环境中,如果这个环境变量没有设置,一些程序中 XIM 将无法工作,这意味这你最好总是设置了这个环境变量。并且 XIM 也需要你有正确的语言环境,这意味着你的语言必须在下面的命令的输出当中

locale -a

你可以通过以下命令检查你当前的语言环境

locale

为了使用 XIM,你的语言不能设置为 C 或者 POSIX。

GTK_IM_MODULE

这会覆盖系统的gtk输入法模块的自动选择。在默认情况下,gtk按照语言选择对应的输入法模块。Fcitx声明它支持 "zh:ja:ko:*"。这些信息将被记录在一个文件当中,在大多数的 linux 系统中,这个文件为 /etc/gtk-2.0/gtk.immodules 和 /etc/gtk-3.0/gtk.immodules,有时会以 -32 或者 -64 结尾。

{{warning|在 Debian 进行了多架构的迁移之后,将使用不同的文件。对应文件将为 /usr/lib/<架构>/gtk-{2,3}.0/gtk.immodules }} 你需要使用

gtk-query-immodules-2.0 > <gtk-2.0 的输入法模块文件>

更新 gtk2 的文件,

或者如果你的 gtk2 版本新于 2.24.20,则应当使用

gtk-query-immodules-2.0 --update-cache

就像 gtk3 一样。

以及

gtk-query-immodules-3.0 --update-cache

更新 gtk3 的文件。

否则新的输入法模块将无法被识别。

如果由 GTK_IM_MODULE 指定的输入法模块没有被找到,gtk 将会回退到自动选择的方法。

QT_IM_MODULE

Qt 的输入法模块和 Gtk 类似,但是它不用额外的文件来识别。如果 QT_IM_MODULE 没有指定,qtconfig (Ubuntu/Debian/Archlinux 上是 qtconfig-qt4) 可以被用于选择默认的输入法模块。

否则它将会被 QT_IM_MODULE 选项覆盖。

LC_CTYPE

系统语系设置在任何情况下都不应该被修改。它可能会带来无法预测的效果。

这个环境变量应该仅在少数情况下被使用,包括 emacs 和 java。Emacs 有一个历史悠久的Bug,在 en_US.UTF-8 或者其他类似的语系下,它不会使用 XIM (尽管emacs是gtk程序,但是它还是使用XIM)。唯一可以绕过这个问题的办法是通过设置 LC_CTYLE。


例如,为了只在 emacs 下修改这个环境变量,可以使用以下命令启动

LC_CTYPE=zh_CN.UTF-8 emacs

它不会影响 emacs 的显示的语言。

注意,由于 XIM 的一些限制,即使你不用中文,你也应该尝试把 LC_CTYPE 设置为 zh_CN.UTF-8。