这是indexloc提供的服务,不要输入任何密码
Skip to content

输出台湾繁体一个较为合理的做法 #575

@ClixTW

Description

@ClixTW

📢最新消息📢

若輸入法ibrime版本≥ 1.10,則不必這麼麻煩,
只需在rime_ice.custom.yaml加一行:
traditionalize/opencc_config: s2tw.json

⭐懒人包⭐(以下內容皆已過期)

若用户文件夹内无同名文件,请自行创建,注意副档名为.yaml

rime_ice.custom.yaml

patch:
  # 开关
  switches:
    - name: ascii_mode
      states: [ 中, A ]
    - name: ascii_punct
      states: [ ¥, $ ]
    - name: traditionalization
      states: [ 简, 繁 ]
      reset: 1             # 不需预设台繁可注释掉
    - name: traditionalization_tw
      states: [ 港, 臺 ]
      reset: 1             # 不需预设台繁可注释掉
    - name: emoji
      states: [ 💀, 😄 ]
      reset: 1
    - name: full_shape
      states: [ 半角, 全角 ]
    - name: single_char
      abbrev: [ 词, 单 ]
      states: [ 正常, 单字 ]

  # 输入引擎
  engine/filters:
    - lua_filter@corrector
    - reverse_lookup_filter@radical_reverse_lookup
    - lua_filter@autocap_filter
    - lua_filter@v_filter
    - lua_filter@pin_cand_filter
    - lua_filter@long_word_filter 
    - lua_filter@reduce_english_filter
    - simplifier@emoji
    - simplifier@traditionalize
    - simplifier@traditionalize_tw   # 台湾繁体,随着更新filters可能会变动位置,总之把它放在@traditionalize下面就对了
    - lua_filter@search@radical_pinyin
    - uniquifier

  # 简繁切换
  traditionalize/opencc_config: s2tw.json

  # 台湾繁体
  traditionalize_tw:
    option_name: traditionalization_tw
    opencc_config: t2tw.json
    tips: none
    tags: [abc,  number,  gregorian_to_lunar]

default.custom.yaml

patch:
  # 开关记忆
  switcher/save_options/+:
    - traditionalization_tw

  # 快捷键
  key_binder/bindings/+:
    - { when: always, accept: Control+Shift+F, toggle: traditionalization_tw }        # 切换台繁

↓以下内容由于项目辛勤更新,部分示例已不符现况,建议参考上面懒人包的部分🙏↓

目的

首先,非常感谢主维护者iDvel花费许多心力提供了RIME-ICE这项输入方案,
在常见问答里,也贴心地提供了输出台湾繁体的方式。

由于单纯修改opencc_config: s2t.jsonopencc_config: s2tw.json
会发生某些字依然出现香港繁体的情况:
螢幕擷取畫面 (1)

⑤是正确的,但①卻是香港用字的

因此需要一并修改OpenCC文件来避免这个问题,
(常见问题里也有提供修改后的档案)
但这么做感觉不够优雅,未来更新OpenCC文件也麻烦,
这边建议采取另一种做法。

原理

RIME预设的朙月拼音.臺灣正體
其实就是输出前透过t2tw.json转换过,
由于内建的是繁体词库,所以这种方式不会出现香港繁体的用字;
而RIME-ICE精心更新调整的是简体词库,
经过s2tw.json简转繁后,某些词语转换后却是香港繁体,
那么何不将s2tw.json处理过的结果,再用t2tw.json处理过一遍?

实作

这项操作会需要更动两份文件,分别为rime_ice.schema.yamldefault.yaml
(当然也可以透过rime_ice.custom.yamldefault.custom.yaml来实现,我自己是这么做的)

rime_ice.schema.yaml

  1. 加入要调用的OpenCC方案:
zh_tw:
  option_name: zh_tw
  opencc_config: t2tw.json
  tips: none                          # 转换提示: all 都显示 | char 仅单字显示 | none 不显示。
  excluded_types: [ reverse_lookup ]  # 不转换反查(两分拼字)的内容
  1. engine/filters加上simplifier@zh_tw
engine:
  ...
  filters:
    - lua_filter@corrector
    - simplifier@emoji
    - simplifier@traditionalize
    - simplifier@zh_tw                    # 台湾繁体
    - lua_filter@v_filter
    - lua_filter@autocap_filter
    - lua_filter@reduce_english_filter
    - uniquifier

⚠️注意位置⚠️必須在 - simplifier@traditionalize下面,才会在简转繁后再转换为台湾繁体!

  1. 加入开关,需要记忆的話,记得在reset前加上# 备注掉:
switches:
  ...
  - name: zh_tw # 台湾繁体
    states: [ 港, 臺 ]
    reset: 1
  ...

default.yaml

  1. 为开关设定一个快捷键:

key_binder:
  bindings:
    ...
    - { when: always, accept: Control+Shift+F, toggle: traditionalization }    # 切换简繁
    - { when: always, accept: Control+Shift+G, toggle: zh_tw }                 # 切换台繁
    ...

如果需要打简体的话,记得选个好按的快捷键,会用得到的😅

  1. 需要记忆选项的话,加上开关记忆:
switcher:
  save_options:
    - ascii_punct
    - traditionalization
    - zh_tw
    - emoji
    - full_shape

成果

没有问题的话,你应该可以输出正确的台湾繁体,
完全摆脱选字表出现等香港汉字的困扰了🎉
螢幕擷取畫面 (2)

备注

由于经过t2tw.json的转换,某些字又刚好是香港繁体的话,
在简体模式下会出现这些字变成台湾繁体的情况,比如:
螢幕擷取畫面 (3)

①着迷的变成了

因此若要输出未经任何转换的简体字,需要同時将zh_tw关闭,
才能正确地输出简体字。
螢幕擷取畫面 (5)

面板长这样子才能输出简体,开关在上面。

如果需要经常来回切换台繁↔简中,
可以用AHK、PowerToy或VIA等键盘管理器设定个快捷键,
按下去就自动按下Control+Shift+FControl+Shift+G(土法炼钢)
不知道RIME有没有语法能一键切换两个开关?我设定两个一样会报错😄

结语

大神肯定觉得写了不少废话,但身为小白的我知道,
不写到这个地步是不会懂的😅
很多RIME的选项也是看了项目里详细的备注才搞懂,
(甚至会修备注增加可读性或流畅度,我哭死)
以前知道RIME功能很多,但自己怎么样都搞不出来…

希望这篇文能帮助到想用RIME-ICE输出台湾繁体的朋友,
也再次感谢iDvel大大和众多热心人士用心维护了这个项目!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions