2012年5月8日 星期二

讓 Ubuntu 12.04 的 ibus 倉頡五代輸入法預設使用繁體語系

日前安裝了 Ubuntu 12.04 後,在使用 ibus 裡的「倉頡五代輸入法」打字時發現似乎預設採用了簡體語系。於是爬文找了一下,原來這狀況在之前的版本裡已經存在了,便參考了這篇文章修改一下。

修改方法不難,使用任何一個編輯器開啟 /usr/share/ibus-table/engine/table.py 這個檔案,然後找到第 96 行到第 129 行這段:

  96         # self._chinese_mode: the candidate filter mode,
  97      #   0 is simplify Chinese
  98      #   1 is traditional Chinese
  99      #   2 is Big charset mode, but simplify Chinese first
 100      #   3 is Big charset mode, but traditional Chinese first
 101      #   4 is Big charset mode.
 102      # we use LC_CTYPE or LANG to determine which one to use
 103      self._chinese_mode = self._config.get_value (
 104              self._config_section,
 105              "ChineseMode",
 106              self.get_chinese_mode())
 107
 108  def get_chinese_mode (self):
 109      '''Use LC_CTYPE in your box to determine the _chinese_mode'''
 110      try:
 111          if os.environ.has_key('LC_CTYPE'):
 112              __lc = os.environ['LC_CTYPE'].split('.')[0].lower()
 113          else:
 114              __lc = os.environ['LANG'].split('.')[0].lower()
 115
 116          if __lc.find('_cn') != -1:
 117              return 0
 118          # hk and tw is should use tc as default
 119          elif __lc.find('_hk') != -1 or __lc.find('_tw') != -1\
 120                  or __lc.find('_mo') != -1:
 121              return 1
 122          else:
 123              if self.db._is_chinese:
 124                  # if IME declare as Chinese IME
 125                  return 1
 126              else:
 127                  return -1
 128      except:
 129          return -1 

get_chinese_mode 裡會依 locale 的 LC_CTYPE 來判斷,但由於我將 LC_CTYPE 設定成 en_US.UTF-8,原本在第 125 行就會返回 0 這個值,但依據第 96 行到第 101 行的註解,當返回 0 時則採用簡體中文語系。

所以,修改方式就是將第 125 行的返回值改成 1,這麼一來就可以直接使它使用繁體中文語系了。

1 則留言:

THK 提到...

這篇救了我... XD

感謝。