如果选取的文本中存在高频繁体中文,则将所选的全部文本转换为简体中文,若不存在,则将所选的全部文本转换为繁体中文

虽说Mac中可以设置繁简转换的快捷键,但由于使用频率不高,快捷键通常会设置的比较复杂,时间一久,难免会忘。今天刚好碰到这样的使用场景,深觉使用PopClip最合适,所以想着找一下有没有相关的现成插件可用。

查找了一番,居然没有现成的!借着前两天研究 Alfred Workflow的劲头,干脆自己做一个插件,别说,还真有点兴奋😜。

研究了一番之后,发现PopClip插件的结构比较简单,而且很灵活,总共就包括3个文件:


    # 配置文件,可以用plist、json、yaml格式来写

    Config.plist

    # 执行「繁简转换」的Python程序

    convert.py

    # 插件的图标

    convert.png

一. 想了解详细步骤的,看这里👇

下面给出具体操作步骤:

1. 新建一个文件夹ChineseConverter

在这个文件夹中,分别新建Config.plistconvert.py两个文件。

2. 编辑 Config.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Actions</key>
        <array>
            <dict>
                <key>Shell Script File</key>
                <string>convert.py</string>
                <key>Image File</key>
                <string>convert.png</string>
                <key>Title</key>
                <string>convert</string>
                <key>after</key>
                <string>paste-result</string>
            </dict>
        </array>
        <key>Extension Description</key>
        <string>traditonal-symplify-convert</string>
        <key>Extension Identifier</key>
        <string>com.qxpaiChineseConverter.extension</string>
        <key>Extension Name</key>
        <string>convert</string>
        <key>Version</key>
        <integer>1</integer>
    </dict>
    </plist>

其结构比较简单,Actions中对应的key主要有:

  • Shell Script File对应于convert.py,是要执行的Python文件
  • Image File对应于convert.png,是在PopClip条中的图标。
  • Title对应于标题
  • after对应的paste-result,是指:Python执行完毕后输出的值在如何与之前PopClip选中的文本的「交互逻辑」,在这里,需要将Python执行完输出的文本,对之前选中的文本进行替换,因此,采用paste-result。参考自Uppercase.popclipext的配置文件Config.json

3. 编辑convert.py

Python相关信赖包的安装参见第二部分。

主要逻辑是:先判断选中的文本中是否含有常用的繁体字,通过char的比对,若含有繁体字,则表明需要将其转换为简体字,否则,需要将其转换为繁体字。

    #!/usr/local/opt/python/libexec/bin/python 

    import sys
    import os
    from opencc import OpenCC

    def contains_traditional(text):
        # List of some common traditional characters
        traditional_chars = '這裡著個們來為國說時麼國學風漢見龍飛書愛黃鳥魚熱網頭語電樂檯燈紅綠藍麪糖餅餘鑽錢鍾鍋鏡銀鈴鐺餐獅貓習優燒燙編膩衛覺譯說誰讀買賣賞賓趙連運郵鄉醫開關間險雜靜順飯館魯麗鳳鴻麥鳴鵬鷹'

        for char in text:
            if char in traditional_chars:
                return True
        return False

    input_text = os.environ['POPCLIP_TEXT']

    if contains_traditional(input_text):
        cc = OpenCC('t2s')  # t2s: Traditional to Simplified
    else:
        cc = OpenCC('s2t')  # s2t: Simplified to Traditional

    print(cc.convert(input_text))

在这里,采用了os.environ['POPCLIP_TEXT']来获取PopClip选中的文本。

上述工作均完成后,将ChineseConverter文件夹修改为ChineseConverter.popclipext,即得到了插件,双击即可安装。

二. 插件的使用,请看这里👇

我做好的插件可以 在这里 下载。

在使用前,还需要一些设置。

1. 安装Python

可以用brew install python

2. 安装opencc

brew install OpenCC

3. 修改Python解释器路径

打开terminal,运行where python,记住得到的Python路径,例如我的是/usr/local/opt/python/libexec/bin/python

右键显示插件的包内容,对convert.py中首行的路径进行修改,保存之后关闭。

4. 安装插件

双击ChineseConverter.popclipext安装即可!

参考

  1. 提高效率第二弹之自己开发谷歌翻译 popclip 插件 - CaptainChen
  2. 让剪切板在 OS X 上飞起来:PopClip 插件编写教程 - 少数派
  3. Shell Script actions — PopClip Developer