ExOpencc
View SourceExOpencc 是基于 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 转换器。
参数
config
(可选) 配置文件名,默认"s2t.json"
返回值
{:ok, converter}
创建成功{:error, reason}
创建失败
ExOpencc.convert_sync/2
使用给定的转换器同步转换文本。
参数
converter
转换器实例text
要转换的文本
返回值
{:ok, converted}
转换成功{:error, reason}
转换失败
许可证
项目基于 OpenCC