Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
ClixTW opened this issue Dec 11, 2023 · 11 comments
Closed

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

ClixTW opened this issue Dec 11, 2023 · 11 comments

Comments

@ClixTW
Copy link

ClixTW commented Dec 11, 2023

📢最新消息📢

若輸入法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大大和众多热心人士用心维护了这个项目!

@iDvel

This comment was marked as resolved.

@ClixTW

This comment was marked as resolved.

@iDvel
Copy link
Owner

iDvel commented Dec 13, 2023

這個方法完全可行。
是我的問題,我忘記了我自己的 custom 裡有內容了,我直接去修改方案測試的,改完了又被 custom 覆蓋了 😰。

附上一個 rime_ice.custom.yaml 的 patch 示例:

patch:
  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

  switches:
    - name: ascii_mode
      states: [ 中, A ]
      reset: 0
    - name: ascii_punct
      states: [ ¥, $ ]
      reset: 0
    - name: traditionalization
      states: [ 简, 繁 ]
      reset: 1
    - name: zh_tw  # 增加 zh_tw
      states: [ 港, 臺 ]
      reset: 1
    - name: emoji
      states: [ 💀, 😄 ]
      reset: 1
    - name: full_shape
      states: [ 半角, 全角 ]
      reset: 0

  traditionalize/opencc_config: s2tw.json

  zh_tw:
    option_name: zh_tw
    opencc_config: t2tw.json
    tips: none
    excluded_types: [ reverse_lookup ]

@LO-H-W
Copy link

LO-H-W commented Jan 9, 2024

感謝您無私的分享,解決了我困擾良久的問題,我是碼盲,看到你的編排覺得漂亮,再次感謝。

@shao222
Copy link

shao222 commented Jan 25, 2024

你好,我按照上述设置操作后,依然无法输入台湾的繁体 “啓示錄” ,具体设置如下,因为我是小鹤双拼,所以custom文件不同。
安装程序的是今天2024-01-25下载的最新 CI 版本,https:/rime/weasel/actions/runs/7648725999

double_pinyin_flypy.custom.yaml patch 补丁

patch:
  # 改为新建的 my_eng.dict.yaml
  melt_eng/dictionary: my_eng
  # (按需选择)清空 preedit_format 中的内容,输入时显示双拼编码
  translator/preedit_format: []
  
  # 改为挂载添加个人通讯录字库的 rime_ice_private.dict.yaml
  translator/dictionary: rime_ice_private

  #添加台湾繁体支持-START
  filters:
    - lua_filter@corrector                # 错音错字提示
    - simplifier@emoji                    # Emoji
    - simplifier@traditionalize           # 简繁切换
    - simplifier@zh_tw                    # 增加這行 2024/1 台湾繁体
    - lua_filter@autocap_filter           # 英文自动大写
    - lua_filter@reduce_english_filter    # 降低部分英语单词在候选项的位置
    - uniquifier                          # 去重
  switches:
  - name: ascii_mode
    states: [ 中, A ]
    reset: 0
  - name: ascii_punct # 中英标点
    states: [ ¥, $ ]
    reset: 0
  - name: traditionalization
    states: [ 简, 繁 ]
    reset: 0
  - name: zh_tw  # 增加 zh_tw
    states: [ 港, 臺 ]
    reset: 1
  - name: emoji
    states: [ 💀, 😄 ]
    reset: 1
  - name: full_shape
    states: [ 半角, 全角 ]
    reset: 0

  traditionalize/opencc_config: s2tw.json

  zh_tw:
    option_name: zh_tw
    opencc_config: t2tw.json
    tips: none
    excluded_types: [ reverse_lookup ]
  #添加台湾繁体支持-END

但是具体,结果如图所示:
image
image

虽然实际上不太影响使用,但是心中有道过不去的坎。😢
感谢!!🙏

@ClixTW
Copy link
Author

ClixTW commented Jan 25, 2024

或許是路徑沒寫好,filters:改成engine/filters:試試看吧。

另外,平常不會輸入臺灣繁體的話,reset記得註釋掉或改成0哦,
不然某些字會被轉換(比如

@shao222
Copy link

shao222 commented Jan 25, 2024

或許是路徑沒寫好,filters:改成engine/filters:試試看吧。

另外,平常不會輸入臺灣繁體的話,reset記得註釋掉或改成0哦, 不然某些字會被轉換(比如

看上去就是这个问题,我这就去修改。感谢!

@ivensfor
Copy link

请问台湾繁体的「臺」能否保持使用「台」?比如官方的台灣角川就不使用「臺」。

@ClixTW
Copy link
Author

ClixTW commented Apr 18, 2024

這類問題目前沒想到比較好的解法,只能土法煉鋼自行改OpenCC來對應😅

@mirtlebot
Copy link

提醒一下,几个月前,librime 更新后(≥ 1.10),修复了这个 bug。

按理说,现在不需要这么搞了。

@ClixTW
Copy link
Author

ClixTW commented Apr 30, 2024

測試了一下,還真是!感謝告知

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants