| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #nop vim: set filetype=tt:;
- /*
- 本文件属于 PaoTin++ 的一部分。
- PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
- 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
- */
- #nop 本文件是 xtintin 的一部分,实现了一些基于字典的翻译函数;
- #var {gDictC2D} {
- {零} {0}
- {一} {1}
- {二} {2}
- {三} {3}
- {四} {4}
- {五} {5}
- {六} {6}
- {七} {7}
- {八} {8}
- {九} {9}
- {十} {10}
- {百} {100}
- {千} {1000}
- {万} {10000}
- {亿} {100000000}
- };
- ///=== {
- // #@ trans.Word <待翻译字符串> <字典名称> [<语言名称>]
- // 提供基本的字符串翻译功能。翻译字典由字典名称指定的表格变量来指定。
- // 如果同时提供了语言名称,则意味着字典中存在多种语言条目,那么应当选择指定的语言翻译结果。
- // 本函数是基础功能,实践中一般用 trans.String 或者 trans.Simple
- // };
- #func {trans.Word} {
- #local input {%1};
- #local trans-word-dict {%2};
- #local sub {%3};
- #local value {${${trans-word-dict}[$input]}};
- #if { "$value" == "" } {
- #return {$input};
- };
- #elseif { &value[] == 0 } {
- #return {$value};
- };
- #elseif { "$sub" != "" } {
- #return {$value[$sub]};
- };
- #else {
- #return {$input};
- };
- };
- ///=== {
- // #@ trans.String <待翻译字符串> <字典名称> [<语言名称>]
- // 提供基本的字符串翻译功能。翻译字典由字典名称指定的表格变量来指定。
- // 如果同时提供了语言名称,则意味着字典中存在多种语言条目,那么应当选择指定的语言翻译结果。
- // };
- #func {trans.String} {
- #local input {%1};
- #local trans-string-dict {%2};
- #local sub {%3};
- #local output {@str.Replace{{$input};{{*UTF8}{.}};{@@trans.Word{{&1};$trans-string-dict}}}};
- #return {$output};
- };
- ///=== {
- // #@ trans.Simple <待翻译字符串> <源语言> <目标语言>
- // 提供基本的字符串翻译功能。将待翻译字符串中,每个源语言中的字符,替换成目标语言中对应的字符。
- // };
- #func {trans.Simple} {
- #local input {%1};
- #local src {@trans.expand-set{%2}};
- #local dst {@trans.expand-set{%3}};
- #if { @slist.Size{$src} != @slist.Size{$dst} } {
- warnLog 源语言和目标语言字典长度不同。;
- #return {$input};
- };
- #list src create {@str.Chars{$src}};
- #list dst create {@str.Chars{$dst}};
- #local trans-helper-dict {@list.ZipAs{{{%s}{%s}};{$src};{$dst}}};
- #local trans-helper-dict {@fp.Transform{{$trans-helper-dict};VALUE}};
- #local output {@str.Replace{{$input};{{*UTF8}{.}};{@@trans.Word{{&1};trans-helper-dict}}}};
- #return {$output};
- };
- ///=== {
- // #@ trans.Number <中文数字串>
- // 将中文数字串翻译成阿拉伯字符串。
- // 注意这和 math.ParseCN 不同,并不会识别十进制。它只是对文字的简单翻译。
- // };
- #func {trans.Number} {
- #local input {%1};
- #local output {@str.Replace{{$input};{{*UTF8}{.}};{@@trans.Word{{&1};gDictC2D}}}};
- #return {$output};
- };
|