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
opencc: ^1.2.0-dev.1
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