A dart wrapper of project opencc.
The dependent shared library would be downloaded from remote.
OPENCC_SHARED_DIR=.dart_tool/share dart --enable-experiment=native-assets run -v bin/opencc.dart '凭君传语报平安'
使用说明
- dart依赖
native-assets特性,dart3.8以后仅在dev渠道中具备。dev渠道不稳定,某些版本会出现匪夷所思的问题,目前测试3.10.0-14.0.dev是可用的。 - 远程编译
OpenCC无法通过-DSHARE_INSTALL_PREFIX=将资源路径设置到共享库中,已经通过改造源码可通过环境变量OPENCC_SHARED_DIR加载配置资源。 - 命令行设置
OPENCC_SHARED_DIR=.dart_tool/share无法将环境变量传递到dart运行时上下文,需要通过dart run -DOPENCC_SHARED_DIR=.dart_tool/share方法,但3.10.0-14.0.dev版本中-D或--define=方式传递环境变量的方式是失效的。目前OPENCC_SHARED_DIR=.dart_tool/share不可缺省,也不可自定义路径。编译生成资源的管理需要(data_assets)[https://github.com/dart-lang/sdk/issues/54003]的完善。 - 远程共享库在
ubuntu:18.04的容器中编译,最低可支持较为普遍的GLIBC_2.27。 - 如果无法直接下载github保存的预编译共享库,可通过代理下载:
5.1 以linux方式设置环境变量
export https_proxy=。 5.2 定义dart环境变量dart run -DGITHUB_PROXY=,最终下载路径为$GITHUB_PROXY/https://github.com/lindeer/opencc-dart/releases/latest/download/opencc-$os-$arch.zip。
直接使用
dart pub global activate opencc # 简转繁 opencc '简体转化为繁体' # 默认带参数 [-c s2t] # 多段文本繁转简 opencc -c t2s '繁體轉化爲簡體' '繁體轉化爲簡體2' # 多个文件简转繁并且直接在原文件修改 opencc -i -c s2t 简体文件1.txt 简体文件2.txt
开发引入
处理小段文本
import 'package:opencc/opencc.dart' show ZhConverter; final zh = ZhConverter('s2t'); final text = zh.convert(input);
处理流文本
import 'package:opencc/opencc.dart' show ZhTransformer; final ss = file.openRead() .transform(utf8.decoder) .transform(ZhTransformer('t2s')) .transform(utf8.encoder); await File(output).openWrite().addStream(ss);
容器编译
本地容器可通过以下命令运行tool/compile.sh中的内容:
docker run -it -v $PWD:/work -w /work ubuntu:18.04 /bin/bash