0 票
65 次浏览

我们在两种译文中的副标题都采用标题大小写(Title Case),即每个单词的首字母都大写(没有小写的次要词)。在使用 FLExTrans 的过程中,有时会出现短语(例如关键术语)中只有第一个单词首字母大写的情况。此外,有时源语言中作为后缀的指示词在目标语言中实际上是独立的单词,但输出时却是小写的。以下示例展示了这两个问题:

\s1 Haruanga Babuna Mana Sipsipka Hanggalang   >   \s1 Pasilanga babuna Mana Sipsip xa Panggalang

在“文本输出规则”(text out rules)中是否有办法清理这个问题?是否有人有适用于“文本输出规则”的正则表达式可以解决这个问题?

机器翻译自 English
FLExTrans 中 由 (122 分) 发布
已重新显示 由 [Administrator]
发布
| 65 次浏览

1 个回答

0 票

我明白发生了什么。您的词汇条目是 haruanga babuna,它映射到 pasilanga babuna。第一个单词的首字母大写被保留了,但第二个单词没有。FLExTrans 的转换引擎无法处理这种情况,因此您需要进行合成后更改。

对于 Sipsipka 变为 Sipsip xa 的情况,由于这是由规则生成的,您可以使用 'get-case-from' 元素来包裹您输出的字面字符串。它看起来像这样:

这意味着如果传入的原始单词是大写的,xa 将以大写形式输出。同样,如果它是小写的,它将以小写形式输出。

但是,由于各种原因,章节标题中的其他单词可能会以小写形式输出。因此,您可能需要一个通用解决方案,将所有单词转换为标题大小写。

没有一行正则表达式可以做到这一点。因此,我看到两种可能的解决方案:

1) 向您的 Drafting 模块集添加一个自定义模块,运行一些 Python 代码来大写章节标题中的所有单词。

2) 为字母表中的每个字母添加一个正则表达式。在 Text Out 规则中有 26 个表达式并不那么方便,但它是有效的。

'a' 的表达式为 Search For: (^\\s.*?\b)a(\w*) Replace with: \1A\2

为了方便添加所有这些,您可以在文件 Output\fixup_synthesis_rules.xml 中的 <SearchReplaceRules> 下方添加以下 xml 行:

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)a(\w*)</SearchString>

   <ReplaceString>\1A\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)b(\w*)</SearchString>

   <ReplaceString>\1B\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)c(\w*)</SearchString>

   <ReplaceString>\1C\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)d(\w*)</SearchString>

   <ReplaceString>\1D\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)e(\w*)</SearchString>

   <ReplaceString>\1E\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)f(\w*)</SearchString>

   <ReplaceString>\1F\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)g(\w*)</SearchString>

   <ReplaceString>\1G\2</ReplaceString>

 </SearchReplaceRule>

等等。

机器翻译自 English
由 (336 分) 发布

改进后的正则表达式(Regex)如下:

(^\\s[^\\]*?\b)r(.+?)(?=\\)

替换内容可以保持不变:

\1R\2

改进之处在于,当遇到下一个反斜杠(\)时,它会停止进行大小写更改,这一点非常重要。 

机器翻译自 English

相关问题

0 票
1 个回答 53 次浏览
如何在目标项目中对文本运行合成自检?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
0 票
1 个回答 233 次浏览
如何在转移规则中删除词缀?
rmdiamondl 336 发布 提问于 五月 8, 2022
FLExTrans 中
0 票
3 个回答 474 次浏览
我正在准备将《路加福音》和《使徒行传》印制成小册子,但我不知道如何在《使徒行传》开头之前插入一个中间扉页。
Jamie 102 发布 提问于 八月 6, 2024
PTXprint 中
0 票
1 个回答 168 次浏览
如何使用转移规则文件中的示例逻辑?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
0 票
1 个回答 42 次浏览
如何在转移规则中引用词缀释义?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Just as a body, though one, has many parts, but all its many parts form one body, so it is with Christ.
1 Corinthians 12:12
3,053 个问题
6,013 个回答
5,677 条评论
2,032 位用户