#nop vim: set filetype=tt:; /* 本文件属于 PaoTin++ 的一部分。 PaoTin++ © 2020~2024 的所有版权均由担子炮(dzp ) 享有并保留一切法律权利 你可以在遵照 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}; };