ExOpencc

ExOpencc 是基于 OpenCC 的 Elixir NIF 封装,提供简繁中文互转功能。

安装

mix.exs 中添加依赖:

def deps do
  [
    {:ex_opencc, "~> 0.1.0"}
  ]
end

编译

首先获取 OpenCC 源代码:

git submodule update --init --recursive

然后编译:

make ex_opencc
# 或者
mix compile

基本用法

创建转换器

# 默认使用 "s2t.json"
{:ok, converter} = ExOpencc.new()

# 指定配置文件
{:ok, converter} = ExOpencc.new("s2t.json")

同步转换文本

{:ok, converter} = ExOpencc.new("s2t.json")
{:ok, result} = ExOpencc.convert_sync(converter, "简体中文")
IO.puts(result) # => "簡體中文"

# 处理空字符串
{:ok, result} = ExOpencc.convert_sync(converter, "")
IO.puts(result) # => ""

简繁互转

# 简体转繁体
{:ok, converter} = ExOpencc.new("s2t.json")
{:ok, result} = ExOpencc.convert_sync(converter, "简体中文")
IO.puts(result) # => "簡體中文"

# 繁体转简体
{:ok, converter} = ExOpencc.new("t2s.json")
{:ok, result} = ExOpencc.convert_sync(converter, "簡體中文")
IO.puts(result) # => "简体中文"

错误处理

result = ExOpencc.convert_sync(:invalid_resource, "测试")
# result => {:error, reason}

批量转换示例

test_cases = [
  {"简体中文", "簡體中文"},
  {"中华人民共和国", "中華人民共和國"},
  {"北京大学", "北京大學"},
  {"软件工程", "軟件工程"}
]

{:ok, converter} = ExOpencc.new("s2t.json")

for {input, expected} <- test_cases do
  {:ok, result} = ExOpencc.convert_sync(converter, input)
  IO.puts("#{input} -> #{result}")
end

支持的配置

配置文件 转换方向 说明
s2t.json 简体 → 繁体 简体中文转换为繁体中文
t2s.json 繁体 → 简体 繁体中文转换为简体中文
s2tw.json 简体 → 台湾繁体 简体中文转换为台湾地区的繁体中文
tw2s.json 台湾繁体 → 简体 台湾地区的繁体中文转换为简体中文
s2hk.json 简体 → 香港繁体 简体中文转换为香港地区的繁体中文
hk2s.json 香港繁体 → 简体 香港地区的繁体中文转换为简体中文
s2twp.json 简体 → 台湾繁体(短语) 简体中文转换为台湾地区的繁体中文,包含短语转换
tw2sp.json 台湾繁体(短语) → 简体 台湾地区的繁体中文转换为简体中文,包含短语转换

API 文档

ExOpencc.new/0, ExOpencc.new/1

创建新的 OpenCC 转换器。

参数

返回值

ExOpencc.convert_sync/2

使用给定的转换器同步转换文本。

参数

返回值

许可证

项目基于 OpenCC